41
41
static void ui_cat_manage_populate_listview(struct ui_cat_manage_dialog_data *data);
43
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
44
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
48
container_get_nth(GtkBox *container, gint nth)
53
if(!GTK_IS_CONTAINER(container))
56
lchild = list = gtk_container_get_children (GTK_CONTAINER(container));
57
child = g_list_nth_data (list, nth);
65
ui_cat_entry_popover_get_entry(GtkBox *box)
67
return container_get_nth(box, 0);
72
*ui_cat_entry_popover_get(GtkBox *box)
76
Category *item = NULL;
78
DB( g_print ("ui_cat_entry_popover_get()\n") );
80
entry = container_get_nth(box, 0);
81
if( entry != NULL && GTK_IS_ENTRY(entry) )
83
name = (gchar *)gtk_entry_get_text(GTK_ENTRY (entry));
84
item = da_cat_get_by_fullname(name);
91
ui_cat_entry_popover_get_key_add_new(GtkBox *box)
97
DB( g_print ("ui_cat_entry_popover_get_key_add_new()\n") );
100
//todo: check prefs + ask the user here 1st time
101
entry = container_get_nth(box, 0);
102
if( entry != NULL && GTK_IS_ENTRY(entry) )
104
gchar *name = (gchar *)gtk_entry_get_text(GTK_ENTRY (entry));
106
item = da_cat_get_by_fullname(name);
110
item = da_cat_append_ifnew_by_fullname(name);
113
store = gtk_entry_completion_get_model(gtk_entry_get_completion(GTK_ENTRY(entry)));
115
gtk_list_store_insert_with_values(GTK_LIST_STORE(store), NULL, -1,
128
ui_cat_entry_popover_get_key(GtkBox *box)
130
Category *item = ui_cat_entry_popover_get(box);
132
return ((item != NULL) ? item->key : 0);
137
ui_cat_entry_popover_set_active(GtkBox *box, guint32 key)
141
DB( g_print ("ui_cat_comboboxentry_set_active()\n") );
143
entry = container_get_nth(box, 0);
144
if( entry != NULL && GTK_IS_ENTRY(entry) )
146
Category *item = da_cat_get(key);
148
hbtk_entry_set_text(GTK_ENTRY(entry), item != NULL ? item->fullname : "");
154
ui_cat_entry_popover_cb_row_activated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
156
GtkTreeSelection *treeselection;
159
GtkEntry *entry = user_data;
161
if( GTK_IS_ENTRY(entry) )
163
treeselection = gtk_tree_view_get_selection(tree_view);
164
if( gtk_tree_selection_get_selected(treeselection, &model, &iter) )
168
gtk_tree_model_get(model, &iter, 1, &item, -1);
170
gtk_entry_set_text(GTK_ENTRY(user_data), item->fullname);
177
ui_cat_entry_popover_text_cell_data_function (GtkTreeViewColumn *col,
178
GtkCellRenderer *renderer,
187
gtk_tree_model_get(model, iter, 1, &entry, -1);
189
name = _("(no category)");
193
gchar type = category_get_type_char(entry);
196
string = g_markup_printf_escaped ("%d > [%d] %s [%c] %d %c", entry->key, entry->parent, name, type, entry->flags, (entry->flags & GF_MIXED) ?'m':' ' );
199
string = g_strdup(name);
202
if( entry->parent == 0 )
203
string = g_markup_printf_escaped("%s [%c]", name, type);
205
string = g_markup_printf_escaped(" %c <i>%s</i>", type, name);
206
//string = g_strdup_printf(" - %s", name);
210
//g_object_set(renderer, "text", string, NULL);
211
g_object_set(renderer, "markup", string, NULL);
219
ui_cat_entry_popover_populate(GtkListStore *store)
221
GHashTableIter hiter;
224
g_hash_table_iter_init (&hiter, GLOBALS->h_cat);
225
while (g_hash_table_iter_next (&hiter, &key, &value))
227
Category *item = value;
229
gtk_list_store_insert_with_values(GTK_LIST_STORE(store), NULL, -1,
235
gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING);
240
ui_cat_entry_popover_function (GtkEditable *editable, gpointer user_data)
243
DB( g_print("text changed to %s\n", gtk_entry_get_text(GTK_ENTRY(editable)) ) );
251
ui_cat_entry_popover_cb_toggled (GtkToggleButton *togglebutton, gpointer user_data)
253
GtkWidget *entry = user_data;
254
GtkAllocation allocation;
257
if(GTK_IS_ENTRY(entry))
259
gtk_widget_get_allocation (entry, &allocation);
260
popover = gtk_menu_button_get_popover(GTK_MENU_BUTTON(togglebutton));
261
if(GTK_IS_POPOVER(popover))
263
gtk_widget_set_size_request (GTK_WIDGET(popover), allocation.width + (2*SPACING_POPOVER), -1);
264
DB( g_print("should set width to %d\n", allocation.width + (2*SPACING_POPOVER)) );
271
ui_cat_entry_popover_compare_func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer userdata)
274
gchar *name1, *name2;
276
gtk_tree_model_get(model, a, 0, &name1, -1);
277
gtk_tree_model_get(model, b, 0, &name2, -1);
279
retval = hb_string_utf8_compare(name1, name2);
290
ui_cat_entry_popover_completion_func (GtkEntryCompletion *completion,
295
Category *item = NULL;
296
gchar *normalized_string;
297
gchar *case_normalized_string;
299
gboolean ret = FALSE;
303
model = gtk_entry_completion_get_model (completion);
305
gtk_tree_model_get (model, iter,
311
normalized_string = g_utf8_normalize (item->fullname, -1, G_NORMALIZE_ALL);
313
if (normalized_string != NULL)
315
case_normalized_string = g_utf8_casefold (normalized_string, -1);
317
//g_print("match '%s' for '%s' ?\n", key, case_normalized_string);
318
//if (!strncmp (key, case_normalized_string, strlen (key)))
319
if (g_strstr_len (case_normalized_string, strlen (case_normalized_string), key ))
322
// g_print(" ==> yes !\n");
326
g_free (case_normalized_string);
328
g_free (normalized_string);
337
ui_cat_entry_popover_destroy( GtkWidget *widget, gpointer user_data )
340
DB( g_print ("[pay entry popover] destroy\n") );
346
ui_cat_entry_popover_new(GtkWidget *label)
348
GtkWidget *mainbox, *box, *entry, *menubutton, *image, *popover, *scrollwin, *treeview;
350
GtkEntryCompletion *completion;
352
DB( g_print ("[pay entry popover] new\n") );
354
mainbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
355
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET(mainbox)), GTK_STYLE_CLASS_LINKED);
357
entry = gtk_entry_new();
358
gtk_box_pack_start(GTK_BOX(mainbox), entry, TRUE, TRUE, 0);
360
menubutton = gtk_menu_button_new ();
361
//data->MB_template = menubutton;
362
image = gtk_image_new_from_icon_name ("pan-down-symbolic", GTK_ICON_SIZE_BUTTON);
363
gtk_container_add(GTK_CONTAINER(menubutton), image);
364
gtk_menu_button_set_direction (GTK_MENU_BUTTON(menubutton), GTK_ARROW_LEFT );
365
//gtk_widget_set_halign (menubutton, GTK_ALIGN_END);
366
gtk_box_pack_start(GTK_BOX(mainbox), menubutton, FALSE, FALSE, 0);
368
completion = gtk_entry_completion_new ();
370
gtk_entry_set_completion (GTK_ENTRY (entry), completion);
371
g_object_unref(completion);
373
store = gtk_list_store_new (2,
378
gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), ui_cat_entry_popover_compare_func, NULL, NULL);
380
ui_cat_entry_popover_populate(store);
383
gtk_entry_completion_set_model (completion, GTK_TREE_MODEL(store));
384
gtk_entry_completion_set_match_func(completion, ui_cat_entry_popover_completion_func, NULL, NULL);
385
g_object_unref(store);
387
gtk_entry_completion_set_text_column (completion, 0);
389
gtk_widget_show_all(mainbox);
392
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_MEDIUM);
393
scrollwin = gtk_scrolled_window_new(NULL,NULL);
394
gtk_box_pack_start(GTK_BOX(box), scrollwin, TRUE, TRUE, 0);
395
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
396
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
397
//gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scrollwin), HB_MINHEIGHT_LIST);
398
treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store));
399
gtk_container_add(GTK_CONTAINER(scrollwin), GTK_WIDGET(treeview));
400
gtk_widget_show_all(box);
403
//gtk_widget_set_can_focus(GTK_WIDGET(treeview), FALSE);
405
GtkCellRenderer *renderer;
406
GtkTreeViewColumn *column;
408
renderer = gtk_cell_renderer_text_new ();
410
g_object_set(renderer,
411
"ellipsize", PANGO_ELLIPSIZE_END,
412
"ellipsize-set", TRUE,
413
//taken from nemo, not exactly a resize to content, but good compromise
417
column = gtk_tree_view_column_new_with_attributes (NULL,
422
gtk_tree_view_column_set_cell_data_func(column, renderer, ui_cat_entry_popover_text_cell_data_function, NULL, NULL);
423
gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
426
gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(treeview), TRUE);
427
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
428
gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(treeview), TRUE);
431
//gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), GTK_SELECTION_BROWSE);
434
//popover = create_popover (menubutton, box, GTK_POS_BOTTOM);
435
popover = create_popover (menubutton, box, GTK_POS_LEFT);
436
//gtk_widget_set_size_request (popover, HB_MINWIDTH_LIST, HB_MINHEIGHT_LIST);
437
gtk_widget_set_vexpand(popover, TRUE);
439
gtk_menu_button_set_popover(GTK_MENU_BUTTON(menubutton), popover);
442
// connect our dispose function
443
g_signal_connect (entry, "destroy", G_CALLBACK (ui_cat_entry_popover_destroy), NULL);
445
g_signal_connect_after (entry , "changed", G_CALLBACK (ui_cat_entry_popover_function), NULL);
447
g_signal_connect (menubutton, "toggled", G_CALLBACK (ui_cat_entry_popover_cb_toggled), entry);
449
g_signal_connect (treeview, "row-activated", G_CALLBACK (ui_cat_entry_popover_cb_row_activated), entry);
451
#if( (GTK_MAJOR_VERSION == 3) && (GTK_MINOR_VERSION >= 22) )
452
g_signal_connect_swapped(treeview, "row-activated", G_CALLBACK(gtk_popover_popdown), popover);
454
g_signal_connect_swapped(treeview, "row-activated", G_CALLBACK(gtk_widget_hide), popover);
457
//g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), "changed", G_CALLBACK (ui_cat_entry_popover_cb_selection), entry);
458
//g_signal_connect_swapped(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), "changed", G_CALLBACK(gtk_popover_popdown), popover);
461
gtk_label_set_mnemonic_widget (GTK_LABEL(label), entry);
463
//gtk_widget_set_size_request(comboboxentry, HB_MINWIDTH_LIST, -1);
469
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
46
473
* ui_cat_comboboxentry_get_key:
1004
1393
// column 2: name
1005
1394
renderer = gtk_cell_renderer_text_new ();
1006
1396
g_object_set(renderer,
1007
1397
"ellipsize", PANGO_ELLIPSIZE_END,
1008
1398
"ellipsize-set", TRUE,
1399
//taken from nemo, not exactly a resize to content, but good compromise
1011
1403
column = gtk_tree_view_column_new();
1012
gtk_tree_view_column_set_title(column, _("Name"));
1404
gtk_tree_view_column_set_title(column, _("Category"));
1013
1405
gtk_tree_view_column_pack_start(column, renderer, TRUE);
1014
1406
gtk_tree_view_column_set_cell_data_func(column, renderer, ui_cat_listview_text_cell_data_function, GINT_TO_POINTER(LST_DEFCAT_NAME), NULL);
1015
1407
gtk_tree_view_column_set_alignment (column, 0.5);
1016
gtk_tree_view_column_set_min_width(column, HB_MINWIDTH_LIST*2);
1408
gtk_tree_view_column_set_resizable(column, TRUE);
1409
gtk_tree_view_column_set_min_width(column, HB_MINWIDTH_LIST);
1017
1410
gtk_tree_view_column_set_sort_column_id (column, LST_DEFCAT_SORT_NAME);
1018
gtk_tree_view_column_set_resizable(column, TRUE);
1019
1411
gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
1021
1413
if( withcount == TRUE )
1023
1415
column = gtk_tree_view_column_new();
1024
gtk_tree_view_column_set_title(column, _("Usage"));
1416
gtk_tree_view_column_set_title(column, "#");
1025
1417
renderer = gtk_cell_renderer_text_new ();
1026
1418
g_object_set(renderer, "xalign", 0.5, NULL);
1027
1419
gtk_tree_view_column_pack_start(column, renderer, TRUE);
1028
1420
gtk_tree_view_column_set_cell_data_func(column, renderer, ui_cat_listview_count_cell_data_function, GINT_TO_POINTER(LST_DEFCAT_DATAS), NULL);
1029
1421
gtk_tree_view_column_set_alignment (column, 0.5);
1030
//gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
1422
gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
1031
1423
gtk_tree_view_column_set_sort_column_id (column, LST_DEFCAT_SORT_USED);
1032
1424
gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
1428
column = gtk_tree_view_column_new();
1429
gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
1036
1432
gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(treeview), ui_cat_listview_search_equal_func, NULL, NULL);
1897
2297
gtk_style_context_add_class (gtk_widget_get_style_context (tbar), GTK_STYLE_CLASS_INLINE_TOOLBAR);
1898
2298
gtk_box_pack_start (GTK_BOX (vbox), tbar, FALSE, FALSE, 0);
1900
/*widget = gtk_tool_item_new ();
1901
label = gtk_label_new("test");
1902
gtk_container_add(GTK_CONTAINER(widget), label);
1903
gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(widget), -1);*/
1905
//hbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
1907
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
2300
bbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1908
2301
toolitem = gtk_tool_item_new();
1909
gtk_container_add (GTK_CONTAINER(toolitem), hbox);
2302
gtk_container_add (GTK_CONTAINER(toolitem), bbox);
1910
2303
gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(toolitem), -1);
1912
//widget = make_image_button("text-editor-symbolic", _("Edit"));
1913
widget = gtk_button_new_with_mnemonic(_("_Edit"));
1914
data.BT_edit = widget;
1915
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
1917
//widget = make_image_button("merge-symbolic", _("Merge"));
1918
widget = gtk_button_new_with_mnemonic(_("_Merge"));
1919
data.BT_merge = widget;
1920
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
1922
//widget = make_image_button(ICONNAME_SYM_EDIT_DELETE, _("Delete"));
1923
widget = gtk_button_new_with_mnemonic(_("_Delete"));
1924
data.BT_delete = widget;
1925
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
2305
widget = make_image_toggle_button(ICONNAME_LIST_ADD, _("Add"));
2306
data->BT_add = widget;
2307
gtk_container_add (GTK_CONTAINER (bbox), widget);
2309
widget = make_image_button(ICONNAME_LIST_EDIT, _("Edit"));
2310
data->BT_edit = widget;
2311
gtk_container_add (GTK_CONTAINER (bbox), widget);
2313
widget = make_image_button(ICONNAME_HB_LIST_MERGE, _("Move/Merge"));
2314
data->BT_merge = widget;
2315
gtk_container_add (GTK_CONTAINER (bbox), widget);
2317
widget = make_image_button(ICONNAME_LIST_DELETE, _("Delete"));
2318
data->BT_delete = widget;
2319
gtk_container_add (GTK_CONTAINER (bbox), widget);
1928
2322
toolitem = gtk_separator_tool_item_new ();
1929
2323
gtk_tool_item_set_expand (toolitem, TRUE);
1951
2345
gtk_container_add(GTK_CONTAINER(addreveal), vbox);
1953
2347
widget = gtk_entry_new ();
1954
data.ST_name1 = widget;
1955
gtk_entry_set_placeholder_text(GTK_ENTRY(data.ST_name1), _("new category") );
2348
data->ST_name1 = widget;
2349
gtk_entry_set_placeholder_text(GTK_ENTRY(data->ST_name1), _("new category") );
1956
2350
gtk_widget_set_hexpand (widget, TRUE);
1957
2351
gtk_container_add (GTK_CONTAINER (vbox), widget);
1960
2354
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
1961
2355
gtk_container_add (GTK_CONTAINER (vbox), hbox);
1962
data.LA_category = gtk_label_new(NULL);
1963
gtk_box_pack_start (GTK_BOX (hbox), data.LA_category, FALSE, FALSE, 0);
2356
data->LA_category = gtk_label_new(NULL);
2357
gtk_box_pack_start (GTK_BOX (hbox), data->LA_category, FALSE, FALSE, 0);
1964
2358
label = gtk_label_new(":");
1965
2359
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1966
data.ST_name2 = gtk_entry_new ();
1967
gtk_entry_set_placeholder_text(GTK_ENTRY(data.ST_name2), _("new subcategory") );
1968
gtk_box_pack_start (GTK_BOX (hbox), data.ST_name2, TRUE, TRUE, 0);
1972
bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
1973
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START);
1974
gtk_box_set_spacing (GTK_BOX (bbox), SPACING_SMALL);
1975
gtk_grid_attach (GTK_GRID (table), bbox, 0, row, 2, 1);
1977
data.BT_add = gtk_toggle_button_new_with_mnemonic(_("_Add"));
1978
gtk_container_add (GTK_CONTAINER (bbox), data.BT_add);
1981
data.BT_edit = gtk_button_new_with_mnemonic(_("_Edit"));
1982
gtk_container_add (GTK_CONTAINER (bbox), data.BT_edit);
1984
data.BT_merge = gtk_button_new_with_mnemonic(_("_Merge"));
1985
gtk_container_add (GTK_CONTAINER (bbox), data.BT_merge);
1987
data.BT_delete = gtk_button_new_with_mnemonic(_("_Delete"));
1988
gtk_container_add (GTK_CONTAINER (bbox), data.BT_delete);
2360
data->ST_name2 = gtk_entry_new ();
2361
gtk_entry_set_placeholder_text(GTK_ENTRY(data->ST_name2), _("new subcategory") );
2362
gtk_box_pack_start (GTK_BOX (hbox), data->ST_name2, TRUE, TRUE, 0);
1990
2365
//connect all our signals
1991
g_object_bind_property (data.BT_add, "active", addreveal, "reveal-child", G_BINDING_BIDIRECTIONAL);
1993
g_signal_connect (G_OBJECT (data.ST_name1), "activate", G_CALLBACK (ui_cat_manage_dialog_add), GINT_TO_POINTER(FALSE));
1994
g_signal_connect (G_OBJECT (data.ST_name2), "activate", G_CALLBACK (ui_cat_manage_dialog_add), GINT_TO_POINTER(TRUE));
1996
g_signal_connect(G_OBJECT(data.ST_name1), "insert-text", G_CALLBACK(ui_cat_manage_filter_text_handler), NULL);
1997
g_signal_connect(G_OBJECT(data.ST_name2), "insert-text", G_CALLBACK(ui_cat_manage_filter_text_handler), NULL);
2000
g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(data.LV_cat)), "changed", G_CALLBACK (ui_cat_manage_dialog_selection), NULL);
2001
g_signal_connect (GTK_TREE_VIEW(data.LV_cat), "row-activated", G_CALLBACK (ui_cat_manage_dialog_onRowActivated), NULL);
2003
g_signal_connect (G_OBJECT (data.BT_edit), "clicked", G_CALLBACK (ui_cat_manage_dialog_edit), NULL);
2004
g_signal_connect (G_OBJECT (data.BT_merge), "clicked", G_CALLBACK (ui_cat_manage_dialog_merge), NULL);
2005
g_signal_connect (G_OBJECT (data.BT_delete), "clicked", G_CALLBACK (ui_cat_manage_dialog_delete), NULL);
2007
g_signal_connect (G_OBJECT (data.BT_expand), "clicked", G_CALLBACK (ui_cat_manage_dialog_expand_all), NULL);
2008
g_signal_connect (G_OBJECT (data.BT_collapse), "clicked", G_CALLBACK (ui_cat_manage_dialog_collapse_all), NULL);
2366
g_object_bind_property (data->BT_add, "active", addreveal, "reveal-child", G_BINDING_BIDIRECTIONAL);
2368
g_signal_connect (G_OBJECT (data->ST_name1), "activate", G_CALLBACK (ui_cat_manage_dialog_add), GINT_TO_POINTER(FALSE));
2369
g_signal_connect (G_OBJECT (data->ST_name2), "activate", G_CALLBACK (ui_cat_manage_dialog_add), GINT_TO_POINTER(TRUE));
2371
g_signal_connect(G_OBJECT(data->ST_name1), "insert-text", G_CALLBACK(ui_cat_manage_filter_text_handler), NULL);
2372
g_signal_connect(G_OBJECT(data->ST_name2), "insert-text", G_CALLBACK(ui_cat_manage_filter_text_handler), NULL);
2375
g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat)), "changed", G_CALLBACK (ui_cat_manage_dialog_selection), NULL);
2376
g_signal_connect (GTK_TREE_VIEW(data->LV_cat), "row-activated", G_CALLBACK (ui_cat_manage_dialog_onRowActivated), NULL);
2378
g_signal_connect (G_OBJECT (data->BT_edit), "clicked", G_CALLBACK (ui_cat_manage_dialog_edit), NULL);
2379
g_signal_connect (G_OBJECT (data->BT_merge), "clicked", G_CALLBACK (ui_cat_manage_dialog_merge), NULL);
2380
g_signal_connect (G_OBJECT (data->BT_delete), "clicked", G_CALLBACK (ui_cat_manage_dialog_delete), NULL);
2382
g_signal_connect (G_OBJECT (data->BT_expand), "clicked", G_CALLBACK (ui_cat_manage_dialog_expand_all), NULL);
2383
g_signal_connect (G_OBJECT (data->BT_collapse), "clicked", G_CALLBACK (ui_cat_manage_dialog_collapse_all), NULL);
2010
2385
//setup, init and show window
2011
2386
category_fill_usage();
2012
ui_cat_manage_dialog_setup(&data);
2013
ui_cat_manage_dialog_update(data.LV_cat, NULL);
2387
ui_cat_manage_dialog_setup(data);
2388
ui_cat_manage_dialog_update(data->LV_cat, NULL);
2015
2390
gtk_widget_show_all (window);