SF.net SVN: geany: [1972] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Wed Oct 24 11:02:44 UTC 2007


Revision: 1972
          http://geany.svn.sourceforge.net/geany/?rev=1972&view=rev
Author:   ntrel
Date:     2007-10-24 04:02:43 -0700 (Wed, 24 Oct 2007)

Log Message:
-----------
Use the current directory when there are no documents open.
Add popup menu with Open command.
Separate toolbar code from init().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/plugins/filebrowser.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-10-24 10:52:48 UTC (rev 1971)
+++ trunk/ChangeLog	2007-10-24 11:02:43 UTC (rev 1972)
@@ -9,6 +9,10 @@
    Make ui_set_statusbar() take a log argument for whether to record the
    message in the Status window.
    (Plugin API functions already do this).
+ * plugins/filebrowser.c:
+   Use the current directory when there are no documents open.
+   Add popup menu with Open command.
+   Separate toolbar code from init().
 
 
 2007-10-23  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/plugins/filebrowser.c
===================================================================
--- trunk/plugins/filebrowser.c	2007-10-24 10:52:48 UTC (rev 1971)
+++ trunk/plugins/filebrowser.c	2007-10-24 11:02:43 UTC (rev 1972)
@@ -32,6 +32,7 @@
 #include "prefs.h"
 #include "document.h"
 #include "utils.h"
+#include "keybindings.h"
 #include "plugindata.h"
 
 
@@ -181,14 +182,16 @@
 	gchar *dir;
 	gint idx = documents->get_cur_idx();
 
-	if (! DOC_IDX_VALID(idx))
-		return;
+	if (DOC_IDX_VALID(idx))
+	{
+		fname = DOC_FILENAME(idx);
+		fname = utils->get_locale_from_utf8(fname);
+		dir = g_path_get_dirname(fname);
+		g_free(fname);
+	}
+	else
+		dir = g_strdup(".");
 
-	fname = DOC_FILENAME(idx);
-	fname = utils->get_locale_from_utf8(fname);
-	dir = g_path_get_dirname(fname);
-	g_free(fname);
-
 	setptr(current_dir, dir);
 	refresh();
 }
@@ -268,10 +271,51 @@
 }
 
 
+static GtkWidget *create_popup_menu()
+{
+	GtkWidget *item, *menu;
+
+	menu = gtk_menu_new();
+
+	item = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, NULL);
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	g_signal_connect((gpointer) item, "activate",
+		G_CALLBACK(open_selected_files), NULL);
+
+	item = gtk_separator_menu_item_new();
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+
+	item = gtk_image_menu_item_new_with_mnemonic(_("H_ide sidebar"));
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
+		gtk_image_new_from_stock("gtk-close", GTK_ICON_SIZE_MENU));
+	gtk_widget_show(item);
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	g_signal_connect_swapped((gpointer) item, "activate",
+		G_CALLBACK(geany_data->keybindings->send_command),
+		GINT_TO_POINTER(GEANY_KEYS_MENU_SIDEBAR));
+
+	return menu;
+}
+
+
 static gboolean on_button_press(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 {
 	if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
 		open_selected_files();
+	else
+	if (event->button == 3)
+	{
+		static GtkWidget *popup_menu = NULL;
+
+		if (popup_menu == NULL)
+			popup_menu = create_popup_menu();
+
+		gtk_menu_popup(GTK_MENU(popup_menu), NULL, NULL, NULL, NULL,
+			event->button, event->time);
+		return TRUE;
+	}
 	return FALSE;
 }
 
@@ -346,17 +390,12 @@
 }
 
 
-void init(GeanyData *data)
+static GtkWidget *make_toolbar()
 {
-	GtkWidget *scrollwin, *wid, *vbox, *toolbar;
+	GtkWidget *wid, *toolbar;
 	GtkTooltips *tooltips = GTK_TOOLTIPS(support->lookup_widget(
 		geany_data->app->window, "tooltips"));
 
-	file_view = gtk_tree_view_new();
-	prepare_file_view();
-
-	vbox = gtk_vbox_new(FALSE, 0);
-
 	toolbar = gtk_toolbar_new();
 	gtk_toolbar_set_icon_size(GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_MENU);
 
@@ -384,12 +423,25 @@
 	g_signal_connect(G_OBJECT(wid), "clicked", G_CALLBACK(on_current_path), NULL);
 	gtk_container_add(GTK_CONTAINER(toolbar), wid);
 
+	return toolbar;
+}
+
+
+void init(GeanyData *data)
+{
+	GtkWidget *scrollwin, *toolbar, *vbox;
+
+	vbox = gtk_vbox_new(FALSE, 0);
+	toolbar = make_toolbar();
 	gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
 
 	path_entry = gtk_entry_new();
 	gtk_editable_set_editable(GTK_EDITABLE(path_entry), FALSE);
 	gtk_box_pack_start(GTK_BOX(vbox), path_entry, FALSE, FALSE, 2);
 
+	file_view = gtk_tree_view_new();
+	prepare_file_view();
+
 	scrollwin = gtk_scrolled_window_new(NULL, NULL);
 	gtk_scrolled_window_set_policy(
 		GTK_SCROLLED_WINDOW(scrollwin),


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



More information about the Commits mailing list