[gedit/eggplugins] [libplugins] Make the argument of (de)activate a GObject.



commit c0fb67469fc58b882b8f709f5b9d7a501349be1f
Author: Steve Frécinaux <code istique net>
Date:   Fri Oct 9 21:15:44 2009 +0200

    [libplugins] Make the argument of (de)activate a GObject.
    
    This makes it possible to use the plugin framework with any toplevel
    object, and not just windows.

 libplugins/egg-plugins-engine.c |   34 +++++++++++++++++-----------------
 libplugins/egg-plugins-engine.h |    8 ++++----
 libplugins/egg-plugins-plugin.c |   26 +++++++++++++-------------
 libplugins/egg-plugins-plugin.h |   12 ++++++------
 4 files changed, 40 insertions(+), 40 deletions(-)
---
diff --git a/libplugins/egg-plugins-engine.c b/libplugins/egg-plugins-engine.c
index 390f93a..8df4503 100644
--- a/libplugins/egg-plugins-engine.c
+++ b/libplugins/egg-plugins-engine.c
@@ -616,7 +616,7 @@ egg_plugins_engine_activate_plugin_real (EggPluginsEngine *engine,
 	     wins != NULL;
 	     wins = wins->next)
 	{
-		egg_plugins_plugin_activate (info->plugin, GTK_WINDOW (wins->data));
+		egg_plugins_plugin_activate (info->plugin, G_OBJECT (wins->data));
 	}
 }
 
@@ -642,15 +642,16 @@ egg_plugins_engine_activate_plugin (EggPluginsEngine *engine,
 
 static void
 call_plugin_deactivate (EggPluginsPlugin *plugin,
-			GtkWindow   *window)
+			GObject          *target_object)
 {
-	egg_plugins_plugin_deactivate (plugin, window);
+	egg_plugins_plugin_deactivate (plugin, target_object);
 
 	/* ensure update of ui manager, because we suspect it does something
 	   with expected static strings in the type module (when unloaded the
 	   strings don't exist anymore, and ui manager updates in an idle
-	   func) */
-	gtk_ui_manager_ensure_update (gedit_window_get_ui_manager (GEDIT_WINDOW (window)));
+	   func) 
+	   FIXME: move it to GeditPluginsEngine */
+	gtk_ui_manager_ensure_update (gedit_window_get_ui_manager (GEDIT_WINDOW (target_object)));
 }
 
 static void
@@ -668,7 +669,7 @@ egg_plugins_engine_deactivate_plugin_real (EggPluginsEngine *engine,
 	     wins != NULL;
 	     wins = wins->next)
 	{
-		call_plugin_deactivate (info->plugin, GTK_WINDOW (wins->data));
+		call_plugin_deactivate (info->plugin, G_OBJECT (wins->data));
 	}
 
 	/* first unref the plugin (the loader still has one) */
@@ -701,13 +702,13 @@ egg_plugins_engine_deactivate_plugin (EggPluginsEngine *engine,
 
 void
 egg_plugins_engine_activate_plugins (EggPluginsEngine *engine,
-				     GtkWindow         *window)
+				     GObject          *target_object)
 {
 	GSList *active_plugins = NULL;
 	GList *pl;
 
 	g_return_if_fail (EGG_PLUGINS_IS_ENGINE (engine));
-	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_return_if_fail (G_IS_OBJECT (target_object));
 
 	/* the first time, we get the 'active' plugins from gconf */
 	if (engine->priv->activate_from_prefs)
@@ -731,8 +732,7 @@ egg_plugins_engine_activate_plugins (EggPluginsEngine *engine,
 			continue;
 
 		if (load_plugin (engine, info))
-			egg_plugins_plugin_activate (info->plugin,
-					       window);
+			egg_plugins_plugin_activate (info->plugin, target_object);
 	}
 
 	if (engine->priv->activate_from_prefs)
@@ -743,17 +743,17 @@ egg_plugins_engine_activate_plugins (EggPluginsEngine *engine,
 	}
 
 	/* also call update_ui after activation */
-	egg_plugins_engine_update_plugins_ui (engine, window);
+	egg_plugins_engine_update_plugins_ui (engine, target_object);
 }
 
 void
 egg_plugins_engine_deactivate_plugins (EggPluginsEngine *engine,
-				       GtkWindow        *window)
+				       GObject          *target_object)
 {
 	GList *pl;
 
 	g_return_if_fail (EGG_PLUGINS_IS_ENGINE (engine));
-	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_return_if_fail (G_IS_OBJECT (target_object));
 
 	for (pl = engine->priv->plugin_list; pl; pl = pl->next)
 	{
@@ -764,18 +764,18 @@ egg_plugins_engine_deactivate_plugins (EggPluginsEngine *engine,
 			continue;
 
 		/* call deactivate for the plugin for this window */
-		egg_plugins_plugin_deactivate (info->plugin, window);
+		egg_plugins_plugin_deactivate (info->plugin, target_object);
 	}
 }
 
 void
 egg_plugins_engine_update_plugins_ui (EggPluginsEngine *engine,
-				      GtkWindow        *window)
+				      GObject          *target_object)
 {
 	GList *pl;
 
 	g_return_if_fail (EGG_PLUGINS_IS_ENGINE (engine));
-	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_return_if_fail (G_IS_OBJECT (target_object));
 
 	/* call update_ui for all active plugins */
 	for (pl = engine->priv->plugin_list; pl; pl = pl->next)
@@ -785,7 +785,7 @@ egg_plugins_engine_update_plugins_ui (EggPluginsEngine *engine,
 		if (!egg_plugins_info_is_active (info))
 			continue;
 
-		egg_plugins_plugin_update_ui (info->plugin, window);
+		egg_plugins_plugin_update_ui (info->plugin, target_object);
 	}
 }
 
diff --git a/libplugins/egg-plugins-engine.h b/libplugins/egg-plugins-engine.h
index 0c3f850..a909b1b 100644
--- a/libplugins/egg-plugins-engine.h
+++ b/libplugins/egg-plugins-engine.h
@@ -86,13 +86,13 @@ void	 	 egg_plugins_engine_configure_plugin	(EggPluginsEngine *engine,
 							 EggPluginsInfo   *info,
 							 GtkWindow        *parent);
 
-/* plugin activation/deactivation per window, private to GtkWindow */
+/* plugin activation/deactivation per target_object */
 void 		 egg_plugins_engine_activate_plugins   (EggPluginsEngine *engine,
-							  GtkWindow      *window);
+							GObject          *target_object);
 void 		 egg_plugins_engine_deactivate_plugins (EggPluginsEngine *engine,
-							  GtkWindow      *window);
+							GObject          *target_object);
 void		 egg_plugins_engine_update_plugins_ui  (EggPluginsEngine *engine,
-							  GtkWindow      *window);
+							GObject          *target_object);
 
 /* private for gconf notification */
 void		 egg_plugins_engine_active_plugins_changed
diff --git a/libplugins/egg-plugins-plugin.c b/libplugins/egg-plugins-plugin.c
index a8979e3..4acfed3 100644
--- a/libplugins/egg-plugins-plugin.c
+++ b/libplugins/egg-plugins-plugin.c
@@ -55,7 +55,7 @@ struct _EggPluginsPluginPrivate
 G_DEFINE_TYPE(EggPluginsPlugin, egg_plugins_plugin, G_TYPE_OBJECT)
 
 static void
-dummy (EggPluginsPlugin *plugin, GtkWindow *window)
+dummy (EggPluginsPlugin *plugin, GObject *target_object)
 {
 	/* Empty */
 }
@@ -203,53 +203,53 @@ egg_plugins_plugin_get_data_dir (EggPluginsPlugin *plugin)
 /**
  * egg_plugins_plugin_activate:
  * @plugin: a #EggPluginsPlugin
- * @window: a #GtkWindow
+ * @target_object: a #GObject
  *
  * Activates the plugin.
  */
 void
 egg_plugins_plugin_activate (EggPluginsPlugin *plugin,
-			     GtkWindow        *window)
+			     GObject          *target_object)
 {
 	g_return_if_fail (EGG_PLUGINS_IS_PLUGIN (plugin));
-	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_return_if_fail (G_IS_OBJECT (target_object));
 
-	EGG_PLUGINS_PLUGIN_GET_CLASS (plugin)->activate (plugin, window);
+	EGG_PLUGINS_PLUGIN_GET_CLASS (plugin)->activate (plugin, target_object);
 }
 
 /**
  * egg_plugins_plugin_deactivate:
  * @plugin: a #EggPluginsPlugin
- * @window: a #GtkWindow
+ * @target_object: a #GObject
  *
  * Deactivates the plugin.
  */
 void
 egg_plugins_plugin_deactivate	(EggPluginsPlugin *plugin,
-				 GtkWindow        *window)
+				 GObject          *target_object)
 {
 	g_return_if_fail (EGG_PLUGINS_IS_PLUGIN (plugin));
-	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_return_if_fail (G_IS_OBJECT (target_object));
 
-	EGG_PLUGINS_PLUGIN_GET_CLASS (plugin)->deactivate (plugin, window);
+	EGG_PLUGINS_PLUGIN_GET_CLASS (plugin)->deactivate (plugin, target_object);
 }
 
 /**
  * egg_plugins_plugin_update_ui:
  * @plugin: a #EggPluginsPlugin
- * @window: a #GtkWindow
+ * @target_object: a #GObject
  *
  * Triggers an update of the user interface to take into account state changes
  * caused by the plugin.
  */
 void
 egg_plugins_plugin_update_ui	(EggPluginsPlugin *plugin,
-				 GtkWindow        *window)
+				 GObject          *target_object)
 {
 	g_return_if_fail (EGG_PLUGINS_IS_PLUGIN (plugin));
-	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_return_if_fail (G_IS_OBJECT (target_object));
 
-	EGG_PLUGINS_PLUGIN_GET_CLASS (plugin)->update_ui (plugin, window);
+	EGG_PLUGINS_PLUGIN_GET_CLASS (plugin)->update_ui (plugin, target_object);
 }
 
 /**
diff --git a/libplugins/egg-plugins-plugin.h b/libplugins/egg-plugins-plugin.h
index 5e50dba..d25a98f 100644
--- a/libplugins/egg-plugins-plugin.h
+++ b/libplugins/egg-plugins-plugin.h
@@ -72,12 +72,12 @@ struct _EggPluginsPluginClass
 	/* Virtual public methods */
 
 	void 		(*activate)		(EggPluginsPlugin *plugin,
-						 GtkWindow *window);
+						 GObject          *target_object);
 	void 		(*deactivate)		(EggPluginsPlugin *plugin,
-						 GtkWindow *window);
+						 GObject          *target_object);
 
 	void 		(*update_ui)		(EggPluginsPlugin *plugin,
-						 GtkWindow *window);
+						 GObject          *target_object);
 
 	GtkWidget 	*(*create_configure_dialog)
 						(EggPluginsPlugin *plugin);
@@ -103,12 +103,12 @@ gchar 		*egg_plugins_plugin_get_install_dir	(EggPluginsPlugin *plugin);
 gchar 		*egg_plugins_plugin_get_data_dir	(EggPluginsPlugin *plugin);
 
 void 		 egg_plugins_plugin_activate		(EggPluginsPlugin *plugin,
-							 GtkWindow *window);
+							 GObject          *target_object);
 void 		 egg_plugins_plugin_deactivate		(EggPluginsPlugin *plugin,
-							 GtkWindow *window);
+							 GObject          *target_object);
 
 void 		 egg_plugins_plugin_update_ui		(EggPluginsPlugin *plugin,
-							 GtkWindow *window);
+							 GObject          *target_object);
 
 gboolean	 egg_plugins_plugin_is_configurable	(EggPluginsPlugin *plugin);
 GtkWidget	*egg_plugins_plugin_create_configure_dialog



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