diff src/options.c @ 740:9b0ac8d58c89

Move setup_default_options() and sync_options_with_current_state() to options.[ch]. Pass ConfOptions * to these instead of directly using global variable. Cleanup #include in main.c.
author zas_
date Thu, 22 May 2008 23:09:53 +0000
parents 8cc9f349c670
children ae618ebec3e9
line wrap: on
line diff
--- a/src/options.c	Thu May 22 22:49:07 2008 +0000
+++ b/src/options.c	Thu May 22 23:09:53 2008 +0000
@@ -12,8 +12,17 @@
 #include "main.h"
 #include "options.h"
 
+#include "bar_exif.h"
+#include "editors.h"
+#include "filefilter.h"
 #include "histogram.h" /* HCHAN_RGB */
 #include "image-overlay.h" /* OSD_SHOW_NOTHING */
+#include "info.h"
+#include "layout.h"
+#include "layout_image.h"
+#include "ui_bookmark.h"
+#include "ui_fileops.h"
+#include "window.h"
 
 ConfOptions *init_options(ConfOptions *options)
 {
@@ -145,3 +154,88 @@
 
 	return options;
 }
+
+void setup_default_options(ConfOptions *options)
+{
+	gchar *path;
+	gint i;
+
+	for (i = 0; i < GQ_EDITOR_SLOTS; i++)
+		{
+		options->editor[i].name = NULL;
+		options->editor[i].command = NULL;
+		}
+
+	editor_reset_defaults();
+
+	bookmark_add_default(_("Home"), homedir());
+	path = g_build_filename(homedir(), "Desktop", NULL);
+	bookmark_add_default(_("Desktop"), path);
+	g_free(path);
+	path = g_build_filename(homedir(), GQ_RC_DIR_COLLECTIONS, NULL);
+	bookmark_add_default(_("Collections"), path);
+	g_free(path);
+
+	g_free(options->file_ops.safe_delete_path);
+	options->file_ops.safe_delete_path = g_build_filename(homedir(), GQ_RC_DIR_TRASH, NULL);
+
+	for (i = 0; i < COLOR_PROFILE_INPUTS; i++)
+		{
+		options->color_profile.input_file[i] = NULL;
+		options->color_profile.input_name[i] = NULL;
+		}
+
+	set_default_image_overlay_template_string(&options->image_overlay.common.template_string);
+	sidecar_ext_add_defaults();
+	options->layout.order = g_strdup("123");
+	options->properties.tabs_order = g_strdup(info_tab_default_order());
+
+	options->shell.path = g_strdup(GQ_DEFAULT_SHELL_PATH);
+	options->shell.options = g_strdup(GQ_DEFAULT_SHELL_OPTIONS);
+
+	for (i = 0; ExifUIList[i].key; i++)
+		ExifUIList[i].current = ExifUIList[i].default_value;
+}
+
+void sync_options_with_current_state(ConfOptions *options)
+{
+	LayoutWindow *lw = NULL;
+
+	if (layout_valid(&lw))
+		{
+		options->layout.main_window.maximized =  window_maximized(lw->window);
+		if (!options->layout.main_window.maximized)
+			{
+			layout_geometry_get(NULL, &options->layout.main_window.x, &options->layout.main_window.y,
+					    &options->layout.main_window.w, &options->layout.main_window.h);
+			}
+
+		options->image_overlay.common.state = image_osd_get(lw->image);
+		}
+
+	layout_geometry_get_dividers(NULL, &options->layout.main_window.hdivider_pos, &options->layout.main_window.vdivider_pos);
+
+	layout_views_get(NULL, &options->layout.dir_view_type, &options->layout.file_view_type);
+
+	options->layout.show_thumbnails = layout_thumb_get(NULL);
+	options->layout.show_marks = layout_marks_get(NULL);
+
+	layout_sort_get(NULL, &options->file_sort.method, &options->file_sort.ascending);
+
+	layout_geometry_get_tools(NULL, &options->layout.float_window.x, &options->layout.float_window.y,
+				  &options->layout.float_window.w, &options->layout.float_window.h, &options->layout.float_window.vdivider_pos);
+	layout_tools_float_get(NULL, &options->layout.tools_float, &options->layout.tools_hidden);
+	options->layout.toolbar_hidden = layout_toolbar_hidden(NULL);
+
+	options->color_profile.enabled = layout_image_color_profile_get_use(NULL);
+	layout_image_color_profile_get(NULL,
+				       &options->color_profile.input_type,
+				       &options->color_profile.screen_type,
+				       &options->color_profile.use_image);
+
+	if (options->startup.restore_path && options->startup.use_last_path)
+		{
+		g_free(options->startup.path);
+		options->startup.path = g_strdup(layout_get_path(NULL));
+		}
+}