Revision: 1510
          http://geeqie.svn.sourceforge.net/geeqie/?rev=1510&view=rev
Author:   nadvornik
Date:     2009-03-11 21:54:54 +0000 (Wed, 11 Mar 2009)

Log Message:
-----------
added a popup menu in keyword tree

Modified Paths:
--------------
    trunk/src/bar_keywords.c
    trunk/src/metadata.c
    trunk/src/metadata.h

Modified: trunk/src/bar_keywords.c
===================================================================
--- trunk/src/bar_keywords.c    2009-03-11 17:38:20 UTC (rev 1509)
+++ trunk/src/bar_keywords.c    2009-03-11 21:54:54 UTC (rev 1510)
@@ -114,6 +114,8 @@
        GtkWidget *keyword_view;
        GtkWidget *keyword_treeview;
 
+       GtkTreePath *click_tpath;
+
        FileData *fd;
        gchar *key;
 };
@@ -662,7 +664,81 @@
        return TRUE;
 }
 
+static void bar_pane_keywords_conf_dialog_cb(GtkWidget *menu_widget, gpointer 
data)
+{
+}
 
+static void bar_pane_keywords_delete_cb(GtkWidget *menu_widget, gpointer data)
+{
+       PaneKeywordsData *pkd = data;
+       GtkTreeModel *model;
+       GtkTreeIter iter;
+
+       GtkTreeModel *keyword_tree;
+       GtkTreeIter kw_iter;
+
+        if (!pkd->click_tpath) return;
+
+       model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
+       keyword_tree = 
gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
+
+        if (!gtk_tree_model_get_iter(model, &iter, pkd->click_tpath)) return;
+       
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(model), 
&kw_iter, &iter);
+       
+       keyword_delete(GTK_TREE_STORE(keyword_tree), &kw_iter);
+}
+
+static void bar_pane_keywords_menu_popup(GtkWidget *widget, PaneKeywordsData 
*pkd, gint x, gint y)
+{
+       GtkWidget *menu;
+        GtkTreeViewDropPosition pos;
+        
+        if (pkd->click_tpath) gtk_tree_path_free(pkd->click_tpath);
+        pkd->click_tpath = NULL;
+       gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(pkd->keyword_treeview), 
x, y, &pkd->click_tpath, &pos);
+
+       menu = popup_menu_short_lived();
+
+       if (pkd->click_tpath)
+               {
+               /* for the entry */
+               GtkTreeModel *model = 
gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview));
+               
+               GtkTreeIter iter;
+                gtk_tree_model_get_iter(model, &iter, pkd->click_tpath);
+               gchar *name;
+               
+               gtk_tree_model_get(model, &iter, FILTER_KEYWORD_COLUMN_NAME, 
&name, -1);
+               
+               gchar *conf = g_strdup_printf(_("Configure \"%s\""), name);
+               gchar *del = g_strdup_printf(_("Delete \"%s\""), name);
+               menu_item_add_stock(menu, conf, GTK_STOCK_EDIT, 
G_CALLBACK(bar_pane_keywords_conf_dialog_cb), pkd);
+               menu_item_add_stock(menu, del, GTK_STOCK_DELETE, 
G_CALLBACK(bar_pane_keywords_delete_cb), pkd);
+               menu_item_add_divider(menu);
+               g_free(conf);
+               g_free(del);
+               g_free(name);
+               }
+       /* for the pane */
+//     menu_item_add_stock(menu, _("Add entry"), GTK_STOCK_ADD, 
G_CALLBACK(bar_pane_keywords_conf_dialog_cb), pkd);
+//     menu_item_add_check(menu, _("Show hidden entries"), pkd->show_all, 
G_CALLBACK(bar_pane_keywords_toggle_show_all_cb), pkd);
+       
+       gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, 
GDK_CURRENT_TIME);
+}
+
+
+static gboolean bar_pane_keywords_menu_cb(GtkWidget *widget, GdkEventButton 
*bevent, gpointer data) 
+{ 
+       PaneKeywordsData *pkd = data;
+       if (bevent->button == MOUSE_BUTTON_RIGHT)
+               {
+               bar_pane_keywords_menu_popup(widget, pkd, bevent->x, bevent->y);
+               return TRUE;
+               }
+       return FALSE;
+} 
+
+
 void bar_pane_keywords_close(GtkWidget *bar)
 {
        PaneKeywordsData *pkd;
@@ -677,6 +753,8 @@
 {
        PaneKeywordsData *pkd = data;
 
+        if (pkd->click_tpath) gtk_tree_path_free(pkd->click_tpath);
+
        file_data_unregister_notify_func(bar_pane_keywords_notify_cb, pkd);
 
        file_data_unref(pkd->fd);
@@ -838,6 +916,9 @@
        g_signal_connect(G_OBJECT(pkd->keyword_treeview), "drag_motion",
                         G_CALLBACK(bar_pane_keywords_dnd_motion), pkd);
 
+       g_signal_connect(G_OBJECT(pkd->keyword_treeview), "button_press_event", 
+                        G_CALLBACK(bar_pane_keywords_menu_cb), pkd);
+       
        gtk_container_add(GTK_CONTAINER(scrolled), pkd->keyword_treeview);
        gtk_widget_show(pkd->keyword_treeview);
 

Modified: trunk/src/metadata.c
===================================================================
--- trunk/src/metadata.c        2009-03-11 17:38:20 UTC (rev 1509)
+++ trunk/src/metadata.c        2009-03-11 21:54:54 UTC (rev 1510)
@@ -983,6 +983,12 @@
                }
 }
 
+void keyword_delete(GtkTreeStore *keyword_tree, GtkTreeIter *iter_ptr)
+{
+       gtk_tree_store_remove(keyword_tree, iter_ptr);
+}
+
+
 void keyword_tree_new(void)
 {
        if (keyword_tree) return;

Modified: trunk/src/metadata.h
===================================================================
--- trunk/src/metadata.h        2009-03-11 17:38:20 UTC (rev 1509)
+++ trunk/src/metadata.h        2009-03-11 21:54:54 UTC (rev 1510)
@@ -69,6 +69,8 @@
 void keyword_tree_set(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, GList 
**kw_list);
 void keyword_tree_reset(GtkTreeModel *keyword_tree, GtkTreeIter *iter_ptr, 
GList **kw_list);
 
+void keyword_delete(GtkTreeStore *keyword_tree, GtkTreeIter *iter_ptr);
+
 void keyword_tree_new_default(void);
 void keyword_tree_new(void);
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn

Reply via email to