From 116ed5dcc7bc07fc9a2e78aef4231bfe25fa9d0a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 8 May 2008 18:11:40 +0000 Subject: ** Fixes bug #525241 (EPluginUI) 2008-05-08 Matthew Barnes ** Fixes bug #525241 (EPluginUI) * e-util/Makefile.am: Add e-plugin-ui.[ch]. * e-util/e-plugin.h (EPluginClass): Add a "get_symbol" method for extracting arbitrary symbols from an EPlugin. Implementation of the method is optional. * e-util/e-plugin.c (e_plugin_get_symbol): New function invokes the new "get_symbol" EPlugin method. * e-util/e-plugin.c (epl_get_symbol): New function implements the new "get_symbol" EPlugin method. It extracts the given symbol name from the GModule. * e-util/e-plugin-ui.[ch]: New EPluginHook subclass that allows plugins to extend menus, toolbars, and popups that are managed by GtkUIManager instead of BonoboUI. Should eventually replace EMenu/EPopup. * shell/main.c (main): Register the EPluginUIHook type. * composer/e-msg-composer.c (msg_composer_destroy), (msg_composer_init): Rip out the EMenu logic. * composer/e-msg-composer.c (msg_composer_init): Register the GtkUIManager with EPluginUI. * plugins/face/Makefile.am: * plugins/face/org-gnome-face-ui.xml: Remove org-gnome-face-ui.xml (obsolete). * plugins/face/face.c (e_plugin_ui_init): Initialization callback for EPluginUI. Adds a "face" action to the EMsgComposer instance's "composer" action group. * plugins/face/org-gnome-face.eplug.xml: Replace the "bonobomenu" hook definition with a new one for EPluginUI. Include the UI definition inline. svn path=/trunk/; revision=35485 --- composer/ChangeLog | 10 ++++++++++ composer/e-msg-composer.c | 41 ++++++++++------------------------------- 2 files changed, 20 insertions(+), 31 deletions(-) (limited to 'composer') diff --git a/composer/ChangeLog b/composer/ChangeLog index 6622aec517..d1fa8ef034 100644 --- a/composer/ChangeLog +++ b/composer/ChangeLog @@ -1,3 +1,13 @@ +2008-05-08 Matthew Barnes + + ** Fixes part of bug #525241 (EPluginUI) + + * e-msg-composer.c (msg_composer_destroy), (msg_composer_init): + Rip out the EMenu logic. + + * e-msg-composer.c (msg_composer_init): + Register the GtkUIManager with EPluginUI. + 2008-05-06 Matthew Barnes ** Fixes part of bug #424744 diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 2aaffba0d4..2dbfcc92d4 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -69,6 +69,7 @@ #include "misc/e-charset-picker.h" #include "misc/e-expander.h" #include "e-util/e-error.h" +#include "e-util/e-plugin-ui.h" #include "e-util/e-util-private.h" #include "e-util/e-util.h" #include @@ -2183,14 +2184,6 @@ msg_composer_destroy (GtkObject *object) all_composers = g_slist_remove (all_composers, object); -#if 0 /* GTKHTML-EDITOR */ - if (composer->priv->menu) { - e_menu_update_target ((EMenu *)composer->priv->menu, NULL); - g_object_unref (composer->priv->menu); - composer->priv->menu = NULL; - } -#endif - if (composer->priv->address_dialog != NULL) { gtk_widget_destroy (composer->priv->address_dialog); composer->priv->address_dialog = NULL; @@ -2724,17 +2717,18 @@ static void msg_composer_init (EMsgComposer *composer) { EComposerHeaderTable *table; -#if 0 /* GTKHTML-EDITOR */ - EMMenuTargetWidget *target; -#endif + GtkUIManager *manager; + GtkhtmlEditor *editor; GtkHTML *html; composer->priv = E_MSG_COMPOSER_GET_PRIVATE (composer); e_composer_private_init (composer); + editor = GTKHTML_EDITOR (composer); + html = gtkhtml_editor_get_html (editor); + manager = gtkhtml_editor_get_ui_manager (editor); all_composers = g_slist_prepend (all_composers, composer); - html = gtkhtml_editor_get_html (GTKHTML_EDITOR (composer)); table = E_COMPOSER_HEADER_TABLE (composer->priv->header_table); gtk_window_set_title (GTK_WINDOW (composer), _("Compose Message")); @@ -2751,24 +2745,6 @@ msg_composer_init (EMsgComposer *composer) html, "drag-data-received", G_CALLBACK (msg_composer_drag_data_received), NULL); - /* Plugin Support */ - -#if 0 /* GTKHTML-EDITOR */ - /** @HookPoint-EMMenu: Main Mail Menu - * @Id: org.gnome.evolution.mail.composer - * @Class: org.gnome.evolution.mail.bonobomenu:1.0 - * @Target: EMMenuTargetWidget - * - * The main menu of the composer window. The widget of the - * target will point to the EMsgComposer object. - */ - composer->priv->menu = em_menu_new ("org.gnome.evolution.mail.composer"); - target = em_menu_target_new_widget (p->menu, (GtkWidget *)composer); - e_menu_update_target ((EMenu *)p->menu, target); - e_menu_activate ((EMenu *)p->menu, p->uic, TRUE); - -#endif - /* Configure Headers */ e_composer_header_table_set_account_list ( @@ -2824,7 +2800,10 @@ msg_composer_init (EMsgComposer *composer) e_composer_autosave_register (composer); /* Initialization may have tripped the "changed" state. */ - gtkhtml_editor_set_changed (GTKHTML_EDITOR (composer), FALSE); + gtkhtml_editor_set_changed (editor, FALSE); + + e_plugin_ui_register_manager ( + "org.gnome.evolution.composer", manager, composer); } GType -- cgit v1.2.3