[gthumb] allow to delete the tags from the default tag list
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] allow to delete the tags from the default tag list
- Date: Sat, 29 Dec 2012 11:37:23 +0000 (UTC)
commit e9aa520d1b0ef8fe9cc6b5d6ef33ef037826b7eb
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Dec 29 12:27:56 2012 +0100
allow to delete the tags from the default tag list
tags can be deleted using the delete key or from the context menu.
[new feature]
gthumb/gth-tags-entry.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
---
diff --git a/gthumb/gth-tags-entry.c b/gthumb/gth-tags-entry.c
index 5658dba..a10dfd7 100644
--- a/gthumb/gth-tags-entry.c
+++ b/gthumb/gth-tags-entry.c
@@ -65,6 +65,7 @@ typedef struct {
GtkWidget *container;
GtkWidget *tree_view;
GtkListStore *store;
+ GtkWidget *popup_menu;
} ExpandedList;
@@ -102,6 +103,7 @@ gth_tags_entry_finalize (GObject *obj)
g_object_unref (self->priv->completion);
g_strfreev (self->priv->tags);
g_strfreev (self->priv->expanded_list.last_used);
+ gtk_widget_destroy (self->priv->expanded_list.popup_menu);
g_hash_table_unref (self->priv->inconsistent);
G_OBJECT_CLASS (gth_tags_entry_parent_class)->finalize (obj);
@@ -681,11 +683,88 @@ expand_button_toggled_cb (GtkToggleButton *button,
static void
+_gth_tags_entry_delete_selected_tag (GthTagsEntry *self)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ char *tag;
+ GthTagsFile *tags_file;
+
+ if (! gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->expanded_list.tree_view)),
+ &model,
+ &iter))
+ {
+ return;
+ }
+
+ gtk_tree_model_get (model, &iter, EXPANDED_LIST_NAME_COLUMN, &tag, -1);
+
+ tags_file = gth_main_get_default_tag_file ();
+ if (gth_tags_file_remove (tags_file, tag))
+ gth_main_tags_changed ();
+
+ g_free (tag);
+}
+
+
+static gboolean
+expanded_list_key_press_event_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer user_data)
+{
+ GthTagsEntry *self = user_data;
+ guint modifiers;
+
+ modifiers = gtk_accelerator_get_default_mod_mask ();
+ if ((event->state & modifiers) == 0) {
+ switch (event->keyval) {
+ case GDK_KEY_Delete:
+ _gth_tags_entry_delete_selected_tag (self);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+static void
+delete_tag_activate_cb (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ _gth_tags_entry_delete_selected_tag (GTH_TAGS_ENTRY (user_data));
+}
+
+
+static gboolean
+expanded_list_button_press_event_cb (GtkStatusIcon *status_icon,
+ GdkEventButton *event,
+ gpointer user_data)
+{
+ GthTagsEntry *self = user_data;
+
+ if (event->button == 3) {
+ gtk_menu_popup (GTK_MENU (self->priv->expanded_list.popup_menu),
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ event->button,
+ event->time);
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+
+static void
gth_tags_entry_init (GthTagsEntry *self)
{
GtkWidget *hbox;
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
+ GtkWidget *menu_item;
gtk_widget_set_can_focus (GTK_WIDGET (self), TRUE);
gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL);
@@ -786,6 +865,17 @@ gth_tags_entry_init (GthTagsEntry *self)
gtk_tree_view_append_column (GTK_TREE_VIEW (self->priv->expanded_list.tree_view), column);
gtk_widget_show (self->priv->expanded_list.tree_view);
+ /* expanded list, popup menu */
+
+ self->priv->expanded_list.popup_menu = gtk_menu_new ();
+ menu_item = gtk_menu_item_new_with_mnemonic (_("_Delete"));
+ g_signal_connect (menu_item,
+ "activate",
+ G_CALLBACK (delete_tag_activate_cb),
+ self);
+ gtk_widget_show (menu_item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (self->priv->expanded_list.popup_menu), menu_item);
+
/**/
self->priv->expanded_list.container = g_object_new (GTK_TYPE_SCROLLED_WINDOW,
@@ -808,6 +898,14 @@ gth_tags_entry_init (GthTagsEntry *self)
"notify::text",
G_CALLBACK (text_changed_cb),
self);
+ g_signal_connect (self->priv->expanded_list.tree_view,
+ "key-press-event",
+ G_CALLBACK (expanded_list_key_press_event_cb),
+ self);
+ g_signal_connect (self->priv->expanded_list.tree_view,
+ "button-press-event",
+ G_CALLBACK (expanded_list_button_press_event_cb),
+ self);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]