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

dimitrov-adrian at users.sourceforge.net dimitrov-adrian at xxxxx
Sun Apr 25 15:00:33 UTC 2010


Revision: 1300
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1300&view=rev
Author:   dimitrov-adrian
Date:     2010-04-25 15:00:33 +0000 (Sun, 25 Apr 2010)

Log Message:
-----------
Treebrowser: Added option to show/hide treelines; copy uri to clipboard; search in treeview by name; tooltips in the view; changed style of inactive menu elements from hidden to inactive and... and experimental bookmarks view

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 13:12:47 UTC (rev 1299)
+++ trunk/geany-plugins/treebrowser/ChangeLog	2010-04-25 15:00:33 UTC (rev 1300)
@@ -35,8 +35,12 @@
 25-04-2010 	Adrian Dimitrov 		<dimitrov.adrian at gmail.com>
 
 	* src/treebrowser.c
-		Menu elements are inactive instant of hidden
+		Menu elements are inactive instands of hidden
+		Added experimental bookmarks view
+		Added option to show/hide tree lines
 		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
 
 
 19-04-2010 	Adrian Dimitrov 		<dimitrov.adrian at gmail.com>

Modified: trunk/geany-plugins/treebrowser/src/treebrowser.c
===================================================================
--- trunk/geany-plugins/treebrowser/src/treebrowser.c	2010-04-25 13:12:47 UTC (rev 1299)
+++ trunk/geany-plugins/treebrowser/src/treebrowser.c	2010-04-25 15:00:33 UTC (rev 1300)
@@ -54,8 +54,8 @@
 static gboolean 			CONFIG_FOLLOW_CURRENT_DOC 	= TRUE;
 static gboolean 			CONFIG_ON_EXPAND_REFRESH 	= TRUE;
 static gboolean 			CONFIG_ON_DELETE_CLOSE_FILE = TRUE;
+static gboolean 			CONFIG_SHOW_TREE_LINES 		= TRUE;
 
-
 /* ------------------
  * TREEVIEW STRUCT
  * ------------------ */
@@ -322,6 +322,50 @@
 		gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), parent), FALSE);
 }
 
+
+static void
+treebrowser_load_bookmarks(void)
+{
+	gchar 		*bookmarks;
+	GError 		*error = NULL;
+	gchar 		*contents;
+	gchar 		**lines, **line;
+	GtkTreeIter iter;
+
+	bookmarks = g_build_filename (g_get_home_dir(), ".gtk-bookmarks", NULL);
+	if (g_file_get_contents (bookmarks, &contents, NULL, &error))
+	{
+		gtk_tree_store_iter_clear_nodes(NULL, FALSE);
+		lines = g_strsplit (contents, "\n", 0);
+		for (line = lines; *line; ++line)
+		{
+			if (**line)
+			{
+				gchar *pos;
+				gchar *name;
+				pos = g_utf8_strchr (*line, -1, ' ');
+				if (pos != NULL)
+				{
+					*pos = '\0';
+					name = pos + 1;
+				}
+				else
+					name = NULL;
+				gtk_tree_store_append(treestore, &iter, NULL);
+				gtk_tree_store_set(treestore, &iter,
+										TREEBROWSER_COLUMN_ICON, 	GTK_STOCK_DIRECTORY,
+										TREEBROWSER_COLUMN_NAME, 	g_basename(*line),
+										TREEBROWSER_COLUMN_URI, 	g_path_get_dirname(*line),
+										-1);
+			}
+		}
+		g_strfreev (lines);
+		g_free (contents);
+	}
+	else
+		g_error_free(error);
+}
+
 static gboolean
 treebrowser_search(gchar *uri, gpointer parent)
 {
@@ -753,7 +797,7 @@
 	g_signal_connect(item, "activate", G_CALLBACK(on_menu_close), uri);
 	gtk_widget_set_sensitive(item, is_document);
 
-	item = ui_image_menu_item_new(GTK_STOCK_COPY, g_strdup_printf(_("Copy URI"), name));
+	item = ui_image_menu_item_new(GTK_STOCK_COPY, g_strdup_printf(_("Copy full path"), name));
 	gtk_container_add(GTK_CONTAINER(menu), item);
 	g_signal_connect(item, "activate", G_CALLBACK(on_menu_copy_uri), uri);
 	gtk_widget_set_sensitive(item, is_document);
@@ -1019,9 +1063,6 @@
 	render_text 			= gtk_cell_renderer_text_new();
 
 	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(view), FALSE);
-
-	ui_widget_modify_font_from_string(view, geany->interface_prefs->tagbar_font);
-
 	gtk_tree_view_append_column(GTK_TREE_VIEW(view), treeview_column_text);
 
 	gtk_tree_view_column_pack_start(treeview_column_text, render_icon, FALSE);
@@ -1030,10 +1071,19 @@
 	gtk_tree_view_column_pack_start(treeview_column_text, render_text, TRUE);
 	gtk_tree_view_column_add_attribute(treeview_column_text, render_text, "text", TREEBROWSER_RENDER_TEXT);
 
+	gtk_tree_view_set_enable_search(GTK_TREE_VIEW(view), TRUE);
+	gtk_tree_view_set_search_column(GTK_TREE_VIEW(view), TREEBROWSER_COLUMN_NAME);
+
+	ui_widget_modify_font_from_string(view, geany->interface_prefs->tagbar_font);
+
+	if (gtk_check_version(2, 12, 0) == NULL)
+		g_object_set(view, "has-tooltip", TRUE, "tooltip-column", TREEBROWSER_COLUMN_URI, NULL);
+
+	gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(view), CONFIG_SHOW_TREE_LINES);
+
 	treestore = gtk_tree_store_new(TREEBROWSER_COLUMNC, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
 
 	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);
 
 	return view;
@@ -1086,6 +1136,11 @@
 	g_signal_connect(wid, "clicked", G_CALLBACK(treebrowser_track_current), NULL);
 	gtk_container_add(GTK_CONTAINER(toolbar), wid);
 
+	wid = GTK_WIDGET(gtk_tool_button_new_from_stock(GTK_STOCK_HOME));
+	ui_widget_set_tooltip_text(wid, _("Bookmarks"));
+	g_signal_connect(wid, "clicked", G_CALLBACK(treebrowser_load_bookmarks), NULL);
+	gtk_container_add(GTK_CONTAINER(toolbar), wid);
+
 	wid = GTK_WIDGET(gtk_tool_button_new_from_stock(GTK_STOCK_CLOSE));
 	ui_widget_set_tooltip_text(wid, _("Hide bars"));
 	g_signal_connect(wid, "clicked", G_CALLBACK(on_button_hide_bars), NULL);
@@ -1144,6 +1199,7 @@
 	GtkWidget *FOLLOW_CURRENT_DOC;
 	GtkWidget *ON_EXPAND_REFRESH;
 	GtkWidget *ON_DELETE_CLOSE_FILE;
+	GtkWidget *SHOW_TREE_LINES;
 
 } configure_widgets;
 
@@ -1165,6 +1221,7 @@
 	CONFIG_FOLLOW_CURRENT_DOC 		= utils_get_setting_boolean(config, "treebrowser", "follow_current_doc", 	CONFIG_FOLLOW_CURRENT_DOC);
 	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);
 
 	g_key_file_free(config);
 
@@ -1192,6 +1249,7 @@
 	g_key_file_set_boolean(config, 	"treebrowser", "follow_current_doc", 	CONFIG_FOLLOW_CURRENT_DOC);
 	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);
 
 	data = g_key_file_to_data(config, NULL, NULL);
 	utils_write_file(CONFIG_FILE, data);
@@ -1217,9 +1275,13 @@
 	CONFIG_FOLLOW_CURRENT_DOC 	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.FOLLOW_CURRENT_DOC));
 	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));
 
 	if (save_settings() == TRUE)
+	{
+		gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(treeview), CONFIG_SHOW_TREE_LINES);
 		treebrowser_chroot(addressbar_last_address);
+	}
 	else
 		dialogs_show_msgbox(GTK_MESSAGE_ERROR,
 			_("Plugin configuration directory could not be created."));
@@ -1301,6 +1363,11 @@
 	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."));
+	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);
+	gtk_box_pack_start(GTK_BOX(vbox), configure_widgets.SHOW_TREE_LINES, 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