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 void 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) {
43 const T get_active_key()
45 auto it = get_active();
46 if (store->iter_is_valid(it)) {
47 Gtk::TreeModel::Row row = *it;
48 return row[list_columns.key];
60 void append(
const T &key,
const Glib::ustring &value)
62 Gtk::TreeModel::Row row = *store->append();
63 row[list_columns.key] = key;
64 row[list_columns.value] = value;
68 class ListColumns :
public Gtk::TreeModelColumnRecord {
72 Gtk::TreeModelColumnRecord::add(key);
73 Gtk::TreeModelColumnRecord::add(value);
75 Gtk::TreeModelColumn<T> key;
76 Gtk::TreeModelColumn<Glib::ustring> value;
78 ListColumns list_columns;
80 Glib::RefPtr<Gtk::ListStore> store;
81 Gtk::CellRendererText *cr_text =
nullptr;