SF.net SVN: geany-plugins:[1050] trunk/geany-plugins/addons
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun Nov 1 17:40:09 UTC 2009
Revision: 1050
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1050&view=rev
Author: eht16
Date: 2009-11-01 17:40:09 +0000 (Sun, 01 Nov 2009)
Log Message:
-----------
Add a popup menu to the Bookmark list to easily remove set bookmarks.
Modified Paths:
--------------
trunk/geany-plugins/addons/ChangeLog
trunk/geany-plugins/addons/src/ao_bookmarklist.c
Modified: trunk/geany-plugins/addons/ChangeLog
===================================================================
--- trunk/geany-plugins/addons/ChangeLog 2009-11-01 17:13:08 UTC (rev 1049)
+++ trunk/geany-plugins/addons/ChangeLog 2009-11-01 17:40:09 UTC (rev 1050)
@@ -4,6 +4,7 @@
Fix setting up keybindings.
* src/ao_bookmarklist.c:
Improve handling of the notebook page (closes #2889415).
+ Add a popup menu to the Bookmark list to easily remove set bookmarks.
2009-10-26 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/geany-plugins/addons/src/ao_bookmarklist.c
===================================================================
--- trunk/geany-plugins/addons/src/ao_bookmarklist.c 2009-11-01 17:13:08 UTC (rev 1049)
+++ trunk/geany-plugins/addons/src/ao_bookmarklist.c 2009-11-01 17:40:09 UTC (rev 1050)
@@ -31,10 +31,6 @@
#include <gdk/gdkkeysyms.h>
-/*
- * TODO
- * - context menu
- */
typedef struct _AoBookmarkListPrivate AoBookmarkListPrivate;
@@ -56,6 +52,8 @@
gboolean enable_bookmarklist;
GtkWidget *page;
+ GtkWidget *popup_menu;
+
GtkListStore *store;
GtkWidget *tree;
@@ -221,6 +219,17 @@
{ /* allow reclicking of a treeview item */
g_idle_add(ao_selection_changed_cb, widget);
}
+ else if (event->button == 3)
+ {
+ AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(data);
+ GtkTreeSelection *treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(priv->tree));
+ if (gtk_tree_selection_get_selected(treesel, NULL, NULL))
+ {
+ gtk_menu_popup(GTK_MENU(priv->popup_menu), NULL, NULL, NULL, NULL,
+ event->button, event->time);
+ }
+ /* don't return TRUE here, unless the selection won't be changed */
+ }
return FALSE;
}
@@ -234,6 +243,17 @@
{
g_idle_add(ao_selection_changed_cb, widget);
}
+
+ if ((event->keyval == GDK_F10 && event->state & GDK_SHIFT_MASK) || event->keyval == GDK_Menu)
+ {
+ GdkEventButton button_event;
+
+ button_event.time = event->time;
+ button_event.button = 3;
+
+ ao_button_press_cb(widget, &button_event, data);
+ return TRUE;
+ }
return FALSE;
}
@@ -247,9 +267,48 @@
gtk_widget_destroy(priv->page);
priv->page = NULL;
}
+ if (priv->popup_menu)
+ {
+ gtk_widget_destroy(priv->popup_menu);
+ priv->popup_menu = NULL;
+ }
}
+static void popup_item_click_cb(GtkWidget *button, gpointer data)
+{
+ GtkTreeSelection *treesel;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ AoBookmarkListPrivate *priv = AO_BOOKMARK_LIST_GET_PRIVATE(data);
+
+ treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(priv->tree));
+
+ if (gtk_tree_selection_get_selected(treesel, &model, &iter))
+ {
+ GeanyDocument *doc = document_get_current();
+ gint line_nr;
+ gtk_tree_model_get(model, &iter, BMLIST_COL_LINE, &line_nr, -1);
+ sci_delete_marker_at_line(doc->editor->sci, line_nr - 1, 1);
+ }
+}
+
+
+static GtkWidget *create_popup_menu(AoBookmarkList *bm)
+{
+ GtkWidget *item, *menu;
+
+ menu = gtk_menu_new();
+
+ item = ui_image_menu_item_new(GTK_STOCK_DELETE, _("_Remove Bookmark"));
+ gtk_widget_show(item);
+ gtk_container_add(GTK_CONTAINER(menu), item);
+ g_signal_connect(item, "activate", G_CALLBACK(popup_item_click_cb), bm);
+
+ return menu;
+}
+
+
static void ao_bookmark_list_show(AoBookmarkList *bm)
{
GtkCellRenderer *text_renderer;
@@ -293,8 +352,8 @@
g_object_set(tree, "has-tooltip", TRUE, "tooltip-column", BMLIST_COL_TOOLTIP, NULL);
/* selection handling */
- g_signal_connect(tree, "button-press-event", G_CALLBACK(ao_button_press_cb), NULL);
- g_signal_connect(tree, "key-press-event", G_CALLBACK(ao_key_press_cb), NULL);
+ g_signal_connect(tree, "button-press-event", G_CALLBACK(ao_button_press_cb), bm);
+ g_signal_connect(tree, "key-press-event", G_CALLBACK(ao_key_press_cb), bm);
/* scrolled window */
scrollwin = gtk_scrolled_window_new(NULL, NULL);
@@ -309,6 +368,7 @@
scrollwin,
gtk_label_new(_("Bookmarks")));
+ priv->popup_menu = create_popup_menu(bm);
priv->store = store;
priv->tree = GTK_WIDGET(tree);
priv->page = scrollwin;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list