diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2000-07-23 19:00:37 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2000-07-23 19:00:37 +0800 |
commit | 130d4fbee5807e4bcb43e190301eb161ce308bec (patch) | |
tree | 72feeee5745c6b290481cb6c4554354c68dce1b9 /shell/e-shell-view-menu.c | |
parent | 8941f8cb6d9a70cc0f5f6df5418ea6dde1270d62 (diff) | |
download | gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar.gz gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar.bz2 gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar.lz gsoc2013-evolution-130d4fbee5807e4bcb43e190301eb161ce308bec.tar.xz 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
Diffstat (limited to 'shell/e-shell-view-menu.c')
-rw-r--r-- | shell/e-shell-view-menu.c | 377 |
1 files changed, 234 insertions, 143 deletions
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), |