[gnome-todo] Move panel handling to PeasExtensionSet



commit 571941632fc49d1c83e6a0763a6cf81c22fbd796
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Apr 30 21:53:58 2020 -0300

    Move panel handling to PeasExtensionSet
    
    It is unbelievable the amount of code that can be removed
    only by using APIs as they are meant to be used.

 .../all-tasks-panel/gtd-plugin-all-tasks-panel.c   | 30 ++-----
 plugins/background/gtd-plugin-background.c         |  7 --
 plugins/dark-theme/gtd-plugin-dark-theme.c         |  9 +-
 plugins/eds/gtd-plugin-eds.c                       |  9 +-
 plugins/inbox-panel/gtd-plugin-inbox-panel.c       | 26 +-----
 .../next-week-panel/gtd-plugin-next-week-panel.c   | 30 ++-----
 plugins/night-light/gtd-night-light-plugin.c       |  9 +-
 .../scheduled-panel/gtd-plugin-scheduled-panel.c   | 30 ++-----
 plugins/score/score/__init__.py                    |  5 +-
 .../gtd-plugin-task-lists-workspace.c              |  7 --
 .../gtd-task-lists-workspace.c                     | 97 +++++++++++++++++++---
 plugins/task-lists-workspace/sidebar/gtd-sidebar.c | 18 ++--
 plugins/task-lists-workspace/sidebar/gtd-sidebar.h |  5 +-
 plugins/today-panel/gtd-plugin-today-panel.c       | 28 +------
 .../unscheduled-panel/__init__.py                  |  5 +-
 src/engine/gtd-manager.c                           | 96 ---------------------
 src/engine/gtd-manager.h                           |  2 -
 src/engine/gtd-plugin-manager.c                    | 55 ------------
 src/interfaces/gtd-activatable.c                   | 59 +------------
 src/interfaces/gtd-activatable.h                   |  6 +-
 20 files changed, 129 insertions(+), 404 deletions(-)
---
diff --git a/plugins/all-tasks-panel/gtd-plugin-all-tasks-panel.c 
b/plugins/all-tasks-panel/gtd-plugin-all-tasks-panel.c
index 760b926..2191167 100644
--- a/plugins/all-tasks-panel/gtd-plugin-all-tasks-panel.c
+++ b/plugins/all-tasks-panel/gtd-plugin-all-tasks-panel.c
@@ -1,6 +1,6 @@
 /* gtd-plugin-all-tasks-panel.c
  *
- * Copyright 2018 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright 2018-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,8 +31,6 @@
 struct _GtdPluginAllTasksPanel
 {
   PeasExtensionBase   parent;
-
-  GList              *panels;
 };
 
 static void          gtd_activatable_iface_init                  (GtdActivatableInterface  *iface);
@@ -74,14 +72,6 @@ gtd_plugin_all_tasks_panel_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_all_tasks_panel_get_panels (GtdActivatable *activatable)
-{
-  GtdPluginAllTasksPanel *plugin = GTD_PLUGIN_ALL_TASKS_PANEL (activatable);
-
-  return plugin->panels;
-}
-
 static GList*
 gtd_plugin_all_tasks_panel_get_providers (GtdActivatable *activatable)
 {
@@ -95,20 +85,9 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_all_tasks_panel_deactivate;
   iface->get_header_widgets = gtd_plugin_all_tasks_panel_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_all_tasks_panel_get_preferences_panel;
-  iface->get_panels = gtd_plugin_all_tasks_panel_get_panels;
   iface->get_providers = gtd_plugin_all_tasks_panel_get_providers;
 }
 
-static void
-gtd_plugin_all_tasks_panel_finalize (GObject *object)
-{
-  GtdPluginAllTasksPanel *self = (GtdPluginAllTasksPanel *)object;
-
-  g_list_free (self->panels);
-
-  G_OBJECT_CLASS (gtd_plugin_all_tasks_panel_parent_class)->finalize (object);
-}
-
 static void
 gtd_plugin_all_tasks_panel_get_property (GObject    *object,
                                          guint       prop_id,
@@ -131,7 +110,6 @@ gtd_plugin_all_tasks_panel_class_init (GtdPluginAllTasksPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = gtd_plugin_all_tasks_panel_finalize;
   object_class->get_property = gtd_plugin_all_tasks_panel_get_property;
 
   g_object_class_override_property (object_class, PROP_PREFERENCES_PANEL, "preferences-panel");
@@ -140,8 +118,6 @@ gtd_plugin_all_tasks_panel_class_init (GtdPluginAllTasksPanelClass *klass)
 static void
 gtd_plugin_all_tasks_panel_init (GtdPluginAllTasksPanel *self)
 {
-  /* And then the panel */
-  self->panels = g_list_append (NULL, gtd_all_tasks_panel_new ());
 }
 
 static void
@@ -157,4 +133,8 @@ gtd_plugin_all_tasks_panel_register_types (PeasObjectModule *module)
   peas_object_module_register_extension_type (module,
                                               GTD_TYPE_ACTIVATABLE,
                                               GTD_TYPE_PLUGIN_ALL_TASKS_PANEL);
+
+  peas_object_module_register_extension_type (module,
+                                              GTD_TYPE_PANEL,
+                                              GTD_TYPE_ALL_TASKS_PANEL);
 }
diff --git a/plugins/background/gtd-plugin-background.c b/plugins/background/gtd-plugin-background.c
index 82e0bbb..bc8d8e1 100644
--- a/plugins/background/gtd-plugin-background.c
+++ b/plugins/background/gtd-plugin-background.c
@@ -504,12 +504,6 @@ gtd_plugin_background_get_preferences_panel (GtdActivatable *activatable)
   return self->preferences_panel;
 }
 
-static GList*
-gtd_plugin_background_get_panels (GtdActivatable *activatable)
-{
-  return NULL;
-}
-
 static GList*
 gtd_plugin_background_get_providers (GtdActivatable *activatable)
 {
@@ -523,7 +517,6 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_background_deactivate;
   iface->get_header_widgets = gtd_plugin_background_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_background_get_preferences_panel;
-  iface->get_panels = gtd_plugin_background_get_panels;
   iface->get_providers = gtd_plugin_background_get_providers;
 }
 
diff --git a/plugins/dark-theme/gtd-plugin-dark-theme.c b/plugins/dark-theme/gtd-plugin-dark-theme.c
index 4991452..492a116 100644
--- a/plugins/dark-theme/gtd-plugin-dark-theme.c
+++ b/plugins/dark-theme/gtd-plugin-dark-theme.c
@@ -1,6 +1,6 @@
 /* gtd-plugin-dark-theme.c
  *
- * Copyright (C) 2016 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2016-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -71,12 +71,6 @@ gtd_plugin_dark_theme_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_dark_theme_get_panels (GtdActivatable *activatable)
-{
-  return NULL;
-}
-
 static GList*
 gtd_plugin_dark_theme_get_providers (GtdActivatable *activatable)
 {
@@ -90,7 +84,6 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_dark_theme_deactivate;
   iface->get_header_widgets = gtd_plugin_dark_theme_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_dark_theme_get_preferences_panel;
-  iface->get_panels = gtd_plugin_dark_theme_get_panels;
   iface->get_providers = gtd_plugin_dark_theme_get_providers;
 }
 
diff --git a/plugins/eds/gtd-plugin-eds.c b/plugins/eds/gtd-plugin-eds.c
index bfd2290..fab4df6 100644
--- a/plugins/eds/gtd-plugin-eds.c
+++ b/plugins/eds/gtd-plugin-eds.c
@@ -1,6 +1,6 @@
 /* gtd-plugin-eds.c
  *
- * Copyright (C) 2015 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2015-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -96,12 +96,6 @@ gtd_plugin_eds_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_eds_get_panels (GtdActivatable *activatable)
-{
-  return NULL;
-}
-
 static GList*
 gtd_plugin_eds_get_providers (GtdActivatable *activatable)
 {
@@ -117,7 +111,6 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_eds_deactivate;
   iface->get_header_widgets = gtd_plugin_eds_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_eds_get_preferences_panel;
-  iface->get_panels = gtd_plugin_eds_get_panels;
   iface->get_providers = gtd_plugin_eds_get_providers;
 }
 
diff --git a/plugins/inbox-panel/gtd-plugin-inbox-panel.c b/plugins/inbox-panel/gtd-plugin-inbox-panel.c
index e10278f..b2eeb5c 100644
--- a/plugins/inbox-panel/gtd-plugin-inbox-panel.c
+++ b/plugins/inbox-panel/gtd-plugin-inbox-panel.c
@@ -31,7 +31,6 @@ struct _GtdPluginInboxPanel
 {
   PeasExtensionBase   parent;
 
-  GList              *panels;
   GtkCssProvider     *css_provider;
 };
 
@@ -76,14 +75,6 @@ gtd_plugin_inbox_panel_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_inbox_panel_get_panels (GtdActivatable *activatable)
-{
-  GtdPluginInboxPanel *plugin = GTD_PLUGIN_INBOX_PANEL (activatable);
-
-  return plugin->panels;
-}
-
 static GList*
 gtd_plugin_inbox_panel_get_providers (GtdActivatable *activatable)
 {
@@ -97,20 +88,9 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_inbox_panel_deactivate;
   iface->get_header_widgets = gtd_plugin_inbox_panel_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_inbox_panel_get_preferences_panel;
-  iface->get_panels = gtd_plugin_inbox_panel_get_panels;
   iface->get_providers = gtd_plugin_inbox_panel_get_providers;
 }
 
-static void
-gtd_plugin_inbox_panel_finalize (GObject *object)
-{
-  GtdPluginInboxPanel *self = (GtdPluginInboxPanel *)object;
-
-  g_list_free (self->panels);
-
-  G_OBJECT_CLASS (gtd_plugin_inbox_panel_parent_class)->finalize (object);
-}
-
 static void
 gtd_plugin_inbox_panel_get_property (GObject    *object,
                                          guint       prop_id,
@@ -133,7 +113,6 @@ gtd_plugin_inbox_panel_class_init (GtdPluginInboxPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = gtd_plugin_inbox_panel_finalize;
   object_class->get_property = gtd_plugin_inbox_panel_get_property;
 
   g_object_class_override_property (object_class, PROP_PREFERENCES_PANEL, "preferences-panel");
@@ -142,7 +121,6 @@ gtd_plugin_inbox_panel_class_init (GtdPluginInboxPanelClass *klass)
 static void
 gtd_plugin_inbox_panel_init (GtdPluginInboxPanel *self)
 {
-  self->panels = g_list_append (NULL, gtd_inbox_panel_new ());
 }
 
 static void
@@ -158,4 +136,8 @@ gtd_plugin_inbox_panel_register_types (PeasObjectModule *module)
   peas_object_module_register_extension_type (module,
                                               GTD_TYPE_ACTIVATABLE,
                                               GTD_TYPE_PLUGIN_INBOX_PANEL);
+
+  peas_object_module_register_extension_type (module,
+                                              GTD_TYPE_PANEL,
+                                              GTD_TYPE_INBOX_PANEL);
 }
diff --git a/plugins/next-week-panel/gtd-plugin-next-week-panel.c 
b/plugins/next-week-panel/gtd-plugin-next-week-panel.c
index 45ecf53..8edd146 100644
--- a/plugins/next-week-panel/gtd-plugin-next-week-panel.c
+++ b/plugins/next-week-panel/gtd-plugin-next-week-panel.c
@@ -1,6 +1,6 @@
 /* gtd-plugin-next-week-panel.c
  *
- * Copyright 2018 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright 2018-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -31,7 +31,6 @@ struct _GtdPluginNextWeekPanel
 {
   PeasExtensionBase   parent;
 
-  GList              *panels;
   GtkCssProvider     *css_provider;
 };
 
@@ -76,14 +75,6 @@ gtd_plugin_next_week_panel_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_next_week_panel_get_panels (GtdActivatable *activatable)
-{
-  GtdPluginNextWeekPanel *plugin = GTD_PLUGIN_NEXT_WEEK_PANEL (activatable);
-
-  return plugin->panels;
-}
-
 static GList*
 gtd_plugin_next_week_panel_get_providers (GtdActivatable *activatable)
 {
@@ -97,20 +88,9 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_next_week_panel_deactivate;
   iface->get_header_widgets = gtd_plugin_next_week_panel_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_next_week_panel_get_preferences_panel;
-  iface->get_panels = gtd_plugin_next_week_panel_get_panels;
   iface->get_providers = gtd_plugin_next_week_panel_get_providers;
 }
 
-static void
-gtd_plugin_next_week_panel_finalize (GObject *object)
-{
-  GtdPluginNextWeekPanel *self = (GtdPluginNextWeekPanel *)object;
-
-  g_list_free (self->panels);
-
-  G_OBJECT_CLASS (gtd_plugin_next_week_panel_parent_class)->finalize (object);
-}
-
 static void
 gtd_plugin_next_week_panel_get_property (GObject    *object,
                                          guint       prop_id,
@@ -133,7 +113,6 @@ gtd_plugin_next_week_panel_class_init (GtdPluginNextWeekPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = gtd_plugin_next_week_panel_finalize;
   object_class->get_property = gtd_plugin_next_week_panel_get_property;
 
   g_object_class_override_property (object_class,
@@ -164,9 +143,6 @@ gtd_plugin_next_week_panel_init (GtdPluginNextWeekPanel *self)
     gtk_css_provider_load_from_file (self->css_provider, css_file);
   else
     gtk_css_provider_load_from_resource (self->css_provider, 
"/org/gnome/todo/theme/scheduled-panel/Adwaita.css");
-
-  /* And then the panel */
-  self->panels = g_list_append (NULL, gtd_next_week_panel_new ());
 }
 
 static void
@@ -182,4 +158,8 @@ gtd_plugin_next_week_panel_register_types (PeasObjectModule *module)
   peas_object_module_register_extension_type (module,
                                               GTD_TYPE_ACTIVATABLE,
                                               GTD_TYPE_PLUGIN_NEXT_WEEK_PANEL);
+
+  peas_object_module_register_extension_type (module,
+                                              GTD_TYPE_PANEL,
+                                              GTD_TYPE_NEXT_WEEK_PANEL);
 }
diff --git a/plugins/night-light/gtd-night-light-plugin.c b/plugins/night-light/gtd-night-light-plugin.c
index 8d4502a..d42a11d 100644
--- a/plugins/night-light/gtd-night-light-plugin.c
+++ b/plugins/night-light/gtd-night-light-plugin.c
@@ -1,6 +1,6 @@
 /* gtd-night-light-plugin.c
  *
- * Copyright 2018 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright 2018-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -159,12 +159,6 @@ gtd_night_light_plugin_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_night_light_plugin_get_panels (GtdActivatable *activatable)
-{
-  return NULL;
-}
-
 static GList*
 gtd_night_light_plugin_get_providers (GtdActivatable *activatable)
 {
@@ -178,7 +172,6 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_night_light_plugin_deactivate;
   iface->get_header_widgets = gtd_night_light_plugin_get_header_widgets;
   iface->get_preferences_panel = gtd_night_light_plugin_get_preferences_panel;
-  iface->get_panels = gtd_night_light_plugin_get_panels;
   iface->get_providers = gtd_night_light_plugin_get_providers;
 }
 
diff --git a/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c 
b/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c
index f97c343..b1400bc 100644
--- a/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c
+++ b/plugins/scheduled-panel/gtd-plugin-scheduled-panel.c
@@ -1,6 +1,6 @@
 /* gtd-plugin-scheduled-panel.c
  *
- * Copyright (C) 2016 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2016-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -29,7 +29,6 @@ struct _GtdPluginScheduledPanel
 {
   PeasExtensionBase   parent;
 
-  GList              *panels;
   GtkCssProvider     *css_provider;
 };
 
@@ -73,14 +72,6 @@ gtd_plugin_scheduled_panel_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_scheduled_panel_get_panels (GtdActivatable *activatable)
-{
-  GtdPluginScheduledPanel *plugin = GTD_PLUGIN_SCHEDULED_PANEL (activatable);
-
-  return plugin->panels;
-}
-
 static GList*
 gtd_plugin_scheduled_panel_get_providers (GtdActivatable *activatable)
 {
@@ -94,20 +85,9 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_scheduled_panel_deactivate;
   iface->get_header_widgets = gtd_plugin_scheduled_panel_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_scheduled_panel_get_preferences_panel;
-  iface->get_panels = gtd_plugin_scheduled_panel_get_panels;
   iface->get_providers = gtd_plugin_scheduled_panel_get_providers;
 }
 
-static void
-gtd_plugin_scheduled_panel_finalize (GObject *object)
-{
-  GtdPluginScheduledPanel *self = (GtdPluginScheduledPanel *)object;
-
-  g_list_free (self->panels);
-
-  G_OBJECT_CLASS (gtd_plugin_scheduled_panel_parent_class)->finalize (object);
-}
-
 static void
 gtd_plugin_scheduled_panel_get_property (GObject    *object,
                                          guint       prop_id,
@@ -130,7 +110,6 @@ gtd_plugin_scheduled_panel_class_init (GtdPluginScheduledPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = gtd_plugin_scheduled_panel_finalize;
   object_class->get_property = gtd_plugin_scheduled_panel_get_property;
 
   g_object_class_override_property (object_class,
@@ -162,9 +141,6 @@ gtd_plugin_scheduled_panel_init (GtdPluginScheduledPanel *self)
   else
     gtk_css_provider_load_from_resource (self->css_provider, 
"/org/gnome/todo/theme/scheduled-panel/Adwaita.css");
 
-  /* And then the panel */
-  self->panels = g_list_append (NULL, gtd_panel_scheduled_new ());
-
   g_object_unref (settings);
   g_object_unref (css_file);
   g_free (theme_name);
@@ -184,4 +160,8 @@ gtd_plugin_scheduled_panel_register_types (PeasObjectModule *module)
   peas_object_module_register_extension_type (module,
                                               GTD_TYPE_ACTIVATABLE,
                                               GTD_TYPE_PLUGIN_SCHEDULED_PANEL);
+
+  peas_object_module_register_extension_type (module,
+                                              GTD_TYPE_PANEL,
+                                              GTD_TYPE_PANEL_SCHEDULED);
 }
diff --git a/plugins/score/score/__init__.py b/plugins/score/score/__init__.py
index d289f3c..0913912 100644
--- a/plugins/score/score/__init__.py
+++ b/plugins/score/score/__init__.py
@@ -2,7 +2,7 @@
 
 # __init__.py
 #
-# Copyright (C) 2016 Georges Basile Stavracas Neto <georges stavracas gmail com>
+# Copyright (C) 2016-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -167,9 +167,6 @@ class ScorePlugin(GObject.Object, Gtd.Activatable):
     def do_get_header_widgets(self):
         return [self.header_button]
 
-    def do_get_panels(self):
-        return None
-
     def do_get_preferences_panel(self):
         return None
 
diff --git a/plugins/task-lists-workspace/gtd-plugin-task-lists-workspace.c 
b/plugins/task-lists-workspace/gtd-plugin-task-lists-workspace.c
index 750f098..8443424 100644
--- a/plugins/task-lists-workspace/gtd-plugin-task-lists-workspace.c
+++ b/plugins/task-lists-workspace/gtd-plugin-task-lists-workspace.c
@@ -84,12 +84,6 @@ gtd_plugin_task_lists_workspace_get_preferences_panel (GtdActivatable *activatab
   return NULL;
 }
 
-static GList*
-gtd_plugin_task_lists_workspace_get_panels (GtdActivatable *activatable)
-{
-  return NULL;
-}
-
 static GList*
 gtd_plugin_task_lists_workspace_get_providers (GtdActivatable *activatable)
 {
@@ -103,7 +97,6 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_task_lists_workspace_deactivate;
   iface->get_header_widgets = gtd_plugin_task_lists_workspace_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_task_lists_workspace_get_preferences_panel;
-  iface->get_panels = gtd_plugin_task_lists_workspace_get_panels;
   iface->get_providers = gtd_plugin_task_lists_workspace_get_providers;
 }
 
diff --git a/plugins/task-lists-workspace/gtd-task-lists-workspace.c 
b/plugins/task-lists-workspace/gtd-task-lists-workspace.c
index 05a283b..b6e3aa5 100644
--- a/plugins/task-lists-workspace/gtd-task-lists-workspace.c
+++ b/plugins/task-lists-workspace/gtd-task-lists-workspace.c
@@ -25,6 +25,7 @@
 #include "sidebar/gtd-sidebar.h"
 #include "gtd-task-list-panel.h"
 
+#include <libpeas/peas.h>
 #include <glib/gi18n.h>
 
 struct _GtdTaskListsWorkspace
@@ -45,6 +46,7 @@ struct _GtdTaskListsWorkspace
   GtdPanel           *active_panel;
   GtdPanel           *task_list_panel;
 
+  PeasExtensionSet   *panels_set;
   GSimpleActionGroup *action_group;
 };
 
@@ -61,6 +63,15 @@ enum
   N_PROPS
 };
 
+enum
+{
+  PANEL_ADDED,
+  PANEL_REMOVED,
+  NUM_SIGNALS
+};
+
+static guint signals[NUM_SIGNALS] = { 0, };
+
 
 /*
  * Auxiliary methods
@@ -190,7 +201,8 @@ on_back_button_clicked_cb (GtkButton             *button,
 }
 
 static void
-on_panel_added_cb (GtdManager            *manager,
+on_panel_added_cb (PeasExtensionSet      *extension_set,
+                   PeasPluginInfo        *plugin_info,
                    GtdPanel              *panel,
                    GtdTaskListsWorkspace *self)
 {
@@ -198,14 +210,22 @@ on_panel_added_cb (GtdManager            *manager,
                         GTK_WIDGET (panel),
                         gtd_panel_get_panel_name (panel),
                         gtd_panel_get_panel_title (panel));
+
+  g_signal_emit (self, signals[PANEL_ADDED], 0, panel);
 }
 
 static void
-on_panel_removed_cb (GtdManager            *manager,
+on_panel_removed_cb (PeasExtensionSet      *extension_set,
+                     PeasPluginInfo        *plugin_info,
                      GtdPanel              *panel,
                      GtdTaskListsWorkspace *self)
 {
+  g_object_ref (panel);
+
   gtk_container_remove (GTK_CONTAINER (self->stack), GTK_WIDGET (panel));
+  g_signal_emit (self, signals[PANEL_REMOVED], 0, panel);
+
+  g_object_unref (panel);
 }
 
 static void
@@ -318,6 +338,21 @@ gtd_workspace_iface_init (GtdWorkspaceInterface  *iface)
 }
 
 
+/*
+ * GtkWidget overrides
+ */
+
+static void
+gtd_task_lists_workspace_destroy (GtkWidget *widget)
+{
+  GtdTaskListsWorkspace *self = (GtdTaskListsWorkspace *)widget;
+
+  g_clear_object (&self->panels_set);
+
+  GTK_WIDGET_CLASS (gtd_task_lists_workspace_parent_class)->destroy (widget);
+}
+
+
 /*
  * GObject overrides
  */
@@ -326,8 +361,6 @@ static void
 gtd_task_lists_workspace_constructed (GObject *object)
 {
   GtdTaskListsWorkspace *self = (GtdTaskListsWorkspace *)object;
-  g_autoptr (GList) lists = NULL;
-  g_autoptr (GList) l = NULL;
   GtdManager *manager;
 
   self = GTD_TASK_LISTS_WORKSPACE (object);
@@ -338,13 +371,16 @@ gtd_task_lists_workspace_constructed (GObject *object)
   manager = gtd_manager_get_default ();
 
   /* Add loaded panels */
-  lists = gtd_manager_get_panels (manager);
+  self->panels_set = peas_extension_set_new (peas_engine_get_default (),
+                                             GTD_TYPE_PANEL,
+                                             NULL);
 
-  for (l = lists; l; l = l->next)
-    on_panel_added_cb (NULL, l->data, self);
+  peas_extension_set_foreach (self->panels_set,
+                              (PeasExtensionSetForeachFunc) on_panel_added_cb,
+                              self);
 
-  g_signal_connect (manager, "panel-added", G_CALLBACK (on_panel_added_cb), self);
-  g_signal_connect (manager, "panel-removed", G_CALLBACK (on_panel_removed_cb), self);
+  g_signal_connect (self->panels_set, "extension-added", G_CALLBACK (on_panel_added_cb), self);
+  g_signal_connect (self->panels_set, "extension-removed", G_CALLBACK (on_panel_removed_cb), self);
 
   g_settings_bind (gtd_manager_get_settings (manager),
                    "sidebar-revealed",
@@ -395,6 +431,46 @@ gtd_task_lists_workspace_class_init (GtdTaskListsWorkspaceClass *klass)
   object_class->get_property = gtd_task_lists_workspace_get_property;
   object_class->set_property = gtd_task_lists_workspace_set_property;
 
+  widget_class->destroy = gtd_task_lists_workspace_destroy;
+
+  /**
+   * GtdTaskListsWorkspace::panel-added:
+   * @manager: a #GtdManager
+   * @panel: a #GtdPanel
+   *
+   * The ::panel-added signal is emmited after a #GtdPanel
+   * is added.
+   */
+  signals[PANEL_ADDED] = g_signal_new ("panel-added",
+                                        GTD_TYPE_TASK_LISTS_WORKSPACE,
+                                        G_SIGNAL_RUN_LAST,
+                                        0,
+                                        NULL,
+                                        NULL,
+                                        NULL,
+                                        G_TYPE_NONE,
+                                        1,
+                                        GTD_TYPE_PANEL);
+
+  /**
+   * GtdTaskListsWorkspace::panel-removed:
+   * @manager: a #GtdManager
+   * @panel: a #GtdPanel
+   *
+   * The ::panel-removed signal is emmited after a #GtdPanel
+   * is removed from the list.
+   */
+  signals[PANEL_REMOVED] = g_signal_new ("panel-removed",
+                                         GTD_TYPE_TASK_LISTS_WORKSPACE,
+                                         G_SIGNAL_RUN_LAST,
+                                         0,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         G_TYPE_NONE,
+                                         1,
+                                         GTD_TYPE_PANEL);
+
   g_object_class_override_property (object_class, PROP_ICON, "icon");
   g_object_class_override_property (object_class, PROP_TITLE, "title");
 
@@ -442,8 +518,9 @@ gtd_task_lists_workspace_init (GtdTaskListsWorkspace *self)
 
   /* Task list panel */
   self->task_list_panel = GTD_PANEL (gtd_task_list_panel_new ());
-  on_panel_added_cb (gtd_manager_get_default (), self->task_list_panel, self);
+  on_panel_added_cb (NULL, NULL, self->task_list_panel, self);
 
+  gtd_sidebar_connect (self->sidebar, GTK_WIDGET (self));
   gtd_sidebar_set_panel_stack (self->sidebar, self->stack);
   gtd_sidebar_set_task_list_panel (self->sidebar, self->task_list_panel);
 
diff --git a/plugins/task-lists-workspace/sidebar/gtd-sidebar.c 
b/plugins/task-lists-workspace/sidebar/gtd-sidebar.c
index ace2445..8f4ae02 100644
--- a/plugins/task-lists-workspace/sidebar/gtd-sidebar.c
+++ b/plugins/task-lists-workspace/sidebar/gtd-sidebar.c
@@ -761,7 +761,6 @@ static void
 gtd_sidebar_constructed (GObject *object)
 {
   g_autoptr (GList) providers = NULL;
-  g_autoptr (GList) panels = NULL;
   GListModel *lists;
   GtdManager *manager;
   GtdSidebar *self;
@@ -773,15 +772,6 @@ gtd_sidebar_constructed (GObject *object)
 
   G_OBJECT_CLASS (gtd_sidebar_parent_class)->constructed (object);
 
-  /* Add loaded panels */
-  panels = gtd_manager_get_panels (manager);
-
-  for (l = panels; l; l = l->next)
-    add_panel (self, l->data);
-
-  g_signal_connect (manager, "panel-added", G_CALLBACK (on_panel_added_cb), self);
-  g_signal_connect (manager, "panel-removed", G_CALLBACK (on_panel_removed_cb), self);
-
   /* Add providers */
   providers = gtd_manager_get_providers (manager);
 
@@ -911,3 +901,11 @@ gtd_sidebar_set_archive_visible (GtdSidebar *self,
   else
     gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->listbox));
 }
+
+void
+gtd_sidebar_connect (GtdSidebar *self,
+                     GtkWidget  *workspace)
+{
+  g_signal_connect (workspace, "panel-added", G_CALLBACK (on_panel_added_cb), self);
+  g_signal_connect (workspace, "panel-removed", G_CALLBACK (on_panel_removed_cb), self);
+}
diff --git a/plugins/task-lists-workspace/sidebar/gtd-sidebar.h 
b/plugins/task-lists-workspace/sidebar/gtd-sidebar.h
index 65b81fc..581bdee 100644
--- a/plugins/task-lists-workspace/sidebar/gtd-sidebar.h
+++ b/plugins/task-lists-workspace/sidebar/gtd-sidebar.h
@@ -1,6 +1,6 @@
 /* gtd-sidebar.h
  *
- * Copyright 2018 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright 2018-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -41,4 +41,7 @@ void                 gtd_sidebar_activate                        (GtdSidebar
 void                 gtd_sidebar_set_archive_visible             (GtdSidebar         *self,
                                                                   gboolean            show_archive);
 
+void                 gtd_sidebar_connect                         (GtdSidebar         *self,
+                                                                  GtkWidget          *workspace);
+
 G_END_DECLS
diff --git a/plugins/today-panel/gtd-plugin-today-panel.c b/plugins/today-panel/gtd-plugin-today-panel.c
index 58add33..8916451 100644
--- a/plugins/today-panel/gtd-plugin-today-panel.c
+++ b/plugins/today-panel/gtd-plugin-today-panel.c
@@ -30,7 +30,6 @@ struct _GtdPluginTodayPanel
 {
   PeasExtensionBase   parent;
 
-  GList              *panels;
   GtkCssProvider     *css_provider;
 };
 
@@ -74,14 +73,6 @@ gtd_plugin_today_panel_get_preferences_panel (GtdActivatable *activatable)
   return NULL;
 }
 
-static GList*
-gtd_plugin_today_panel_get_panels (GtdActivatable *activatable)
-{
-  GtdPluginTodayPanel *plugin = GTD_PLUGIN_TODAY_PANEL (activatable);
-
-  return plugin->panels;
-}
-
 static GList*
 gtd_plugin_today_panel_get_providers (GtdActivatable *activatable)
 {
@@ -95,20 +86,9 @@ gtd_activatable_iface_init (GtdActivatableInterface *iface)
   iface->deactivate = gtd_plugin_today_panel_deactivate;
   iface->get_header_widgets = gtd_plugin_today_panel_get_header_widgets;
   iface->get_preferences_panel = gtd_plugin_today_panel_get_preferences_panel;
-  iface->get_panels = gtd_plugin_today_panel_get_panels;
   iface->get_providers = gtd_plugin_today_panel_get_providers;
 }
 
-static void
-gtd_plugin_today_panel_finalize (GObject *object)
-{
-  GtdPluginTodayPanel *self = (GtdPluginTodayPanel *)object;
-
-  g_list_free (self->panels);
-
-  G_OBJECT_CLASS (gtd_plugin_today_panel_parent_class)->finalize (object);
-}
-
 static void
 gtd_plugin_today_panel_get_property (GObject    *object,
                                      guint       prop_id,
@@ -131,7 +111,6 @@ gtd_plugin_today_panel_class_init (GtdPluginTodayPanelClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = gtd_plugin_today_panel_finalize;
   object_class->get_property = gtd_plugin_today_panel_get_property;
 
   g_object_class_override_property (object_class,
@@ -162,9 +141,6 @@ gtd_plugin_today_panel_init (GtdPluginTodayPanel *self)
     gtk_css_provider_load_from_file (self->css_provider, css_file);
   else
     gtk_css_provider_load_from_resource (self->css_provider, 
"/org/gnome/todo/theme/today-panel/Adwaita.css");
-
-  /* And then the panel */
-  self->panels = g_list_append (NULL, gtd_panel_today_new ());
 }
 
 static void
@@ -181,6 +157,10 @@ gtd_plugin_today_panel_register_types (PeasObjectModule *module)
                                               GTD_TYPE_ACTIVATABLE,
                                               GTD_TYPE_PLUGIN_TODAY_PANEL);
 
+  peas_object_module_register_extension_type (module,
+                                              GTD_TYPE_PANEL,
+                                              GTD_TYPE_PANEL_TODAY);
+
   peas_object_module_register_extension_type (module,
                                               GTD_TYPE_OMNI_AREA_ADDIN,
                                               GTD_TYPE_TODAY_OMNI_AREA_ADDIN);
diff --git a/plugins/unscheduled-panel/unscheduled-panel/__init__.py 
b/plugins/unscheduled-panel/unscheduled-panel/__init__.py
index decae8c..46a4af4 100644
--- a/plugins/unscheduled-panel/unscheduled-panel/__init__.py
+++ b/plugins/unscheduled-panel/unscheduled-panel/__init__.py
@@ -2,7 +2,7 @@
 
 # __init__.py
 #
-# Copyright ® 2016 Georges Basile Stavracas Neto <georges stavracas gmail com>
+# Copyright ® 2016-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -133,9 +133,6 @@ class UnscheduledPanelPlugin(GObject.Object, Gtd.Activatable):
     def do_get_header_widgets(self):
         return None
 
-    def do_get_panels(self):
-        return [self.panel]
-
     def do_get_preferences_panel(self):
         return None
 
diff --git a/src/engine/gtd-manager.c b/src/engine/gtd-manager.c
index a191184..4bed2f0 100644
--- a/src/engine/gtd-manager.c
+++ b/src/engine/gtd-manager.c
@@ -63,7 +63,6 @@ struct _GtdManager
 
   GHashTable         *workspaces;
   GList              *providers;
-  GList              *panels;
   GtdProvider        *default_provider;
   GtdClock           *clock;
 
@@ -82,8 +81,6 @@ enum
   LIST_REMOVED,
   SHOW_ERROR_MESSAGE,
   SHOW_NOTIFICATION,
-  PANEL_ADDED,
-  PANEL_REMOVED,
   PROVIDER_ADDED,
   PROVIDER_REMOVED,
   WORKSPACE_ADDED,
@@ -163,34 +160,6 @@ on_task_list_modified_cb (GtdTaskList *list,
   GTD_EXIT;
 }
 
-static void
-on_panel_added_cb (GtdPluginManager *plugin_manager,
-                   GtdPanel         *panel,
-                   GtdManager       *self)
-{
-  GTD_ENTRY;
-
-  self->panels = g_list_append (self->panels, panel);
-
-  g_signal_emit (self, signals[PANEL_ADDED], 0, panel);
-
-  GTD_EXIT;
-}
-
-static void
-on_panel_removed_cb (GtdPluginManager *plugin_manager,
-                     GtdPanel         *panel,
-                     GtdManager       *self)
-{
-  GTD_ENTRY;
-
-  self->panels = g_list_remove (self->panels, panel);
-
-  g_signal_emit (self, signals[PANEL_REMOVED], 0, panel);
-
-  GTD_EXIT;
-}
-
 static void
 on_list_added_cb (GtdProvider *provider,
                   GtdTaskList *list,
@@ -551,44 +520,6 @@ gtd_manager_class_init (GtdManagerClass *klass)
                                              1,
                                              GTD_TYPE_NOTIFICATION);
 
-  /**
-   * GtdManager::panel-added:
-   * @manager: a #GtdManager
-   * @panel: a #GtdPanel
-   *
-   * The ::panel-added signal is emmited after a #GtdPanel
-   * is added.
-   */
-  signals[PANEL_ADDED] = g_signal_new ("panel-added",
-                                        GTD_TYPE_MANAGER,
-                                        G_SIGNAL_RUN_LAST,
-                                        0,
-                                        NULL,
-                                        NULL,
-                                        NULL,
-                                        G_TYPE_NONE,
-                                        1,
-                                        GTD_TYPE_PANEL);
-
-  /**
-   * GtdManager::panel-removed:
-   * @manager: a #GtdManager
-   * @panel: a #GtdPanel
-   *
-   * The ::panel-removed signal is emmited after a #GtdPanel
-   * is removed from the list.
-   */
-  signals[PANEL_REMOVED] = g_signal_new ("panel-removed",
-                                         GTD_TYPE_MANAGER,
-                                         G_SIGNAL_RUN_LAST,
-                                         0,
-                                         NULL,
-                                         NULL,
-                                         NULL,
-                                         G_TYPE_NONE,
-                                         1,
-                                         GTD_TYPE_PANEL);
-
   /**
    * GtdManager::provider-added:
    * @manager: a #GtdManager
@@ -721,23 +652,6 @@ gtd_manager_get_providers (GtdManager *self)
   return g_list_copy (self->providers);
 }
 
-/**
- * gtd_manager_get_panels:
- * @manager: a #GtdManager
- *
- * Retrieves the list of currently loaded #GtdPanel
- * instances.
- *
- * Returns: (transfer container) (element-type Gtd.Panel): a #GList of #GtdPanel
- */
-GList*
-gtd_manager_get_panels (GtdManager *self)
-{
-  g_return_val_if_fail (GTD_IS_MANAGER (self), NULL);
-
-  return g_list_copy (self->panels);
-}
-
 /**
  * gtd_manager_get_default_provider:
  * @manager: a #GtdManager
@@ -1048,16 +962,6 @@ gtd_manager_load_plugins (GtdManager *self)
 {
   GTD_ENTRY;
 
-  g_signal_connect (self->plugin_manager,
-                    "panel-registered",
-                    G_CALLBACK (on_panel_added_cb),
-                    self);
-
-  g_signal_connect (self->plugin_manager,
-                    "panel-unregistered",
-                    G_CALLBACK (on_panel_removed_cb),
-                    self);
-
   g_signal_connect (self->plugin_manager,
                     "provider-registered",
                     G_CALLBACK (on_provider_added_cb),
diff --git a/src/engine/gtd-manager.h b/src/engine/gtd-manager.h
index 3d601b8..5214325 100644
--- a/src/engine/gtd-manager.h
+++ b/src/engine/gtd-manager.h
@@ -42,8 +42,6 @@ GtdManager*          gtd_manager_get_default                     (void);
 
 GList*               gtd_manager_get_providers                   (GtdManager         *manager);
 
-GList*               gtd_manager_get_panels                      (GtdManager         *manager);
-
 GtdProvider*         gtd_manager_get_default_provider            (GtdManager         *manager);
 
 void                 gtd_manager_set_default_provider            (GtdManager         *manager,
diff --git a/src/engine/gtd-plugin-manager.c b/src/engine/gtd-plugin-manager.c
index 6678ba9..099bb6a 100644
--- a/src/engine/gtd-plugin-manager.c
+++ b/src/engine/gtd-plugin-manager.c
@@ -37,8 +37,6 @@ G_DEFINE_TYPE (GtdPluginManager, gtd_plugin_manager, GTD_TYPE_OBJECT)
 
 enum
 {
-  PANEL_REGISTERED,
-  PANEL_UNREGISTERED,
   PLUGIN_LOADED,
   PLUGIN_UNLOADED,
   PROVIDER_REGISTERED,
@@ -127,22 +125,6 @@ from_property_to_gsetting_func (const GValue       *value,
   return g_variant_new_strv ((const gchar * const *)loaded_extensions, -1);
 }
 
-static void
-on_panel_added_cb (GtdActivatable   *activatable,
-                   GtdPanel         *panel,
-                   GtdPluginManager *self)
-{
-  g_signal_emit_by_name (self, "panel-registered", panel);
-}
-
-static void
-on_panel_removed_cb (GtdActivatable   *activatable,
-                     GtdPanel         *panel,
-                     GtdPluginManager *self)
-{
-  g_signal_emit_by_name (self, "panel-unregistered", panel);
-}
-
 static void
 on_provider_added_cb (GtdActivatable   *activatable,
                       GtdProvider      *provider,
@@ -166,7 +148,6 @@ on_plugin_unloaded_cb (PeasEngine       *engine,
 {
   GtdActivatable *activatable;
   GList *extension_providers;
-  GList *extension_panels;
   GList *l;
 
   activatable = g_hash_table_lookup (self->info_to_extension, info);
@@ -174,12 +155,6 @@ on_plugin_unloaded_cb (PeasEngine       *engine,
   if (!activatable)
     return;
 
-  /* Remove all panels */
-  extension_panels = gtd_activatable_get_panels (activatable);
-
-  for (l = extension_panels; l != NULL; l = l->next)
-    on_panel_removed_cb (activatable, l->data, self);
-
   /* Remove all registered providers */
   extension_providers = gtd_activatable_get_providers (activatable);
 
@@ -193,8 +168,6 @@ on_plugin_unloaded_cb (PeasEngine       *engine,
   g_signal_emit (self, signals[PLUGIN_UNLOADED], 0, info, activatable);
 
   /* Disconnect old signals */
-  g_signal_handlers_disconnect_by_func (activatable, on_panel_added_cb, self);
-  g_signal_handlers_disconnect_by_func (activatable, on_panel_removed_cb, self);
   g_signal_handlers_disconnect_by_func (activatable, on_provider_added_cb, self);
   g_signal_handlers_disconnect_by_func (activatable, on_provider_removed_cb, self);
 
@@ -235,14 +208,8 @@ on_plugin_loaded_cb (PeasEngine       *engine,
       for (l = gtd_activatable_get_providers (activatable); l != NULL; l = l->next)
         on_provider_added_cb (activatable, l->data, self);
 
-      /* Load all panels */
-      for (l = gtd_activatable_get_panels (activatable); l != NULL; l = l->next)
-        on_panel_added_cb (activatable, l->data, self);
-
       g_signal_connect (activatable, "provider-added", G_CALLBACK (on_provider_added_cb), self);
       g_signal_connect (activatable, "provider-removed", G_CALLBACK (on_provider_removed_cb), self);
-      g_signal_connect (activatable, "panel-added", G_CALLBACK (on_panel_added_cb), self);
-      g_signal_connect (activatable, "panel-removed", G_CALLBACK (on_panel_removed_cb), self);
 
       /* Activate extension */
       gtd_activatable_activate (activatable);
@@ -311,28 +278,6 @@ gtd_plugin_manager_class_init (GtdPluginManagerClass *klass)
 
   object_class->finalize = gtd_plugin_manager_finalize;
 
-  signals[PANEL_REGISTERED] = g_signal_new ("panel-registered",
-                                             GTD_TYPE_PLUGIN_MANAGER,
-                                             G_SIGNAL_RUN_FIRST,
-                                             0,
-                                             NULL,
-                                             NULL,
-                                             NULL,
-                                             G_TYPE_NONE,
-                                             1,
-                                             GTD_TYPE_PANEL);
-
-  signals[PANEL_UNREGISTERED] = g_signal_new ("panel-unregistered",
-                                              GTD_TYPE_PLUGIN_MANAGER,
-                                              G_SIGNAL_RUN_FIRST,
-                                              0,
-                                              NULL,
-                                              NULL,
-                                              NULL,
-                                              G_TYPE_NONE,
-                                              1,
-                                              GTD_TYPE_PANEL);
-
   signals[PLUGIN_LOADED] = g_signal_new ("plugin-loaded",
                                          GTD_TYPE_PLUGIN_MANAGER,
                                          G_SIGNAL_RUN_FIRST,
diff --git a/src/interfaces/gtd-activatable.c b/src/interfaces/gtd-activatable.c
index e0c27b3..bf9d4d3 100644
--- a/src/interfaces/gtd-activatable.c
+++ b/src/interfaces/gtd-activatable.c
@@ -1,6 +1,6 @@
 /* gtd-activatable.c
  *
- * Copyright (C) 2015 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2015-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -53,8 +53,6 @@ G_DEFINE_INTERFACE (GtdActivatable, gtd_activatable, G_TYPE_OBJECT)
 
 enum
 {
-  PANEL_ADDED,
-  PANEL_REMOVED,
   PROVIDER_ADDED,
   PROVIDER_CHANGED,
   PROVIDER_REMOVED,
@@ -78,44 +76,6 @@ gtd_activatable_default_init (GtdActivatableInterface *iface)
                                                             GTK_TYPE_WIDGET,
                                                             G_PARAM_READABLE));
 
-  /**
-   * GtdActivatable::panel-added:
-   * @activatable: a #GtdActivatable
-   * @panel: a #GtdPanel
-   *
-   * The ::panel-added signal is emmited after a #GtdPanel
-   * is connected.
-   */
-  signals[PANEL_ADDED] = g_signal_new ("panel-added",
-                                       GTD_TYPE_ACTIVATABLE,
-                                       G_SIGNAL_RUN_LAST,
-                                       0,
-                                       NULL,
-                                       NULL,
-                                       NULL,
-                                       G_TYPE_NONE,
-                                       1,
-                                       GTD_TYPE_PANEL);
-
-  /**
-   * GtdActivatable::panel-removed:
-   * @activatable: a #GtdActivatable
-   * @panel: a #GtdPanel
-   *
-   * The ::panel-removed signal is emmited after a #GtdPanel
-   * is removed from the list.
-   */
-  signals[PANEL_REMOVED] = g_signal_new ("panel-removed",
-                                         GTD_TYPE_ACTIVATABLE,
-                                         G_SIGNAL_RUN_LAST,
-                                         0,
-                                         NULL,
-                                         NULL,
-                                         NULL,
-                                         G_TYPE_NONE,
-                                         1,
-                                         GTD_TYPE_PANEL);
-
   /**
    * GtdActivatable::provider-added:
    * @activatable: a #GtdActivatable
@@ -250,23 +210,6 @@ gtd_activatable_get_preferences_panel (GtdActivatable *activatable)
   return GTD_ACTIVATABLE_GET_IFACE (activatable)->get_preferences_panel (activatable);
 }
 
-/**
- * gtd_activatable_get_panels:
- * @activatable: a #GtdActivatable
- *
- * Retrieve the panel list of @activatable if any.
- *
- * Returns: (transfer none) (element-type Gtd.Panel): a #GList
- */
-GList*
-gtd_activatable_get_panels (GtdActivatable *activatable)
-{
-  g_return_val_if_fail (GTD_IS_ACTIVATABLE (activatable), NULL);
-  g_return_val_if_fail (GTD_ACTIVATABLE_GET_IFACE (activatable)->get_panels, NULL);
-
-  return GTD_ACTIVATABLE_GET_IFACE (activatable)->get_panels (activatable);
-}
-
 /**
  * gtd_activatable_get_providers:
  * @activatable: a #GtdActivatable
diff --git a/src/interfaces/gtd-activatable.h b/src/interfaces/gtd-activatable.h
index 1f7b012..ebe9fab 100644
--- a/src/interfaces/gtd-activatable.h
+++ b/src/interfaces/gtd-activatable.h
@@ -1,6 +1,6 @@
 /* gtd-activatable.h
  *
- * Copyright (C) 2015 Georges Basile Stavracas Neto <georges stavracas gmail com>
+ * Copyright (C) 2015-2020 Georges Basile Stavracas Neto <georges stavracas gmail com>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -42,8 +42,6 @@ struct _GtdActivatableInterface
 
   GtkWidget*       (*get_preferences_panel)                (GtdActivatable     *activatable);
 
-  GList*           (*get_panels)                           (GtdActivatable     *activatable);
-
   GList*           (*get_providers)                        (GtdActivatable     *activatable);
 };
 
@@ -55,8 +53,6 @@ GList*               gtd_activatable_get_header_widgets          (GtdActivatable
 
 GtkWidget*           gtd_activatable_get_preferences_panel       (GtdActivatable     *activatable);
 
-GList*               gtd_activatable_get_panels                  (GtdActivatable     *activatable);
-
 GList*               gtd_activatable_get_providers               (GtdActivatable     *activatable);
 
 G_END_DECLS



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