[Xfce4-commits] <midori:master> New property "key" for Midori.Extension object

Christian Dywan noreply at xfce.org
Thu Apr 5 22:46:02 CEST 2012


Updating branch refs/heads/master
         to d0ef9c65750d14989872303092de8a6ad58ce1d0 (commit)
       from a32cc0908e3e5a9d52ce4a518edf5f98eee12473 (commit)

commit d0ef9c65750d14989872303092de8a6ad58ce1d0
Author: André Stösel <andre at stoesel.de>
Date:   Sat Mar 31 17:19:01 2012 +0200

    New property "key" for Midori.Extension object
    
    This property is needed if the module contains more than one extension.
    
    Add properties "website" and "key" to the vapi.
    
    If the extension has a key, it should be used as part of the config filename.

 midori/main.c             |   34 +++++++++++++++++++++++++++++++---
 midori/midori-extension.c |   28 +++++++++++++++++++++++++++-
 midori/midori.vapi        |    4 ++++
 3 files changed, 62 insertions(+), 4 deletions(-)

diff --git a/midori/main.c b/midori/main.c
index 6d995f6..3a4c917 100644
--- a/midori/main.c
+++ b/midori/main.c
@@ -264,8 +264,24 @@ settings_save_to_file (MidoriWebSettings* settings,
     {
         KATZE_ARRAY_FOREACH_ITEM (extension, extensions)
             if (midori_extension_is_active (extension))
-                g_key_file_set_boolean (key_file, "extensions",
-                    g_object_get_data (G_OBJECT (extension), "filename"), TRUE);
+            {
+                const gchar* filename = g_object_get_data (
+                    G_OBJECT (extension), "filename");
+
+                gchar* key;
+                gchar* term;
+
+                key = katze_object_get_string (extension, "key");
+                if (key && *key)
+                    term = g_strdup_printf ("%s/%s", filename, key);
+                else
+                    term = g_strdup (filename);
+
+                g_key_file_set_boolean (key_file, "extensions", term, TRUE);
+
+                g_free (key);
+                g_free (term);
+            }
         g_object_unref (extensions);
     }
     else if ((_extensions = g_object_get_data (G_OBJECT (app), "extensions")))
@@ -1246,10 +1262,22 @@ midori_load_extension (MidoriApp*       app,
     if (active_extensions)
     {
         guint i = 0;
+        gchar* key;
         gchar* name;
+        gchar* term;
+
+        key = katze_object_get_string (extension, "key");
+        if (key && *key)
+            term = g_strdup_printf ("%s/%s", filename, key);
+        else
+            term = g_strdup (filename);
+
         while ((name = active_extensions[i++]))
-            if (!g_strcmp0 (filename, name))
+            if (!g_strcmp0 (term, name))
                 g_signal_emit_by_name (extension, "activate", app);
+
+        g_free (key);
+        g_free (term);
     }
     g_signal_connect_after (extension, "activate",
         G_CALLBACK (extension_activate_cb), app);
diff --git a/midori/midori-extension.c b/midori/midori-extension.c
index 7927e72..2815634 100644
--- a/midori/midori-extension.c
+++ b/midori/midori-extension.c
@@ -25,6 +25,7 @@ struct _MidoriExtensionPrivate
     gchar* version;
     gchar* authors;
     gchar* website;
+    gchar* key;
 
     MidoriApp* app;
     gint active;
@@ -127,7 +128,8 @@ enum
     PROP_DESCRIPTION,
     PROP_VERSION,
     PROP_AUTHORS,
-    PROP_WEBSITE
+    PROP_WEBSITE,
+    PROP_KEY
 };
 
 enum {
@@ -260,6 +262,23 @@ midori_extension_class_init (MidoriExtensionClass* class)
                                      NULL,
                                      flags));
 
+    /**
+     * MidoriExtension:key:
+     *
+     * The extension key.
+     * Needed if there is more than one extension object in a single module.
+     *
+     * Since: 0.4.5
+     */
+    g_object_class_install_property (gobject_class,
+                                     PROP_KEY,
+                                     g_param_spec_string (
+                                     "key",
+                                     "Key",
+                                     "The extension key",
+                                     NULL,
+                                     flags));
+
     g_type_class_add_private (class, sizeof (MidoriExtensionPrivate));
 }
 
@@ -400,6 +419,7 @@ midori_extension_finalize (GObject* object)
     katze_assign (extension->priv->version, NULL);
     katze_assign (extension->priv->authors, NULL);
     katze_assign (extension->priv->website, NULL);
+    katze_assign (extension->priv->key, NULL);
 
     katze_assign (extension->priv->config_dir, NULL);
     g_list_free (extension->priv->lsettings);
@@ -446,6 +466,9 @@ midori_extension_set_property (GObject*      object,
     case PROP_WEBSITE:
         katze_assign (extension->priv->website, g_value_dup_string (value));
         break;
+    case PROP_KEY:
+        katze_assign (extension->priv->key, g_value_dup_string (value));
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
@@ -477,6 +500,9 @@ midori_extension_get_property (GObject*    object,
     case PROP_WEBSITE:
         g_value_set_string (value, extension->priv->website);
         break;
+    case PROP_KEY:
+        g_value_set_string (value, extension->priv->key);
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
         break;
diff --git a/midori/midori.vapi b/midori/midori.vapi
index c9d9f64..61c5990 100644
--- a/midori/midori.vapi
+++ b/midori/midori.vapi
@@ -115,6 +115,10 @@ namespace Midori {
         public string version { get; set; }
         [NoAccessorMethod]
         public string authors { get; set; }
+        [NoAccessorMethod]
+        public string website { get; set; }
+        [NoAccessorMethod]
+        public string key { get; set; }
 
         public signal void activate (Midori.App app);
         public signal void deactivate ();


More information about the Xfce4-commits mailing list