~mdoyen/homebank/5.2.x

« back to all changes in this revision

Viewing changes to src/ui-tag.c

  • Committer: Maxime Doyen
  • Date: 2019-07-29 20:34:22 UTC
  • Revision ID: homebank@free.fr-20190729203422-hy3g4szjv3dbzmxu
5.2.7 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
 
41
41
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
42
42
 
43
 
 
 
43
//TODO: still used in rep_time
44
44
void
45
45
ui_tag_combobox_populate(GtkComboBoxText *combobox)
46
46
{
79
79
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
80
80
 
81
81
 
 
82
static void ui_tag_popover_cb_row_activated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data)
 
83
{
 
84
GtkTreeSelection *treeselection;
 
85
GtkTreeModel *model;
 
86
GtkTreeIter iter;
 
87
GtkEntry *entry = user_data;
 
88
 
 
89
        if( GTK_IS_ENTRY(entry) )
 
90
        {
 
91
                treeselection = gtk_tree_view_get_selection(tree_view);
 
92
                if( gtk_tree_selection_get_selected(treeselection, &model, &iter) )
 
93
                {
 
94
                Tag *item;
 
95
 
 
96
                        gtk_tree_model_get(model, &iter, LST_DEFTAG_DATAS, &item, -1);
 
97
 
 
98
                        hbtk_entry_tag_name_append(GTK_ENTRY(user_data), item->name);
 
99
                }
 
100
        }
 
101
}
 
102
 
 
103
 
 
104
GtkWidget *
 
105
ui_tag_popover_list(GtkWidget *entry)
 
106
{
 
107
GtkWidget *box, *menubutton, *image, *scrollwin, *treeview;
 
108
 
 
109
        menubutton = gtk_menu_button_new ();
 
110
        image = gtk_image_new_from_icon_name ("pan-down-symbolic", GTK_ICON_SIZE_BUTTON);
 
111
        gtk_container_add(GTK_CONTAINER(menubutton), image);
 
112
 
 
113
        //gtk_menu_button_set_direction (GTK_MENU_BUTTON(menubutton), GTK_ARROW_DOWN );
 
114
        //gtk_widget_set_halign (menubutton, GTK_ALIGN_END);
 
115
        gtk_widget_show_all(menubutton);
 
116
 
 
117
        //GtkWidget *template = ui_popover_tpl_create(data);
 
118
 
 
119
        box = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_MEDIUM);
 
120
        scrollwin = gtk_scrolled_window_new(NULL,NULL);
 
121
        gtk_box_pack_start(GTK_BOX(box), scrollwin, TRUE, TRUE, 0);
 
122
        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
 
123
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 
124
        treeview = ui_tag_listview_new(FALSE);
 
125
        //data.LV_tag = treeview;
 
126
        gtk_container_add(GTK_CONTAINER(scrollwin), treeview);
 
127
        gtk_widget_show_all(box);
 
128
 
 
129
        gtk_tree_view_set_hover_selection(GTK_TREE_VIEW(treeview), TRUE);
 
130
        gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
 
131
        gtk_tree_view_set_activate_on_single_click(GTK_TREE_VIEW(treeview), TRUE);
 
132
 
 
133
        
 
134
        GtkWidget *popover = create_popover (menubutton, box, GTK_POS_BOTTOM);
 
135
        gtk_widget_set_size_request (popover, HB_MINWIDTH_LIST, HB_MINHEIGHT_LIST);
 
136
 
 
137
        gtk_menu_button_set_popover(GTK_MENU_BUTTON(menubutton), popover);
 
138
 
 
139
        ui_tag_listview_populate(treeview, 0);
 
140
 
 
141
        g_signal_connect (treeview, "row-activated", G_CALLBACK (ui_tag_popover_cb_row_activated), entry);
 
142
        g_signal_connect_swapped(treeview, "row-activated", G_CALLBACK(gtk_popover_popdown), popover);
 
143
        
 
144
        return menubutton;
 
145
}
 
146
 
 
147
 
 
148
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
 
149
 
 
150
 
82
151
static void
83
152
ui_tag_listview_toggled_cb (GtkCellRendererToggle *cell,
84
153
               gchar                 *path_str,
318
387
/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
319
388
 
320
389
 
 
390
static void ui_tag_manage_filter_text_handler (GtkEntry    *entry,
 
391
                          const gchar *text,
 
392
                          gint         length,
 
393
                          gint        *position,
 
394
                          gpointer     data)
 
395
{
 
396
GtkEditable *editable = GTK_EDITABLE(entry);
 
397
gint i, count=0;
 
398
gchar *result = g_new0 (gchar, length+1);
 
399
 
 
400
  for (i=0; i < length; i++)
 
401
  {
 
402
    if (text[i]==' ')
 
403
      continue;
 
404
    result[count++] = text[i];
 
405
  }
 
406
 
 
407
 
 
408
  if (count > 0) {
 
409
    g_signal_handlers_block_by_func (G_OBJECT (editable),
 
410
                                     G_CALLBACK (ui_tag_manage_filter_text_handler),
 
411
                                     data);
 
412
    gtk_editable_insert_text (editable, result, count, position);
 
413
    g_signal_handlers_unblock_by_func (G_OBJECT (editable),
 
414
                                       G_CALLBACK (ui_tag_manage_filter_text_handler),
 
415
                                       data);
 
416
  }
 
417
  g_signal_stop_emission_by_name (G_OBJECT (editable), "insert_text");
 
418
 
 
419
  g_free (result);
 
420
}
 
421
 
 
422
 
 
423
 
321
424
/**
322
425
 * ui_tag_manage_dialog_add:
323
426
 *
664
767
        g_object_bind_property (data.BT_add, "active", addreveal, "reveal-child", G_BINDING_BIDIRECTIONAL);
665
768
 
666
769
        g_signal_connect (G_OBJECT (data.ST_name), "activate", G_CALLBACK (ui_tag_manage_dialog_add), NULL);
667
 
 
 
770
        g_signal_connect(G_OBJECT(data.ST_name), "insert-text", G_CALLBACK(ui_tag_manage_filter_text_handler), NULL);
 
771
        
668
772
        g_signal_connect (gtk_tree_view_get_selection(GTK_TREE_VIEW(data.LV_tag)), "changed", G_CALLBACK (ui_tag_manage_dialog_selection), NULL);
669
773
        g_signal_connect (GTK_TREE_VIEW(data.LV_tag), "row-activated", G_CALLBACK (ui_tag_manage_dialog_onRowActivated), NULL);
670
774