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

dimitrov-adrian at users.sourceforge.net dimitrov-adrian at xxxxx
Sat Apr 17 14:46:51 UTC 2010


Revision: 1251
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1251&view=rev
Author:   dimitrov-adrian
Date:     2010-04-17 14:46:50 +0000 (Sat, 17 Apr 2010)

Log Message:
-----------
Treebrowser: added option to hide object files

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-16 18:34:12 UTC (rev 1250)
+++ trunk/geany-plugins/treebrowser/ChangeLog	2010-04-17 14:46:50 UTC (rev 1251)
@@ -12,7 +12,7 @@
 
 	(DONE) codestyle improve to be same as other parts as geany`s
 	(DONE) configuration dialog
-	(DONE) tracking path to current focused document (currently now roking on Windows)
+	(DONE) tracking path to current focused document (work only for refreshed directories)
 	* Better tracking for files, open path to them
 	* In windows can choice between devices (C:\, D:\,...)
 	* Windows compitable
@@ -21,16 +21,26 @@
 	(DONE) oneclick document opening
 	(DONE) filter separating ex.: "*.c;*.cpp;*.h"
 	* fix possible memory leaks (using g_free... where is need)
+	* Folowing path from current document view
+	(DONE) Hide object files as native filebroser (*.o;*.a;*.so;*.dll;*.lib..)
 
 
 +-------------------------------+
 | Development release ChangeLog |
 +-------------------------------+
 
+17-04-2010 	Adrian Dimitrov 		<dimitrov.adrian at gmail.com>
+
+	* src/treebrowser.c
+		added option to hide object files *.so;*.obj;*.so;*.dll;*.a;*.lib
+		fixed a few warnings
+
+
 14-04-2010 	Adrian Dimitrov 		<dimitrov.adrian at gmail.com>
 
 	* src/treebrowser.c
 		strings cleanup
+		(This is version 0.2, because the plugin become 2 months old :)
 
 
 11-04-2010 	Adrian Dimitrov 		<dimitrov.adrian at gmail.com>
@@ -38,7 +48,7 @@
 	* src/treebrowser.c
 		fixed bug when turned off "On expand refresh"
 		fixed runtime crytical warnings reported in http://nopaste.geany.org/p/m3f018a3e
-			and thanks to Enrico to help with gdb :)
+			and thanks to Enrico for help with gdb :)
 		added empty element when directory not filled, and changed default option values
 			for "On expand refresh"
 

Modified: trunk/geany-plugins/treebrowser/src/treebrowser.c
===================================================================
--- trunk/geany-plugins/treebrowser/src/treebrowser.c	2010-04-16 18:34:12 UTC (rev 1250)
+++ trunk/geany-plugins/treebrowser/src/treebrowser.c	2010-04-17 14:46:50 UTC (rev 1251)
@@ -23,8 +23,6 @@
 static GtkWidget 			*addressbar;
 static gchar 				*addressbar_last_address 	= NULL;
 
-static GtkWidget 			*menu_showbars;
-
 static GtkTreeViewColumn 	*treeview_column_icon, *treeview_column_text;
 static GtkCellRenderer 		*render_icon, *render_text;
 
@@ -45,6 +43,7 @@
 static gboolean 			CONFIG_REVERSE_FILTER 		= FALSE;
 static gboolean 			CONFIG_ONE_CLICK_CHDOC 		= FALSE;
 static gboolean 			CONFIG_SHOW_HIDDEN_FILES 	= FALSE;
+static gboolean 			CONFIG_HIDE_OBJECT_FILES 	= FALSE;
 static gboolean 			CONFIG_SHOW_BARS			= TRUE;
 static gboolean 			CONFIG_CHROOT_ON_DCLICK		= FALSE;
 static gboolean 			CONFIG_FOLLOW_CURRENT_DOC 	= TRUE;
@@ -126,8 +125,16 @@
 {
 	gchar		**filters;
 	gint 		i;
-	gboolean 	temporary_reverse = FALSE;
+	gboolean 	temporary_reverse 	= FALSE;
+	const gchar *exts[] 			= {".o", ".obj", ".so", ".dll", ".a", ".lib"};
 
+	if (CONFIG_HIDE_OBJECT_FILES)
+		for (i = 0; exts[i]; i++)
+		{
+			if (g_str_has_suffix(base_name, exts[i]))
+				return FALSE;
+		}
+
 	if (! NZV(gtk_entry_get_text(GTK_ENTRY(filter))))
 		return TRUE;
 
@@ -201,7 +208,7 @@
 
 	directory = g_strconcat(directory, G_DIR_SEPARATOR_S, NULL);
 
-	if (gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeview), gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), parent)))
+	if (parent && gtk_tree_view_row_expanded(GTK_TREE_VIEW(treeview), gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), parent)))
 		expanded = TRUE;
 
 	gtk_tree_store_iter_clear_nodes(parent, FALSE);
@@ -262,7 +269,7 @@
 			g_free(uri);
 		}
 	}
-	if (expanded)
+	if (parent && expanded)
 		gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), parent), FALSE);
 }
 
@@ -345,7 +352,6 @@
 		gtk_widget_hide(sidebar_vbox_bars);
 
 	CONFIG_SHOW_BARS = state;
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_showbars), CONFIG_SHOW_BARS);
 	save_settings();
 }
 
@@ -360,10 +366,8 @@
 			gtk_tree_store_iter_clear_nodes(&i, TRUE);
 		gtk_tree_store_remove(GTK_TREE_STORE(treestore), &i);
 	}
-
 	if (delete_root)
 		gtk_tree_store_remove(GTK_TREE_STORE(treestore), iter);
-
 }
 
 static gboolean
@@ -508,6 +512,7 @@
 		if (g_creat(uri_new, 0755) != -1)
 			treebrowser_browse(uri, refresh_root ? NULL : &iter, CONFIG_INITIAL_DIR_DEEP);
 	}
+
 }
 
 static void
@@ -603,6 +608,14 @@
 }
 
 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));
+	save_settings();
+	treebrowser_browse(addressbar_last_address, NULL, CONFIG_INITIAL_DIR_DEEP);
+}
+
+static void
 on_menu_show_bars(GtkMenuItem *menuitem, gpointer *user_data)
 {
 	showbars(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)));
@@ -693,11 +706,15 @@
 		gtk_container_add(GTK_CONTAINER(menu), item);
 	}
 
-	menu_showbars = gtk_check_menu_item_new_with_mnemonic(_("Show bars"));
+	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);
+	g_signal_connect(item, "activate", G_CALLBACK(on_menu_show_hidden_files), NULL);
 
-	gtk_container_add(GTK_CONTAINER(menu), menu_showbars);
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_showbars), CONFIG_SHOW_BARS);
-	g_signal_connect(menu_showbars, "activate", G_CALLBACK(on_menu_show_bars), NULL);
+	item = gtk_check_menu_item_new_with_mnemonic(_("Show bars"));
+	gtk_container_add(GTK_CONTAINER(menu), item);
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), CONFIG_SHOW_BARS);
+	g_signal_connect(item, "activate", G_CALLBACK(on_menu_show_bars), NULL);
 
 	gtk_widget_show_all(menu);
 
@@ -744,7 +761,7 @@
 {
 	gchar *directory = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
 
-	static const GdkColor red   = {0, 0xffff, 0x6666, 0x6666};
+	static const GdkColor red 	= {0, 0xffff, 0x6666, 0x6666};
 	static const GdkColor white = {0, 0xffff, 0xffff, 0xffff};
 	static gboolean old_value = TRUE;
 	gboolean success = g_file_test(directory, G_FILE_TEST_IS_DIR);
@@ -776,7 +793,7 @@
 {
 	GtkTreeIter 	iter;
 	GtkTreeModel 	*model;
-	gchar 			*name = NULL, *uri = NULL;
+	gchar 			*name = "", *uri = "";
 
 	if (gtk_tree_selection_get_selected(selection, &model, &iter))
 	{
@@ -966,14 +983,13 @@
 	GtkWidget 			*wid;
 	GtkTreeSelection 	*selection;
 
-	treeview 			= create_view_and_model();
-	menu_showbars 		= gtk_check_menu_item_new();
-	sidebar_vbox 		= gtk_vbox_new(FALSE, 0);
-	sidebar_vbox_bars 	= gtk_vbox_new(FALSE, 0);
-	selection 			= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
-	addressbar 			= gtk_entry_new();
-	filter 				= gtk_entry_new();
-	scrollwin 			= gtk_scrolled_window_new(NULL, NULL);
+	treeview 				= create_view_and_model();
+	sidebar_vbox 			= gtk_vbox_new(FALSE, 0);
+	sidebar_vbox_bars 		= gtk_vbox_new(FALSE, 0);
+	selection 				= gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+	addressbar 				= gtk_entry_new();
+	filter 					= gtk_entry_new();
+	scrollwin 				= gtk_scrolled_window_new(NULL, NULL);
 
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 
@@ -1052,6 +1068,7 @@
 	GtkWidget *REVERSE_FILTER;
 	GtkWidget *ONE_CLICK_CHDOC;
 	GtkWidget *SHOW_HIDDEN_FILES;
+	GtkWidget *HIDE_OBJECT_FILES;
 	GtkWidget *SHOW_BARS;
 	GtkWidget *CHROOT_ON_DCLICK;
 	GtkWidget *FOLLOW_CURRENT_DOC;
@@ -1072,6 +1089,7 @@
 	CONFIG_REVERSE_FILTER 			= utils_get_setting_boolean(config, "treebrowser", "reverse_filter", 		CONFIG_REVERSE_FILTER);
 	CONFIG_ONE_CLICK_CHDOC 			= utils_get_setting_boolean(config, "treebrowser", "one_click_chdoc", 		CONFIG_ONE_CLICK_CHDOC);
 	CONFIG_SHOW_HIDDEN_FILES 		= utils_get_setting_boolean(config, "treebrowser", "show_hidden_files", 	CONFIG_SHOW_HIDDEN_FILES);
+	CONFIG_HIDE_OBJECT_FILES 		= utils_get_setting_boolean(config, "treebrowser", "hide_object_files", 	CONFIG_HIDE_OBJECT_FILES);
 	CONFIG_SHOW_BARS 				= utils_get_setting_boolean(config, "treebrowser", "show_bars", 			CONFIG_SHOW_BARS);
 	CONFIG_CHROOT_ON_DCLICK 		= utils_get_setting_boolean(config, "treebrowser", "chroot_on_dclick", 		CONFIG_CHROOT_ON_DCLICK);
 	CONFIG_FOLLOW_CURRENT_DOC 		= utils_get_setting_boolean(config, "treebrowser", "follow_current_doc", 	CONFIG_FOLLOW_CURRENT_DOC);
@@ -1097,6 +1115,7 @@
 	g_key_file_set_boolean(config, 	"treebrowser", "reverse_filter", 		CONFIG_REVERSE_FILTER);
 	g_key_file_set_boolean(config, 	"treebrowser", "one_click_chdoc", 		CONFIG_ONE_CLICK_CHDOC);
 	g_key_file_set_boolean(config, 	"treebrowser", "show_hidden_files", 	CONFIG_SHOW_HIDDEN_FILES);
+	g_key_file_set_boolean(config, 	"treebrowser", "hide_object_files", 	CONFIG_HIDE_OBJECT_FILES);
 	g_key_file_set_boolean(config, 	"treebrowser", "show_bars", 			CONFIG_SHOW_BARS);
 	g_key_file_set_boolean(config, 	"treebrowser", "chroot_on_dclick", 		CONFIG_CHROOT_ON_DCLICK);
 	g_key_file_set_boolean(config, 	"treebrowser", "follow_current_doc", 	CONFIG_FOLLOW_CURRENT_DOC);
@@ -1122,6 +1141,7 @@
 	CONFIG_REVERSE_FILTER 		= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.REVERSE_FILTER));
 	CONFIG_ONE_CLICK_CHDOC 		= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.ONE_CLICK_CHDOC));
 	CONFIG_SHOW_HIDDEN_FILES 	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.SHOW_HIDDEN_FILES));
+	CONFIG_HIDE_OBJECT_FILES 	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.HIDE_OBJECT_FILES));
 	CONFIG_CHROOT_ON_DCLICK 	= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(configure_widgets.CHROOT_ON_DCLICK));
 	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));
@@ -1173,6 +1193,13 @@
 	ui_widget_set_tooltip_text(configure_widgets.INITIAL_DIR_DEEP,
 		_("On Windows, this just hide files that are prefixed with '.' (dot)"));
 
+	configure_widgets.HIDE_OBJECT_FILES = gtk_check_button_new_with_label(_("Hide object files"));
+	gtk_button_set_focus_on_click(GTK_BUTTON(configure_widgets.HIDE_OBJECT_FILES), FALSE);
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configure_widgets.HIDE_OBJECT_FILES), CONFIG_HIDE_OBJECT_FILES);
+	gtk_box_pack_start(GTK_BOX(vbox), configure_widgets.HIDE_OBJECT_FILES, FALSE, FALSE, 0);
+	ui_widget_set_tooltip_text(configure_widgets.INITIAL_DIR_DEEP,
+		_("Don't show generated object files in the file browser, this includes *.o, *.obj. *.so, *.dll, *.a, *.lib"));
+
 	configure_widgets.REVERSE_FILTER = gtk_check_button_new_with_label(_("Reverse filter"));
 	gtk_button_set_focus_on_click(GTK_BUTTON(configure_widgets.REVERSE_FILTER), FALSE);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configure_widgets.REVERSE_FILTER), CONFIG_REVERSE_FILTER);
@@ -1198,7 +1225,7 @@
 	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 if it 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);


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