aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2000-07-23 19:00:37 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2000-07-23 19:00:37 +0800
commit130d4fbee5807e4bcb43e190301eb161ce308bec (patch)
tree72feeee5745c6b290481cb6c4554354c68dce1b9
parent8941f8cb6d9a70cc0f5f6df5418ea6dde1270d62 (diff)
downloadgsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar.gz
gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar.zst
gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.zip
Change EShellView so that it creates the menus with BonoboUIHandler
directly instead of using the GnomeUIInfo convertion functions, that were not doing the right thing by translating the path as well (and as a consequence, the components were not able to set up their own menu items if the locale was not the default one). svn path=/trunk/; revision=4278
-rw-r--r--shell/ChangeLog18
-rw-r--r--shell/e-shell-view-menu.c377
2 files changed, 252 insertions, 143 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index d2186f0230..b43c61a1e4 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,21 @@
+2000-07-23 Ettore Perazzoli <ettore@helixcode.com>
+
+ * e-shell-view-menu.c: Converted to use `bonobo_ui_handler_*()'
+ stuff directly, instead of converting from GnomeUIInfo.
+ (command_quit): Update arg types for BonoboUIHandler.
+ (command_run_bugbuddy): Likewise.
+ (command_about_box): Likewise.
+ (command_new_task): Removed.
+ (command_new_journal_entry): Removed.
+ (menu_create_file_new): New.
+ (menu_create_file): New.
+ (menu_create_edit): New.
+ (menu_create_view): New.
+ (menu_create_tools): New.
+ (menu_create_actions): New.
+ (e_shell_view_menu_setup): Create menus using them instead of
+ converting from GnomeUIInfo.
+
2000-07-22 Ettore Perazzoli <ettore@helixcode.com>
* e-shell.c (e_shell_construct): Don't unref NULL shortcuts, you
diff --git a/shell/e-shell-view-menu.c b/shell/e-shell-view-menu.c
index 42f6db342b..905d1d834b 100644
--- a/shell/e-shell-view-menu.c
+++ b/shell/e-shell-view-menu.c
@@ -79,8 +79,9 @@ folder_bar_mode_changed_cb (EShellView *shell_view,
/* Command callbacks. */
static void
-command_quit (GtkWidget *widget,
- gpointer data)
+command_quit (BonoboUIHandler *uih,
+ void *data,
+ const char *path)
{
EShellView *shell_view;
EShell *shell;
@@ -92,7 +93,9 @@ command_quit (GtkWidget *widget,
}
static void
-command_run_bugbuddy (GtkWidget *menuitem, gpointer data)
+command_run_bugbuddy (BonoboUIHandler *uih,
+ void *data,
+ const char *path)
{
int pid;
char *args[] = {
@@ -124,7 +127,9 @@ zero_pointer(GtkObject *object, void **pointer)
}
static void
-command_about_box (GtkWidget *menuitem, gpointer data)
+command_about_box (BonoboUIHandler *uih,
+ void *data,
+ const char *path)
{
static GtkWidget *about_box = NULL;
@@ -171,7 +176,9 @@ command_about_box (GtkWidget *menuitem, gpointer data)
}
static void
-command_help (BonoboUIHandler *uih, void *data, const char *path)
+command_help (BonoboUIHandler *uih,
+ void *data,
+ const char *path)
{
char *url;
@@ -355,7 +362,7 @@ command_create_folder (BonoboUIHandler *uih,
#define DEFINE_UNIMPLEMENTED(func) \
static void \
-func (GtkWidget *widget, gpointer data) \
+func (BonoboUIHandler *uih, void *data, const char *path) \
{ \
g_warning ("EShellView: %s: not implemented.", __FUNCTION__); \
} \
@@ -363,144 +370,231 @@ func (GtkWidget *widget, gpointer data) \
DEFINE_UNIMPLEMENTED (command_new_shortcut)
DEFINE_UNIMPLEMENTED (command_new_mail_message)
DEFINE_UNIMPLEMENTED (command_new_contact)
-DEFINE_UNIMPLEMENTED (command_new_task)
DEFINE_UNIMPLEMENTED (command_new_task_request)
-DEFINE_UNIMPLEMENTED (command_new_journal_entry)
-/*
- * FIXME
- *
- * This menu is actually pretty dynamic, it changes de values of various entries
- * depending on the current data being displayed
- *
- * This is currently only a placeholder. We need to figure what to do about this.
- */
-static GnomeUIInfo menu_file_new [] = {
-
- { GNOME_APP_UI_ITEM, N_("View"),
- NULL, command_new_view, NULL,
- NULL, 0, 0, 'v', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
-
- { GNOME_APP_UI_ITEM, N_("_Folder"),
- NULL, command_new_folder, NULL,
- NULL, 0, 0, 'f', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
-
- { GNOME_APP_UI_ITEM, N_("Evolution _Bar Shortcut"),
- NULL, command_new_shortcut, NULL,
- NULL, 0, 0, 's', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
-
- GNOMEUIINFO_SEPARATOR,
-
- { GNOME_APP_UI_ITEM, N_("_Mail message (FIXME)"),
- N_("Composes a new mail message"), command_new_mail_message, NULL,
- NULL, 0, 0, 'n', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- { GNOME_APP_UI_ITEM, N_("_Appointment (FIXME)"),
- N_("Composes a new mail message"), command_new_mail_message, NULL,
- NULL, 0, 0, 'a', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- { GNOME_APP_UI_ITEM, N_("_Contact (FIXME)"), NULL,
- command_new_contact, NULL,
- NULL, 0, 0, 'c', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- { GNOME_APP_UI_ITEM, N_("_Task (FIXME)"), NULL,
- command_new_task, NULL,
- NULL, 0, 0, 'k', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- { GNOME_APP_UI_ITEM, N_("Task _Request (FIXME)"), NULL,
- command_new_task_request, NULL,
- NULL, 0, 0, 'u', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- { GNOME_APP_UI_ITEM, N_("_Journal Entry (FIXME)"), NULL,
- command_new_journal_entry, NULL,
- NULL, 0, 0, 'j', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
-
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu_file [] = {
- GNOMEUIINFO_SUBTREE_STOCK (N_("_New"), menu_file_new, GNOME_STOCK_MENU_NEW),
-
- GNOMEUIINFO_SEPARATOR,
-
- GNOMEUIINFO_ITEM_NONE (N_("_Go to folder..."), N_("Display a different folder"),
- command_goto_folder),
- GNOMEUIINFO_ITEM_NONE (N_("_Create new folder..."), N_("Create a new folder"),
- command_create_folder),
-
- GNOMEUIINFO_SEPARATOR,
+static void
+menu_create_file_new (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/File/New",
+ _("_New"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/View",
+ _("_View"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 'v', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_view, data);
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/View",
+ _("_Folder"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 'f', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_folder, data);
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/Evolution bar shortcut",
+ _("Evolution bar _shortcut"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 's', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_shortcut, data);
+
+ bonobo_ui_handler_menu_new_separator (uih, "/File/New/Separator1", -1);
- GNOMEUIINFO_MENU_EXIT_ITEM(command_quit, NULL),
-
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu_edit [] = {
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu_view [] = {
- { GNOME_APP_UI_TOGGLEITEM, N_("Show _shortcut bar"),
- N_("Show the shortcut bar"), command_toggle_shortcut_bar, NULL,
- NULL, 0, 0, 'n', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- { GNOME_APP_UI_TOGGLEITEM, N_("Show _folder bar"),
- N_("Show the folder bar"), command_toggle_folder_bar, NULL,
- NULL, 0, 0, 'n', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu_tools [] = {
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu_actions [] = {
- GNOMEUIINFO_END
-};
-
-static GnomeUIInfo menu_help [] = {
- GNOMEUIINFO_MENU_ABOUT_ITEM(command_about_box, NULL),
-
- GNOMEUIINFO_SEPARATOR,
- { GNOME_APP_UI_ITEM, N_("Help _Index"), NULL,
- command_help, "index.html",
- NULL, 0, 0, 0, 0 },
- { GNOME_APP_UI_ITEM, N_("Getting _Started"), NULL,
- command_help, "usage-mainwindow.html",
- NULL, 0, 0, 0, 0 },
- { GNOME_APP_UI_ITEM, N_("Using the _Mailer"), NULL,
- command_help, "usage-mail.html",
- NULL, 0, 0, 0, 0 },
- { GNOME_APP_UI_ITEM, N_("Using the _Calendar"), NULL,
- command_help, "usage-calendar.html",
- NULL, 0, 0, 0, 0 },
- { GNOME_APP_UI_ITEM, N_("Using the Cont_act Manager"), NULL,
- command_help, "usage-contact.html",
- NULL, 0, 0, 0, 0 },
-
- GNOMEUIINFO_SEPARATOR,
- { GNOME_APP_UI_ITEM, N_("_Submit bug report"),
- N_("Submit bug-report via bug-buddy"), command_run_bugbuddy, NULL,
- NULL, 0, 0, 'n', GDK_CONTROL_MASK | GDK_SHIFT_MASK },
- GNOMEUIINFO_END
-};
-
-
-/* Menu bar. */
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/Mail message",
+ _("_Mail message (FIXME)"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 'm', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_mail_message, data);
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/Appointment",
+ _("_Appointment (FIXME)"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 'a', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_shortcut, data);
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/Contact",
+ _("_Contact (FIXME)"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 'c', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_contact, data);
+ bonobo_ui_handler_menu_new_item (uih, "/File/New/Contact",
+ _("_Task (FIXME)"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 't', GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ command_new_task_request, data);
+}
-static GnomeUIInfo menu [] = {
- GNOMEUIINFO_MENU_FILE_TREE (menu_file),
- GNOMEUIINFO_MENU_EDIT_TREE (menu_edit),
- GNOMEUIINFO_MENU_VIEW_TREE (menu_view),
+static void
+menu_create_file (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/File",
+ _("_File"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+
+ menu_create_file_new (uih, data);
+
+ bonobo_ui_handler_menu_new_separator (uih, "/File/Separator1", -1);
+
+ bonobo_ui_handler_menu_new_item (uih, "/File/Go to folder",
+ _("_Go to folder..."),
+ _("Display a different folder"),
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_goto_folder, data);
+
+ bonobo_ui_handler_menu_new_item (uih, "/File/Create new folder",
+ _("_Create new folder..."),
+ _("Create a new folder"),
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_create_folder, data);
+
+ bonobo_ui_handler_menu_new_separator (uih, "/File/Separator2", -1);
+
+ bonobo_ui_handler_menu_new_item (uih, "/File/Exit",
+ _("E_xit..."),
+ _("Create a new folder"),
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_STOCK,
+ GNOME_STOCK_MENU_EXIT,
+ 0, 0,
+ command_quit, data);
+}
- /* FIXME: add Favorites here */
+static void
+menu_create_edit (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/Edit",
+ _("_Edit"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+}
- { GNOME_APP_UI_SUBTREE, N_("_Tools"), NULL, menu_tools },
- { GNOME_APP_UI_SUBTREE, N_("_Actions"), NULL, menu_actions },
+static void
+menu_create_view (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/View",
+ _("_View"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+
+ bonobo_ui_handler_menu_new_toggleitem (uih, "/View/Show shortcut bar",
+ _("Show _shortcut bar"),
+ _("Show the shortcut bar"),
+ -1,
+ 0, 0,
+ command_toggle_shortcut_bar, data);
+ bonobo_ui_handler_menu_new_toggleitem (uih, "/View/Show folder bar",
+ _("Show _folder bar"),
+ _("Show the folder bar"),
+ -1,
+ 0, 0,
+ command_toggle_folder_bar, data);
+}
- GNOMEUIINFO_END
-};
+static void
+menu_create_tools (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/Tools",
+ _("_Tools"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+}
-static GnomeUIInfo menu_2 [] = {
- GNOMEUIINFO_MENU_HELP_TREE (menu_help),
+static void
+menu_create_actions (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/Actions",
+ _("_Actions"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+}
- GNOMEUIINFO_END
-};
+static void
+menu_create_help (BonoboUIHandler *uih,
+ void *data)
+{
+ bonobo_ui_handler_menu_new_subtree (uih, "/Help",
+ _("_Help"),
+ NULL, -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0);
+
+ bonobo_ui_handler_menu_new_item (uih, "/Help/Help index",
+ _("Help _index"),
+ NULL,
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_help, "index.html");
+ bonobo_ui_handler_menu_new_item (uih, "/Help/Getting started",
+ _("Getting _started"),
+ NULL,
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_help, "usage-mainwindow.html");
+ bonobo_ui_handler_menu_new_item (uih, "/Help/Using the mailer",
+ _("Using the _mailer"),
+ NULL,
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_help, "usage-mail.html");
+ bonobo_ui_handler_menu_new_item (uih, "/Help/Using the calendar",
+ _("Using the _calendar"),
+ NULL,
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_help, "usage-calendar.html");
+ bonobo_ui_handler_menu_new_item (uih, "/Help/Using the contact manager",
+ _("Using the c_ontact manager"),
+ NULL,
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_help, "usage-contact.html");
+
+ bonobo_ui_handler_menu_new_separator (uih, "/Help/Separator1", -1);
+
+ bonobo_ui_handler_menu_new_item (uih, "/Help/Submit bug report",
+ _("_Submit bug report"),
+ _("Submit bug report using Bug Buddy"),
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_run_bugbuddy, data);
+
+ bonobo_ui_handler_menu_new_separator (uih, "/Help/Separator2", -1);
+
+ bonobo_ui_handler_menu_new_item (uih, "/Help/About Evolution",
+ _("_About Evolution..."),
+ _("Show information about Evolution"),
+ -1,
+ BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
+ 0, 0,
+ command_about_box, data);
+}
/* FIXME these must match the corresponding setup in the GnomeUIInfo and this sucks sucks. */
@@ -510,7 +604,6 @@ static GnomeUIInfo menu_2 [] = {
void
e_shell_view_menu_setup (EShellView *shell_view)
{
- BonoboUIHandlerMenuItem *list;
BonoboUIHandler *uih;
g_return_if_fail (shell_view != NULL);
@@ -518,14 +611,12 @@ e_shell_view_menu_setup (EShellView *shell_view)
uih = e_shell_view_get_bonobo_ui_handler (shell_view);
- list = bonobo_ui_handler_menu_parse_uiinfo_list_with_data (menu, shell_view);
- bonobo_ui_handler_menu_add_list (uih, "/", list);
- bonobo_ui_handler_menu_free_list (list);
-
- /* Parse the Help menu without bashing over the user_data */
- list = bonobo_ui_handler_menu_parse_uiinfo_list (menu_2);
- bonobo_ui_handler_menu_add_list (uih, "/", list);
- bonobo_ui_handler_menu_free_list (list);
+ menu_create_file (uih, shell_view);
+ menu_create_edit (uih, shell_view);
+ menu_create_view (uih, shell_view);
+ menu_create_tools (uih, shell_view);
+ menu_create_actions (uih, shell_view);
+ menu_create_help (uih, shell_view);
gtk_signal_connect (GTK_OBJECT (shell_view), "shortcut_bar_mode_changed",
GTK_SIGNAL_FUNC (shortcut_bar_mode_changed_cb),