SF.net SVN: geany-plugins:[1627] trunk/geany-plugins/treebrowser
dimitrov-adrian at users.sourceforge.net
dimitrov-adrian at xxxxx
Fri Oct 8 15:07:26 UTC 2010
Revision: 1627
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1627&view=rev
Author: dimitrov-adrian
Date: 2010-10-08 15:07:25 +0000 (Fri, 08 Oct 2010)
Log Message:
-----------
Treebrowser: added keybindings, fixed possible segfault
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-10-05 19:19:20 UTC (rev 1626)
+++ trunk/geany-plugins/treebrowser/ChangeLog 2010-10-08 15:07:25 UTC (rev 1627)
@@ -8,7 +8,7 @@
"CRITICAL : g_object_ref: assertion `object->ref_count > 0' failed"
(FIXED) Double click on bookmarks, do nothing
(FIXED) show/hide hidden files not working on Windows
- (FIXED) "Go Up" not working if the current path ends with slash // thanks to <dmaphy> for report
+ (FIXED) "Go Up" not working if the current path ends with slash // thanks to <dmaphy> for the report
+---------------------------+
@@ -18,7 +18,7 @@
(DONE) codestyle improve to be same as other parts as geany`s
(DONE) configuration dialog
(DONE) tracking path to current focused document (work only for refreshed directories)
- * Better tracking for files, open path to them
+ * Better tracking for files, when they are not cached, open path to them
* In windows can choice between devices (C:\, D:\,...)
* Language files
(DONE) Saving state of Showbars in config file everytime where is changed
@@ -29,7 +29,7 @@
(DONE) Hide object files as native filebroser (*.o;*.a;*.so;*.dll;*.lib..)
(DONE) Using font from geany settings for sidebar
* Migrating to stash
- * Adding keybindings for renaming/deleting/refreshing
+ (DONE) Adding keybindings for renaming/deleting/refreshing
(DONE) Add option to change bars position // requested by <dmaphy>
(DONE) Add option to autorename point the newest created objects by the Treebrowser
@@ -41,6 +41,16 @@
05-10-2010 Adrian Dimitrov <dimitrov.adrian at gmail.com>
* src/treebrowser.c
+ Added keybindings for renaming/deleting/refreshing
+ (from the todo list)
+ Fixed possible segfault when option "Hidding object files" is enabled
+ (idea from native filebrowser plugin)
+
+
+
+05-10-2010 Adrian Dimitrov <dimitrov.adrian at gmail.com>
+
+ * src/treebrowser.c
Fixed wrong english message for not existing directory
(thanks to Dimitar Zhekov (dimitar.zhekov at gmail.com))
Added option to autorename point the newest created objects by the Treebrowser
Modified: trunk/geany-plugins/treebrowser/src/treebrowser.c
===================================================================
--- trunk/geany-plugins/treebrowser/src/treebrowser.c 2010-10-05 19:19:20 UTC (rev 1626)
+++ trunk/geany-plugins/treebrowser/src/treebrowser.c 2010-10-08 15:07:25 UTC (rev 1627)
@@ -80,6 +80,19 @@
};
+/* Keybinding(s) */
+enum
+{
+ KB_FOCUS_FILE_LIST,
+ KB_FOCUS_PATH_ENTRY,
+ KB_RENAME_OBJECT,
+ KB_REFRESH,
+ KB_COUNT
+};
+
+PLUGIN_KEY_GROUP(file_browser, KB_COUNT)
+
+
/* ------------------
* PLUGIN INFO
* ------------------ */
@@ -114,6 +127,7 @@
static void treebrowser_bookmarks_set_state();
static void treebrowser_load_bookmarks();
static void gtk_tree_store_iter_clear_nodes(gpointer iter, gboolean delete_root);
+static gboolean treebrowser_rename_current();
static void load_settings();
static gboolean save_settings();
@@ -143,11 +157,17 @@
const gchar *exts[] = {".o", ".obj", ".so", ".dll", ".a", ".lib"};
if (CONFIG_HIDE_OBJECT_FILES)
- for (i = 0; exts[i]; i++)
+ {
+ guint i, exts_len;
+ exts_len = G_N_ELEMENTS(exts);
+ for (i = 0; i < exts_len; i++)
{
- if (g_str_has_suffix(base_name, exts[i]))
+ const gchar *ext = exts[i];
+
+ if (g_str_has_suffix(base_name, ext))
return FALSE;
}
+ }
if (! NZV(gtk_entry_get_text(GTK_ENTRY(filter))))
return TRUE;
@@ -175,6 +195,9 @@
if (CONFIG_SHOW_HIDDEN_FILES)
return TRUE;
+ if (uri[strlen(uri) - 1] == '~')
+ return FALSE;
+
#ifdef G_OS_WIN32
#ifdef HAVE_GIO_2_0
GError *error;
@@ -206,10 +229,9 @@
#endif
#else
- if (g_path_get_basename(uri) [0] == '.')
+ if (g_path_get_basename(uri)[0] == '.')
return FALSE;
- else
- return TRUE;
+ return TRUE;
#endif
}
@@ -255,7 +277,7 @@
gtk_entry_set_text(GTK_ENTRY(addressbar), directory);
- if (strlen(directory) == 0)
+ if (!directory || strlen(directory) == 0)
directory = "/";
if (! g_file_test(directory, G_FILE_TEST_IS_DIR))
@@ -627,6 +649,17 @@
return FALSE;
}
+static gboolean
+treebrowser_rename_current()
+{
+ GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+
+ if (gtk_tree_selection_get_selected(selection, &model, &iter))
+ treebrowser_iter_rename(&iter);
+}
+
/* ------------------
* RIGHTCLICK MENU EVENTS
* ------------------*/
@@ -749,23 +782,13 @@
}
if (treebrowser_search(uri_new, NULL))
- {
- selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
- if (gtk_tree_selection_get_selected(selection, &model, &iter))
- treebrowser_iter_rename(&iter);
- }
-
+ treebrowser_rename_current();
}
static void
on_menu_rename(GtkMenuItem *menuitem, gpointer *user_data)
{
- GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
- GtkTreeIter iter;
- GtkTreeModel *model;
-
- if (gtk_tree_selection_get_selected(selection, &model, &iter))
- treebrowser_iter_rename(&iter);
+ treebrowser_rename_current();
}
static void
@@ -1574,6 +1597,29 @@
treebrowser_chroot(get_default_dir());
}
+static void kb_activate(guint key_id)
+{
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(geany->main_widgets->sidebar_notebook), page_number);
+ switch (key_id)
+ {
+ case KB_FOCUS_FILE_LIST:
+ gtk_widget_grab_focus(treeview);
+ break;
+
+ case KB_FOCUS_PATH_ENTRY:
+ gtk_widget_grab_focus(addressbar);
+ break;
+
+ case KB_RENAME_OBJECT:
+ treebrowser_rename_current();
+ break;
+
+ case KB_REFRESH:
+ on_menu_refresh(NULL, NULL);
+ break;
+ }
+}
+
void
plugin_init(GeanyData *data)
{
@@ -1586,6 +1632,16 @@
create_sidebar();
treebrowser_chroot(get_default_dir());
+ /* setup keybindings */
+ keybindings_set_item(plugin_key_group, KB_FOCUS_FILE_LIST, kb_activate,
+ 0, 0, "focus_file_list", _("Focus File List"), NULL);
+ keybindings_set_item(plugin_key_group, KB_FOCUS_PATH_ENTRY, kb_activate,
+ 0, 0, "focus_path_entry", _("Focus Path Entry"), NULL);
+ keybindings_set_item(plugin_key_group, KB_RENAME_OBJECT, kb_activate,
+ 0, 0, "rename_object", _("Rename Object"), NULL);
+ keybindings_set_item(plugin_key_group, KB_REFRESH, kb_activate,
+ 0, 0, "rename_refresh", _("Refresh"), NULL);
+
plugin_signal_connect(geany_plugin, NULL, "document-activate", TRUE,
(GCallback)&treebrowser_track_current_cb, 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