[gnumeric] Templates: Allow version-agnostic template files. [#630247]



commit 8e3dae0ef56456242c55fde78a83b92b45b9d876
Author: Morten Welinder <terra gnome org>
Date:   Thu Jan 20 11:02:24 2011 -0500

    Templates: Allow version-agnostic template files.  [#630247]

 ChangeLog                           |   13 +++++++++++--
 NEWS                                |    1 +
 component/gnumeric.c                |    6 ++++--
 src/dialogs/dialog-plugin-manager.c |    4 ++--
 src/file-autoft.c                   |    5 ++++-
 src/gnm-plugin.c                    |    4 ++--
 src/gutils.c                        |   15 +++++++++++----
 src/gutils.h                        |    2 +-
 src/wbc-gtk.c                       |    9 +++++++--
 src/widgets/ChangeLog               |    8 ++++++--
 src/widgets/gnumeric-expr-entry.c   |    1 +
 11 files changed, 50 insertions(+), 18 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c73dbf4..e730b34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,20 @@
+2011-01-20  Morten Welinder  <terra gnome org>
+
+	* src/gutils.c (gnm_usr_dir): Add parameter controlling whether to
+	return versioned or unversioned directory.  All callers changed.
+
+	* src/file-autoft.c (category_group_list_get): Search both
+	unversioned and versioned directories.
+	* src/wbc-gtk.c (wbc_gtk_reload_templates): Ditto.
+
 2011-01-16  Andreas J. Guelzow <aguelzow pyrshep ca>
 
 	* src/commands.c (cmd_set_text_full): do not enter expressions
 	into text-formatted cells
-	
+
 2011-01-13  Andreas J. Guelzow <aguelzow pyrshep ca>
 
-	* src/value.c (find_rows_that_match): only one criteria row has 
+	* src/value.c (find_rows_that_match): only one criteria row has
 	to match!
 
 2011-01-11  Morten Welinder  <terra gnome org>
diff --git a/NEWS b/NEWS
index ad7082a..7a97192 100644
--- a/NEWS
+++ b/NEWS
@@ -29,6 +29,7 @@ Morten:
 	* Plug a few leaks.
 	* Fix number-match issue regarding fraction.
 	* Fix problems with pivot reading from xls.  [#638776]
+	* Allow version-agnostic template files.  [#630247]
 
 --------------------------------------------------------------------------
 Gnumeric 1.10.12
diff --git a/component/gnumeric.c b/component/gnumeric.c
index b225618..a7bd17b 100644
--- a/component/gnumeric.c
+++ b/component/gnumeric.c
@@ -265,6 +265,8 @@ go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
 	GTypeModule *module;
 	char const *env_var;
 	GSList *dir_list;
+	const char *usr_dir = gnm_usr_dir (TRUE);
+
 	bindtextdomain (GETTEXT_PACKAGE, gnm_locale_dir ());
 	bindtextdomain (GETTEXT_PACKAGE "-functions", gnm_locale_dir ());
 #ifdef ENABLE_NLS
@@ -277,8 +279,8 @@ go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
 		gutils_init ();
 	dir_list = go_slist_create (
 		g_build_filename (gnm_sys_lib_dir (), PLUGIN_SUBDIR, NULL),
-		(gnm_usr_dir () == NULL ? NULL :
-			g_build_filename (gnm_usr_dir (), PLUGIN_SUBDIR, NULL)),
+		(usr_dir == NULL ? NULL :
+			g_build_filename (usr_dir, PLUGIN_SUBDIR, NULL)),
 		NULL);
 	dir_list = g_slist_concat
 		(dir_list,
diff --git a/src/dialogs/dialog-plugin-manager.c b/src/dialogs/dialog-plugin-manager.c
index cf8617f..cb424f0 100644
--- a/src/dialogs/dialog-plugin-manager.c
+++ b/src/dialogs/dialog-plugin-manager.c
@@ -223,8 +223,8 @@ pm_gui_load_directory_page (PluginManagerGUI *pm_gui)
 {
 	GtkTreeIter iter;
 	char * sys_plugins = g_build_filename (gnm_sys_lib_dir (), PLUGIN_SUBDIR, NULL);
-	char * usr_plugins = (gnm_usr_dir () == NULL ? NULL :
-				g_build_filename (gnm_usr_dir (), PLUGIN_SUBDIR, NULL));
+	char * usr_plugins = (gnm_usr_dir (TRUE) == NULL ? NULL :
+				g_build_filename (gnm_usr_dir (TRUE), PLUGIN_SUBDIR, NULL));
 	char * go_plugins = go_plugins_get_plugin_dir ();
 	GSList *plugin_dirs;
 	gchar const *plugin_path_env;
diff --git a/src/file-autoft.c b/src/file-autoft.c
index 835cb8b..fa7e178 100644
--- a/src/file-autoft.c
+++ b/src/file-autoft.c
@@ -212,7 +212,10 @@ category_group_list_get (void)
 		 gnm_sys_data_dir ());
 	add_dir (&dir_list,
 		 gnm_conf_get_autoformat_usr_dir (),
-		 gnm_usr_dir ());
+		 gnm_usr_dir (FALSE));
+	add_dir (&dir_list,
+		 gnm_conf_get_autoformat_usr_dir (),
+		 gnm_usr_dir (TRUE));
 
 	for (sl = gnm_conf_get_autoformat_extra_dirs (); sl; sl = sl->next) {
 		const char *dir = sl->data;
diff --git a/src/gnm-plugin.c b/src/gnm-plugin.c
index f8d0b57..71b2277 100644
--- a/src/gnm-plugin.c
+++ b/src/gnm-plugin.c
@@ -920,8 +920,8 @@ gnm_plugins_init (GOCmdContext *context)
 	char const *env_var;
 	GSList *dir_list = go_slist_create (
 		g_build_filename (gnm_sys_lib_dir (), PLUGIN_SUBDIR, NULL),
-		(gnm_usr_dir () == NULL ? NULL :
-			g_build_filename (gnm_usr_dir (), PLUGIN_SUBDIR, NULL)),
+		(gnm_usr_dir (TRUE) == NULL ? NULL :
+			g_build_filename (gnm_usr_dir (TRUE), PLUGIN_SUBDIR, NULL)),
 		NULL);
 	dir_list = g_slist_concat (dir_list,
 				   go_string_slist_copy (gnm_conf_get_plugins_extra_dirs ()));
diff --git a/src/gutils.c b/src/gutils.c
index 03dd5f6..34014df 100644
--- a/src/gutils.c
+++ b/src/gutils.c
@@ -36,6 +36,7 @@ static char *gnumeric_data_dir;
 static char *gnumeric_icon_dir;
 static char *gnumeric_locale_dir;
 static char *gnumeric_usr_dir;
+static char *gnumeric_usr_dir_unversioned;
 
 static gboolean
 running_in_tree (void)
@@ -105,8 +106,12 @@ gutils_init (void)
 	gnumeric_locale_dir = g_strdup (GNUMERIC_LOCALEDIR);
 #endif
 	home_dir = g_get_home_dir ();
-	gnumeric_usr_dir = (home_dir == NULL ? NULL :
-	   g_build_filename (home_dir, ".gnumeric", GNM_VERSION_FULL, NULL));
+	gnumeric_usr_dir_unversioned = home_dir
+		? g_build_filename (home_dir, ".gnumeric", NULL)
+		: NULL;
+	gnumeric_usr_dir = gnumeric_usr_dir_unversioned
+		? g_build_filename (gnumeric_usr_dir_unversioned, GNM_VERSION_FULL, NULL)
+		: NULL;
 }
 
 void
@@ -122,6 +127,8 @@ gutils_shutdown (void)
 	gnumeric_locale_dir = NULL;
 	g_free (gnumeric_usr_dir);
 	gnumeric_usr_dir = NULL;
+	g_free (gnumeric_usr_dir_unversioned);
+	gnumeric_usr_dir_unversioned = NULL;
 }
 
 char const *
@@ -149,9 +156,9 @@ gnm_locale_dir (void)
 }
 
 char const *
-gnm_usr_dir (void)
+gnm_usr_dir (gboolean versioned)
 {
-	return gnumeric_usr_dir;
+	return versioned ? gnumeric_usr_dir : gnumeric_usr_dir_unversioned;
 }
 
 int
diff --git a/src/gutils.h b/src/gutils.h
index 1fe8e05..e7d9d02 100644
--- a/src/gutils.h
+++ b/src/gutils.h
@@ -16,7 +16,7 @@ char const *gnm_sys_lib_dir    (void);
 char const *gnm_sys_data_dir   (void);
 char const *gnm_icon_dir       (void);
 char const *gnm_locale_dir     (void);
-char const *gnm_usr_dir	       (void);
+char const *gnm_usr_dir	       (gboolean versioned);
 
 #define PLUGIN_SUBDIR "plugins"
 
diff --git a/src/wbc-gtk.c b/src/wbc-gtk.c
index 35c55de..e9f256c 100644
--- a/src/wbc-gtk.c
+++ b/src/wbc-gtk.c
@@ -5073,8 +5073,13 @@ wbc_gtk_reload_templates (WBCGtk *gtk)
 	add_template_dir (path, h);
 	g_free (path);
 
-	/* Let user override system templates by doing this last.  */
-	path = g_build_filename (gnm_usr_dir (), "templates", NULL);
+	/* Possibly override the above with user templates without version.  */
+	path = g_build_filename (gnm_usr_dir (FALSE), "templates", NULL);
+	add_template_dir (path, h);
+	g_free (path);
+
+	/* Possibly override the above with user templates with version.  */
+	path = g_build_filename (gnm_usr_dir (TRUE), "templates", NULL);
 	add_template_dir (path, h);
 	g_free (path);
 
diff --git a/src/widgets/ChangeLog b/src/widgets/ChangeLog
index a246523..618725e 100644
--- a/src/widgets/ChangeLog
+++ b/src/widgets/ChangeLog
@@ -1,13 +1,17 @@
+2011-01-20  Morten Welinder  <terra gnome org>
+
+	* gnumeric-expr-entry.c: Fix warning.
+
 2011-01-16  Andreas J. Guelzow <aguelzow pyrshep ca>
 
-	* gnumeric-expr-entry.c (gee_update_lexer_items): check for text 
+	* gnumeric-expr-entry.c (gee_update_lexer_items): check for text
 	formatted cells
 
 2011-01-15  Andreas J. Guelzow <aguelzow pyrshep ca>
 
 	* gnm-cell-combo-view.c (gnm_cell_combo_view_popdown): wait for the
 	gdkwindow to be set before rtetrieving it.
-	
+
 2011-01-12  Jean Brefort  <jean brefort normalesup org>
 
 	* gnumeric-expr-entry.c (gee_class_init): dynamically test for
diff --git a/src/widgets/gnumeric-expr-entry.c b/src/widgets/gnumeric-expr-entry.c
index 1d1fa8a..20eda83 100644
--- a/src/widgets/gnumeric-expr-entry.c
+++ b/src/widgets/gnumeric-expr-entry.c
@@ -25,6 +25,7 @@
 #include <func.h>
 #include <dependent.h>
 #include <sheet.h>
+#include <sheet-style.h>
 #include <workbook.h>
 #include <sheet-view.h>
 #include <selection.h>



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