evolution r36045 - in branches/kill-bonobo: a11y/widgets shell shell/test widgets/misc
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r36045 - in branches/kill-bonobo: a11y/widgets shell shell/test widgets/misc
- Date: Sun, 24 Aug 2008 13:17:12 +0000 (UTC)
Author: mbarnes
Date: Sun Aug 24 13:17:11 2008
New Revision: 36045
URL: http://svn.gnome.org/viewvc/evolution?rev=36045&view=rev
Log:
Progress update:
- Get the "New" button and menu working.
- Add a GtkMenuToolButton subclass called EMenuToolButton, which does
some behind-the-scenes stuff to make the "New" button work properly.
- Kill EComboButton and its associated a11y widget.
Added:
branches/kill-bonobo/widgets/misc/e-menu-tool-button.c
branches/kill-bonobo/widgets/misc/e-menu-tool-button.h
Removed:
branches/kill-bonobo/a11y/widgets/ea-combo-button.c
branches/kill-bonobo/a11y/widgets/ea-combo-button.h
branches/kill-bonobo/widgets/misc/e-combo-button.c
branches/kill-bonobo/widgets/misc/e-combo-button.h
Modified:
branches/kill-bonobo/a11y/widgets/Makefile.am
branches/kill-bonobo/a11y/widgets/ea-widgets.c
branches/kill-bonobo/a11y/widgets/ea-widgets.h
branches/kill-bonobo/shell/e-shell-window-actions.c
branches/kill-bonobo/shell/e-shell-window-private.c
branches/kill-bonobo/shell/e-shell-window-private.h
branches/kill-bonobo/shell/e-shell-window.c
branches/kill-bonobo/shell/e-shell-window.h
branches/kill-bonobo/shell/e-shell.c
branches/kill-bonobo/shell/e-shell.h
branches/kill-bonobo/shell/main.c
branches/kill-bonobo/shell/test/e-test-shell-module.c
branches/kill-bonobo/widgets/misc/Makefile.am
branches/kill-bonobo/widgets/misc/e-preferences-window.c
Modified: branches/kill-bonobo/a11y/widgets/Makefile.am
==============================================================================
--- branches/kill-bonobo/a11y/widgets/Makefile.am (original)
+++ branches/kill-bonobo/a11y/widgets/Makefile.am Sun Aug 24 13:17:11 2008
@@ -20,8 +20,6 @@
ea-calendar-item.h \
ea-calendar-cell.c \
ea-calendar-cell.h \
- ea-combo-button.c \
- ea-combo-button.h \
ea-expander.c \
ea-expander.h \
ea-widgets.c \
Modified: branches/kill-bonobo/a11y/widgets/ea-widgets.c
==============================================================================
--- branches/kill-bonobo/a11y/widgets/ea-widgets.c (original)
+++ branches/kill-bonobo/a11y/widgets/ea-widgets.c Sun Aug 24 13:17:11 2008
@@ -25,12 +25,10 @@
#include "ea-factory.h"
#include "widgets/ea-calendar-item.h"
-#include "widgets/ea-combo-button.h"
#include "widgets/ea-expander.h"
#include "ea-widgets.h"
EA_FACTORY_GOBJECT (EA_TYPE_CALENDAR_ITEM, ea_calendar_item, ea_calendar_item_new)
-EA_FACTORY (EA_TYPE_COMBO_BUTTON, ea_combo_button, ea_combo_button_new)
EA_FACTORY (EA_TYPE_EXPANDER, ea_expander, ea_expander_new)
void e_calendar_item_a11y_init (void)
@@ -38,11 +36,6 @@
EA_SET_FACTORY (e_calendar_item_get_type (), ea_calendar_item);
}
-void e_combo_button_a11y_init (void)
-{
- EA_SET_FACTORY (e_combo_button_get_type (), ea_combo_button);
-}
-
void e_expander_a11y_init (void)
{
EA_SET_FACTORY (e_expander_get_type (), ea_expander);
Modified: branches/kill-bonobo/a11y/widgets/ea-widgets.h
==============================================================================
--- branches/kill-bonobo/a11y/widgets/ea-widgets.h (original)
+++ branches/kill-bonobo/a11y/widgets/ea-widgets.h Sun Aug 24 13:17:11 2008
@@ -30,7 +30,6 @@
#define _EA_WIDGETS_H__
void e_calendar_item_a11y_init (void);
-void e_combo_button_a11y_init (void);
void e_expander_a11y_init (void);
#endif /* _EA_WIDGETS_H__ */
Modified: branches/kill-bonobo/shell/e-shell-window-actions.c
==============================================================================
--- branches/kill-bonobo/shell/e-shell-window-actions.c (original)
+++ branches/kill-bonobo/shell/e-shell-window-actions.c Sun Aug 24 13:17:11 2008
@@ -20,14 +20,16 @@
#include "e-shell-window-private.h"
-#include "e-shell.h"
-#include "e-shell-importer.h"
+#include <string.h>
-#include "e-util/e-dialog-utils.h"
-#include "e-util/e-error.h"
-#include "e-util/e-print.h"
+#include <e-shell.h>
+#include <e-shell-importer.h>
+
+#include <e-util/e-dialog-utils.h>
+#include <e-util/e-error.h>
+#include <e-util/e-print.h>
+#include <e-util/e-util.h>
-#include <string.h>
#include <libedataserverui/e-passwords.h>
#define EVOLUTION_COPYRIGHT \
@@ -626,7 +628,7 @@
static void
action_about_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
gchar *translator_credits;
@@ -638,7 +640,7 @@
translator_credits = NULL;
gtk_show_about_dialog (
- GTK_WINDOW (window),
+ GTK_WINDOW (shell_window),
"program-name", "Evolution",
"version", VERSION,
"copyright", EVOLUTION_COPYRIGHT,
@@ -654,9 +656,9 @@
static void
action_close_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
- GtkWidget *widget = GTK_WIDGET (window);
+ GtkWidget *widget = GTK_WIDGET (shell_window);
GdkEvent *event;
/* Synthesize a delete_event on this window. */
@@ -669,14 +671,14 @@
static void
action_contents_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
- /* FIXME Unfinished. */
+ e_display_help (GTK_WINDOW (shell_window), NULL);
}
static void
action_faq_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
GError *error = NULL;
@@ -691,12 +693,12 @@
static void
action_forget_passwords_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
gint response;
response = e_error_run (
- GTK_WINDOW (window), "shell:forget-passwords", NULL);
+ GTK_WINDOW (shell_window), "shell:forget-passwords", NULL);
if (response == GTK_RESPONSE_OK)
e_passwords_forget_passwords ();
@@ -704,31 +706,31 @@
static void
action_import_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
- e_shell_importer_start_import (window);
+ e_shell_importer_start_import (shell_window);
}
static void
action_new_window_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
EShell *shell;
- shell = e_shell_window_get_shell (window);
+ shell = e_shell_window_get_shell (shell_window);
e_shell_create_window (shell);
}
static void
action_page_setup_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
- e_print_run_page_setup_dialog (GTK_WINDOW (window));
+ e_print_run_page_setup_dialog (GTK_WINDOW (shell_window));
}
static void
action_preferences_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
GtkWidget *preferences_window;
@@ -740,7 +742,7 @@
static void
action_quick_reference_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
const gchar * const *language_names;
@@ -785,86 +787,86 @@
static void
action_quit_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
EShell *shell;
- shell = e_shell_window_get_shell (window);
+ shell = e_shell_window_get_shell (shell_window);
e_shell_quit (shell);
}
static void
action_send_receive_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
EShell *shell;
- shell = e_shell_window_get_shell (window);
- e_shell_send_receive (shell, GTK_WINDOW (window));
+ shell = e_shell_window_get_shell (shell_window);
+ e_shell_send_receive (shell, GTK_WINDOW (shell_window));
}
static void
action_shell_view_cb (GtkRadioAction *action,
GtkRadioAction *current,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
const gchar *view_name;
view_name = g_object_get_data (G_OBJECT (current), "view-name");
- e_shell_window_set_current_view (window, view_name);
+ e_shell_window_set_current_view (shell_window, view_name);
}
static void
action_show_sidebar_cb (GtkToggleAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
GtkWidget *widget;
gboolean active;
- widget = window->priv->sidebar;
+ widget = shell_window->priv->sidebar;
active = gtk_toggle_action_get_active (action);
g_object_set (widget, "visible", active, NULL);
}
static void
action_show_statusbar_cb (GtkToggleAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
GtkWidget *widget;
gboolean active;
- widget = window->priv->status_area;
+ widget = shell_window->priv->status_area;
active = gtk_toggle_action_get_active (action);
g_object_set (widget, "visible", active, NULL);
}
static void
action_show_switcher_cb (GtkToggleAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
ESidebar *sidebar;
gboolean active;
- sidebar = E_SIDEBAR (window->priv->sidebar);
+ sidebar = E_SIDEBAR (shell_window->priv->sidebar);
active = gtk_toggle_action_get_active (action);
e_sidebar_set_actions_visible (sidebar, active);
}
static void
action_show_toolbar_cb (GtkToggleAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
GtkWidget *widget;
gboolean active;
- widget = window->priv->main_toolbar;
+ widget = shell_window->priv->main_toolbar;
active = gtk_toggle_action_get_active (action);
g_object_set (widget, "visible", active, NULL);
}
static void
action_submit_bug_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
const gchar *command_line;
GError *error = NULL;
@@ -881,7 +883,7 @@
message = _("Bug Buddy is not installed.");
else
message = _("Bug Buddy could not be run.");
- e_notice (window, GTK_MESSAGE_ERROR, message);
+ e_notice (shell_window, GTK_MESSAGE_ERROR, message);
g_error_free (error);
}
}
@@ -889,12 +891,12 @@
static void
action_switcher_style_cb (GtkRadioAction *action,
GtkRadioAction *current,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
ESidebar *sidebar;
GtkToolbarStyle style;
- sidebar = E_SIDEBAR (window->priv->sidebar);
+ sidebar = E_SIDEBAR (shell_window->priv->sidebar);
style = gtk_radio_action_get_current_value (action);
switch (style) {
@@ -913,7 +915,7 @@
static void
action_sync_options_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
const gchar *command_line;
GError *error = NULL;
@@ -930,28 +932,28 @@
message = _("GNOME Pilot is not installed.");
else
message = _("GNOME Pilot could not be run.");
- e_notice (window, GTK_MESSAGE_ERROR, message);
+ e_notice (shell_window, GTK_MESSAGE_ERROR, message);
g_error_free (error);
}
}
static void
action_work_offline_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
EShell *shell;
- shell = e_shell_window_get_shell (window);
+ shell = e_shell_window_get_shell (shell_window);
e_shell_set_line_status (shell, E_SHELL_LINE_STATUS_OFFLINE);
}
static void
action_work_online_cb (GtkAction *action,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
EShell *shell;
- shell = e_shell_window_get_shell (window);
+ shell = e_shell_window_get_shell (shell_window);
e_shell_set_line_status (shell, E_SHELL_LINE_STATUS_ONLINE);
}
@@ -1102,7 +1104,7 @@
{ "new-menu",
GTK_STOCK_NEW,
N_("_New"),
- NULL,
+ "",
NULL,
NULL },
@@ -1223,7 +1225,7 @@
}
static void
-shell_window_extract_actions (EShellWindow *window,
+shell_window_extract_actions (EShellWindow *shell_window,
GList **source_list,
GList **destination_list)
{
@@ -1235,7 +1237,7 @@
* as belonging to the current EShellView and move them to the
* destination list. */
- current_view = e_shell_window_get_current_view (window);
+ current_view = e_shell_window_get_current_view (shell_window);
/* Example: Suppose [A] and [C] are tagged for this EShellView.
*
@@ -1273,51 +1275,51 @@
}
void
-e_shell_window_actions_init (EShellWindow *window)
+e_shell_window_actions_init (EShellWindow *shell_window)
{
GtkActionGroup *action_group;
GtkUIManager *manager;
const gchar *domain;
- g_return_if_fail (E_IS_SHELL_WINDOW (window));
+ g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
- manager = e_shell_window_get_ui_manager (window);
+ manager = e_shell_window_get_ui_manager (shell_window);
domain = GETTEXT_PACKAGE;
/* Shell Actions */
- action_group = window->priv->shell_actions;
+ action_group = shell_window->priv->shell_actions;
gtk_action_group_set_translation_domain (action_group, domain);
gtk_action_group_add_actions (
action_group, shell_entries,
- G_N_ELEMENTS (shell_entries), window);
+ G_N_ELEMENTS (shell_entries), shell_window);
gtk_action_group_add_toggle_actions (
action_group, shell_toggle_entries,
- G_N_ELEMENTS (shell_toggle_entries), window);
+ G_N_ELEMENTS (shell_toggle_entries), shell_window);
gtk_action_group_add_radio_actions (
action_group, shell_switcher_style_entries,
G_N_ELEMENTS (shell_switcher_style_entries),
E_SIDEBAR_DEFAULT_TOOLBAR_STYLE,
- G_CALLBACK (action_switcher_style_cb), window);
+ G_CALLBACK (action_switcher_style_cb), shell_window);
gtk_ui_manager_insert_action_group (manager, action_group, 0);
/* New Item Actions (empty) */
- action_group = window->priv->new_item_actions;
+ action_group = shell_window->priv->new_item_actions;
gtk_action_group_set_translation_domain (action_group, domain);
gtk_ui_manager_insert_action_group (manager, action_group, 0);
/* New Source Actions (empty) */
- action_group = window->priv->new_source_actions;
+ action_group = shell_window->priv->new_source_actions;
gtk_action_group_set_translation_domain (action_group, domain);
gtk_ui_manager_insert_action_group (manager, action_group, 0);
/* Shell View Actions (empty) */
- action_group = window->priv->shell_view_actions;
+ action_group = shell_window->priv->shell_view_actions;
gtk_action_group_set_translation_domain (action_group, domain);
gtk_ui_manager_insert_action_group (manager, action_group, 0);
}
GtkWidget *
-e_shell_window_create_new_menu (EShellWindow *window)
+e_shell_window_create_new_menu (EShellWindow *shell_window)
{
GtkActionGroup *action_group;
GList *new_item_actions;
@@ -1328,13 +1330,13 @@
/* Get sorted lists of "new item" and "new source" actions. */
- action_group = window->priv->new_item_actions;
+ action_group = shell_window->priv->new_item_actions;
new_item_actions = g_list_sort (
gtk_action_group_list_actions (action_group),
(GCompareFunc) shell_window_compare_actions);
- action_group = window->priv->new_source_actions;
+ action_group = shell_window->priv->new_source_actions;
new_source_actions = g_list_sort (
gtk_action_group_list_actions (action_group),
@@ -1343,10 +1345,10 @@
/* Give priority to actions that belong to this shell view. */
shell_window_extract_actions (
- window, &new_item_actions, &list);
+ shell_window, &new_item_actions, &list);
shell_window_extract_actions (
- window, &new_source_actions, &list);
+ shell_window, &new_source_actions, &list);
/* Convert the actions to menu item proxy widgets. */
@@ -1388,7 +1390,7 @@
}
void
-e_shell_window_create_shell_view_actions (EShellWindow *window)
+e_shell_window_create_shell_view_actions (EShellWindow *shell_window)
{
GType *children;
GSList *group = NULL;
@@ -1397,11 +1399,11 @@
guint n_children, ii;
guint merge_id;
- g_return_if_fail (E_IS_SHELL_WINDOW (window));
+ g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
- action_group = window->priv->shell_view_actions;
+ action_group = shell_window->priv->shell_view_actions;
children = g_type_children (E_TYPE_SHELL_VIEW, &n_children);
- manager = e_shell_window_get_ui_manager (window);
+ manager = e_shell_window_get_ui_manager (shell_window);
merge_id = gtk_ui_manager_new_merge_id (manager);
/* Construct a group of radio actions from the various EShellView
@@ -1454,12 +1456,13 @@
if (group == NULL) {
/* First view is the default. */
- window->priv->default_view = view_name;
+ shell_window->priv->default_view = view_name;
/* Only listen to the first action. */
g_signal_connect (
action, "changed",
- G_CALLBACK (action_shell_view_cb), window);
+ G_CALLBACK (action_shell_view_cb),
+ shell_window);
}
gtk_radio_action_set_group (action, group);
@@ -1469,7 +1472,7 @@
action_group, GTK_ACTION (action));
e_sidebar_add_action (
- E_SIDEBAR (window->priv->sidebar),
+ E_SIDEBAR (shell_window->priv->sidebar),
GTK_ACTION (action));
gtk_ui_manager_add_ui (
Modified: branches/kill-bonobo/shell/e-shell-window-private.c
==============================================================================
--- branches/kill-bonobo/shell/e-shell-window-private.c (original)
+++ branches/kill-bonobo/shell/e-shell-window-private.c Sun Aug 24 13:17:11 2008
@@ -25,9 +25,29 @@
#include <e-util/gconf-bridge.h>
static void
+shell_window_notify_current_view_cb (EShellWindow *shell_window)
+{
+ GtkWidget *menu;
+ GtkWidget *widget;
+ const gchar *path;
+
+ /* Update the "File -> New" submenu. */
+ path = "/main-menu/file-menu/new-menu";
+ menu = e_shell_window_create_new_menu (shell_window);
+ widget = e_shell_window_get_managed_widget (shell_window, path);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (widget), menu);
+ gtk_widget_show (widget);
+
+ /* Update the "New" menu tool button submenu. */
+ menu = e_shell_window_create_new_menu (shell_window);
+ widget = shell_window->priv->menu_tool_button;
+ gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (widget), menu);
+}
+
+static void
shell_window_save_switcher_style_cb (GtkRadioAction *action,
GtkRadioAction *current,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
GConfClient *client;
GtkToolbarStyle style;
@@ -67,7 +87,7 @@
}
static void
-shell_window_init_switcher_style (EShellWindow *window)
+shell_window_init_switcher_style (EShellWindow *shell_window)
{
GtkAction *action;
GConfClient *client;
@@ -100,13 +120,14 @@
g_signal_connect (
action, "changed",
- G_CALLBACK (shell_window_save_switcher_style_cb), window);
+ G_CALLBACK (shell_window_save_switcher_style_cb),
+ shell_window);
g_object_unref (client);
}
static void
-shell_window_menu_item_select_cb (EShellWindow *window,
+shell_window_menu_item_select_cb (EShellWindow *shell_window,
GtkWidget *menu_item)
{
GtkAction *action;
@@ -121,23 +142,23 @@
if (tooltip == NULL)
return;
- label = GTK_LABEL (window->priv->tooltip_label);
+ label = GTK_LABEL (shell_window->priv->tooltip_label);
gtk_label_set_text (label, tooltip);
g_free (tooltip);
- gtk_widget_show (window->priv->tooltip_label);
- gtk_widget_hide (window->priv->status_notebook);
+ gtk_widget_show (shell_window->priv->tooltip_label);
+ gtk_widget_hide (shell_window->priv->status_notebook);
}
static void
-shell_window_menu_item_deselect_cb (EShellWindow *window)
+shell_window_menu_item_deselect_cb (EShellWindow *shell_window)
{
- gtk_widget_hide (window->priv->tooltip_label);
- gtk_widget_show (window->priv->status_notebook);
+ gtk_widget_hide (shell_window->priv->tooltip_label);
+ gtk_widget_show (shell_window->priv->status_notebook);
}
static void
-shell_window_connect_proxy_cb (EShellWindow *window,
+shell_window_connect_proxy_cb (EShellWindow *shell_window,
GtkAction *action,
GtkWidget *proxy)
{
@@ -151,16 +172,18 @@
g_signal_connect_swapped (
proxy, "select",
- G_CALLBACK (shell_window_menu_item_select_cb), window);
+ G_CALLBACK (shell_window_menu_item_select_cb),
+ shell_window);
g_signal_connect_swapped (
proxy, "deselect",
- G_CALLBACK (shell_window_menu_item_deselect_cb), window);
+ G_CALLBACK (shell_window_menu_item_deselect_cb),
+ shell_window);
}
static void
shell_window_online_button_clicked_cb (EOnlineButton *button,
- EShellWindow *window)
+ EShellWindow *shell_window)
{
if (e_online_button_get_online (button))
gtk_action_activate (ACTION (WORK_OFFLINE));
@@ -169,11 +192,12 @@
}
void
-e_shell_window_private_init (EShellWindow *window)
+e_shell_window_private_init (EShellWindow *shell_window)
{
- EShellWindowPrivate *priv = window->priv;
+ EShellWindowPrivate *priv = shell_window->priv;
GHashTable *loaded_views;
GConfBridge *bridge;
+ GtkToolItem *item;
GtkWidget *container;
GtkWidget *widget;
GObject *object;
@@ -194,34 +218,42 @@
e_load_ui_definition (priv->manager, "evolution-shell.ui");
- e_shell_window_actions_init (window);
+ e_shell_window_actions_init (shell_window);
gtk_window_add_accel_group (
- GTK_WINDOW (window),
+ GTK_WINDOW (shell_window),
gtk_ui_manager_get_accel_group (priv->manager));
g_signal_connect_swapped (
priv->manager, "connect-proxy",
- G_CALLBACK (shell_window_connect_proxy_cb), window);
+ G_CALLBACK (shell_window_connect_proxy_cb), shell_window);
/* Construct window widgets. */
widget = gtk_vbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), widget);
+ gtk_container_add (GTK_CONTAINER (shell_window), widget);
gtk_widget_show (widget);
container = widget;
- widget = e_shell_window_get_managed_widget (window, "/main-menu");
+ widget = e_shell_window_get_managed_widget (
+ shell_window, "/main-menu");
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
priv->main_menu = g_object_ref (widget);
gtk_widget_show (widget);
- widget = e_shell_window_get_managed_widget (window, "/main-toolbar");
+ widget = e_shell_window_get_managed_widget (
+ shell_window, "/main-toolbar");
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
priv->main_toolbar = g_object_ref (widget);
gtk_widget_show (widget);
+ item = e_menu_tool_button_new (_("New"));
+ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (item), TRUE);
+ gtk_toolbar_insert (GTK_TOOLBAR (widget), item, 0);
+ priv->menu_tool_button = g_object_ref (item);
+ gtk_widget_show (GTK_WIDGET (item));
+
widget = gtk_hpaned_new ();
gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0);
priv->content_pane = g_object_ref (widget);
@@ -264,7 +296,8 @@
widget = e_online_button_new ();
g_signal_connect (
widget, "clicked",
- G_CALLBACK (shell_window_online_button_clicked_cb), window);
+ G_CALLBACK (shell_window_online_button_clicked_cb),
+ shell_window);
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, TRUE, 0);
priv->online_button = g_object_ref (widget);
gtk_widget_show (widget);
@@ -288,7 +321,7 @@
key = "/apps/evolution/shell/view_defaults/window";
gconf_bridge_bind_window (
- bridge, key, GTK_WINDOW (window), TRUE, FALSE);
+ bridge, key, GTK_WINDOW (shell_window), TRUE, FALSE);
object = G_OBJECT (priv->content_pane);
key = "/apps/evolution/shell/view_defaults/folder_bar/width";
@@ -310,17 +343,25 @@
key = "/apps/evolution/shell/view_defaults/toolbar_visible";
gconf_bridge_bind_property (bridge, key, object, "active");
- shell_window_init_switcher_style (window);
+ shell_window_init_switcher_style (shell_window);
+
+ /* Fine tuning. */
+
+ g_object_set (ACTION (SEND_RECEIVE), "is-important", TRUE, NULL);
+
+ g_signal_connect (
+ shell_window, "notify::current-view",
+ G_CALLBACK (shell_window_notify_current_view_cb), NULL);
- /* Initialize shell views */
+ /* Initialize shell views. */
- e_shell_window_create_shell_view_actions (window);
+ e_shell_window_create_shell_view_actions (shell_window);
}
void
-e_shell_window_private_dispose (EShellWindow *window)
+e_shell_window_private_dispose (EShellWindow *shell_window)
{
- EShellWindowPrivate *priv = window->priv;
+ EShellWindowPrivate *priv = shell_window->priv;
DISPOSE (priv->shell);
@@ -334,6 +375,7 @@
DISPOSE (priv->main_menu);
DISPOSE (priv->main_toolbar);
+ DISPOSE (priv->menu_tool_button);
DISPOSE (priv->content_pane);
DISPOSE (priv->content_notebook);
DISPOSE (priv->sidebar);
@@ -347,9 +389,9 @@
}
void
-e_shell_window_private_finalize (EShellWindow *window)
+e_shell_window_private_finalize (EShellWindow *shell_window)
{
- EShellWindowPrivate *priv = window->priv;
+ EShellWindowPrivate *priv = shell_window->priv;
g_hash_table_destroy (priv->loaded_views);
}
Modified: branches/kill-bonobo/shell/e-shell-window-private.h
==============================================================================
--- branches/kill-bonobo/shell/e-shell-window-private.h (original)
+++ branches/kill-bonobo/shell/e-shell-window-private.h Sun Aug 24 13:17:11 2008
@@ -25,21 +25,24 @@
#include <glib/gi18n.h>
-#include "e-shell.h"
-#include "e-shell-view.h"
-#include "e-shell-registry.h"
-#include "e-shell-window-actions.h"
-
-#include "e-online-button.h"
-#include "e-sidebar.h"
+#include <e-shell.h>
+#include <e-shell-view.h>
+#include <e-shell-registry.h>
+#include <e-shell-window-actions.h>
+
+#include <e-menu-tool-button.h>
+#include <e-online-button.h>
+#include <e-sidebar.h>
#define E_SHELL_WINDOW_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_SHELL_WINDOW, EShellWindowPrivate))
-/* Shorthand, requires a variable named "window". */
-#define ACTION(name) (E_SHELL_WINDOW_ACTION_##name (window))
-#define ACTION_GROUP(name) (E_SHELL_WINDOW_ACTION_GROUP_##name (window))
+/* Shorthand, requires a variable named "shell_window". */
+#define ACTION(name) \
+ (E_SHELL_WINDOW_ACTION_##name (shell_window))
+#define ACTION_GROUP(name) \
+ (E_SHELL_WINDOW_ACTION_GROUP_##name (shell_window))
/* For use in dispose() methods. */
#define DISPOSE(obj) \
@@ -71,6 +74,7 @@
GtkWidget *main_menu;
GtkWidget *main_toolbar;
+ GtkWidget *menu_tool_button;
GtkWidget *content_pane;
GtkWidget *content_notebook;
GtkWidget *sidebar;
@@ -82,20 +86,20 @@
/* Miscellaneous */
- gboolean destroyed; /* XXX Do we still need this? */
- gboolean safe_mode;
+ guint destroyed : 1; /* XXX Do we still need this? */
+ guint safe_mode : 1;
};
-void e_shell_window_private_init (EShellWindow *window);
-void e_shell_window_private_dispose (EShellWindow *window);
-void e_shell_window_private_finalize (EShellWindow *window);
+void e_shell_window_private_init (EShellWindow *shell_window);
+void e_shell_window_private_dispose (EShellWindow *shell_window);
+void e_shell_window_private_finalize (EShellWindow *shell_window);
/* Private Utilities */
-void e_shell_window_actions_init (EShellWindow *window);
-GtkWidget * e_shell_window_create_new_menu (EShellWindow *window);
+void e_shell_window_actions_init (EShellWindow *shell_window);
+GtkWidget * e_shell_window_create_new_menu (EShellWindow *shell_window);
void e_shell_window_create_shell_view_actions
- (EShellWindow *window);
+ (EShellWindow *shell_window);
G_END_DECLS
Modified: branches/kill-bonobo/shell/e-shell-window.c
==============================================================================
--- branches/kill-bonobo/shell/e-shell-window.c (original)
+++ branches/kill-bonobo/shell/e-shell-window.c Sun Aug 24 13:17:11 2008
@@ -18,26 +18,20 @@
* Boston, MA 02110-1301, USA.
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
#include "e-shell-window-private.h"
-#include "e-util/e-plugin-ui.h"
-#include "e-util/e-util-private.h"
-#include "e-util/gconf-bridge.h"
-#include "widgets/misc/e-online-button.h"
-
-#include "e-sidebar.h"
-#include "es-menu.h"
-#include "es-event.h"
-
+#include <string.h>
#include <glib/gi18n.h>
-
#include <gconf/gconf-client.h>
-#include <string.h>
+#include <e-sidebar.h>
+#include <es-event.h>
+#include <es-menu.h>
+
+#include <e-util/e-plugin-ui.h>
+#include <e-util/e-util-private.h>
+#include <e-util/gconf-bridge.h>
+#include <widgets/misc/e-online-button.h>
enum {
PROP_0,
@@ -49,11 +43,41 @@
static gpointer parent_class;
static void
+shell_window_online_mode_notify_cb (EShell *shell,
+ GParamSpec *pspec,
+ EShellWindow *shell_window)
+{
+ GtkAction *action;
+ EOnlineButton *online_button;
+ gboolean online_mode;
+
+ online_mode = e_shell_get_online_mode (shell);
+
+ action = ACTION (WORK_OFFLINE);
+ gtk_action_set_sensitive (action, TRUE);
+ gtk_action_set_visible (action, online_mode);
+
+ action = ACTION (WORK_ONLINE);
+ gtk_action_set_sensitive (action, TRUE);
+ gtk_action_set_visible (action, !online_mode);
+
+ online_button = E_ONLINE_BUTTON (shell_window->priv->online_button);
+ e_online_button_set_online (online_button, online_mode);
+}
+
+static void
shell_window_set_shell (EShellWindow *shell_window,
EShell *shell)
{
g_return_if_fail (shell_window->priv->shell == NULL);
shell_window->priv->shell = g_object_ref (shell);
+
+ g_signal_connect (
+ shell, "notify::online-mode",
+ G_CALLBACK (shell_window_online_mode_notify_cb),
+ shell_window);
+
+ g_object_notify (G_OBJECT (shell), "online-mode");
}
static void
@@ -226,8 +250,8 @@
gboolean safe_mode)
{
return g_object_new (
- E_TYPE_SHELL_WINDOW, "shell", shell,
- "safe-mode", safe_mode, NULL);
+ E_TYPE_SHELL_WINDOW,
+ "shell", shell, "safe-mode", safe_mode, NULL);
}
EShell *
@@ -372,6 +396,8 @@
guint n_entries)
{
GtkActionGroup *action_group;
+ GtkAccelGroup *accel_group;
+ GtkUIManager *manager;
guint ii;
g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
@@ -379,6 +405,8 @@
g_return_if_fail (entries != NULL);
action_group = shell_window->priv->new_item_actions;
+ manager = e_shell_window_get_ui_manager (shell_window);
+ accel_group = gtk_ui_manager_get_accel_group (manager);
module_name = g_intern_string (module_name);
gtk_action_group_add_actions (
@@ -397,10 +425,15 @@
action = gtk_action_group_get_action (
action_group, action_name);
+ gtk_action_set_accel_group (action, accel_group);
+
g_object_set_data (
G_OBJECT (action),
"module-name", (gpointer) module_name);
}
+
+ /* Force a rebuild of the "New" menu. */
+ g_object_notify (G_OBJECT (shell_window), "current-view");
}
void
@@ -410,6 +443,8 @@
guint n_entries)
{
GtkActionGroup *action_group;
+ GtkAccelGroup *accel_group;
+ GtkUIManager *manager;
guint ii;
g_return_if_fail (E_IS_SHELL_WINDOW (shell_window));
@@ -417,6 +452,8 @@
g_return_if_fail (entries != NULL);
action_group = shell_window->priv->new_source_actions;
+ manager = e_shell_window_get_ui_manager (shell_window);
+ accel_group = gtk_ui_manager_get_accel_group (manager);
module_name = g_intern_string (module_name);
gtk_action_group_add_actions (
@@ -435,8 +472,13 @@
action = gtk_action_group_get_action (
action_group, action_name);
+ gtk_action_set_accel_group (action, accel_group);
+
g_object_set_data (
G_OBJECT (action),
"module-name", (gpointer) module_name);
}
+
+ /* Force a rebuild of the "New" menu. */
+ g_object_notify (G_OBJECT (shell_window), "current-view");
}
Modified: branches/kill-bonobo/shell/e-shell-window.h
==============================================================================
--- branches/kill-bonobo/shell/e-shell-window.h (original)
+++ branches/kill-bonobo/shell/e-shell-window.h Sun Aug 24 13:17:11 2008
@@ -77,7 +77,7 @@
void e_shell_window_set_safe_mode (EShellWindow *shell_window,
gboolean safe_mode);
-/* These should be called from the shell module's window_created() method. */
+/* These should be called from the shell module's window_created() handler. */
void e_shell_window_register_new_item_actions
(EShellWindow *shell_window,
Modified: branches/kill-bonobo/shell/e-shell.c
==============================================================================
--- branches/kill-bonobo/shell/e-shell.c (original)
+++ branches/kill-bonobo/shell/e-shell.c Sun Aug 24 13:17:11 2008
@@ -39,13 +39,13 @@
GList *active_windows;
EShellLineStatus line_status;
- guint online : 1;
- guint safe_mode : 1;
+ guint online_mode : 1;
+ guint safe_mode : 1;
};
enum {
PROP_0,
- PROP_ONLINE
+ PROP_ONLINE_MODE
};
enum {
@@ -145,8 +145,8 @@
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_ONLINE:
- e_shell_set_online (
+ case PROP_ONLINE_MODE:
+ e_shell_set_online_mode (
E_SHELL (object),
g_value_get_boolean (value));
return;
@@ -162,9 +162,9 @@
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_ONLINE:
+ case PROP_ONLINE_MODE:
g_value_set_boolean (
- value, e_shell_get_online (
+ value, e_shell_get_online_mode (
E_SHELL (object)));
return;
}
@@ -202,10 +202,10 @@
g_object_class_install_property (
object_class,
- PROP_ONLINE,
+ PROP_ONLINE_MODE,
g_param_spec_boolean (
- "online",
- _("Online"),
+ "online-mode",
+ _("Online Mode"),
_("Whether the shell is online"),
TRUE,
G_PARAM_READWRITE |
@@ -290,9 +290,9 @@
}
EShell *
-e_shell_new (gboolean online)
+e_shell_new (gboolean online_mode)
{
- return g_object_new (E_TYPE_SHELL, "online", online, NULL);
+ return g_object_new (E_TYPE_SHELL, "online-mode", online_mode, NULL);
}
GtkWidget *
@@ -349,22 +349,22 @@
}
gboolean
-e_shell_get_online (EShell *shell)
+e_shell_get_online_mode (EShell *shell)
{
g_return_val_if_fail (E_IS_SHELL (shell), FALSE);
- return shell->priv->online;
+ return shell->priv->online_mode;
}
void
-e_shell_set_online (EShell *shell,
- gboolean online)
+e_shell_set_online_mode (EShell *shell,
+ gboolean online_mode)
{
g_return_if_fail (E_IS_SHELL (shell));
- shell->priv->online = online;
+ shell->priv->online_mode = online_mode;
- g_object_notify (G_OBJECT (shell), "online");
+ g_object_notify (G_OBJECT (shell), "online-mode");
}
EShellLineStatus
Modified: branches/kill-bonobo/shell/e-shell.h
==============================================================================
--- branches/kill-bonobo/shell/e-shell.h (original)
+++ branches/kill-bonobo/shell/e-shell.h Sun Aug 24 13:17:11 2008
@@ -49,7 +49,6 @@
typedef struct _EShellPrivate EShellPrivate;
typedef enum _EShellLineStatus EShellLineStatus;
-typedef enum _EShellStartupLineMode EShellStartupLineMode;
struct _EShell {
GObject parent;
@@ -67,12 +66,6 @@
E_SHELL_LINE_STATUS_FORCED_OFFLINE
};
-enum _EShellStartupLineMode {
- E_SHELL_STARTUP_LINE_MODE_CONFIG,
- E_SHELL_STARTUP_LINE_MODE_ONLINE,
- E_SHELL_STARTUP_LINE_MODE_OFFLINE
-};
-
GType e_shell_get_type (void);
EShell * e_shell_new (gboolean online);
GtkWidget * e_shell_create_window (EShell *shell);
@@ -80,9 +73,9 @@
const gchar *uri);
void e_shell_send_receive (EShell *shell,
GtkWindow *parent);
-gboolean e_shell_get_online (EShell *shell);
-void e_shell_set_online (EShell *shell,
- gboolean online);
+gboolean e_shell_get_online_mode (EShell *shell);
+void e_shell_set_online_mode (EShell *shell,
+ gboolean online_mode);
EShellLineStatus
e_shell_get_line_status (EShell *shell);
void e_shell_set_line_status (EShell *shell,
Modified: branches/kill-bonobo/shell/main.c
==============================================================================
--- branches/kill-bonobo/shell/main.c (original)
+++ branches/kill-bonobo/shell/main.c Sun Aug 24 13:17:11 2008
@@ -282,23 +282,12 @@
static gboolean
idle_cb (gchar **uris)
{
- EShellStartupLineMode startup_line_mode;
-
g_return_val_if_fail (uris == NULL || g_strv_length (uris) > 0, FALSE);
#ifdef KILL_PROCESS_CMD
kill_old_dataserver ();
#endif
- if (! start_online && ! start_offline)
- startup_line_mode = E_SHELL_STARTUP_LINE_MODE_CONFIG;
- else if (start_online)
- startup_line_mode = E_SHELL_STARTUP_LINE_MODE_ONLINE;
- else
- startup_line_mode = E_SHELL_STARTUP_LINE_MODE_OFFLINE;
-
- /* FIXME Do something with startup_line_mode. */
-
if (uris != NULL)
open_uris (uris);
else {
@@ -486,16 +475,16 @@
EShell *shell;
GConfClient *conf_client;
GnomeClient *master_client;
- gboolean online = TRUE;
+ gboolean online_mode = TRUE;
GError *error = NULL;
conf_client = gconf_client_get_default ();
master_client = gnome_master_client ();
if (start_online)
- online = TRUE;
+ online_mode = TRUE;
else if (start_offline)
- online = FALSE;
+ online_mode = FALSE;
else {
const gchar *key;
gboolean value;
@@ -503,14 +492,14 @@
key = "/apps/evolution/shell/start_offline";
value = gconf_client_get_bool (conf_client, key, &error);
if (error == NULL)
- online = !value;
+ online_mode = !value;
else {
g_warning ("%s", error->message);
g_error_free (error);
}
}
- shell = e_shell_new (online);
+ shell = e_shell_new (online_mode);
g_signal_connect (
shell, "window-destroyed",
Modified: branches/kill-bonobo/shell/test/e-test-shell-module.c
==============================================================================
--- branches/kill-bonobo/shell/test/e-test-shell-module.c (original)
+++ branches/kill-bonobo/shell/test/e-test-shell-module.c Sun Aug 24 13:17:11 2008
@@ -18,6 +18,8 @@
* Boston, MA 02110-1301, USA.
*/
+#include <glib/gi18n.h>
+
#include <e-shell.h>
#include <e-shell-module.h>
#include <e-shell-window.h>
@@ -32,6 +34,40 @@
/* Module Entry Point */
void e_shell_module_init (GTypeModule *module);
+static void
+action_new_test_item_cb (GtkAction *action,
+ EShellWindow *shell_window)
+{
+ g_debug ("%s", G_STRFUNC);
+}
+
+static void
+action_new_test_source_cb (GtkAction *action,
+ EShellWindow *shell_window)
+{
+ g_debug ("%s", G_STRFUNC);
+}
+
+static GtkActionEntry item_entries[] = {
+
+ { "new-test-item",
+ "document-new",
+ N_("_Test Item"),
+ NULL,
+ N_("Create a new test item"),
+ G_CALLBACK (action_new_test_item_cb) }
+};
+
+static GtkActionEntry source_entries[] = {
+
+ { "new-test-source",
+ "folder-new",
+ N_("Test _Source"),
+ NULL,
+ N_("Create a new test source"),
+ G_CALLBACK (action_new_test_source_cb) }
+};
+
static gboolean
test_module_is_busy (EShellModule *shell_module)
{
@@ -68,7 +104,19 @@
test_module_window_created (EShellModule *shell_module,
EShellWindow *shell_window)
{
+ const gchar *module_name;
+
g_debug ("%s (window=%p)", G_STRFUNC, shell_window);
+
+ module_name = G_TYPE_MODULE (shell_module)->name;
+
+ e_shell_window_register_new_item_actions (
+ shell_window, module_name,
+ item_entries, G_N_ELEMENTS (item_entries));
+
+ e_shell_window_register_new_source_actions (
+ shell_window, module_name,
+ source_entries, G_N_ELEMENTS (source_entries));
}
static void
Modified: branches/kill-bonobo/widgets/misc/Makefile.am
==============================================================================
--- branches/kill-bonobo/widgets/misc/Makefile.am (original)
+++ branches/kill-bonobo/widgets/misc/Makefile.am Sun Aug 24 13:17:11 2008
@@ -47,7 +47,6 @@
e-cell-renderer-combo.h \
e-charset-picker.h \
e-combo-cell-editable.h \
- e-combo-button.h \
e-dateedit.h \
e-dropdown-button.h \
e-expander.h \
@@ -55,6 +54,7 @@
e-image-chooser.h \
e-info-label.h \
e-map.h \
+ e-menu-tool-button.h \
e-preferences-window.h \
e-online-button.h \
e-search-bar.h \
@@ -94,7 +94,6 @@
e-cell-renderer-combo.c \
e-charset-picker.c \
e-combo-cell-editable.c \
- e-combo-button.c \
e-dateedit.c \
e-dropdown-button.c \
e-expander.c \
@@ -102,6 +101,7 @@
e-image-chooser.c \
e-info-label.c \
e-map.c \
+ e-menu-tool-button.c \
e-preferences-window.c \
e-online-button.c \
e-search-bar.c \
Added: branches/kill-bonobo/widgets/misc/e-menu-tool-button.c
==============================================================================
--- (empty file)
+++ branches/kill-bonobo/widgets/misc/e-menu-tool-button.c Sun Aug 24 13:17:11 2008
@@ -0,0 +1,148 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/* e-menu-tool-button.c
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "e-menu-tool-button.h"
+
+static gpointer parent_class;
+
+static GtkWidget *
+menu_tool_button_clone_image (GtkWidget *source)
+{
+ GtkIconSize size;
+ GtkImageType image_type;
+ const gchar *icon_name;
+
+ /* XXX This isn't general purpose because it requires that the
+ * source image be using a named icon. Somewhat surprised
+ * GTK+ doesn't offer something like this. */
+ image_type = gtk_image_get_storage_type (GTK_IMAGE (source));
+ g_return_val_if_fail (image_type == GTK_IMAGE_ICON_NAME, NULL);
+ gtk_image_get_icon_name (GTK_IMAGE (source), &icon_name, &size);
+
+ return gtk_image_new_from_icon_name (icon_name, size);
+}
+
+static GtkMenuItem *
+menu_tool_button_get_first_menu_item (GtkMenuToolButton *menu_tool_button)
+{
+ GtkWidget *menu;
+ GList *children;
+
+ menu = gtk_menu_tool_button_get_menu (menu_tool_button);
+ if (!GTK_IS_MENU (menu))
+ return NULL;
+
+ /* XXX GTK+ 2.12 provides no accessor function. */
+ children = GTK_MENU_SHELL (menu)->children;
+ if (children == NULL || children->next == NULL)
+ return NULL;
+
+ /* Return the /second/ menu item, which turns out to be the first
+ * visible item. The first menu item is some kind of placeholder? */
+ return GTK_MENU_ITEM (children->next->data);
+}
+
+static void
+menu_tool_button_update_icon (GtkToolButton *tool_button)
+{
+ GtkMenuItem *menu_item;
+ GtkMenuToolButton *menu_tool_button;
+ GtkImageMenuItem *image_menu_item;
+ GtkWidget *image;
+
+ menu_tool_button = GTK_MENU_TOOL_BUTTON (tool_button);
+ menu_item = menu_tool_button_get_first_menu_item (menu_tool_button);
+ if (!GTK_IS_IMAGE_MENU_ITEM (menu_item))
+ return;
+
+ image_menu_item = GTK_IMAGE_MENU_ITEM (menu_item);
+ image = gtk_image_menu_item_get_image (image_menu_item);
+ if (!GTK_IS_IMAGE (image))
+ return;
+
+ image = menu_tool_button_clone_image (image);
+ gtk_tool_button_set_icon_widget (tool_button, image);
+ gtk_widget_show (image);
+}
+
+static void
+menu_tool_button_clicked (GtkToolButton *tool_button)
+{
+ GtkMenuItem *menu_item;
+ GtkMenuToolButton *menu_tool_button;
+
+ menu_tool_button = GTK_MENU_TOOL_BUTTON (tool_button);
+ menu_item = menu_tool_button_get_first_menu_item (menu_tool_button);
+
+ if (GTK_IS_MENU_ITEM (menu_item))
+ gtk_menu_item_activate (menu_item);
+}
+
+static void
+menu_tool_button_class_init (EMenuToolButtonClass *class)
+{
+ GtkToolButtonClass *tool_button_class;
+
+ parent_class = g_type_class_peek_parent (class);
+
+ tool_button_class = GTK_TOOL_BUTTON_CLASS (class);
+ tool_button_class->clicked = menu_tool_button_clicked;
+}
+
+static void
+menu_tool_button_init (EMenuToolButton *button)
+{
+ g_signal_connect (
+ button, "notify::menu",
+ G_CALLBACK (menu_tool_button_update_icon), NULL);
+}
+
+GType
+e_menu_tool_button_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0)) {
+ const GTypeInfo type_info = {
+ sizeof (EMenuToolButtonClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) menu_tool_button_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EMenuToolButton),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) menu_tool_button_init,
+ NULL /* value_table */
+ };
+
+ type = g_type_register_static (
+ GTK_TYPE_MENU_TOOL_BUTTON, "EMenuToolButton",
+ &type_info, 0);
+ }
+
+ return type;
+}
+
+GtkToolItem *
+e_menu_tool_button_new (const gchar *label)
+{
+ return g_object_new (E_TYPE_MENU_TOOL_BUTTON, "label", label, NULL);
+}
Added: branches/kill-bonobo/widgets/misc/e-menu-tool-button.h
==============================================================================
--- (empty file)
+++ branches/kill-bonobo/widgets/misc/e-menu-tool-button.h Sun Aug 24 13:17:11 2008
@@ -0,0 +1,67 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/* e-menu-tool-button.h
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/* EMenuToolButton is a variation of GtkMenuToolButton where the
+ * button icon always reflects the first menu item, and clicking
+ * the button activates the first menu item. */
+
+#ifndef E_MENU_TOOL_BUTTON_H
+#define E_MENU_TOOL_BUTTON_H
+
+#include <gtk/gtk.h>
+
+/* Standard GObject macros */
+#define E_TYPE_MENU_TOOL_BUTTON \
+ (e_menu_tool_button_get_type ())
+#define E_MENU_TOOL_BUTTON(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_MENU_TOOL_BUTTON, EMenuToolButton))
+#define E_MENU_TOOL_BUTTON_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_MENU_TOOL_BUTTON, EMenuToolButtonClass))
+#define E_IS_MENU_TOOL_BUTTON(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_MENU_TOOL_BUTTON))
+#define E_IS_MENU_TOOL_BUTTON_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_MENU_TOOL_BUTTON))
+#define E_MENU_TOOL_BUTTON_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_MENU_TOOL_BUTTON, EMenuToolButtonClass))
+
+G_BEGIN_DECLS
+
+typedef struct _EMenuToolButton EMenuToolButton;
+typedef struct _EMenuToolButtonClass EMenuToolButtonClass;
+
+struct _EMenuToolButton {
+ GtkMenuToolButton parent;
+};
+
+struct _EMenuToolButtonClass {
+ GtkMenuToolButtonClass parent_class;
+};
+
+GType e_menu_tool_button_get_type (void);
+GtkToolItem * e_menu_tool_button_new (const gchar *label);
+
+G_END_DECLS
+
+#endif /* E_MENU_TOOL_BUTTON_H */
Modified: branches/kill-bonobo/widgets/misc/e-preferences-window.c
==============================================================================
--- branches/kill-bonobo/widgets/misc/e-preferences-window.c (original)
+++ branches/kill-bonobo/widgets/misc/e-preferences-window.c Sun Aug 24 13:17:11 2008
@@ -20,7 +20,7 @@
#include "e-preferences-window.h"
-#include <libgnome/gnome-help.h>
+#include <e-util/e-util.h>
#define SWITCH_PAGE_INTERVAL 250
@@ -162,16 +162,9 @@
preferences_window_response (GtkDialog *dialog,
gint response_id)
{
- GError *error = NULL;
-
switch (response_id) {
case GTK_RESPONSE_HELP:
- gnome_help_display (
- "evolution.xml", "config-prefs", &error);
- if (error != NULL) {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ e_display_help (GTK_WINDOW (dialog), "config-prefs");
break;
case GTK_RESPONSE_CLOSE:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]