9 void onAddButtonPress (GtkWidget
*entry
, gpointer data
)
11 GtkWidget
*treeview
= glade_xml_get_widget(xml
, "treeviewWords");
13 add_entry("<< NEW >>");
16 void add_entry(gchar
*txt
) {
17 /* ignore if entry is empty */
22 GtkWidget
*treeview
= glade_xml_get_widget(xml
, "treeviewWords");
24 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(treeview
));
26 gtk_list_store_append(GTK_LIST_STORE(model
), &newrow
);
28 gtk_list_store_set(GTK_LIST_STORE(model
), &newrow
, COL_TEXT
, txt
, -1);
30 g_debug("n-columns: %d", gtk_tree_model_iter_n_children(model
, NULL
));
36 GtkWidget *treeview = glade_xml_get_widget(xml, "treeviewWords");
38 model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
40 gtk_tree_model_get_iter_first(model, &parent);
48 void onDelButtonPress (GtkWidget
*button
, gpointer data
)
50 GtkTreeSelection
*sel
;
52 GtkTreeIter selected_row
;
53 GtkWidget
*treeview
= glade_xml_get_widget(xml
, "treeviewWords");
55 sel
= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview
));
57 g_assert(gtk_tree_selection_get_mode(sel
) == GTK_SELECTION_SINGLE
);
59 if (gtk_tree_selection_get_selected(sel
, &model
, &selected_row
))
61 gtk_list_store_remove(GTK_LIST_STORE(model
), &selected_row
);
65 /* If no row is selected, the button should
66 * * not be clickable in the first place */
67 g_assert_not_reached();
71 void on_treeview_edited (GtkCellRendererText
*celltext
,
72 const gchar
*string_path
, const gchar
*new_text
, gpointer data
) {
74 GtkTreeModel
*model
= GTK_TREE_MODEL(data
);
76 gtk_tree_model_get_iter_from_string(model
, &iter
, string_path
);
77 gtk_list_store_set(GTK_LIST_STORE(model
), &iter
, COL_TEXT
, new_text
, -1);
80 void create_list_view() {
81 GtkCellRenderer
*renderer
;
82 GtkTreeViewColumn
*col
;
83 GtkTreeSelection
*sel
;
84 GtkListStore
*liststore
;
86 GtkWidget
*view
= glade_xml_get_widget(xml
, "treeviewWords");
88 liststore
= gtk_list_store_new(NUM_COLS
, G_TYPE_STRING
); /* NUM_COLS = 1 */
91 gtk_tree_view_set_model(GTK_TREE_VIEW(view
), GTK_TREE_MODEL(liststore
));
93 renderer
= gtk_cell_renderer_text_new();
94 g_object_set(renderer
, "editable", TRUE
, NULL
);
95 g_signal_connect(renderer
, "edited", G_CALLBACK(on_treeview_edited
), GTK_TREE_MODEL(liststore
));
97 col
= gtk_tree_view_column_new();
99 gtk_tree_view_column_pack_start(col
, renderer
, TRUE
);
100 gtk_tree_view_column_add_attribute(col
, renderer
, "text", COL_TEXT
);
101 gtk_tree_view_column_set_title(col
, " Mandarin ");
103 gtk_tree_view_append_column(GTK_TREE_VIEW(view
), col
);
105 sel
= gtk_tree_view_get_selection(GTK_TREE_VIEW(view
));
106 gtk_tree_selection_set_mode(sel
, GTK_SELECTION_SINGLE
);
108 g_debug("I was here\n");