SF.net SVN: geany-plugins:[1304] trunk/geany-plugins/treebrowser

dimitrov-adrian at users.sourceforge.net dimitrov-adrian at xxxxx
Sun Apr 25 18:35:12 UTC 2010


Revision: 1304
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1304&view=rev
Author:   dimitrov-adrian
Date:     2010-04-25 18:35:12 +0000 (Sun, 25 Apr 2010)

Log Message:
-----------
Treebrowser: Added option to open terminal; Bookmarks fixups

Modified Paths:
--------------
    trunk/geany-plugins/treebrowser/ChangeLog
    trunk/geany-plugins/treebrowser/src/treebrowser.c

Modified: trunk/geany-plugins/treebrowser/ChangeLog
===================================================================
--- trunk/geany-plugins/treebrowser/ChangeLog	2010-04-25 17:30:41 UTC (rev 1303)
+++ trunk/geany-plugins/treebrowser/ChangeLog	2010-04-25 18:35:12 UTC (rev 1304)
@@ -41,6 +41,7 @@
 		Added option to copy the uri into clipboard
 		Added option to search into the view by the name // thanks to native filebrowser
 		Added tooltips with uri // thanks to native filebrowser
+		Added option to open terminal
 		Applied patch from Enrico to fix gtk+-2.8 compitable for tree lines
 
 

Modified: trunk/geany-plugins/treebrowser/src/treebrowser.c
===================================================================
--- trunk/geany-plugins/treebrowser/src/treebrowser.c	2010-04-25 17:30:41 UTC (rev 1303)
+++ trunk/geany-plugins/treebrowser/src/treebrowser.c	2010-04-25 18:35:12 UTC (rev 1304)
@@ -56,6 +56,7 @@
 static gboolean 			CONFIG_ON_EXPAND_REFRESH 	= TRUE;
 static gboolean 			CONFIG_ON_DELETE_CLOSE_FILE = TRUE;
 static gboolean 			CONFIG_SHOW_TREE_LINES 		= TRUE;
+static gboolean 			CONFIG_SHOW_BOOKMARKS 		= FALSE;
 
 /* ------------------
  * TREEVIEW STRUCT
@@ -63,14 +64,17 @@
 
 enum
 {
-	TREEBROWSER_COLUMNC 								= 3,
+	TREEBROWSER_COLUMNC 								= 4,
 
-	TREEBROWSER_COLUMN_ICON								= 0,
-	TREEBROWSER_COLUMN_NAME								= 1,
-	TREEBROWSER_COLUMN_URI								= 2,
+	TREEBROWSER_COLUMN_ICON 							= 0,
+	TREEBROWSER_COLUMN_NAME 							= 1,
+	TREEBROWSER_COLUMN_URI 								= 2,
+	TREEBROWSER_COLUMN_FLAG 							= 3,
 
-	TREEBROWSER_RENDER_ICON								= 0,
-	TREEBROWSER_RENDER_TEXT								= 1
+	TREEBROWSER_RENDER_ICON 							= 0,
+	TREEBROWSER_RENDER_TEXT 							= 1,
+
+	TREEBROWSER_FLAGS_SEPARATOR 						= -1
 };
 
 
@@ -226,6 +230,19 @@
 	return g_get_current_dir();
 }
 
+static gchar *
+get_terminal (void)
+{
+	gchar 		*terminal;
+	const gchar *term = g_getenv("TERM");
+
+	if (term != NULL)
+		terminal = g_strdup(term);
+	else
+		terminal = g_strdup("xterm");
+	return terminal;
+}
+
 static void
 treebrowser_chroot(gchar *directory)
 {
@@ -347,12 +364,13 @@
 			gtk_tree_store_prepend(treestore, &iter, NULL);
 			gtk_tree_store_set(treestore, &iter,
 											TREEBROWSER_COLUMN_ICON, 	NULL,
-											TREEBROWSER_COLUMN_NAME, 	"--------------------",
+											TREEBROWSER_COLUMN_NAME, 	NULL,
 											TREEBROWSER_COLUMN_URI, 	FALSE,
+											TREEBROWSER_COLUMN_FLAG, 	TREEBROWSER_FLAGS_SEPARATOR,
 											-1);
 			gtk_tree_store_prepend(treestore, &bookmarks_iter, NULL);
 			gtk_tree_store_set(treestore, &bookmarks_iter,
-											TREEBROWSER_COLUMN_ICON, 	GTK_STOCK_HOME,
+											TREEBROWSER_COLUMN_ICON, 	GTK_STOCK_ABOUT,
 											TREEBROWSER_COLUMN_NAME, 	_("Bookmarks"),
 											TREEBROWSER_COLUMN_URI, 	FALSE,
 											-1);
@@ -572,6 +590,20 @@
 }
 
 static void
+on_menu_open_terminal(GtkMenuItem *menuitem, gchar *uri)
+{
+	gchar *argv[2] = {NULL, NULL};
+	argv[0] = get_terminal();
+
+	if (g_file_test(uri, G_FILE_TEST_EXISTS))
+		uri = g_file_test(uri, G_FILE_TEST_IS_DIR) ? g_strdup(uri) : g_path_get_dirname(uri);
+	else
+		uri = addressbar_last_address;
+
+	g_spawn_async(uri, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
+}
+
+static void
 on_menu_set_as_root(GtkMenuItem *menuitem, gchar *uri)
 {
 	if (g_file_test(uri, G_FILE_TEST_IS_DIR))
@@ -738,6 +770,17 @@
 }
 
 static void
+on_menu_show_bookmarks(GtkMenuItem *menuitem, gpointer *user_data)
+{
+	CONFIG_SHOW_BOOKMARKS = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));
+	if (CONFIG_SHOW_BOOKMARKS)
+		treebrowser_load_bookmarks();
+	else
+		gtk_tree_store_iter_clear_nodes(&bookmarks_iter, TRUE);
+	save_settings();
+}
+
+static void
 on_menu_show_hidden_files(GtkMenuItem *menuitem, gpointer *user_data)
 {
 	CONFIG_SHOW_HIDDEN_FILES = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem));
@@ -774,6 +817,10 @@
 	g_signal_connect(item, "activate", G_CALLBACK(on_menu_open_externally), uri);
 	gtk_widget_set_sensitive(item, is_exists);
 
+	item = ui_image_menu_item_new("utilities-terminal", _("Open Terminal"));
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	g_signal_connect(item, "activate", G_CALLBACK(on_menu_open_terminal), uri);
+
 	item = ui_image_menu_item_new(GTK_STOCK_GOTO_TOP, _("Set as root"));
 	gtk_container_add(GTK_CONTAINER(menu), item);
 	g_signal_connect(item, "activate", G_CALLBACK(on_menu_set_as_root), uri);
@@ -835,6 +882,11 @@
 	item = gtk_separator_menu_item_new();
 	gtk_container_add(GTK_CONTAINER(menu), item);
 
+	item = gtk_check_menu_item_new_with_mnemonic(_("Show bookmarks"));
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), CONFIG_SHOW_BOOKMARKS);
+	g_signal_connect(item, "activate", G_CALLBACK(on_menu_show_bookmarks), NULL);
+
 	item = gtk_check_menu_item_new_with_mnemonic(_("Show hidden files"));
 	gtk_container_add(GTK_CONTAINER(menu), item);
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), CONFIG_SHOW_HIDDEN_FILES);
@@ -1089,6 +1141,14 @@
  * TREEBROWSER INITIAL FUNCTIONS
  * ------------------ */
 
+static gboolean
+treeview_separator_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
+{
+	guint flag;
+	gtk_tree_model_get(model, iter, TREEBROWSER_COLUMN_FLAG, &flag, -1);
+	return (flag == TREEBROWSER_FLAGS_SEPARATOR ? TRUE : FALSE);
+}
+
 static GtkWidget*
 create_view_and_model(void)
 {
@@ -1113,6 +1173,8 @@
 	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(view), TRUE);
 	gtk_tree_view_set_search_column(GTK_TREE_VIEW(view), TREEBROWSER_COLUMN_NAME);
 
+	gtk_tree_view_set_row_separator_func(GTK_TREE_VIEW(view), treeview_separator_func, NULL, NULL);
+
 	ui_widget_modify_font_from_string(view, geany->interface_prefs->tagbar_font);
 
 	if (gtk_check_version(2, 12, 0) == NULL)
@@ -1124,7 +1186,7 @@
 	gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(view), CONFIG_SHOW_TREE_LINES);
 #endif
 
-	treestore = gtk_tree_store_new(TREEBROWSER_COLUMNC, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
+	treestore = gtk_tree_store_new(TREEBROWSER_COLUMNC, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT);
 
 	gtk_tree_view_set_model(GTK_TREE_VIEW(view), GTK_TREE_MODEL(treestore));
 	g_signal_connect(G_OBJECT(render_text), "edited", G_CALLBACK(on_treeview_renamed), view);
@@ -1243,6 +1305,7 @@
 	GtkWidget *ON_EXPAND_REFRESH;
 	GtkWidget *ON_DELETE_CLOSE_FILE;
 	GtkWidget *SHOW_TREE_LINES;
+	GtkWidget *SHOW_BOOKMARKS;
 
 } configure_widgets;
 
@@ -1265,6 +1328,7 @@
 	CONFIG_ON_EXPAND_REFRESH 		= utils_get_setting_boolean(config, "treebrowser", "on_expand_refresh", 	CONFIG_ON_EXPAND_REFRESH);
 	CONFIG_ON_DELETE_CLOSE_FILE 	= utils_get_setting_boolean(config, "treebrowser", "on_delete_close_file", 	CONFIG_ON_DELETE_CLOSE_FILE);
 	CONFIG_SHOW_TREE_LINES 			= utils_get_setting_boolean(config, "treebrowser", "show_tree_lines", 		CONFIG_SHOW_TREE_LINES);
+	CONFIG_SHOW_BOOKMARKS 			= utils_get_setting_boolean(config, "treebrowser", "show_bookmarks", 		CONFIG_SHOW_BOOKMARKS);
 
 	g_key_file_free(config);
 
@@ -1293,6 +1357,7 @@
 	g_key_file_set_boolean(config, 	"treebrowser", "on_expand_refresh", 	CONFIG_ON_EXPAND_REFRESH);
 	g_key_file_set_boolean(config, 	"treebrowser", "on_delete_close_file", 	CONFIG_ON_DELETE_CLOSE_FILE);
 	g_key_file_set_boolean(config, 	"treebrowser", "show_tree_lines", 		CONFIG_SHOW_TREE_LINES);
+	g_key_file_set_boolean(config, 	"treebrowser", "show_bookmarks", 		CONFIG_SHOW_BOOKMARKS);
 
 	data = g_key_file_to_data(config, NULL, NULL);
 	utils_write_file(CONFIG_FILE, data);
@@ -1319,6 +1384,7 @@
 	CONFIG_ON_EXPAND_REFRESH 	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.ON_EXPAND_REFRESH));
 	CONFIG_ON_DELETE_CLOSE_FILE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.ON_DELETE_CLOSE_FILE));
 	CONFIG_SHOW_TREE_LINES 		= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.SHOW_TREE_LINES));
+	CONFIG_SHOW_BOOKMARKS 		= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.SHOW_BOOKMARKS));
 
 	if (save_settings() == TRUE)
 	{
@@ -1326,6 +1392,8 @@
 		gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(treeview), CONFIG_SHOW_TREE_LINES);
 #endif
 		treebrowser_chroot(addressbar_last_address);
+		if (CONFIG_SHOW_BOOKMARKS)
+			treebrowser_load_bookmarks();
 	}
 	else
 		dialogs_show_msgbox(GTK_MESSAGE_ERROR,
@@ -1403,17 +1471,23 @@
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configure_widgets.ON_EXPAND_REFRESH), CONFIG_ON_EXPAND_REFRESH);
 	gtk_box_pack_start(GTK_BOX(vbox), configure_widgets.ON_EXPAND_REFRESH, FALSE, FALSE, 0);
 
-	configure_widgets.ON_DELETE_CLOSE_FILE = gtk_check_button_new_with_label(_("On delete file, close it if is opened."));
+	configure_widgets.ON_DELETE_CLOSE_FILE = gtk_check_button_new_with_label(_("On delete file, close it if is opened"));
 	gtk_button_set_focus_on_click(GTK_BUTTON(configure_widgets.ON_DELETE_CLOSE_FILE), FALSE);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configure_widgets.ON_DELETE_CLOSE_FILE), CONFIG_ON_DELETE_CLOSE_FILE);
 	gtk_box_pack_start(GTK_BOX(vbox), configure_widgets.ON_DELETE_CLOSE_FILE, FALSE, FALSE, 0);
 
-	configure_widgets.SHOW_TREE_LINES = gtk_check_button_new_with_label(_("Show tree lines."));
+	configure_widgets.SHOW_TREE_LINES = gtk_check_button_new_with_label(_("Show tree lines"));
 	gtk_button_set_focus_on_click(GTK_BUTTON(configure_widgets.SHOW_TREE_LINES), FALSE);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configure_widgets.SHOW_TREE_LINES), CONFIG_SHOW_TREE_LINES);
 #if GTK_CHECK_VERSION(2, 10, 0)
 	gtk_box_pack_start(GTK_BOX(vbox), configure_widgets.SHOW_TREE_LINES, FALSE, FALSE, 0);
 #endif
+
+	configure_widgets.SHOW_BOOKMARKS = gtk_check_button_new_with_label(_("Show bookmarks"));
+	gtk_button_set_focus_on_click(GTK_BUTTON(configure_widgets.SHOW_BOOKMARKS), FALSE);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configure_widgets.SHOW_BOOKMARKS), CONFIG_SHOW_BOOKMARKS);
+	gtk_box_pack_start(GTK_BOX(vbox), configure_widgets.SHOW_BOOKMARKS, FALSE, FALSE, 0);
+
 	gtk_widget_show_all(vbox);
 
 	g_signal_connect(dialog, "response", G_CALLBACK(on_configure_response), NULL);


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