changeset 1042:e59a9c96d290

Shorten config_window_apply() a bit, reduce code redunancy.
author zas_
date Sun, 07 Sep 2008 19:42:19 +0000
parents ba6462c11bb1
children 5fc64d6252e7
files src/preferences.c
diffstat 1 files changed, 34 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/src/preferences.c	Thu Sep 04 22:35:33 2008 +0000
+++ b/src/preferences.c	Sun Sep 07 19:42:19 2008 +0000
@@ -149,14 +149,26 @@
  *-----------------------------------------------------------------------------
  */
 
-static void config_window_apply(void)
+static void config_entry_to_option(GtkWidget *entry, gchar **option, gchar *(*func)(const gchar *))
 {
 	const gchar *buf;
-	gint new_style;
+
+	g_free(*option);
+	*option = NULL;
+	buf = gtk_entry_get_text(GTK_ENTRY(entry));
+	if (buf && strlen(buf) > 0)
+		{
+		if (func)
+			*option = func(buf);
+		else
+			*option = g_strdup(buf);
+		}
+}
+
+static void config_parse_editor_entries(GtkWidget **editor_name_entry, GtkWidget **editor_command_entry)
+{
 	gint i;
-	gint refresh = FALSE;
-
-	{
+	const gchar *buf;
 	GString *errmsg = g_string_new("");
 
 	for (i = 0; i < GQ_EDITOR_SLOTS; i++)
@@ -198,14 +210,20 @@
 		}
 
 	g_string_free(errmsg, TRUE);
-	}
+}
+
+
+static void config_window_apply(void)
+{
+	gint new_style;
+	gint i;
+	gint refresh = FALSE;
+
+	config_parse_editor_entries(editor_name_entry, editor_command_entry); 
 	layout_edit_update_all();
 
-	g_free(options->file_ops.safe_delete_path);
-	options->file_ops.safe_delete_path = NULL;
-	buf = gtk_entry_get_text(GTK_ENTRY(safe_delete_path_entry));
-	if (buf && strlen(buf) > 0) options->file_ops.safe_delete_path = remove_trailing_slash(buf);
-
+	config_entry_to_option(safe_delete_path_entry, &options->file_ops.safe_delete_path, remove_trailing_slash);
+	
 	if (options->file_filter.show_hidden_files != c_options->file_filter.show_hidden_files) refresh = TRUE;
 	if (options->file_filter.show_dot_directory != c_options->file_filter.show_dot_directory) refresh = TRUE;
 	if (options->file_sort.case_sensitive != c_options->file_sort.case_sensitive) refresh = TRUE;
@@ -213,15 +231,8 @@
 
 	options->startup.restore_path = c_options->startup.restore_path;
 	options->startup.use_last_path = c_options->startup.use_last_path;
-	g_free(options->startup.path);
-	options->startup.path = NULL;
-	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);
+	config_entry_to_option(startup_path_entry, &options->startup.path, remove_trailing_slash);
+	config_entry_to_option(home_path_entry, &options->layout.home_path, remove_trailing_slash);
 
 	options->file_ops.confirm_delete = c_options->file_ops.confirm_delete;
 	options->file_ops.enable_delete_key = c_options->file_ops.enable_delete_key;
@@ -323,20 +334,10 @@
 #ifdef HAVE_LCMS
 	for (i = 0; i < COLOR_PROFILE_INPUTS; i++)
 		{
-		g_free(options->color_profile.input_name[i]);
-		options->color_profile.input_name[i] = NULL;
-		buf = gtk_entry_get_text(GTK_ENTRY(color_profile_input_name_entry[i]));
-		if (buf && strlen(buf) > 0) options->color_profile.input_name[i] = g_strdup(buf);
-
-		g_free(options->color_profile.input_file[i]);
-		options->color_profile.input_file[i] = NULL;
-		buf = gtk_entry_get_text(GTK_ENTRY(color_profile_input_file_entry[i]));
-		if (buf && strlen(buf) > 0) options->color_profile.input_file[i] = g_strdup(buf);
+		config_entry_to_option(color_profile_input_name_entry[i], &options->color_profile.input_name[i], NULL);
+		config_entry_to_option(color_profile_input_file_entry[i], &options->color_profile.input_file[i], NULL);
 		}
-	g_free(options->color_profile.screen_file);
-	options->color_profile.screen_file = NULL;
-	buf = gtk_entry_get_text(GTK_ENTRY(color_profile_screen_file_entry));
-	if (buf && strlen(buf) > 0) options->color_profile.screen_file = g_strdup(buf);
+	config_entry_to_option(color_profile_screen_file_entry, &options->color_profile.screen_file, NULL);
 #endif
 
 	for (i = 0; ExifUIList[i].key; i++)