diff options
| -rw-r--r-- | doc/reference/Makefile.am | 3 | ||||
| -rw-r--r-- | doc/reference/eom-docs.sgml.in | 2 | ||||
| -rw-r--r-- | doc/reference/eom-sections.txt | 39 | ||||
| -rw-r--r-- | po/POTFILES.in | 1 | ||||
| -rw-r--r-- | src/eom-module.c | 167 | ||||
| -rw-r--r-- | src/eom-module.h | 72 | ||||
| -rw-r--r-- | src/eom-plugin-manager.c | 923 | ||||
| -rw-r--r-- | src/eom-plugin-manager.h | 61 | ||||
| -rw-r--r-- | src/eom-plugin.c | 108 | ||||
| -rw-r--r-- | src/eom-plugin.h | 222 | 
10 files changed, 1 insertions, 1597 deletions
| diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am index 9e560d2..c8d1bc4 100644 --- a/doc/reference/Makefile.am +++ b/doc/reference/Makefile.am @@ -52,8 +52,7 @@ IGNORE_HFILES= \  	eom-image-jpeg.h \  	eom-marshal.h \  	eom-application-service.h \ -	eom-enum-types.h \ -	eom-module.h +	eom-enum-types.h  if !HAVE_EXIF  if !HAVE_EXEMPI diff --git a/doc/reference/eom-docs.sgml.in b/doc/reference/eom-docs.sgml.in index 06749a6..5ecc6ca 100644 --- a/doc/reference/eom-docs.sgml.in +++ b/doc/reference/eom-docs.sgml.in @@ -60,8 +60,6 @@      <chapter>        <title>Plugins</title> -      <xi:include href="xml/eom-plugin.xml"/> -      <xi:include href="xml/eom-plugin-manager.xml"/>        <xi:include href="xml/eom-plugin-engine.xml"/>      </chapter> diff --git a/doc/reference/eom-sections.txt b/doc/reference/eom-sections.txt index 868bf7c..47870da 100644 --- a/doc/reference/eom-sections.txt +++ b/doc/reference/eom-sections.txt @@ -375,30 +375,6 @@ EOM_THUMB_VIEW_GET_CLASS  </SECTION>  <SECTION> -<FILE>eom-plugin</FILE> -EOM_PLUGIN_CONST -<TITLE>EomPlugin</TITLE> -EomPlugin -eom_plugin_activate -eom_plugin_deactivate -eom_plugin_update_ui -eom_plugin_is_configurable -eom_plugin_create_configure_dialog -EOM_PLUGIN_REGISTER_TYPE_WITH_CODE -EOM_PLUGIN_REGISTER_TYPE -EOM_PLUGIN_DEFINE_TYPE_WITH_CODE -EOM_PLUGIN_DEFINE_TYPE -<SUBSECTION Standard> -EOM_PLUGIN -EOM_IS_PLUGIN -EOM_TYPE_PLUGIN -eom_plugin_get_type -EOM_PLUGIN_CLASS -EOM_IS_PLUGIN_CLASS -EOM_PLUGIN_GET_CLASS -</SECTION> - -<SECTION>  <FILE>eom-application</FILE>  EOM_APP  <TITLE>EomApplication</TITLE> @@ -427,21 +403,6 @@ EOM_APPLICATION_GET_CLASS  </SECTION>  <SECTION> -<FILE>eom-plugin-manager</FILE> -<TITLE>EomPluginManager</TITLE> -EomPluginManager -eom_plugin_manager_new -<SUBSECTION Standard> -EOM_PLUGIN_MANAGER -EOM_IS_PLUGIN_MANAGER -EOM_TYPE_PLUGIN_MANAGER -eom_plugin_manager_get_type -EOM_PLUGIN_MANAGER_CLASS -EOM_IS_PLUGIN_MANAGER_CLASS -EOM_PLUGIN_MANAGER_GET_CLASS -</SECTION> - -<SECTION>  <FILE>eom-scroll-view</FILE>  <TITLE>EomScrollView</TITLE>  EomScrollView diff --git a/po/POTFILES.in b/po/POTFILES.in index fcd7965..a29ef24 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -22,7 +22,6 @@ src/eom-image-jpeg.c  src/eom-error-message-area.c  src/eom-exif-details.c  src/eom-exif-util.c -src/eom-plugin-manager.c  src/eom-preferences-dialog.c  src/eom-print.c  src/eom-print-image-setup.c diff --git a/src/eom-module.c b/src/eom-module.c deleted file mode 100644 index e446550..0000000 --- a/src/eom-module.c +++ /dev/null @@ -1,167 +0,0 @@ -/* Eye Of Mate - EOM Module - * - * Copyright (C) 2007 The Free Software Foundation - * - * Author: Lucas Rocha <[email protected]> - * - * Based on gedit code (gedit/gedit-module.c) by: - * 	- Paolo Maggi <[email protected]> - *      - Marco Pesenti Gritti <[email protected]> - *      - Christian Persch <[email protected]> - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "eom-module.h" -#include "eom-debug.h" - -#include <gmodule.h> - -#define EOM_MODULE_GET_PRIVATE(object) \ -	(G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_MODULE, EomModulePrivate)) - -G_DEFINE_TYPE (EomModule, eom_module, G_TYPE_TYPE_MODULE); - -typedef GType (*EomModuleRegisterFunc) (GTypeModule *); - -static gboolean -eom_module_load (GTypeModule *gmodule) -{ -	EomModule *module = EOM_MODULE (gmodule); -	EomModuleRegisterFunc register_func; - -	eom_debug_message (DEBUG_PLUGINS, "Loading %s", module->path); - -	module->library = g_module_open (module->path, 0); - -	if (module->library == NULL) { -		g_warning ("%s", g_module_error()); - -		return FALSE; -	} - -	/* Extract symbols from the lib */ -	if (!g_module_symbol (module->library, -			      "register_eom_plugin", -			      (void *) ®ister_func)) { -		g_warning ("%s", g_module_error()); -		g_module_close (module->library); - -		return FALSE; -	} - -	/* Symbol can still be NULL even though g_module_symbol -	 * returned TRUE */ -	if (register_func == NULL) { -		g_warning ("Symbol 'register_eom_plugin' should not be NULL"); -		g_module_close (module->library); - -		return FALSE; -	} - -	module->type = register_func (gmodule); - -	if (module->type == 0) { -		g_warning ("Invalid eom plugin contained by module %s", module->path); -		return FALSE; -	} - -	return TRUE; -} - -static void -eom_module_unload (GTypeModule *gmodule) -{ -	EomModule *module = EOM_MODULE (gmodule); - -	eom_debug_message (DEBUG_PLUGINS, "Unloading %s", module->path); - -	g_module_close (module->library); - -	module->library = NULL; -	module->type = 0; -} - -const gchar * -eom_module_get_path (EomModule *module) -{ -	g_return_val_if_fail (EOM_IS_MODULE (module), NULL); - -	return module->path; -} - -GObject * -eom_module_new_object (EomModule *module) -{ -	eom_debug_message (DEBUG_PLUGINS, "Creating object of type %s", g_type_name (module->type)); - -	if (module->type == 0) { -		return NULL; -	} - -	return g_object_new (module->type, NULL); -} - -static void -eom_module_init (EomModule *module) -{ -	eom_debug_message (DEBUG_PLUGINS, "EomModule %p initialising", module); -} - -static void -eom_module_finalize (GObject *object) -{ -	EomModule *module = EOM_MODULE (object); - -	eom_debug_message (DEBUG_PLUGINS, "EomModule %p finalising", module); - -	g_free (module->path); - -	G_OBJECT_CLASS (eom_module_parent_class)->finalize (object); -} - -static void -eom_module_class_init (EomModuleClass *class) -{ -	GObjectClass *object_class = G_OBJECT_CLASS (class); -	GTypeModuleClass *module_class = G_TYPE_MODULE_CLASS (class); - -	object_class->finalize = eom_module_finalize; - -	module_class->load = eom_module_load; -	module_class->unload = eom_module_unload; -} - -EomModule * -eom_module_new (const gchar *path) -{ -	EomModule *module; - -	if (path == NULL || path[0] == '\0') { -		return NULL; -	} - -	module = g_object_new (EOM_TYPE_MODULE, NULL); - -	g_type_module_set_name (G_TYPE_MODULE (module), path); - -	module->path = g_strdup (path); - -	return module; -} diff --git a/src/eom-module.h b/src/eom-module.h deleted file mode 100644 index f759ea2..0000000 --- a/src/eom-module.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Eye Of Mate - Main Window - * - * Copyright (C) 2007 The Free Software Foundation - * - * Author: Lucas Rocha <[email protected]> - * - * Based on gedit code (gedit/gedit-module.c) by: - * 	- Paolo Maggi <[email protected]> - *      - Marco Pesenti Gritti <[email protected]> - *      - Christian Persch <[email protected]> - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef EOM_MODULE_H -#define EOM_MODULE_H - -#include <glib-object.h> -#include <gmodule.h> - -G_BEGIN_DECLS - -typedef struct _EomModule EomModule; -typedef struct _EomModuleClass EomModuleClass; -typedef struct _EomModulePrivate EomModulePrivate; - -#define EOM_TYPE_MODULE            (eom_module_get_type ()) -#define EOM_MODULE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_MODULE, EomModule)) -#define EOM_MODULE_CLASS(klass)	   (G_TYPE_CHECK_CLASS_CAST ((klass),  EOM_TYPE_MODULE, EomModuleClass)) -#define EOM_IS_MODULE(obj)	   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_MODULE)) -#define EOM_IS_MODULE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj),    EOM_TYPE_MODULE)) -#define EOM_MODULE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),   EOM_TYPE_MODULE, EomModuleClass)) - -struct _EomModule { -	GTypeModule parent_instance; - -	GModule *library; -	gchar   *path; -	GType    type; -}; - -struct _EomModuleClass { -	GTypeModuleClass parent_class; -}; - -G_GNUC_INTERNAL -GType		 eom_module_get_type	(void) G_GNUC_CONST; - -G_GNUC_INTERNAL -EomModule	*eom_module_new		(const gchar *path); - -G_GNUC_INTERNAL -const gchar	*eom_module_get_path	(EomModule *module); - -G_GNUC_INTERNAL -GObject		*eom_module_new_object	(EomModule *module); - -G_END_DECLS - -#endif diff --git a/src/eom-plugin-manager.c b/src/eom-plugin-manager.c deleted file mode 100644 index 5828e3a..0000000 --- a/src/eom-plugin-manager.c +++ /dev/null @@ -1,923 +0,0 @@ -/* Eye Of Mate - EOM Plugin Manager - * - * Copyright (C) 2007 The Free Software Foundation - * - * Author: Lucas Rocha <[email protected]> - * - * Based on gedit code (gedit/gedit-module.c) by: - * 	- Paolo Maggi <[email protected]> - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <string.h> - -#include "eom-plugin-manager.h" -#include "eom-plugin-engine.h" -#include "eom-util.h" -#include "eom-plugin.h" -#include "eom-debug.h" - -#include <glib/gi18n.h> - -enum { -	ACTIVE_COLUMN, -	AVAILABLE_COLUMN, -	INFO_COLUMN, -	N_COLUMNS -}; - -#define EOM_PLUGIN_MANAGER_GET_PRIVATE(object) \ -	(G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_PLUGIN_MANAGER, EomPluginManagerPrivate)) - -G_DEFINE_TYPE (EomPluginManager, eom_plugin_manager, GTK_TYPE_BOX) - -#define PLUGIN_MANAGER_NAME_TITLE   _("Plugin") -#define PLUGIN_MANAGER_ACTIVE_TITLE _("Enabled") - -struct _EomPluginManagerPrivate { -	GtkWidget	*tree; - -	GtkWidget	*about_button; -	GtkWidget	*configure_button; - -	const GList	*plugins; - -	GtkWidget 	*about; - -	GtkWidget	*popup_menu; -}; - -static EomPluginInfo *plugin_manager_get_selected_plugin (EomPluginManager *pm); -static void plugin_manager_toggle_active (GtkTreeIter *iter, GtkTreeModel *model); -static void eom_plugin_manager_finalize (GObject *object); - -static void -eom_plugin_manager_class_init (EomPluginManagerClass *klass) -{ -	GObjectClass *object_class = G_OBJECT_CLASS (klass); - -	object_class->finalize = eom_plugin_manager_finalize; - -	g_type_class_add_private (object_class, sizeof (EomPluginManagerPrivate)); -} - -static void -about_button_cb (GtkWidget        *button, -		 EomPluginManager *pm) -{ -	EomPluginInfo *info; - -	eom_debug (DEBUG_PLUGINS); - -	info = plugin_manager_get_selected_plugin (pm); - -	g_return_if_fail (info != NULL); - -	/* If there is another about dialog already open destroy it */ -	if (pm->priv->about) -		gtk_widget_destroy (pm->priv->about); - -	pm->priv->about = g_object_new (GTK_TYPE_ABOUT_DIALOG, -		"program-name" , eom_plugin_engine_get_plugin_name (info), -		"copyright", eom_plugin_engine_get_plugin_copyright (info), -		"authors", eom_plugin_engine_get_plugin_authors (info), -		"comments", eom_plugin_engine_get_plugin_description (info), -		"website", eom_plugin_engine_get_plugin_website (info), -		"logo-icon-name", eom_plugin_engine_get_plugin_icon_name (info), -		NULL); - -	gtk_window_set_destroy_with_parent (GTK_WINDOW (pm->priv->about), -					    TRUE); - -	g_signal_connect (pm->priv->about, -			  "response", -			  G_CALLBACK (gtk_widget_destroy), -			  NULL); - -	g_signal_connect (pm->priv->about, -			  "destroy", -			  G_CALLBACK (gtk_widget_destroyed), -			  &pm->priv->about); - -	gtk_window_set_transient_for (GTK_WINDOW (pm->priv->about), -				      GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET(pm)))); - -	gtk_widget_show (pm->priv->about); -} - -static void -configure_button_cb (GtkWidget        *button, -		     EomPluginManager *pm) -{ -	EomPluginInfo *info; -	GtkWindow *toplevel; - -	eom_debug (DEBUG_PLUGINS); - -	info = plugin_manager_get_selected_plugin (pm); - -	g_return_if_fail (info != NULL); - -	eom_debug_message (DEBUG_PLUGINS, "Configuring: %s\n", -			   eom_plugin_engine_get_plugin_name (info)); - -	toplevel = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET(pm))); - -	eom_plugin_engine_configure_plugin (info, toplevel); - -	eom_debug_message (DEBUG_PLUGINS, "Done"); -} - -static void -plugin_manager_view_info_cell_cb (GtkTreeViewColumn *tree_column, -				  GtkCellRenderer   *cell, -				  GtkTreeModel      *tree_model, -				  GtkTreeIter       *iter, -				  gpointer           data) -{ -	EomPluginInfo *info; -	gchar *text; - -	g_return_if_fail (tree_model != NULL); -	g_return_if_fail (tree_column != NULL); - -	gtk_tree_model_get (tree_model, iter, INFO_COLUMN, &info, -1); - -	if (info == NULL) -		return; - -	text = g_markup_printf_escaped ("<b>%s</b>\n%s", -					eom_plugin_engine_get_plugin_name (info), -					eom_plugin_engine_get_plugin_description (info)); - -	g_object_set (G_OBJECT (cell), -		      "markup", text, -		      "sensitive", eom_plugin_engine_plugin_is_available (info), -		      NULL); - -	g_free (text); -} - -static void -plugin_manager_view_icon_cell_cb (GtkTreeViewColumn *tree_column, -				  GtkCellRenderer   *cell, -				  GtkTreeModel      *tree_model, -				  GtkTreeIter       *iter, -				  gpointer           data) -{ -	EomPluginInfo *info; - -	g_return_if_fail (tree_model != NULL); -	g_return_if_fail (tree_column != NULL); - -	gtk_tree_model_get (tree_model, iter, INFO_COLUMN, &info, -1); - -	if (info == NULL) -		return; - -	g_object_set (G_OBJECT (cell), -		      "icon-name", eom_plugin_engine_get_plugin_icon_name (info), -		      "sensitive", eom_plugin_engine_plugin_is_available (info), -		      NULL); -} - - -static void -active_toggled_cb (GtkCellRendererToggle *cell, -		   gchar                 *path_str, -		   EomPluginManager    *pm) -{ -	GtkTreeIter iter; -	GtkTreePath *path; -	GtkTreeModel *model; - -	eom_debug (DEBUG_PLUGINS); - -	path = gtk_tree_path_new_from_string (path_str); - -	model = gtk_tree_view_get_model (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_if_fail (model != NULL); - -	gtk_tree_model_get_iter (model, &iter, path); - -	if (&iter != NULL) -		plugin_manager_toggle_active (&iter, model); - -	gtk_tree_path_free (path); -} - -static void -cursor_changed_cb (GtkTreeView *view, -		   gpointer     data) -{ -	EomPluginManager *pm = data; -	EomPluginInfo *info; - -	eom_debug (DEBUG_PLUGINS); - -	info = plugin_manager_get_selected_plugin (pm); - -	gtk_widget_set_sensitive (GTK_WIDGET (pm->priv->about_button), -				  info != NULL); - -	gtk_widget_set_sensitive (GTK_WIDGET (pm->priv->configure_button), -				  (info != NULL) && -				   eom_plugin_engine_plugin_is_configurable (info)); -} - -static void -row_activated_cb (GtkTreeView       *tree_view, -		  GtkTreePath       *path, -		  GtkTreeViewColumn *column, -		  gpointer           data) -{ -	EomPluginManager *pm = data; -	GtkTreeIter iter; -	GtkTreeModel *model; - -	eom_debug (DEBUG_PLUGINS); - -	model = gtk_tree_view_get_model (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_if_fail (model != NULL); - -	gtk_tree_model_get_iter (model, &iter, path); - -	g_return_if_fail (&iter != NULL); - -	plugin_manager_toggle_active (&iter, model); -} - -static void -plugin_manager_populate_lists (EomPluginManager *pm) -{ -	const GList *plugins; -	GtkListStore *model; -	GtkTreeIter iter; - -	eom_debug (DEBUG_PLUGINS); - -	plugins = pm->priv->plugins; - -	model = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (pm->priv->tree))); - -	while (plugins) { -		EomPluginInfo *info; -		info = (EomPluginInfo *)plugins->data; - -		gtk_list_store_append (model, &iter); -		gtk_list_store_set (model, &iter, -				    ACTIVE_COLUMN, eom_plugin_engine_plugin_is_active (info), -				    AVAILABLE_COLUMN, eom_plugin_engine_plugin_is_available (info), -				    INFO_COLUMN, info, -				    -1); - -		plugins = plugins->next; -	} - -	if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model), &iter)) { -		GtkTreeSelection *selection; -		EomPluginInfo* info; - -		selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (pm->priv->tree)); - -		g_return_if_fail (selection != NULL); - -		gtk_tree_selection_select_iter (selection, &iter); - -		gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, -				    INFO_COLUMN, &info, -1); - -		gtk_widget_set_sensitive (GTK_WIDGET (pm->priv->configure_button), -					  eom_plugin_engine_plugin_is_configurable (info)); -	} -} - -static gboolean -plugin_manager_set_active (GtkTreeIter  *iter, -			   GtkTreeModel *model, -			   gboolean      active) -{ -	EomPluginInfo *info; -	gboolean res = TRUE; - -	eom_debug (DEBUG_PLUGINS); - -	gtk_tree_model_get (model, iter, INFO_COLUMN, &info, -1); - -	g_return_val_if_fail (info != NULL, FALSE); - -	if (active) { -		/* Activate the plugin */ -		if (!eom_plugin_engine_activate_plugin (info)) { -			eom_debug_message (DEBUG_PLUGINS, "Could not activate %s.\n", -					   eom_plugin_engine_get_plugin_name (info)); - -			res = FALSE; -		} -	} else { -		/* Deactivate the plugin */ -		if (!eom_plugin_engine_deactivate_plugin (info)) { -			eom_debug_message (DEBUG_PLUGINS, "Could not deactivate %s.\n", -					     eom_plugin_engine_get_plugin_name (info)); - -			res = FALSE; -		} -	} - -	/* Set new value */ -	gtk_list_store_set (GTK_LIST_STORE (model), -			    iter, -			    ACTIVE_COLUMN, eom_plugin_engine_plugin_is_active (info), -			    AVAILABLE_COLUMN, eom_plugin_engine_plugin_is_available (info), -			    -1); - -	return res; -} - -static void -plugin_manager_toggle_active (GtkTreeIter  *iter, -			      GtkTreeModel *model) -{ -	gboolean active; - -	eom_debug (DEBUG_PLUGINS); - -	gtk_tree_model_get (model, iter, ACTIVE_COLUMN, &active, -1); - -	active ^= 1; - -	plugin_manager_set_active (iter, model, active); -} - -static EomPluginInfo * -plugin_manager_get_selected_plugin (EomPluginManager *pm) -{ -	EomPluginInfo *info = NULL; -	GtkTreeModel *model; -	GtkTreeIter iter; -	GtkTreeSelection *selection; - -	eom_debug (DEBUG_PLUGINS); - -	model = gtk_tree_view_get_model (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_val_if_fail (model != NULL, NULL); - -	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_val_if_fail (selection != NULL, NULL); - -	if (gtk_tree_selection_get_selected (selection, NULL, &iter)) { -		gtk_tree_model_get (model, &iter, INFO_COLUMN, &info, -1); -	} - -	return info; -} - -static void -plugin_manager_set_active_all (EomPluginManager *pm, -			       gboolean            active) -{ -	GtkTreeModel *model; -	GtkTreeIter iter; - -	eom_debug (DEBUG_PLUGINS); - -	model = gtk_tree_view_get_model (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_if_fail (model != NULL); - -	gtk_tree_model_get_iter_first (model, &iter); - -	do { -		plugin_manager_set_active (&iter, model, active); -	} while (gtk_tree_model_iter_next (model, &iter)); -} - -/* Callback used as the interactive search comparison function */ -static gboolean -name_search_cb (GtkTreeModel *model, -		gint          column, -		const gchar  *key, -		GtkTreeIter  *iter, -		gpointer      data) -{ -	EomPluginInfo *info; -	gchar *normalized_string; -	gchar *normalized_key; -	gchar *case_normalized_string; -	gchar *case_normalized_key; -	gint key_len; -	gboolean retval; - -	gtk_tree_model_get (model, iter, INFO_COLUMN, &info, -1); - -	if (!info) -		return FALSE; - -	normalized_string = g_utf8_normalize (eom_plugin_engine_get_plugin_name (info), -1, G_NORMALIZE_ALL); -	normalized_key = g_utf8_normalize (key, -1, G_NORMALIZE_ALL); -	case_normalized_string = g_utf8_casefold (normalized_string, -1); -	case_normalized_key = g_utf8_casefold (normalized_key, -1); - -	key_len = strlen (case_normalized_key); - -	/* Oddly enough, this callback must return whether to stop the search -	 * because we found a match, not whether we actually matched. */ -	retval = (strncmp (case_normalized_key, case_normalized_string, key_len) != 0); - -	g_free (normalized_key); -	g_free (normalized_string); -	g_free (case_normalized_key); -	g_free (case_normalized_string); - -	return retval; -} - -static void -enable_plugin_menu_cb (GtkMenu            *menu, -		       EomPluginManager *pm) -{ -	GtkTreeModel *model; -	GtkTreeIter iter; -	GtkTreeSelection *selection; - -	model = gtk_tree_view_get_model (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_if_fail (model != NULL); - -	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (pm->priv->tree)); - -	g_return_if_fail (selection != NULL); - -	if (gtk_tree_selection_get_selected (selection, NULL, &iter)) -		plugin_manager_toggle_active (&iter, model); -} - -static void -enable_all_menu_cb (GtkMenu          *menu, -		    EomPluginManager *pm) -{ -	plugin_manager_set_active_all (pm, TRUE); -} - -static void -disable_all_menu_cb (GtkMenu          *menu, -		     EomPluginManager *pm) -{ -	plugin_manager_set_active_all (pm, FALSE); -} - -static GtkWidget * -create_tree_popup_menu (EomPluginManager *pm) -{ -	GtkWidget *menu; -	GtkWidget *item; -	GtkWidget *image; -	EomPluginInfo *info; - -	info = plugin_manager_get_selected_plugin (pm); - -	if (info == NULL) -		return NULL; - -	menu = gtk_menu_new (); - -	item = gtk_image_menu_item_new_with_mnemonic (_("_About")); -	image = gtk_image_new_from_stock (GTK_STOCK_ABOUT, -					  GTK_ICON_SIZE_MENU); -	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); -	g_signal_connect (item, "activate", -			  G_CALLBACK (about_button_cb), pm); -	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - -	item = gtk_image_menu_item_new_with_mnemonic (_("C_onfigure")); -	image = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, -					  GTK_ICON_SIZE_MENU); -	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); -	g_signal_connect (item, "activate", -			  G_CALLBACK (configure_button_cb), pm); -	gtk_widget_set_sensitive (item, -				  eom_plugin_engine_plugin_is_configurable (info)); -	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - -	item = gtk_check_menu_item_new_with_mnemonic (_("A_ctivate")); -	gtk_widget_set_sensitive (item, -				  eom_plugin_engine_plugin_is_available (info)); -	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), -					eom_plugin_engine_plugin_is_active (info)); -	g_signal_connect (item, "toggled", -			  G_CALLBACK (enable_plugin_menu_cb), pm); -	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - -	item = gtk_separator_menu_item_new (); -	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - -	item = gtk_menu_item_new_with_mnemonic (_("Ac_tivate All")); -	g_signal_connect (item, "activate", -			  G_CALLBACK (enable_all_menu_cb), pm); -	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - -	item = gtk_menu_item_new_with_mnemonic (_("_Deactivate All")); -	g_signal_connect (item, "activate", -			  G_CALLBACK (disable_all_menu_cb), pm); -	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - -	gtk_widget_show_all (menu); - -	return menu; -} - -static void -tree_popup_menu_detach (EomPluginManager *pm, -			GtkMenu            *menu) -{ -	pm->priv->popup_menu = NULL; -} - -static void -menu_position_under_widget (GtkMenu  *menu, -			    gint     *x, -			    gint     *y, -			    gboolean *push_in, -			    gpointer  user_data) -{ -	GtkWidget *w = GTK_WIDGET (user_data); -	GtkRequisition requisition; -	GtkAllocation allocation; - -	gdk_window_get_origin (gtk_widget_get_window (w), x, y); -	gtk_widget_get_preferred_size (GTK_WIDGET (menu), &requisition, NULL); -	gtk_widget_get_allocation (w, &allocation); - -	if (gtk_widget_get_direction (w) == GTK_TEXT_DIR_RTL) { -		*x += allocation.x + allocation.width - requisition.width; -	} else { -		*x += allocation.x; -	} - -	*y += allocation.y + allocation.height; - -	*push_in = TRUE; -} - -static void -menu_position_under_tree_view (GtkMenu  *menu, -			       gint     *x, -			       gint     *y, -			       gboolean *push_in, -			       gpointer  user_data) -{ -	GtkTreeView *tree = GTK_TREE_VIEW (user_data); -	GtkTreeModel *model; -	GtkTreeSelection *selection; -	GtkTreeIter iter; - -	model = gtk_tree_view_get_model (tree); - -	g_return_if_fail (model != NULL); - -	selection = gtk_tree_view_get_selection (tree); - -	g_return_if_fail (selection != NULL); - -	if (gtk_tree_selection_get_selected (selection, NULL, &iter)) { -		GtkTreePath *path; -		GdkRectangle rect; - -		gdk_window_get_origin (gtk_widget_get_window(GTK_WIDGET (tree)), -				       x, y); - -		path = gtk_tree_model_get_path (model, &iter); - -		gtk_tree_view_get_cell_area (tree, -					     path, -					     gtk_tree_view_get_column (tree, 0), /* FIXME 0 for RTL ? */ -					     &rect); -		gtk_tree_path_free (path); - -		*x += rect.x; -		*y += rect.y + rect.height; - -		if (gtk_widget_get_direction (GTK_WIDGET (tree)) == GTK_TEXT_DIR_RTL) { -			GtkRequisition requisition; - -			gtk_widget_get_preferred_size (GTK_WIDGET (menu), &requisition, NULL); - -			*x += rect.width - requisition.width; -		} -	} else { -		/* No selection -> regular "under widget" positioning */ -		menu_position_under_widget (menu, -					    x, y, push_in, -					    tree); -	} -} -static void -show_tree_popup_menu (GtkTreeView        *tree, -		      EomPluginManager *pm, -		      GdkEventButton     *event) -{ -	if (pm->priv->popup_menu) -		gtk_widget_destroy (pm->priv->popup_menu); - -	pm->priv->popup_menu = create_tree_popup_menu (pm); - -	if (pm->priv->popup_menu == NULL) -		return; - -	gtk_menu_attach_to_widget (GTK_MENU (pm->priv->popup_menu), -				   GTK_WIDGET (pm), -				   (GtkMenuDetachFunc) tree_popup_menu_detach); - -	if (event != NULL) { -		gtk_menu_popup (GTK_MENU (pm->priv->popup_menu), NULL, NULL, -				NULL, NULL, -				event->button, event->time); -	} else { -		gtk_menu_popup (GTK_MENU (pm->priv->popup_menu), NULL, NULL, -				menu_position_under_tree_view, tree, -				0, gtk_get_current_event_time ()); - -		gtk_menu_shell_select_first (GTK_MENU_SHELL (pm->priv->popup_menu), -					     FALSE); -	} -} - -static gboolean -button_press_event_cb (GtkWidget          *tree, -		       GdkEventButton     *event, -		       EomPluginManager *pm) -{ -	/* We want the treeview selection to be updated before showing the menu. -	 * This code is evil, thanks to Federico Mena Quintero's black magic. -	 * See: http://mail.gnome.org/archives/gtk-devel-list/2006-February/msg00168.html -	 * FIXME: Let's remove it asap. -	 */ -	static gboolean in_press = FALSE; -	gboolean handled; - -	if (in_press) -		return FALSE; /* we re-entered */ - -	if (GDK_BUTTON_PRESS != event->type || 3 != event->button) -		return FALSE; /* let the normal handler run */ - -	in_press = TRUE; -	handled = gtk_widget_event (tree, (GdkEvent *) event); -	in_press = FALSE; - -	if (!handled) -		return FALSE; - -	/* The selection is fully updated by now */ -	show_tree_popup_menu (GTK_TREE_VIEW (tree), pm, event); - -	return TRUE; -} - -static gboolean -popup_menu_cb (GtkTreeView      *tree, -	       EomPluginManager *pm) -{ -	show_tree_popup_menu (tree, pm, NULL); - -	return TRUE; -} - -static gint -model_name_sort_func (GtkTreeModel *model, -		      GtkTreeIter  *iter1, -		      GtkTreeIter  *iter2, -		      gpointer      user_data) -{ -	EomPluginInfo *info1, *info2; - -	gtk_tree_model_get (model, iter1, INFO_COLUMN, &info1, -1); -	gtk_tree_model_get (model, iter2, INFO_COLUMN, &info2, -1); - -	return g_utf8_collate (eom_plugin_engine_get_plugin_name (info1), -			       eom_plugin_engine_get_plugin_name (info2)); -} - -static void -plugin_manager_construct_tree (EomPluginManager *pm) -{ -	GtkTreeViewColumn *column; -	GtkCellRenderer *cell; -	GtkListStore *model; - -	eom_debug (DEBUG_PLUGINS); - -	model = gtk_list_store_new (N_COLUMNS, -				    G_TYPE_BOOLEAN, -				    G_TYPE_BOOLEAN, -				    G_TYPE_POINTER); - -	gtk_tree_view_set_model (GTK_TREE_VIEW (pm->priv->tree), -				 GTK_TREE_MODEL (model)); - -	g_object_unref (model); - -	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (pm->priv->tree), FALSE); - -	/* First column */ -	cell = gtk_cell_renderer_toggle_new (); -	g_object_set (cell, "xpad", 6, NULL); -	g_signal_connect (cell, -			  "toggled", -			  G_CALLBACK (active_toggled_cb), -			  pm); -	column = gtk_tree_view_column_new_with_attributes (PLUGIN_MANAGER_ACTIVE_TITLE, -							   cell, -							   "active", ACTIVE_COLUMN, -							   "activatable", AVAILABLE_COLUMN, -							   "sensitive", AVAILABLE_COLUMN, -							   NULL); -	gtk_tree_view_append_column (GTK_TREE_VIEW (pm->priv->tree), column); - -	/* Second column */ -	column = gtk_tree_view_column_new (); -	gtk_tree_view_column_set_title (column, PLUGIN_MANAGER_NAME_TITLE); -	gtk_tree_view_column_set_resizable (column, TRUE); - -	cell = gtk_cell_renderer_pixbuf_new (); -	gtk_tree_view_column_pack_start (column, cell, FALSE); -	g_object_set (cell, "stock-size", GTK_ICON_SIZE_SMALL_TOOLBAR, NULL); -	gtk_tree_view_column_set_cell_data_func (column, cell, -						 plugin_manager_view_icon_cell_cb, -						 pm, NULL); - -	cell = gtk_cell_renderer_text_new (); -	gtk_tree_view_column_pack_start (column, cell, TRUE); -	g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); -	gtk_tree_view_column_set_cell_data_func (column, cell, -						 plugin_manager_view_info_cell_cb, -						 pm, NULL); - -	gtk_tree_view_column_set_spacing (column, 6); -	gtk_tree_view_append_column (GTK_TREE_VIEW (pm->priv->tree), column); - -	/* Sort on the plugin names */ -	gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (model), -	                                         model_name_sort_func, -        	                                 NULL, -                	                         NULL); -	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), -					      GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, -					      GTK_SORT_ASCENDING); - -	/* Enable search for our non-string column */ -	gtk_tree_view_set_search_column (GTK_TREE_VIEW (pm->priv->tree), -					 INFO_COLUMN); -	gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (pm->priv->tree), -					     name_search_cb, -					     NULL, -					     NULL); - -	g_signal_connect (pm->priv->tree, -			  "cursor_changed", -			  G_CALLBACK (cursor_changed_cb), -			  pm); - -	g_signal_connect (pm->priv->tree, -			  "row_activated", -			  G_CALLBACK (row_activated_cb), -			  pm); - -	g_signal_connect (pm->priv->tree, -			  "button-press-event", -			  G_CALLBACK (button_press_event_cb), -			  pm); - -	g_signal_connect (pm->priv->tree, -			  "popup-menu", -			  G_CALLBACK (popup_menu_cb), -			  pm); - -	gtk_widget_show (pm->priv->tree); -} - -static void -eom_plugin_manager_init (EomPluginManager *pm) -{ -	GtkWidget *label; -	GtkWidget *viewport; -	GtkWidget *hbuttonbox; - -	eom_debug (DEBUG_PLUGINS); - -	gtk_orientable_set_orientation (GTK_ORIENTABLE (pm), -									GTK_ORIENTATION_VERTICAL); - -	pm->priv = EOM_PLUGIN_MANAGER_GET_PRIVATE (pm); - -	gtk_box_set_spacing (GTK_BOX (pm), 6); - -	label = gtk_label_new_with_mnemonic (_("Active _Plugins:")); - -	gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); - -#if GTK_CHECK_VERSION (3, 16, 0) -	gtk_label_set_xalign (GTK_LABEL (label), 0.0); -#else -	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); -#endif - -	gtk_box_pack_start (GTK_BOX (pm), label, FALSE, TRUE, 0); - -	viewport = gtk_scrolled_window_new (NULL, NULL); -	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (viewport), -					GTK_POLICY_AUTOMATIC, -					GTK_POLICY_AUTOMATIC); -	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (viewport), -					     GTK_SHADOW_IN); - -	gtk_box_pack_start (GTK_BOX (pm), viewport, TRUE, TRUE, 0); - -	pm->priv->tree = gtk_tree_view_new (); -	gtk_container_add (GTK_CONTAINER (viewport), pm->priv->tree); - -	gtk_label_set_mnemonic_widget (GTK_LABEL (label), pm->priv->tree); - -	hbuttonbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); - -	gtk_box_pack_start (GTK_BOX (pm), hbuttonbox, FALSE, FALSE, 0); - -	gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); -	gtk_box_set_spacing (GTK_BOX (hbuttonbox), 8); - -	pm->priv->about_button = gtk_button_new_with_mnemonic (_("_About Plugin")); -	gtk_button_set_image (GTK_BUTTON (pm->priv->about_button), -			      gtk_image_new_from_stock (GTK_STOCK_ABOUT, -							GTK_ICON_SIZE_BUTTON)); - -	gtk_container_add (GTK_CONTAINER (hbuttonbox), pm->priv->about_button); - -	pm->priv->configure_button = gtk_button_new_with_mnemonic (_("C_onfigure Plugin")); -	gtk_button_set_image (GTK_BUTTON (pm->priv->configure_button), -			      gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, -							GTK_ICON_SIZE_BUTTON)); - -	gtk_container_add (GTK_CONTAINER (hbuttonbox), pm->priv->configure_button); - -	gtk_widget_set_size_request (GTK_WIDGET (viewport), 270, 100); - -	g_signal_connect (pm->priv->about_button, -			  "clicked", -			  G_CALLBACK (about_button_cb), -			  pm); - -	g_signal_connect (pm->priv->configure_button, -			  "clicked", -			  G_CALLBACK (configure_button_cb), -			  pm); - -	plugin_manager_construct_tree (pm); - -	/* Get the list of available plugins (or installed) */ -	pm->priv->plugins = eom_plugin_engine_get_plugins_list (); - -	if (pm->priv->plugins != NULL) { -		plugin_manager_populate_lists (pm); -	} else { -		gtk_widget_set_sensitive (pm->priv->about_button, FALSE); -		gtk_widget_set_sensitive (pm->priv->configure_button, FALSE); -	} -} - -static void -eom_plugin_manager_finalize (GObject *object) -{ -	EomPluginManager *pm = EOM_PLUGIN_MANAGER (object); - -	if (pm->priv->popup_menu) -		gtk_widget_destroy (pm->priv->popup_menu); - -	G_OBJECT_CLASS (eom_plugin_manager_parent_class)->finalize (object); -} - -GtkWidget * -eom_plugin_manager_new (void) -{ -	return g_object_new (EOM_TYPE_PLUGIN_MANAGER, NULL); -} diff --git a/src/eom-plugin-manager.h b/src/eom-plugin-manager.h deleted file mode 100644 index 3115167..0000000 --- a/src/eom-plugin-manager.h +++ /dev/null @@ -1,61 +0,0 @@ -/* Eye Of Mate - EOM Plugin Manager - * - * Copyright (C) 2007 The Free Software Foundation - * - * Author: Lucas Rocha <[email protected]> - * - * Based on gedit code (gedit/gedit-module.c) by: - * 	- Paolo Maggi <[email protected]> - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef __EOM_PLUGIN_MANAGER_H__ -#define __EOM_PLUGIN_MANAGER_H__ - -#include <gtk/gtk.h> - -G_BEGIN_DECLS - -typedef struct _EomPluginManager EomPluginManager; -typedef struct _EomPluginManagerClass EomPluginManagerClass; -typedef struct _EomPluginManagerPrivate EomPluginManagerPrivate; - -#define EOM_TYPE_PLUGIN_MANAGER              (eom_plugin_manager_get_type()) -#define EOM_PLUGIN_MANAGER(obj)              (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_PLUGIN_MANAGER, EomPluginManager)) -#define EOM_PLUGIN_MANAGER_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST((klass),  EOM_TYPE_PLUGIN_MANAGER, EomPluginManagerClass)) -#define EOM_IS_PLUGIN_MANAGER(obj)           (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_PLUGIN_MANAGER)) -#define EOM_IS_PLUGIN_MANAGER_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_PLUGIN_MANAGER)) -#define EOM_PLUGIN_MANAGER_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS((obj),  EOM_TYPE_PLUGIN_MANAGER, EomPluginManagerClass)) - -struct _EomPluginManager { -	GtkVBox vbox; - -	EomPluginManagerPrivate *priv; -}; - -struct _EomPluginManagerClass { -	GtkVBoxClass parent_class; -}; - -G_GNUC_INTERNAL -GType		 eom_plugin_manager_get_type	(void) G_GNUC_CONST; - -G_GNUC_INTERNAL -GtkWidget	*eom_plugin_manager_new		(void); - -G_END_DECLS - -#endif  /* __EOM_PLUGIN_MANAGER_H__  */ diff --git a/src/eom-plugin.c b/src/eom-plugin.c deleted file mode 100644 index 0985cc0..0000000 --- a/src/eom-plugin.c +++ /dev/null @@ -1,108 +0,0 @@ -/* Eye Of Mate - EOM Plugin - * - * Copyright (C) 2007 The Free Software Foundation - * - * Author: Lucas Rocha <[email protected]> - * - * Based on gedit code (gedit/gedit-module.c) by: - * 	- Paolo Maggi <[email protected]> - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include "eom-plugin.h" - -G_DEFINE_TYPE (EomPlugin, eom_plugin, G_TYPE_OBJECT) - -static void -dummy (EomPlugin *plugin, EomWindow *window) -{ -} - -static GtkWidget * -create_configure_dialog	(EomPlugin *plugin) -{ -	return NULL; -} - -static gboolean -is_configurable (EomPlugin *plugin) -{ -	return (EOM_PLUGIN_GET_CLASS (plugin)->create_configure_dialog != -		create_configure_dialog); -} - -static void -eom_plugin_class_init (EomPluginClass *klass) -{ -	klass->activate = dummy; -	klass->deactivate = dummy; -	klass->update_ui = dummy; - -	klass->create_configure_dialog = create_configure_dialog; -	klass->is_configurable = is_configurable; -} - -static void -eom_plugin_init (EomPlugin *plugin) -{ -} - -void -eom_plugin_activate (EomPlugin *plugin, EomWindow *window) -{ -	g_return_if_fail (EOM_IS_PLUGIN (plugin)); -	g_return_if_fail (EOM_IS_WINDOW (window)); - -	EOM_PLUGIN_GET_CLASS (plugin)->activate (plugin, window); -} - -void -eom_plugin_deactivate (EomPlugin *plugin, EomWindow *window) -{ -	g_return_if_fail (EOM_IS_PLUGIN (plugin)); -	g_return_if_fail (EOM_IS_WINDOW (window)); - -	EOM_PLUGIN_GET_CLASS (plugin)->deactivate (plugin, window); -} - -void -eom_plugin_update_ui (EomPlugin *plugin, EomWindow *window) -{ -	g_return_if_fail (EOM_IS_PLUGIN (plugin)); -	g_return_if_fail (EOM_IS_WINDOW (window)); - -	EOM_PLUGIN_GET_CLASS (plugin)->update_ui (plugin, window); -} - -gboolean -eom_plugin_is_configurable (EomPlugin *plugin) -{ -	g_return_val_if_fail (EOM_IS_PLUGIN (plugin), FALSE); - -	return EOM_PLUGIN_GET_CLASS (plugin)->is_configurable (plugin); -} - -GtkWidget * -eom_plugin_create_configure_dialog (EomPlugin *plugin) -{ -	g_return_val_if_fail (EOM_IS_PLUGIN (plugin), NULL); - -	return EOM_PLUGIN_GET_CLASS (plugin)->create_configure_dialog (plugin); -} diff --git a/src/eom-plugin.h b/src/eom-plugin.h deleted file mode 100644 index ebf4ce4..0000000 --- a/src/eom-plugin.h +++ /dev/null @@ -1,222 +0,0 @@ -/* Eye Of Mate - EOM Plugin - * - * Copyright (C) 2007 The Free Software Foundation - * - * Author: Lucas Rocha <[email protected]> - * - * Based on gedit code (gedit/gedit-module.c) by: - * 	- Paolo Maggi <[email protected]> - * - * 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 - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -#ifndef __EOM_PLUGIN_H__ -#define __EOM_PLUGIN_H__ - -#include "eom-window.h" -#include "eom-debug.h" - -#include <glib-object.h> - -G_BEGIN_DECLS - -typedef struct _EomPlugin EomPlugin; -typedef struct _EomPluginClass EomPluginClass; -typedef struct _EomPluginPrivate EomPluginPrivate; - -#define EOM_TYPE_PLUGIN            (eom_plugin_get_type()) -#define EOM_PLUGIN(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_PLUGIN, EomPlugin)) -#define EOM_PLUGIN_CONST(obj)      (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_PLUGIN, EomPlugin const)) -#define EOM_PLUGIN_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  EOM_TYPE_PLUGIN, EomPluginClass)) -#define EOM_IS_PLUGIN(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_PLUGIN)) -#define EOM_IS_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_PLUGIN)) -#define EOM_PLUGIN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  EOM_TYPE_PLUGIN, EomPluginClass)) - -struct _EomPlugin { -	GObject parent; -}; - -struct _EomPluginClass  { -	GObjectClass parent_class; - -	void 		(*activate)		(EomPlugin *plugin, -						 EomWindow *window); - -	void 		(*deactivate)		(EomPlugin *plugin, -						 EomWindow *window); - -	void 		(*update_ui)		(EomPlugin *plugin, -						 EomWindow *window); - -	GtkWidget 	*(*create_configure_dialog) -						(EomPlugin *plugin); - -	/* Plugins should not override this, it's handled automatically - 	 * by the EomPluginClass */ -	gboolean 	(*is_configurable) -						(EomPlugin *plugin); - -	/* Padding for future expansion */ -	void		(*_eom_reserved1)	(void); -	void		(*_eom_reserved2)	(void); -	void		(*_eom_reserved3)	(void); -	void		(*_eom_reserved4)	(void); -}; - -GType 		 eom_plugin_get_type 		(void) G_GNUC_CONST; - -void 		 eom_plugin_activate		(EomPlugin *plugin, -						 EomWindow *window); - -void 		 eom_plugin_deactivate	        (EomPlugin *plugin, -						 EomWindow *window); - -void 		 eom_plugin_update_ui		(EomPlugin *plugin, -						 EomWindow *window); - -gboolean	 eom_plugin_is_configurable	(EomPlugin *plugin); - -GtkWidget	*eom_plugin_create_configure_dialog -						(EomPlugin *plugin); - -/* - * Utility macro used to register plugins - * - * use: EOM_PLUGIN_REGISTER_TYPE_WITH_CODE(PluginName, plugin_name, CODE) - */ -#define EOM_PLUGIN_REGISTER_TYPE_WITH_CODE(PluginName, plugin_name, CODE)	\ -										\ -static GType plugin_name##_type = 0;						\ -										\ -GType										\ -plugin_name##_get_type (void)							\ -{										\ -	return plugin_name##_type;						\ -}										\ -										\ -static void     plugin_name##_init              (PluginName        *self);	\ -static void     plugin_name##_class_init        (PluginName##Class *klass);	\ -static gpointer plugin_name##_parent_class = NULL;				\ -static void     plugin_name##_class_intern_init (gpointer klass)		\ -{										\ -	plugin_name##_parent_class = g_type_class_peek_parent (klass);		\ -	plugin_name##_class_init ((PluginName##Class *) klass);			\ -}										\ -										\ -G_MODULE_EXPORT GType								\ -register_eom_plugin (GTypeModule *module)					\ -{										\ -	static const GTypeInfo our_info =					\ -	{									\ -		sizeof (PluginName##Class),					\ -		NULL, /* base_init */						\ -		NULL, /* base_finalize */					\ -		(GClassInitFunc) plugin_name##_class_intern_init,		\ -		NULL,								\ -		NULL, /* class_data */						\ -		sizeof (PluginName),						\ -		0, /* n_preallocs */						\ -		(GInstanceInitFunc) plugin_name##_init				\ -	};									\ -										\ -	eom_debug_message (DEBUG_PLUGINS, "Registering " #PluginName);	\ -										\ -	/* Initialise the i18n stuff */						\ -	bindtextdomain (GETTEXT_PACKAGE, EOM_LOCALEDIR);			\ -	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");			\ -										\ -	plugin_name##_type = g_type_module_register_type (module,		\ -					    EOM_TYPE_PLUGIN,			\ -					    #PluginName,			\ -					    &our_info,				\ -					    0);					\ -										\ -	CODE									\ -										\ -	return plugin_name##_type;						\ -} - -/* - * Utility macro used to register plugins - * - * use: EOM_PLUGIN_REGISTER_TYPE(PluginName, plugin_name) - */ -#define EOM_PLUGIN_REGISTER_TYPE(PluginName, plugin_name)			\ -	EOM_PLUGIN_REGISTER_TYPE_WITH_CODE(PluginName, plugin_name, ;) - -/* - * Utility macro used to register gobject types in plugins with additional code - * - * use: EOM_PLUGIN_DEFINE_TYPE_WITH_CODE(ObjectName, object_name, PARENT_TYPE, CODE) - */ -#define EOM_PLUGIN_DEFINE_TYPE_WITH_CODE(ObjectName, object_name, PARENT_TYPE, CODE)	\ -										\ -static GType g_define_type_id = 0;						\ -										\ -GType										\ -object_name##_get_type (void)							\ -{										\ -	return g_define_type_id;						\ -}										\ -										\ -static void     object_name##_init              (ObjectName        *self);	\ -static void     object_name##_class_init        (ObjectName##Class *klass);	\ -static gpointer object_name##_parent_class = NULL;				\ -static void     object_name##_class_intern_init (gpointer klass)		\ -{										\ -	object_name##_parent_class = g_type_class_peek_parent (klass);		\ -	object_name##_class_init ((ObjectName##Class *) klass);			\ -}										\ -										\ -GType										\ -object_name##_register_type (GTypeModule *module)				\ -{										\ -	static const GTypeInfo our_info =					\ -	{									\ -		sizeof (ObjectName##Class),					\ -		NULL, /* base_init */						\ -		NULL, /* base_finalize */					\ -		(GClassInitFunc) object_name##_class_intern_init,		\ -		NULL,								\ -		NULL, /* class_data */						\ -		sizeof (ObjectName),						\ -		0, /* n_preallocs */						\ -		(GInstanceInitFunc) object_name##_init				\ -	};									\ -										\ -	eom_debug_message (DEBUG_PLUGINS, "Registering " #ObjectName);	\ -										\ -	g_define_type_id = g_type_module_register_type (module,			\ -					   	        PARENT_TYPE,		\ -					                #ObjectName,		\ -					                &our_info,		\ -					                0);			\ -										\ -	CODE									\ -										\ -	return g_define_type_id;						\ -} - -/* - * Utility macro used to register gobject types in plugins - * - * use: EOM_PLUGIN_DEFINE_TYPE(ObjectName, object_name, PARENT_TYPE) - */ -#define EOM_PLUGIN_DEFINE_TYPE(ObjectName, object_name, PARENT_TYPE)		\ -	EOM_PLUGIN_DEFINE_TYPE_WITH_CODE(ObjectName, object_name, PARENT_TYPE, ;) - -G_END_DECLS - -#endif  /* __EOM_PLUGIN_H__ */ | 
