[gedit] Port filebrowser plugin to use the window construct property.



commit 9103c5109d5f897c3cc0390fcf09c5a4713cf72f
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Wed Jul 28 16:16:48 2010 +0200

    Port filebrowser plugin to use the window construct property.

 plugins/filebrowser/gedit-file-browser-plugin.c |  103 +++++++++++++++++------
 1 files changed, 77 insertions(+), 26 deletions(-)
---
diff --git a/plugins/filebrowser/gedit-file-browser-plugin.c b/plugins/filebrowser/gedit-file-browser-plugin.c
index 75d5b54..d352f20 100644
--- a/plugins/filebrowser/gedit-file-browser-plugin.c
+++ b/plugins/filebrowser/gedit-file-browser-plugin.c
@@ -80,6 +80,12 @@ struct _GeditFileBrowserPluginPrivate
 	guint			confirm_trash_handle;
 };
 
+enum
+{
+	PROP_0,
+	PROP_WINDOW
+};
+
 static void gedit_window_activatable_iface_init	(GeditWindowActivatableInterface *iface);
 
 static void on_location_activated_cb     (GeditFileBrowserWidget        *widget,
@@ -157,10 +163,56 @@ gedit_file_browser_plugin_dispose (GObject *object)
 		plugin->priv->terminal_settings = NULL;
 	}
 
+	if (plugin->priv->window != NULL)
+	{
+		g_object_unref (plugin->priv->window);
+		plugin->priv->window = NULL;
+	}
+
 	G_OBJECT_CLASS (gedit_file_browser_plugin_parent_class)->dispose (object);
 }
 
 static void
+gedit_file_browser_plugin_set_property (GObject      *object,
+                                        guint         prop_id,
+                                        const GValue *value,
+                                        GParamSpec   *pspec)
+{
+	GeditFileBrowserPlugin *plugin = GEDIT_FILE_BROWSER_PLUGIN (object);
+
+	switch (prop_id)
+	{
+		case PROP_WINDOW:
+			plugin->priv->window = GEDIT_WINDOW (g_value_dup_object (value));
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+			break;
+	}
+}
+
+static void
+gedit_file_browser_plugin_get_property (GObject    *object,
+                                        guint       prop_id,
+                                        GValue     *value,
+                                        GParamSpec *pspec)
+{
+	GeditFileBrowserPlugin *plugin = GEDIT_FILE_BROWSER_PLUGIN (object);
+
+	switch (prop_id)
+	{
+		case PROP_WINDOW:
+			g_value_set_object (value, plugin->priv->window);
+			break;
+
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+			break;
+	}
+}
+
+static void
 on_end_loading_cb (GeditFileBrowserStore  *store,
                    GtkTreeIter            *iter,
                    GeditFileBrowserPlugin *plugin)
@@ -511,8 +563,7 @@ static GtkActionEntry extra_single_selection_actions[] = {
 };
 
 static void
-add_popup_ui (GeditWindow            *window,
-	      GeditFileBrowserPlugin *plugin)
+add_popup_ui (GeditFileBrowserPlugin *plugin)
 {
 	GeditFileBrowserPluginPrivate *priv = plugin->priv;
 	GtkUIManager *manager;
@@ -535,7 +586,7 @@ add_popup_ui (GeditWindow            *window,
 	gtk_action_group_add_actions (action_group,
 				      extra_single_selection_actions,
 				      G_N_ELEMENTS (extra_single_selection_actions),
-				      window);
+				      priv->window);
 	gtk_ui_manager_insert_action_group (manager, action_group, 0);
 	priv->single_selection_action_group = action_group;
 
@@ -552,8 +603,7 @@ add_popup_ui (GeditWindow            *window,
 }
 
 static void
-remove_popup_ui (GeditWindow            *window,
-		 GeditFileBrowserPlugin *plugin)
+remove_popup_ui (GeditFileBrowserPlugin *plugin)
 {
 	GeditFileBrowserPluginPrivate *priv = plugin->priv;
 	GtkUIManager *manager;
@@ -569,13 +619,12 @@ remove_popup_ui (GeditWindow            *window,
 }
 
 static void
-gedit_file_browser_plugin_update_state (GeditWindowActivatable *activatable,
-					GeditWindow            *window)
+gedit_file_browser_plugin_update_state (GeditWindowActivatable *activatable)
 {
 	GeditFileBrowserPluginPrivate *priv = GEDIT_FILE_BROWSER_PLUGIN (activatable)->priv;
 	GeditDocument *doc;
 
-	doc = gedit_window_get_active_document (window);
+	doc = gedit_window_get_active_document (priv->window);
 
 	gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group,
 	                                                       "SetActiveRoot"),
@@ -583,18 +632,17 @@ gedit_file_browser_plugin_update_state (GeditWindowActivatable *activatable,
 }
 
 static void
-gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
-				    GeditWindow            *window)
+gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable)
 {
 	GeditFileBrowserPlugin *plugin = GEDIT_FILE_BROWSER_PLUGIN (activatable);
-	GeditFileBrowserPluginPrivate *priv = plugin->priv;
+	GeditFileBrowserPluginPrivate *priv;
 	GeditPanel *panel;
 	GtkWidget *image;
 	GdkPixbuf *pixbuf;
 	GeditFileBrowserStore *store;
 	gchar *data_dir;
 
-	priv->window = window;
+	priv = plugin->priv;
 
 	data_dir = peas_extension_base_get_data_dir (PEAS_EXTENSION_BASE (activatable));
 	priv->tree_widget = GEDIT_FILE_BROWSER_WIDGET (gedit_file_browser_widget_new (data_dir));
@@ -602,7 +650,7 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
 
 	g_signal_connect (priv->tree_widget,
 			  "location-activated",
-			  G_CALLBACK (on_location_activated_cb), window);
+			  G_CALLBACK (on_location_activated_cb), priv->window);
 
 	g_signal_connect (priv->tree_widget,
 			  "error", G_CALLBACK (on_error_cb), plugin);
@@ -615,7 +663,7 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
 	g_signal_connect (priv->tree_widget,
 	                  "confirm-no-trash",
 	                  G_CALLBACK (on_confirm_no_trash_cb),
-	                  window);
+	                  priv->window);
 
 	g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW
 			  (gedit_file_browser_widget_get_browser_view
@@ -630,7 +678,7 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
 	                 FILEBROWSER_FILTER_PATTERN,
 	                 G_SETTINGS_BIND_GET | G_SETTINGS_BIND_SET);
 
-	panel = gedit_window_get_side_panel (window);
+	panel = gedit_window_get_side_panel (priv->window);
 	pixbuf = gedit_file_browser_utils_pixbuf_from_theme ("system-file-manager",
 	                                                     GTK_ICON_SIZE_MENU);
 
@@ -652,7 +700,7 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
 	                      image);
 	gtk_widget_show (GTK_WIDGET (priv->tree_widget));
 
-	add_popup_ui (window, plugin);
+	add_popup_ui (plugin);
 
 	/* Install nautilus preferences */
 	install_nautilus_prefs (plugin);
@@ -679,22 +727,21 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable,
 	g_signal_connect (store,
 			  "rename",
 			  G_CALLBACK (on_rename_cb),
-			  window);
+			  priv->window);
 
-	g_signal_connect (window,
+	g_signal_connect (priv->window,
 	                  "tab-added",
 	                  G_CALLBACK (on_tab_added_cb),
 	                  plugin);
 
 	/* Register messages on the bus */
-	gedit_file_browser_messages_register (window, priv->tree_widget);
+	gedit_file_browser_messages_register (priv->window, priv->tree_widget);
 
-	gedit_file_browser_plugin_update_state (activatable, window);
+	gedit_file_browser_plugin_update_state (activatable);
 }
 
 static void
-gedit_file_browser_plugin_deactivate (GeditWindowActivatable *activatable,
-				      GeditWindow            *window)
+gedit_file_browser_plugin_deactivate (GeditWindowActivatable *activatable)
 {
 	GeditFileBrowserPlugin *plugin = GEDIT_FILE_BROWSER_PLUGIN (activatable);
 	GeditFileBrowserPluginPrivate *priv = plugin->priv;
@@ -702,10 +749,10 @@ gedit_file_browser_plugin_deactivate (GeditWindowActivatable *activatable,
 
 
 	/* Unregister messages from the bus */
-	gedit_file_browser_messages_unregister (window);
+	gedit_file_browser_messages_unregister (priv->window);
 
 	/* Disconnect signals */
-	g_signal_handlers_disconnect_by_func (window,
+	g_signal_handlers_disconnect_by_func (priv->window,
 	                                      G_CALLBACK (on_tab_added_cb),
 	                                      plugin);
 
@@ -727,9 +774,9 @@ gedit_file_browser_plugin_deactivate (GeditWindowActivatable *activatable,
 					     priv->confirm_trash_handle);
 	}
 
-	remove_popup_ui (window, plugin);
+	remove_popup_ui (plugin);
 
-	panel = gedit_window_get_side_panel (window);
+	panel = gedit_window_get_side_panel (priv->window);
 	gedit_panel_remove_item (panel, GTK_WIDGET (priv->tree_widget));
 }
 
@@ -739,6 +786,10 @@ gedit_file_browser_plugin_class_init (GeditFileBrowserPluginClass *klass)
 	GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
 	object_class->dispose = gedit_file_browser_plugin_dispose;
+	object_class->set_property = gedit_file_browser_plugin_set_property;
+	object_class->get_property = gedit_file_browser_plugin_get_property;
+
+	g_object_class_override_property (object_class, PROP_WINDOW, "window");
 
 	g_type_class_add_private (object_class,
 				  sizeof (GeditFileBrowserPluginPrivate));



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