[grilo] test-ui: reload plugins functionality



commit def549318aa94a881e1d3f8b7a6790c3060673ba
Author: Víctor Manuel Jáquez Leal <vjaquez igalia com>
Date:   Fri Aug 20 11:34:59 2010 +0200

    test-ui: reload plugins functionality
    
    Add a menu option for reloading all the available plugins. Now, in theory,
    should be possible to reload a plugin in development process without
    restarting the test-ui app.
    
    Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez igalia com>

 tools/grilo-test-ui/main.c |   46 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 43 insertions(+), 3 deletions(-)
---
diff --git a/tools/grilo-test-ui/main.c b/tools/grilo-test-ui/main.c
index e9f63cd..58e3265 100644
--- a/tools/grilo-test-ui/main.c
+++ b/tools/grilo-test-ui/main.c
@@ -171,6 +171,7 @@ static const gchar *ui_definition =
 " <menubar name='MainMenu'>"
 "  <menu name='FileMenu' action='FileMenuAction' >"
 "   <menuitem name='Authorize Flickr' action='AuthorizeFlickrAction' />"
+"   <menuitem name='Reload plugins' action='ReloadPluginsAction' />"
 "   <menuitem name='Quit' action='QuitAction' />"
 "  </menu>"
 " </menubar>"
@@ -182,10 +183,17 @@ static void quit_cb (GtkAction *action);
 static gchar *authorize_flickr (void);
 static void authorize_flickr_cb (GtkAction *action);
 
+static void reload_plugins_cb (GtkAction *action);
+static void reload_plugins (void);
+
 static GtkActionEntry entries[] = {
   { "FileMenuAction", NULL, "_File" },
-  { "AuthorizeFlickrAction", GTK_STOCK_CONNECT, "_Authorize Flickr", NULL, "AuthorizeFlickr", G_CALLBACK (authorize_flickr_cb)},
-  { "QuitAction", GTK_STOCK_QUIT, "_Quit", "<control>Q", "Quit", G_CALLBACK (quit_cb) }
+  { "AuthorizeFlickrAction", GTK_STOCK_CONNECT, "_Authorize Flickr", NULL,
+    "AuthorizeFlickr", G_CALLBACK (authorize_flickr_cb) },
+  { "ReloadPluginsAction", GTK_STOCK_REFRESH, "_Reload Plugins", "<control>R",
+    "ReloadPlugins", G_CALLBACK (reload_plugins_cb) },
+  { "QuitAction", GTK_STOCK_QUIT, "_Quit", "<control>Q",
+    "Quit", G_CALLBACK (quit_cb) }
 };
 
 static void
@@ -200,6 +208,12 @@ authorize_flickr_cb (GtkAction *action)
   authorize_flickr ();
 }
 
+static void
+reload_plugins_cb (GtkAction *action)
+{
+  reload_plugins ();
+}
+
 static GtkTreeModel *
 create_browser_model (void)
 {
@@ -1718,6 +1732,32 @@ load_plugins (void)
 }
 
 static void
+reload_plugins (void)
+{
+  GrlMediaPlugin **sources;
+  GrlPluginRegistry *registry;
+  int i;
+
+  /* Cancel previous operation, if any */
+  cancel_current_operation ();
+
+  registry = grl_plugin_registry_get_default ();
+  sources = grl_plugin_registry_get_sources (registry, FALSE);
+
+  for (i = 0; sources[i]; i++) {
+    grl_plugin_registry_unload (registry,
+                                grl_media_plugin_get_name (sources[i]));
+    grl_plugin_registry_unregister_source (registry, sources[i]);
+  }
+
+  g_free (sources);
+
+  load_plugins ();
+
+  reset_ui ();
+}
+
+static void
 configure_plugins ()
 {
   set_flickr_config ();
@@ -1730,7 +1770,7 @@ main (int argc, gchar *argv[])
 {
   gtk_init (&argc, &argv);
   grl_init (&argc, &argv);
-  grl_log_init ("*:*");
+  grl_log_init ("grl-jamendo:*");
   launchers_setup ();
   ui_setup ();
   configure_plugins ();



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