From a6cf980daf147050077fd057c9fefcc3e51400f4 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sun, 8 May 2011 08:20:11 +0000 Subject: [PATCH] migration to gtk3 (main menu) --- po/Makefile.in | 6 +++--- src/ui.c | 59 +++++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/po/Makefile.in b/po/Makefile.in index 8ca8340..120519a 100644 --- a/po/Makefile.in +++ b/po/Makefile.in @@ -34,12 +34,12 @@ INSTALL_DATA = ${INSTALL} -m 644 # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, -# ${SHELL} /mnt/nfs4/users/jporsini/work/wpitchoune.net/svnpub/psensor/trunk/install-sh does not start with $(SHELL), so we add it. +# ${SHELL} /home/jporsini/work/wpitchoune.net/svnpub/psensor/trunk/install-sh does not start with $(SHELL), so we add it. # In automake >= 1.10, /bin/mkdir -p is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. -mkinstalldirs = $(SHELL) ${SHELL} /mnt/nfs4/users/jporsini/work/wpitchoune.net/svnpub/psensor/trunk/install-sh -d -install_sh = $(SHELL) ${SHELL} /mnt/nfs4/users/jporsini/work/wpitchoune.net/svnpub/psensor/trunk/install-sh +mkinstalldirs = $(SHELL) ${SHELL} /home/jporsini/work/wpitchoune.net/svnpub/psensor/trunk/install-sh -d +install_sh = $(SHELL) ${SHELL} /home/jporsini/work/wpitchoune.net/svnpub/psensor/trunk/install-sh MKDIR_P = /bin/mkdir -p mkdir_p = /bin/mkdir -p diff --git a/src/ui.c b/src/ui.c index 696a2e1..a4c30b3 100644 --- a/src/ui.c +++ b/src/ui.c @@ -36,14 +36,12 @@ on_delete_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data) return TRUE; } -static void -cb_menu_quit(gpointer data, guint cb_action, GtkWidget *item) +static void cb_menu_quit(GtkMenuItem *mi, gpointer data) { ui_psensor_quit(); } -static void -cb_menu_preferences(gpointer data, guint cb_action, GtkWidget *item) +static void cb_menu_preferences(GtkMenuItem *mi, gpointer data) { ui_pref_dialog_run((struct ui_psensor *)data); } @@ -53,27 +51,50 @@ void ui_psensor_quit() gtk_main_quit(); } -static GtkItemFactoryEntry menu_items[] = { - {"/Psensor", NULL, NULL, 0, ""}, - {"/Psensor/Preferences", - NULL, cb_menu_preferences, 0, ""}, - {"/Psensor/sep1", - NULL, NULL, 0, ""}, - {"/Psensor/Quit", - "", cb_menu_quit, 0, "", GTK_STOCK_QUIT}, +static const char *menu_desc = +"" +" " +" " +" " +" " +" " +" " +" " +""; + +static GtkActionEntry entries[] = { + { "PsensorMenuAction", NULL, "_Psensor" }, /* name, stock id, label */ + + { "PreferencesAction", GTK_STOCK_PREFERENCES, /* name, stock id */ + "_Preferences", NULL, /* label, accelerator */ + "Preferences", /* tooltip */ + G_CALLBACK(cb_menu_preferences) }, + + { "QuitAction", + GTK_STOCK_QUIT, "_Quit", NULL, "Quit", G_CALLBACK(cb_menu_quit) } }; - -static gint nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); +static guint n_entries = G_N_ELEMENTS(entries); static GtkWidget *get_menu(struct ui_psensor *ui) { - GtkItemFactory *item_factory; + GtkActionGroup *action_group; + GtkUIManager *menu_manager; + GError *error; + + action_group = gtk_action_group_new("PsensorActions"); + gtk_action_group_set_translation_domain(action_group, PACKAGE); + menu_manager = gtk_ui_manager_new(); + + gtk_action_group_add_actions(action_group, entries, n_entries, ui); + gtk_ui_manager_insert_action_group(menu_manager, action_group, 0); + + error = NULL; + gtk_ui_manager_add_ui_from_string(menu_manager, menu_desc, -1, &error); - item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "
", NULL); + if (error) + g_error(_("building menus failed: %s"), error->message); - gtk_item_factory_create_items(item_factory, - nmenu_items, menu_items, ui); - return gtk_item_factory_get_widget(item_factory, "
"); + return gtk_ui_manager_get_widget(menu_manager, "/MainMenu"); } void ui_window_create(struct ui_psensor *ui) -- 2.7.4