[gnumeric] Conf: now it compiles and links!



commit 818c05093de96144f5099c66c3e0963799d82869
Author: Morten Welinder <terra gnome org>
Date:   Sun Jun 28 20:44:08 2009 -0400

    Conf: now it compiles and links!

 component/gnumeric.c      |   15 +++--
 src/gnumeric-gconf.c      |  146 ++++++++++++++++++++++++++++++++++++++++++++-
 src/gnumeric-gconf.h      |   17 +++++-
 src/print-info.c          |    4 +-
 src/print.c               |    6 +-
 src/wbc-gtk.c             |   10 ++--
 tools/handle-conf-options |    4 +
 7 files changed, 179 insertions(+), 23 deletions(-)
---
diff --git a/component/gnumeric.c b/component/gnumeric.c
index 390308e..4408431 100644
--- a/component/gnumeric.c
+++ b/component/gnumeric.c
@@ -268,7 +268,7 @@ go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
 #endif
 	module = go_plugin_get_type_module (plugin);
 	go_gnm_component_register_type (module);
-	gnm_init (FALSE);
+	gnm_init ();
 	if (!gnm_sys_data_dir ())
 		gutils_init ();
 	dir_list = go_slist_create (
@@ -276,8 +276,9 @@ go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
 		(gnm_usr_dir () == NULL ? NULL :
 			g_build_filename (gnm_usr_dir (), PLUGIN_SUBDIR, NULL)),
 		NULL);
-	dir_list = g_slist_concat (dir_list,
-		go_string_slist_copy (gnm_app_prefs->plugin_extra_dirs));
+	dir_list = g_slist_concat
+		(dir_list,
+		 go_string_slist_copy (gnm_conf_get_autoformat_extra_dirs ()));
 
 	env_var = g_getenv ("GNUMERIC_PLUGIN_PATH");
 	if (env_var != NULL)
@@ -287,10 +288,10 @@ go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
 
 /* WHERE IS THIS DEFINED */
 	go_plugins_add (go_component_get_command_context (),
-		gnm_app_prefs->plugin_file_states,
-		gnm_app_prefs->active_plugins,
-		dir_list,
-		gnm_plugin_loader_module_get_type ());
+			gnm_conf_get_plugins_file_states (),
+			gnm_conf_get_plugins_active (),
+			dir_list,
+			gnm_plugin_loader_module_get_type ());
 }
 
 G_MODULE_EXPORT void
diff --git a/src/gnumeric-gconf.c b/src/gnumeric-gconf.c
index f840dc1..0b14933 100644
--- a/src/gnumeric-gconf.c
+++ b/src/gnumeric-gconf.c
@@ -38,6 +38,7 @@
 #include <number-match.h>
 #include <string.h>
 #include <sheet.h>
+#include <print-info.h>
 
 #define NO_DEBUG_GCONF
 #ifndef NO_DEBUG_GCONF
@@ -78,7 +79,7 @@ gnm_conf_init (void)
 void
 gnm_conf_shutdown (void)
 {
-	gnm_gconf_set_page_setup (NULL);
+	gnm_conf_set_page_setup (NULL);
 
 	g_hash_table_destroy (string_pool);
 	string_pool = NULL;
@@ -97,16 +98,41 @@ gnm_conf_get_root (void)
 }
 
 GtkPageSetup *
-gnm_gconf_get_page_setup (void)
+gnm_conf_get_page_setup (void)
 {
 	if (!page_setup) {
+		page_setup = gtk_page_setup_new ();
+
+		page_setup_set_paper (page_setup,
+				      gnm_conf_get_printsetup_paper ());
+
+		gtk_page_setup_set_orientation
+			(page_setup,
+			 gnm_conf_get_printsetup_paper_orientation ());
+
+		gtk_page_setup_set_top_margin
+			(page_setup,
+			 gnm_conf_get_printsetup_margin_gtk_top (),
+			 GTK_UNIT_POINTS);
+		gtk_page_setup_set_bottom_margin
+			(page_setup,
+			 gnm_conf_get_printsetup_margin_gtk_bottom (),
+			 GTK_UNIT_POINTS);
+		gtk_page_setup_set_left_margin
+			(page_setup,
+			 gnm_conf_get_printsetup_margin_gtk_left (),
+			 GTK_UNIT_POINTS);
+		gtk_page_setup_set_right_margin
+			(page_setup,
+			 gnm_conf_get_printsetup_margin_gtk_right (),
+			 GTK_UNIT_POINTS);
 	}
 
 	return page_setup;
 }
 
 void
-gnm_gconf_set_page_setup (GtkPageSetup *setup)
+gnm_conf_set_page_setup (GtkPageSetup *setup)
 {
 	if (page_setup) {
 		g_object_unref (page_setup);
@@ -114,10 +140,25 @@ gnm_gconf_set_page_setup (GtkPageSetup *setup)
 	}
 
 	if (setup) {
+		char *paper;
+
 		page_setup = gtk_page_setup_copy (setup);
 
+		paper = page_setup_get_paper (setup);
+		gnm_conf_set_printsetup_paper (paper);
+		g_free (paper);
+
 		gnm_conf_set_printsetup_paper_orientation
 			(gtk_page_setup_get_orientation (setup));
+
+		gnm_conf_set_printsetup_margin_gtk_top
+			(gtk_page_setup_get_top_margin (setup, GTK_UNIT_POINTS));
+		gnm_conf_set_printsetup_margin_gtk_bottom
+			(gtk_page_setup_get_bottom_margin (setup, GTK_UNIT_POINTS));
+		gnm_conf_set_printsetup_margin_gtk_left
+			(gtk_page_setup_get_left_margin (setup, GTK_UNIT_POINTS));
+		gnm_conf_set_printsetup_margin_gtk_right
+			(gtk_page_setup_get_right_margin (setup, GTK_UNIT_POINTS));
 	}
 }
 
@@ -138,6 +179,105 @@ gnm_conf_get_printer_decoration_font (void)
 	return style;
 }
 
+#define TOOLBAR_TANGO(Object,Format,Standard)		\
+	if (strcmp (name, "Object") == 0)		\
+		Object					\
+	else if (strcmp (name, "Format") == 0)		\
+		Format					\
+	else if (strcmp (name, "Standard") == 0)	\
+		Standard
+
+
+gboolean
+gnm_conf_get_toolbar_visible (const char *name)
+{
+	TOOLBAR_TANGO
+		(return gnm_conf_get_core_gui_toolbars_ObjectToolbar ();,
+		 return gnm_conf_get_core_gui_toolbars_FormatToolbar ();,
+		 return gnm_conf_get_core_gui_toolbars_StandardToolbar (););
+
+	return FALSE;
+}
+
+void
+gnm_conf_set_toolbar_visible (const char *name, gboolean x)
+{
+	TOOLBAR_TANGO
+		(gnm_conf_set_core_gui_toolbars_ObjectToolbar (x);,
+		 gnm_conf_set_core_gui_toolbars_FormatToolbar (x);,
+		 gnm_conf_set_core_gui_toolbars_StandardToolbar (x););
+}
+
+GtkPositionType
+gnm_conf_get_toolbar_position (const char *name)
+{
+	TOOLBAR_TANGO
+		(return gnm_conf_get_core_gui_toolbars_ObjectToolbar_position ();,
+		 return gnm_conf_get_core_gui_toolbars_FormatToolbar_position ();,
+		 return gnm_conf_get_core_gui_toolbars_StandardToolbar_position (););
+
+	return GTK_POS_TOP;
+}
+
+void
+gnm_conf_set_toolbar_position (const char *name, GtkPositionType x)
+{
+	TOOLBAR_TANGO
+		(gnm_conf_set_core_gui_toolbars_ObjectToolbar_position (x);,
+		 gnm_conf_set_core_gui_toolbars_FormatToolbar_position (x);,
+		 gnm_conf_set_core_gui_toolbars_StandardToolbar_position (x););
+}
+
+#undef TOOLBAR_TANGO
+
+GtkPrintSettings *
+gnm_conf_get_print_settings (void)
+{
+	GtkPrintSettings *settings =  gtk_print_settings_new ();
+	GSList *list = gnm_conf_get_printsetup_gtk_setting ();
+
+	while (list && list->next) {
+		const char *value = list->data;
+		const char *key = list->next->data;
+
+		list = list->next->next;
+		gtk_print_settings_set (settings, key, value);
+	}
+
+	return settings;
+}
+
+static void
+gnm_gconf_set_print_settings_cb (const gchar *key, const gchar *value, gpointer user_data)
+{
+	GSList **list = user_data;
+
+	*list = g_slist_prepend (*list, g_strdup (key));
+	*list = g_slist_prepend (*list, g_strdup (value));
+}
+
+void
+gnm_conf_set_print_settings (GtkPrintSettings *settings)
+{
+	GSList *list = NULL;
+
+	gtk_print_settings_foreach (settings, gnm_gconf_set_print_settings_cb, &list);
+	gnm_conf_set_printsetup_gtk_setting (list);
+	go_slist_free_custom (list, g_free);
+}
+
+gboolean
+gnm_conf_get_detachable_toolbars (void)
+{
+#ifdef WIN32
+	return FALSE;
+#else
+	return go_conf_get_bool
+		(root,
+		 "/desktop/gnome/interface/toolbar_detachable");
+#endif
+}
+
 /* ------------------------------------------------------------------------- */
 
 GtkToolbarStyle
diff --git a/src/gnumeric-gconf.h b/src/gnumeric-gconf.h
index c7c2c04..fa07967 100644
--- a/src/gnumeric-gconf.h
+++ b/src/gnumeric-gconf.h
@@ -10,11 +10,24 @@ void     gnm_conf_init (void);
 void     gnm_conf_shutdown (void);
 GOConfNode *gnm_conf_get_root (void);
 
-GtkPageSetup *gnm_gconf_get_page_setup (void);
-void gnm_gconf_set_page_setup (GtkPageSetup *setup);
+/* Convenience APIs */
+
+GtkPageSetup *gnm_conf_get_page_setup (void);
+void gnm_conf_set_page_setup (GtkPageSetup *setup);
+
+GtkPrintSettings *gnm_conf_get_print_settings (void);
+void gnm_conf_set_print_settings (GtkPrintSettings *settings);
 
 GnmStyle *gnm_conf_get_printer_decoration_font (void);
 
+gboolean gnm_conf_get_toolbar_visible (const char *name);
+void gnm_conf_set_toolbar_visible (const char *name, gboolean x);
+
+GtkPositionType gnm_conf_get_toolbar_position (const char *name);
+void gnm_conf_set_toolbar_position (const char *name, GtkPositionType x);
+
+gboolean gnm_conf_get_detachable_toolbars (void);
+
 /* ----------- AUTOMATICALLY GENERATED CODE BELOW -- DO NOT EDIT ----------- */
 
 GtkToolbarStyle gnm_conf_get_toolbar_style (void);
diff --git a/src/print-info.c b/src/print-info.c
index 5ebe19c..7e2b955 100644
--- a/src/print-info.c
+++ b/src/print-info.c
@@ -232,7 +232,7 @@ print_info_load_defaults (PrintInformation *res)
 	if (res->page_setup != NULL)
 		return res;
 
-	res->page_setup = gtk_page_setup_copy (gnm_gconf_get_page_setup ());
+	res->page_setup = gtk_page_setup_copy (gnm_conf_get_page_setup ());
 
 	res->scaling.type = gnm_conf_get_printsetup_scale_percentage ()
 		? PRINT_SCALE_PERCENTAGE
@@ -400,7 +400,7 @@ print_info_save (PrintInformation *pi)
 	gnm_conf_set_printsetup_footer (l);
 	g_slist_free (l);
 
-	gnm_gconf_set_page_setup (pi->page_setup);
+	gnm_conf_set_page_setup (pi->page_setup);
 }
 
 GtkUnit
diff --git a/src/print.c b/src/print.c
index dc6ed7e..5a78b3e 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1555,9 +1555,7 @@ gnm_print_sheet (WorkbookControl *wbc, Sheet *sheet,
   pi->wbc = wbc ? WORKBOOK_CONTROL (wbc) : NULL;
   pi->sheet = sheet;
 
-  gnm_gconf_init_printer_defaults ();
-
-  settings = gnm_gconf_get_print_settings ();
+  settings = gnm_conf_get_print_settings ();
   gtk_print_settings_set_int (settings, GNUMERIC_PRINT_SETTING_PRINTRANGE_KEY,
 			      default_range);
   pi->pr = default_range;
@@ -1611,7 +1609,7 @@ gnm_print_sheet (WorkbookControl *wbc, Sheet *sheet,
 
   switch (res) {
   case GTK_PRINT_OPERATION_RESULT_APPLY:
-	  gnm_gconf_set_print_settings (gtk_print_operation_get_print_settings (print));
+	  gnm_conf_set_print_settings (gtk_print_operation_get_print_settings (print));
 	  break;
   case GTK_PRINT_OPERATION_RESULT_CANCEL:
 	  printing_instance_delete (pi);
diff --git a/src/wbc-gtk.c b/src/wbc-gtk.c
index 640a4f6..b7007d5 100644
--- a/src/wbc-gtk.c
+++ b/src/wbc-gtk.c
@@ -3448,7 +3448,7 @@ set_toolbar_position (GtkToolbar *tb, GtkPositionType pos, WBCGtk *gtk)
 	g_object_unref (box);
 
 	if (zone)
-		gnm_gconf_set_toolbar_position (name, pos);
+		gnm_conf_set_toolbar_position (name, pos);
 }
 
 static void
@@ -3584,7 +3584,7 @@ cb_toolbar_box_visible (GtkWidget *box, G_GNUC_UNUSED GParamSpec *pspec,
 		 * We do not persist changes made going-to/while-in/leaving
 		 * fullscreen mode.
 		 */
-		gnm_gconf_set_toolbar_visible (name, visible);
+		gnm_conf_set_toolbar_visible (name, visible);
 	}
 }
 
@@ -3598,7 +3598,7 @@ cb_add_menus_toolbars (G_GNUC_UNUSED GtkUIManager *ui,
 		GtkToggleActionEntry entry;
 		char *toggle_name = g_strconcat ("ViewMenuToolbar", name, NULL);
 		char *tooltip = g_strdup_printf (_("Show/Hide toolbar %s"), _(name));
-		gboolean visible = gnm_gconf_get_toolbar_visible (name);
+		gboolean visible = gnm_conf_get_toolbar_visible (name);
 
 #ifdef GNM_USE_HILDON
 		hildon_window_add_toolbar (HILDON_WINDOW (wbcg_toplevel (wbcg)), GTK_TOOLBAR (w));
@@ -3608,9 +3608,9 @@ cb_add_menus_toolbars (G_GNUC_UNUSED GtkUIManager *ui,
 			g_strdup (toggle_name), g_object_ref (w));
 #else
 		GtkWidget *box;
-		GtkPositionType pos = gnm_gconf_get_toolbar_position (name);
+		GtkPositionType pos = gnm_conf_get_toolbar_position (name);
 
-		if (gnm_app_detachable_toolbars ()) {
+		if (gnm_conf_get_detachable_toolbars ()) {
 			box = gtk_handle_box_new ();
 			g_object_connect (box,
 				"signal::child_attached", G_CALLBACK (cb_handlebox_dock_status), GINT_TO_POINTER (TRUE),
diff --git a/tools/handle-conf-options b/tools/handle-conf-options
index 03f04be..1f6f8da 100644
--- a/tools/handle-conf-options
+++ b/tools/handle-conf-options
@@ -40,6 +40,7 @@ my %type_to_ctype =
      'GO_TYPE_DIRECTION' => 'GODirection',
      'GTK_TYPE_UNIT' => 'GtkUnit',
      'GTK_TYPE_TOOLBAR_STYLE' => 'GtkToolbarStyle',
+     'GTK_TYPE_POSITION' => 'GtkPositionType',
     );
 
 my %extra_attributes =
@@ -64,16 +65,19 @@ my %extra_attributes =
      },
 
      '/apps/gnumeric/core/gui/toolbars/FormatToolbar-position' => {
+	 'gtype' => 'GTK_TYPE_POSITION',
 	 'min' => 0,
 	 'max' => 3,
      },
 
      '/apps/gnumeric/core/gui/toolbars/ObjectToolbar-position' => {
+	 'gtype' => 'GTK_TYPE_POSITION',
 	 'min' => 0,
 	 'max' => 3,
      },
 
      '/apps/gnumeric/core/gui/toolbars/StandardToolbar-position' => {
+	 'gtype' => 'GTK_TYPE_POSITION',
 	 'min' => 0,
 	 'max' => 3,
      },



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]