[gnome-todo/wip/gbsneto/plugins: 57/62] plugin-manager: move to plugin/



commit ad4d56f518fc87f69cac8a9a236a394ad2349aaa
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Jan 14 20:57:38 2016 -0200

    plugin-manager: move to plugin/
    
    We'll have a whole set of plugin-related stuff,
    makes sense to move it to a dedicated directory.

 src/Makefile.am                       |    4 +-
 src/gtd-manager.c                     |    2 +-
 src/{ => plugin}/gtd-plugin-manager.c |   40 +++++++++++++++++++++++++++++++++
 src/{ => plugin}/gtd-plugin-manager.h |    2 +
 4 files changed, 45 insertions(+), 3 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index afbc54b..9513487 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -38,6 +38,8 @@ gnome_todo_SOURCES = \
        provider/gtd-provider-row.h \
        provider/gtd-provider-selector.c \
        provider/gtd-provider-selector.h \
+       plugin/gtd-plugin-manager.c \
+       plugin/gtd-plugin-manager.h \
        views/gtd-list-selector.c \
        views/gtd-list-selector.h \
        views/gtd-list-selector-grid.c \
@@ -58,8 +60,6 @@ gnome_todo_SOURCES = \
        gtd-manager-protected.h \
        gtd-object.c \
        gtd-object.h \
-       gtd-plugin-manager.c \
-       gtd-plugin-manager.h \
        gtd-task.c \
        gtd-task.h \
        gtd-task-list.c \
diff --git a/src/gtd-manager.c b/src/gtd-manager.c
index 3bee5bd..32c3135 100644
--- a/src/gtd-manager.c
+++ b/src/gtd-manager.c
@@ -18,9 +18,9 @@
 
 #include "interfaces/gtd-provider.h"
 #include "interfaces/gtd-panel.h"
+#include "plugin/gtd-plugin-manager.h"
 #include "gtd-manager.h"
 #include "gtd-manager-protected.h"
-#include "gtd-plugin-manager.h"
 #include "gtd-task.h"
 #include "gtd-task-list.h"
 
diff --git a/src/gtd-plugin-manager.c b/src/plugin/gtd-plugin-manager.c
similarity index 85%
rename from src/gtd-plugin-manager.c
rename to src/plugin/gtd-plugin-manager.c
index 8f075b9..ac62d63 100644
--- a/src/gtd-plugin-manager.c
+++ b/src/plugin/gtd-plugin-manager.c
@@ -42,6 +42,8 @@ enum
 {
   PANEL_REGISTERED,
   PANEL_UNREGISTERED,
+  PLUGIN_LOADED,
+  PLUGIN_UNLOADED,
   PROVIDER_REGISTERED,
   PROVIDER_UNREGISTERED,
   NUM_SIGNALS
@@ -88,6 +90,30 @@ gtd_plugin_manager_class_init (GtdPluginManagerClass *klass)
                                               1,
                                               GTD_TYPE_PANEL);
 
+  signals[PLUGIN_LOADED] = g_signal_new ("plugin-loaded",
+                                         GTD_TYPE_PLUGIN_MANAGER,
+                                         G_SIGNAL_RUN_FIRST,
+                                         0,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         G_TYPE_NONE,
+                                         2,
+                                         PEAS_TYPE_PLUGIN_INFO,
+                                         GTD_TYPE_ACTIVATABLE);
+
+  signals[PLUGIN_UNLOADED] = g_signal_new ("plugin-unloaded",
+                                           GTD_TYPE_PLUGIN_MANAGER,
+                                           G_SIGNAL_RUN_FIRST,
+                                           0,
+                                           NULL,
+                                           NULL,
+                                           NULL,
+                                           G_TYPE_NONE,
+                                           2,
+                                           PEAS_TYPE_PLUGIN_INFO,
+                                           GTD_TYPE_ACTIVATABLE);
+
   signals[PROVIDER_REGISTERED] = g_signal_new ("provider-registered",
                                                GTD_TYPE_PLUGIN_MANAGER,
                                                G_SIGNAL_RUN_FIRST,
@@ -173,6 +199,9 @@ on_plugin_unloaded (PeasEngine       *engine,
   /* Deactivate extension */
   peas_activatable_deactivate (PEAS_ACTIVATABLE (activatable));
 
+  /* Emit the signal */
+  g_signal_emit (self, signals[PLUGIN_UNLOADED], 0, info, activatable);
+
   g_hash_table_remove (self->info_to_extension, info);
 }
 
@@ -232,6 +261,9 @@ on_plugin_loaded (PeasEngine       *engine,
                         "panel-removed",
                         G_CALLBACK (on_panel_removed),
                         self);
+
+      /* Emit the signal */
+      g_signal_emit (self, signals[PLUGIN_LOADED], 0, info, extension);
     }
 }
 
@@ -324,3 +356,11 @@ gtd_plugin_manager_load_plugins (GtdPluginManager *self)
 {
   setup_plugins (self);
 }
+
+GList*
+gtd_plugin_manager_get_loaded_plugins (GtdPluginManager *self)
+{
+  g_return_val_if_fail (GTD_IS_PLUGIN_MANAGER (self), NULL);
+
+  return g_hash_table_get_values (self->info_to_extension);
+}
diff --git a/src/gtd-plugin-manager.h b/src/plugin/gtd-plugin-manager.h
similarity index 93%
rename from src/gtd-plugin-manager.h
rename to src/plugin/gtd-plugin-manager.h
index 772006e..9aac218 100644
--- a/src/gtd-plugin-manager.h
+++ b/src/plugin/gtd-plugin-manager.h
@@ -34,6 +34,8 @@ GtdPluginManager*    gtd_plugin_manager_new                      (void);
 
 void                 gtd_plugin_manager_load_plugins             (GtdPluginManager   *self);
 
+GList*               gtd_plugin_manager_get_loaded_plugins       (GtdPluginManager   *self);
+
 G_END_DECLS
 
 #endif /* GTD_PLUGIN_MANAGER_H */


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