9 store = Gtk::ListStore::create(list_columns);
11 cr_text = Gtk::manage(
new Gtk::CellRendererText);
12 pack_start(*cr_text,
true);
13 add_attribute(cr_text->property_text(), list_columns.value);
15 signal_changed().connect([
this] {
16 auto it = get_active();
17 if (store->iter_is_valid(it)) {
18 Gtk::TreeModel::Row row = *it;
19 set_tooltip_text(row[list_columns.value]);
22 set_has_tooltip(
false);
27 Gtk::CellRendererText &get_cr_text()
32 bool set_active_key(
const T &key)
34 for (
const auto &it : store->children()) {
35 Gtk::TreeModel::Row row = *it;
36 if (row[list_columns.key] == key) {
44 const T get_active_key()
const
46 if (get_active_row_number() == -1)
48 const auto it = get_active();
49 Gtk::TreeModel::Row row = *it;
50 return row.get_value(list_columns.key);
58 void append(
const T &key,
const Glib::ustring &value)
60 Gtk::TreeModel::Row row = *store->append();
61 row[list_columns.key] = key;
62 row[list_columns.value] = value;
66 class ListColumns :
public Gtk::TreeModelColumnRecord {
70 Gtk::TreeModelColumnRecord::add(key);
71 Gtk::TreeModelColumnRecord::add(value);
73 Gtk::TreeModelColumn<T> key;
74 Gtk::TreeModelColumn<Glib::ustring> value;
76 ListColumns list_columns;
78 Glib::RefPtr<Gtk::ListStore> store;
79 Gtk::CellRendererText *cr_text =
nullptr;