[Xfce4-commits] <midori:master> Move loading and saving into search action

Christian Dywan noreply at xfce.org
Thu Nov 22 02:02:01 CET 2012


Updating branch refs/heads/master
         to b8fc0f8d26f38ab3718735bfc3d30f039dd715db (commit)
       from 841a84aff3d751cecd3c51198cd719e36676d765 (commit)

commit b8fc0f8d26f38ab3718735bfc3d30f039dd715db
Author: Christian Dywan <christian at twotoasts.de>
Date:   Thu Nov 22 01:25:41 2012 +0100

    Move loading and saving into search action

 midori/main.c                |  161 ++----------------------------------------
 midori/midori-searchaction.c |  156 ++++++++++++++++++++++++++++++++++++++++
 midori/midori-searchaction.h |   17 +++++
 3 files changed, 179 insertions(+), 155 deletions(-)

diff --git a/midori/main.c b/midori/main.c
index 6a4c542..77d06f0 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -21,6 +21,7 @@
 #include "midori-panel.h"
 #include "midori-platform.h"
 #include "midori-preferences.h"
+#include "midori-searchaction.h"
 #include <midori/midori-core.h>
 
 #include <config.h>
@@ -287,119 +288,6 @@ settings_save_to_file (MidoriWebSettings* settings,
     return saved;
 }
 
-static KatzeArray*
-search_engines_new_from_file (const gchar* filename,
-                              GError**     error)
-{
-    KatzeArray* search_engines;
-    GKeyFile* key_file;
-    gchar** engines;
-    guint i, j, n_properties;
-    KatzeItem* item;
-    GParamSpec** pspecs;
-    const gchar* property;
-    gchar* value;
-
-    search_engines = katze_array_new (KATZE_TYPE_ITEM);
-    key_file = g_key_file_new ();
-    g_key_file_load_from_file (key_file, filename,
-                               G_KEY_FILE_KEEP_COMMENTS, error);
-    engines = g_key_file_get_groups (key_file, NULL);
-    pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (search_engines),
-	                                     &n_properties);
-    for (i = 0; engines[i] != NULL; i++)
-    {
-        item = katze_item_new ();
-        for (j = 0; j < n_properties; j++)
-        {
-            if (!G_IS_PARAM_SPEC_STRING (pspecs[j]))
-                continue;
-            property = g_param_spec_get_name (pspecs[j]);
-            value = g_key_file_get_string (key_file, engines[i],
-	                                   property, NULL);
-            g_object_set (item, property, value, NULL);
-            g_free (value);
-        }
-        katze_array_add_item (search_engines, item);
-    }
-    g_free (pspecs);
-    g_strfreev (engines);
-    g_key_file_free (key_file);
-    return search_engines;
-}
-
-static KatzeArray*
-search_engines_new_from_folder (GString* error_messages)
-{
-    gchar* config_file = midori_paths_get_config_filename_for_reading ("search");
-    GError* error = NULL;
-    KatzeArray* search_engines;
-
-    search_engines = search_engines_new_from_file (config_file, &error);
-    /* We ignore for instance empty files */
-    if (error && (error->code == G_KEY_FILE_ERROR_PARSE
-        || error->code == G_FILE_ERROR_NOENT))
-    {
-        g_error_free (error);
-        error = NULL;
-    }
-    if (!error && katze_array_is_empty (search_engines))
-    {
-        katze_assign (config_file,
-            midori_paths_get_preset_filename (NULL, "search"));
-        katze_object_assign (search_engines,
-            search_engines_new_from_file (config_file, NULL));
-    }
-    else if (error)
-    {
-        if (error->code != G_FILE_ERROR_NOENT && error_messages)
-            g_string_append_printf (error_messages,
-                _("The search engines couldn't be loaded. %s\n"),
-                error->message);
-        g_error_free (error);
-    }
-    g_free (config_file);
-    return search_engines;
-}
-
-static gboolean
-search_engines_save_to_file (KatzeArray*  search_engines,
-                             const gchar* filename,
-                             GError**     error)
-{
-    GKeyFile* key_file;
-    guint j, n_properties;
-    KatzeItem* item;
-    const gchar* name;
-    GParamSpec** pspecs;
-    const gchar* property;
-    gchar* value;
-    gboolean saved;
-
-    key_file = g_key_file_new ();
-    pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (search_engines),
-                                             &n_properties);
-    KATZE_ARRAY_FOREACH_ITEM (item, search_engines)
-    {
-        name = katze_item_get_name (item);
-        for (j = 0; j < n_properties; j++)
-        {
-            if (!G_IS_PARAM_SPEC_STRING (pspecs[j]))
-                continue;
-            property = g_param_spec_get_name (pspecs[j]);
-            g_object_get (item, property, &value, NULL);
-            if (value)
-                g_key_file_set_string (key_file, name, property, value);
-            g_free (value);
-        }
-    }
-    g_free (pspecs);
-    saved = sokoke_key_file_save_to_file (key_file, filename, error);
-    g_key_file_free (key_file);
-
-    return saved;
-}
-
 static void
 midori_history_clear_cb (KatzeArray* array,
                          sqlite3*    db)
@@ -542,31 +430,6 @@ accel_map_changed_cb (GtkAccelMap*    accel_map,
 }
 
 static void
-midori_search_engines_modify_cb (KatzeArray* array,
-                                 gpointer    item,
-                                 KatzeArray* search_engines)
-{
-    gchar* config_file = midori_paths_get_config_filename_for_writing ("search");
-    GError* error = NULL;
-    if (!search_engines_save_to_file (search_engines, config_file, &error))
-    {
-        g_warning (_("The search engines couldn't be saved. %s"),
-                   error->message);
-        g_error_free (error);
-    }
-    g_free (config_file);
-}
-
-static void
-midori_search_engines_move_item_cb (KatzeArray* array,
-                                    gpointer    item,
-                                    gint        position,
-                                    KatzeArray* search_engines)
-{
-    midori_search_engines_modify_cb (array, item, search_engines);
-}
-
-static void
 midori_trash_add_item_no_save_cb (KatzeArray* trash,
                                   GObject*    item)
 {
@@ -1997,7 +1860,7 @@ main (int    argc,
         {
             settings = settings_and_accels_new (&extensions);
             g_strfreev (extensions);
-            search_engines = search_engines_new_from_folder (NULL);
+            search_engines = midori_search_engines_new_from_folder (NULL);
             g_object_set (browser, "search-engines", search_engines, NULL);
             g_object_unref (search_engines);
         }
@@ -2212,7 +2075,7 @@ main (int    argc,
     midori_startup_timer ("Config and accels read: \t%f");
 
     /* Load search engines */
-    search_engines = search_engines_new_from_folder (error_messages);
+    search_engines = midori_search_engines_new_from_folder (error_messages);
     /* Pick first search engine as default if not set */
     g_object_get (settings, "location-entry-search", &uri, NULL);
     if (!(uri && *uri) && !katze_array_is_empty (search_engines))
@@ -2349,21 +2212,9 @@ main (int    argc,
     }
     }
 
-    if (1)
-    {
-        g_signal_connect_after (search_engines, "add-item",
-            G_CALLBACK (midori_search_engines_modify_cb), search_engines);
-        g_signal_connect_after (search_engines, "remove-item",
-            G_CALLBACK (midori_search_engines_modify_cb), search_engines);
-        if (!katze_array_is_empty (search_engines))
-        {
-            KATZE_ARRAY_FOREACH_ITEM (item, search_engines)
-                g_signal_connect_after (item, "notify",
-                    G_CALLBACK (midori_search_engines_modify_cb), search_engines);
-            g_signal_connect_after (search_engines, "move-item",
-                G_CALLBACK (midori_search_engines_move_item_cb), search_engines);
-        }
-    }
+    katze_assign (config_file, g_build_filename (config, "search", NULL));
+    midori_search_engines_set_filename (search_engines, config_file);
+
     g_signal_connect_after (trash, "add-item",
         G_CALLBACK (midori_trash_add_item_cb), NULL);
     g_signal_connect_after (trash, "remove-item",
diff --git a/midori/midori-searchaction.c b/midori/midori-searchaction.c
index 0def72b..5aadec4 100644
--- a/midori/midori-searchaction.c
+++ b/midori/midori-searchaction.c
@@ -1592,3 +1592,159 @@ midori_search_action_get_dialog (MidoriSearchAction* search_action)
     search_action->dialog = dialog;
     return dialog;
 }
+
+KatzeArray*
+midori_search_engines_new_from_file (const gchar* filename,
+                                     GError**     error)
+{
+    KatzeArray* search_engines;
+    GKeyFile* key_file;
+    gchar** engines;
+    guint i, j, n_properties;
+    KatzeItem* item;
+    GParamSpec** pspecs;
+    const gchar* property;
+    gchar* value;
+
+    search_engines = katze_array_new (KATZE_TYPE_ITEM);
+    key_file = g_key_file_new ();
+    g_key_file_load_from_file (key_file, filename,
+                               G_KEY_FILE_KEEP_COMMENTS, error);
+    engines = g_key_file_get_groups (key_file, NULL);
+    pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (search_engines),
+                                             &n_properties);
+    for (i = 0; engines[i] != NULL; i++)
+    {
+        item = katze_item_new ();
+        for (j = 0; j < n_properties; j++)
+        {
+            if (!G_IS_PARAM_SPEC_STRING (pspecs[j]))
+                continue;
+            property = g_param_spec_get_name (pspecs[j]);
+            value = g_key_file_get_string (key_file, engines[i], property, NULL);
+            g_object_set (item, property, value, NULL);
+            g_free (value);
+        }
+        katze_array_add_item (search_engines, item);
+    }
+    g_free (pspecs);
+    g_strfreev (engines);
+    g_key_file_free (key_file);
+    return search_engines;
+}
+
+KatzeArray*
+midori_search_engines_new_from_folder (GString* error_messages)
+{
+    gchar* config_file = midori_paths_get_config_filename_for_reading ("search");
+    GError* error = NULL;
+    KatzeArray* search_engines = midori_search_engines_new_from_file (config_file, &error);
+    /* We ignore for instance empty files */
+    if (error && (error->code == G_KEY_FILE_ERROR_PARSE
+        || error->code == G_FILE_ERROR_NOENT))
+    {
+        g_error_free (error);
+        error = NULL;
+    }
+    if (!error && katze_array_is_empty (search_engines))
+    {
+        katze_assign (config_file,
+            midori_paths_get_preset_filename (NULL, "search"));
+        katze_object_assign (search_engines,
+            midori_search_engines_new_from_file (config_file, NULL));
+    }
+    else if (error)
+    {
+        if (error->code != G_FILE_ERROR_NOENT && error_messages)
+            g_string_append_printf (error_messages,
+                _("The search engines couldn't be loaded. %s\n"),
+                error->message);
+        g_error_free (error);
+    }
+    g_free (config_file);
+    return search_engines;
+}
+
+gboolean
+midori_search_engines_save_to_file (KatzeArray*  search_engines,
+                                    const gchar* filename,
+                                    GError**     error)
+{
+    GKeyFile* key_file;
+    guint j, n_properties;
+    KatzeItem* item;
+    const gchar* name;
+    GParamSpec** pspecs;
+    const gchar* property;
+    gchar* value;
+    gboolean saved;
+
+    key_file = g_key_file_new ();
+    pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (search_engines),
+                                             &n_properties);
+    KATZE_ARRAY_FOREACH_ITEM (item, search_engines)
+    {
+        name = katze_item_get_name (item);
+        for (j = 0; j < n_properties; j++)
+        {
+            if (!G_IS_PARAM_SPEC_STRING (pspecs[j]))
+                continue;
+            property = g_param_spec_get_name (pspecs[j]);
+            g_object_get (item, property, &value, NULL);
+            if (value)
+                g_key_file_set_string (key_file, name, property, value);
+            g_free (value);
+        }
+    }
+    g_free (pspecs);
+    saved = sokoke_key_file_save_to_file (key_file, filename, error);
+    g_key_file_free (key_file);
+
+    return saved;
+}
+
+static void
+midori_search_engines_modify_cb (KatzeArray* array,
+                                 gpointer    item,
+                                 KatzeArray* search_engines)
+{
+    gchar* config_file = g_object_get_data (G_OBJECT (search_engines), "search-engines-filename");
+    GError* error = NULL;
+    if (!midori_search_engines_save_to_file (search_engines, config_file, &error))
+    {
+        g_warning (_("The search engines couldn't be saved. %s"),
+                   error->message);
+        g_error_free (error);
+    }
+}
+
+static void
+midori_search_engines_move_item_cb (KatzeArray* array,
+                                    gpointer    item,
+                                    gint        position,
+                                    KatzeArray* search_engines)
+{
+    midori_search_engines_modify_cb (array, item, search_engines);
+}
+
+void
+midori_search_engines_set_filename (KatzeArray*  search_engines,
+                                    const gchar* filename)
+{
+    g_object_set_data_full (G_OBJECT (search_engines), "search-engines-filename",
+                            g_strdup (filename), (GDestroyNotify)g_free);
+    g_signal_connect_after (search_engines, "add-item",
+        G_CALLBACK (midori_search_engines_modify_cb), search_engines);
+    g_signal_connect_after (search_engines, "remove-item",
+        G_CALLBACK (midori_search_engines_modify_cb), search_engines);
+    if (!katze_array_is_empty (search_engines))
+    {
+        KatzeItem* item;
+        KATZE_ARRAY_FOREACH_ITEM (item, search_engines)
+            g_signal_connect_after (item, "notify",
+                G_CALLBACK (midori_search_engines_modify_cb), search_engines);
+        g_signal_connect_after (search_engines, "move-item",
+            G_CALLBACK (midori_search_engines_move_item_cb), search_engines);
+    }
+}
+
diff --git a/midori/midori-searchaction.h b/midori/midori-searchaction.h
index 1f1d220..d7f20e6 100644
--- a/midori/midori-searchaction.h
+++ b/midori/midori-searchaction.h
@@ -82,6 +82,23 @@ KatzeItem*
 midori_search_action_get_engine_for_form   (WebKitWebView*      web_view,
                                             PangoEllipsizeMode  ellipsize);
 
+KatzeArray*
+midori_search_engines_new_from_file        (const gchar*        filename,
+                                            GError**            error);
+
+
+KatzeArray*
+midori_search_engines_new_from_folder      (GString*            error_messages);
+
+gboolean
+midori_search_engines_save_to_file         (KatzeArray*         search_engines,
+                                            const gchar*        filename,
+                                            GError**            error);
+
+void
+midori_search_engines_set_filename         (KatzeArray*         search_engines,
+                                            const gchar*        filename);
+
 G_END_DECLS
 
 #endif /* __MIDORI_SEARCH_ACTION_H__ */


More information about the Xfce4-commits mailing list