diff src/preferences.c @ 980:a4a38ea9fbaa

Add an option named layout.home_path which modifies the behavior of the Home button. By default, pressing this button goes to the user's home directory. When this option is set to a path, this path is used instead. One can change the option value through Preferences > Advanced > Navigation or directly in .geeqierc. Feature proposed by Colin Clark.
author zas_
date Fri, 22 Aug 2008 21:52:13 +0000
parents e1d158ac6d36
children 6ca2c5fd7b13
line wrap: on
line diff
--- a/src/preferences.c	Thu Aug 21 22:49:30 2008 +0000
+++ b/src/preferences.c	Fri Aug 22 21:52:13 2008 +0000
@@ -85,6 +85,7 @@
 
 static GtkWidget *configwindow = NULL;
 static GtkWidget *startup_path_entry;
+static GtkWidget *home_path_entry;
 static GtkListStore *filter_store = NULL;
 static GtkWidget *editor_name_entry[GQ_EDITOR_SLOTS];
 static GtkWidget *editor_command_entry[GQ_EDITOR_SLOTS];
@@ -114,6 +115,11 @@
 	gtk_entry_set_text(GTK_ENTRY(startup_path_entry), layout_get_path(NULL));
 }
 
+static void home_path_set_current(GtkWidget *widget, gpointer data)
+{
+	gtk_entry_set_text(GTK_ENTRY(home_path_entry), layout_get_path(NULL));
+}
+
 static void zoom_mode_original_cb(GtkWidget *widget, gpointer data)
 {
 	if (GTK_TOGGLE_BUTTON (widget)->active)
@@ -218,6 +224,11 @@
 	buf = gtk_entry_get_text(GTK_ENTRY(startup_path_entry));
 	if (buf && strlen(buf) > 0) options->startup.path = remove_trailing_slash(buf);
 
+	g_free(options->layout.home_path);
+	options->layout.home_path = NULL;
+	buf = gtk_entry_get_text(GTK_ENTRY(home_path_entry));
+	if (buf && strlen(buf) > 0) options->layout.home_path = remove_trailing_slash(buf);
+
 	options->file_ops.confirm_delete = c_options->file_ops.confirm_delete;
 	options->file_ops.enable_delete_key = c_options->file_ops.enable_delete_key;
 	options->file_ops.safe_delete_enable = c_options->file_ops.safe_delete_enable;
@@ -1494,6 +1505,18 @@
 	pref_checkbox_new_int(group, _("Mouse wheel scrolls image"),
 			      options->mousewheel_scrolls, &c_options->mousewheel_scrolls);
 
+	pref_label_new(group, _("Home button path (empty to use your home directory)"));
+	hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
+
+	tabcomp = tab_completion_new(&home_path_entry, options->layout.home_path, NULL, NULL);
+	tab_completion_add_select_button(home_path_entry, NULL, TRUE);
+	gtk_box_pack_start(GTK_BOX(hbox), tabcomp, TRUE, TRUE, 0);
+	gtk_widget_show(tabcomp);
+
+	button = pref_button_new(hbox, NULL, _("Use current"), FALSE,
+				 G_CALLBACK(home_path_set_current), NULL);
+
+
 	group = pref_group_new(vbox, FALSE, _("Miscellaneous"), GTK_ORIENTATION_VERTICAL);
 
 	pref_checkbox_new_int(group, _("Store metadata and cache files in source image's directory"),