SF.net SVN: geany:[5660] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu Mar 31 15:01:24 UTC 2011
Revision: 5660
http://geany.svn.sourceforge.net/geany/?rev=5660&view=rev
Author: ntrel
Date: 2011-03-31 15:01:24 +0000 (Thu, 31 Mar 2011)
Log Message:
-----------
Make 'Hide object files' preference configurable with file
extensions.
Modified Paths:
--------------
trunk/ChangeLog
trunk/plugins/filebrowser.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2011-03-30 16:18:47 UTC (rev 5659)
+++ trunk/ChangeLog 2011-03-31 15:01:24 UTC (rev 5660)
@@ -1,3 +1,10 @@
+2011-03-31 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * plugins/filebrowser.c:
+ Make 'Hide object files' preference configurable with file
+ extensions.
+
+
2011-03-30 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/editor.c:
Modified: trunk/plugins/filebrowser.c
===================================================================
--- trunk/plugins/filebrowser.c 2011-03-30 16:18:47 UTC (rev 5659)
+++ trunk/plugins/filebrowser.c 2011-03-31 15:01:24 UTC (rev 5660)
@@ -82,6 +82,7 @@
static gchar *open_cmd; /* in locale-encoding */
static gchar *config_file;
static gchar **filter = NULL;
+static gchar *hidden_file_extensions = NULL;
static gint page_number = 0;
@@ -121,6 +122,7 @@
/* Returns: whether name should be hidden. */
static gboolean check_hidden(const gchar *filename, const gchar *base_name)
{
+ gboolean ret = FALSE;
gsize len;
if (G_UNLIKELY(! NZV(base_name)))
@@ -140,19 +142,20 @@
if (hide_object_files)
{
- const gchar *exts[] = {".o", ".obj", ".so", ".dll", ".a", ".lib", ".pyc"};
- guint i, exts_len;
+ gchar **ptr;
+ gchar **exts = g_strsplit(hidden_file_extensions, " ", -1);
- exts_len = G_N_ELEMENTS(exts);
- for (i = 0; i < exts_len; i++)
+ foreach_strv(ptr, exts)
{
- const gchar *ext = exts[i];
-
- if (g_str_has_suffix(base_name, ext))
- return TRUE;
+ if (g_str_has_suffix(base_name, *ptr))
+ {
+ ret = TRUE;
+ break;
+ }
}
+ g_strfreev(exts);
}
- return FALSE;
+ return ret;
}
@@ -1001,6 +1004,8 @@
open_cmd = utils_get_setting_string(config, "filebrowser", "open_command", "nautilus \"%d\"");
show_hidden_files = g_key_file_get_boolean(config, "filebrowser", "show_hidden_files", NULL);
hide_object_files = g_key_file_get_boolean(config, "filebrowser", "hide_object_files", NULL);
+ hidden_file_extensions = utils_get_setting_string(config, "filebrowser", "hidden_file_extensions",
+ ".o .obj .so .dll .a .lib .pyc");
fb_follow_path = g_key_file_get_boolean(config, "filebrowser", "fb_follow_path", NULL);
fb_set_project_base_path = g_key_file_get_boolean(config, "filebrowser", "fb_set_project_base_path", NULL);
@@ -1136,6 +1141,7 @@
g_key_file_set_string(config, "filebrowser", "open_command", open_cmd);
g_key_file_set_boolean(config, "filebrowser", "show_hidden_files", show_hidden_files);
g_key_file_set_boolean(config, "filebrowser", "hide_object_files", hide_object_files);
+ g_key_file_set_string(config, "filebrowser", "hidden_file_extensions", hidden_file_extensions);
g_key_file_set_boolean(config, "filebrowser", "fb_follow_path", fb_follow_path);
g_key_file_set_boolean(config, "filebrowser", "fb_set_project_base_path",
fb_set_project_base_path);
@@ -1162,6 +1168,7 @@
GtkWidget *open_cmd_entry;
GtkWidget *show_hidden_checkbox;
GtkWidget *hide_objects_checkbox;
+ GtkWidget *hidden_files_entry;
GtkWidget *follow_path_checkbox;
GtkWidget *set_project_base_path_checkbox;
}
@@ -1176,6 +1183,8 @@
open_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(pref_widgets.open_cmd_entry)));
show_hidden_files = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref_widgets.show_hidden_checkbox));
hide_object_files = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref_widgets.hide_objects_checkbox));
+ g_free(hidden_file_extensions);
+ hidden_file_extensions = g_strdup(gtk_entry_get_text(GTK_ENTRY(pref_widgets.hidden_files_entry)));
fb_follow_path = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref_widgets.follow_path_checkbox));
fb_set_project_base_path = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
pref_widgets.set_project_base_path_checkbox));
@@ -1186,10 +1195,21 @@
}
+static void on_toggle_hidden(void)
+{
+ gboolean enabled = !gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(pref_widgets.show_hidden_checkbox));
+
+ gtk_widget_set_sensitive(pref_widgets.hide_objects_checkbox, enabled);
+ enabled &= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pref_widgets.hide_objects_checkbox));
+ gtk_widget_set_sensitive(pref_widgets.hidden_files_entry, enabled);
+}
+
+
GtkWidget *plugin_configure(GtkDialog *dialog)
{
GtkWidget *label, *entry, *checkbox_of, *checkbox_hf, *checkbox_fp, *checkbox_pb, *vbox;
- GtkWidget *box;
+ GtkWidget *box, *align;
vbox = gtk_vbox_new(FALSE, 6);
box = gtk_vbox_new(FALSE, 3);
@@ -1199,7 +1219,6 @@
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
entry = gtk_entry_new();
- gtk_widget_show(entry);
if (open_cmd != NULL)
gtk_entry_set_text(GTK_ENTRY(entry), open_cmd);
ui_widget_set_tooltip_text(entry,
@@ -1209,23 +1228,35 @@
gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
pref_widgets.open_cmd_entry = entry;
- gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 6);
+ gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 3);
checkbox_hf = gtk_check_button_new_with_label(_("Show hidden files"));
gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_hf), FALSE);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_hf), show_hidden_files);
gtk_box_pack_start(GTK_BOX(vbox), checkbox_hf, FALSE, FALSE, 0);
pref_widgets.show_hidden_checkbox = checkbox_hf;
+ g_signal_connect(checkbox_hf, "toggled", on_toggle_hidden, NULL);
- checkbox_of = gtk_check_button_new_with_label(_("Hide object files"));
+ box = gtk_vbox_new(FALSE, 3);
+ checkbox_of = gtk_check_button_new_with_label(_("Hide file extensions:"));
gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_of), FALSE);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_of), hide_object_files);
- ui_widget_set_tooltip_text(checkbox_of,
- _("Don't show generated object files in the file browser, this includes "
- "*.o, *.obj. *.so, *.dll, *.a, *.lib"));
- gtk_box_pack_start(GTK_BOX(vbox), checkbox_of, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(box), checkbox_of, FALSE, FALSE, 0);
pref_widgets.hide_objects_checkbox = checkbox_of;
+ g_signal_connect(checkbox_of, "toggled", on_toggle_hidden, NULL);
+ entry = gtk_entry_new();
+ if (hidden_file_extensions != NULL)
+ gtk_entry_set_text(GTK_ENTRY(entry), hidden_file_extensions);
+ gtk_box_pack_start(GTK_BOX(box), entry, FALSE, FALSE, 0);
+ pref_widgets.hidden_files_entry = entry;
+
+ align = gtk_alignment_new(1, 0.5, 1, 1);
+ gtk_alignment_set_padding(GTK_ALIGNMENT(align), 0, 0, 12, 0);
+ gtk_container_add(GTK_CONTAINER(align), box);
+ gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, FALSE, 0);
+ on_toggle_hidden();
+
checkbox_fp = gtk_check_button_new_with_label(_("Follow the path of the current file"));
gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_fp), FALSE);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_fp), fb_follow_path);
@@ -1253,6 +1284,7 @@
g_free(config_file);
g_free(open_cmd);
+ g_free(hidden_file_extensions);
clear_filter();
gtk_widget_destroy(file_view_vbox);
g_object_unref(G_OBJECT(entry_completion));
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