[Xfce4-commits] <midori:master> Load extension settings from global config folders
Christian Dywan
noreply at xfce.org
Sat Oct 3 01:52:01 CEST 2009
Updating branch refs/heads/master
to 18ab34bdc82aa1890f7924c3ab9422739f7ddb3b (commit)
from 255018aeaa498e0c0e787c4da932c57c789b54d7 (commit)
commit 18ab34bdc82aa1890f7924c3ab9422739f7ddb3b
Author: Christian Dywan <christian at twotoasts.de>
Date: Fri Oct 2 23:07:36 2009 +0200
Load extension settings from global config folders
For example, /etc/xdg/midori/extensions/extension_name/config
midori/main.c | 6 +++---
midori/midori-extension.c | 12 +++++++++++-
midori/sokoke.c | 11 ++++++++---
midori/sokoke.h | 3 ++-
4 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/midori/main.c b/midori/main.c
index 738e7f9..dfe9489 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -94,7 +94,7 @@ settings_new_from_file (const gchar* filename,
{
if (error->code == G_FILE_ERROR_NOENT)
{
- gchar* config_file = sokoke_find_config_filename ("config");
+ gchar* config_file = sokoke_find_config_filename (NULL, "config");
g_key_file_load_from_file (key_file, config_file,
G_KEY_FILE_KEEP_COMMENTS, NULL);
}
@@ -1818,7 +1818,7 @@ main (int argc,
search_engines = search_engines_new_from_file (config_file, NULL);
#else
katze_assign (config_file,
- sokoke_find_config_filename ("search"));
+ sokoke_find_config_filename (NULL, "search"));
search_engines = search_engines_new_from_file (config_file, NULL);
#endif
}
@@ -1839,7 +1839,7 @@ main (int argc,
if (error->code == G_FILE_ERROR_NOENT)
{
katze_assign (config_file,
- sokoke_find_config_filename ("bookmarks.xbel"));
+ sokoke_find_config_filename (NULL, "bookmarks.xbel"));
midori_array_from_file (bookmarks, config_file, "xbel", NULL);
}
else
diff --git a/midori/midori-extension.c b/midori/midori-extension.c
index ece419f..27ab9df 100644
--- a/midori/midori-extension.c
+++ b/midori/midori-extension.c
@@ -272,11 +272,21 @@ midori_extension_activate_cb (MidoriExtension* extension,
if (!g_key_file_load_from_file (extension->priv->key_file, config_file,
G_KEY_FILE_KEEP_COMMENTS, &error))
{
- if (error->code != G_FILE_ERROR_NOENT)
+ if (error->code == G_FILE_ERROR_NOENT)
+ {
+ gchar* filename = g_object_get_data (G_OBJECT (extension), "filename");
+ gchar* folder = g_strconcat ("extensions/", filename, NULL);
+ katze_assign (config_file,
+ sokoke_find_config_filename (folder, "config"));
+ g_key_file_load_from_file (extension->priv->key_file, config_file,
+ G_KEY_FILE_KEEP_COMMENTS, NULL);
+ }
+ else
printf (_("The configuration of the extension '%s' couldn't be loaded: %s\n"),
extension->priv->name, error->message);
g_error_free (error);
}
+ g_free (config_file);
}
while (lsettings)
diff --git a/midori/sokoke.c b/midori/sokoke.c
index bc16970..35b95d5 100644
--- a/midori/sokoke.c
+++ b/midori/sokoke.c
@@ -963,6 +963,7 @@ sokoke_remove_path (const gchar* path,
/**
* sokoke_find_config_filename:
+ * @folder: a subfolder
* @filename: a filename or relative path
*
* Looks for the specified filename in the system config
@@ -971,20 +972,24 @@ sokoke_remove_path (const gchar* path,
* Return value: a full path
**/
gchar*
-sokoke_find_config_filename (const gchar* filename)
+sokoke_find_config_filename (const gchar* folder,
+ const gchar* filename)
{
const gchar* const* config_dirs = g_get_system_config_dirs ();
guint i = 0;
const gchar* config_dir;
+ if (!folder)
+ folder = "";
+
while ((config_dir = config_dirs[i++]))
{
- gchar* path = g_build_filename (config_dir, PACKAGE_NAME, filename, NULL);
+ gchar* path = g_build_filename (config_dir, PACKAGE_NAME, folder, filename, NULL);
if (g_file_test (path, G_FILE_TEST_EXISTS))
return path;
g_free (path);
}
- return g_build_filename (SYSCONFDIR, "xdg", PACKAGE_NAME, filename, NULL);
+ return g_build_filename (SYSCONFDIR, "xdg", PACKAGE_NAME, folder, filename, NULL);
}
/**
diff --git a/midori/sokoke.h b/midori/sokoke.h
index 9deee90..e2dbb21 100644
--- a/midori/sokoke.h
+++ b/midori/sokoke.h
@@ -152,7 +152,8 @@ sokoke_remove_path (const gchar* path,
gboolean ignore_errors);
gchar*
-sokoke_find_config_filename (const gchar* filename);
+sokoke_find_config_filename (const gchar* folder,
+ const gchar* filename);
gchar*
sokoke_find_data_filename (const gchar* filename);
More information about the Xfce4-commits
mailing list