From 552de6c75e37f45c0a9ff08cf3f4191bbc56ca24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrico=20Tr=C3=83=C2=B6ger?= <enrico@xfce.org> Date: Sun, 30 Mar 2008 15:51:03 +0000 Subject: [PATCH] Add file menu to make preferences dialog accessable when run as stand-alone application. (Old svn revision: 4488) --- ChangeLog | 2 ++ lib/common.h | 2 ++ lib/gui.c | 44 ++++++++++++++++++++++++++++++-- panel-plugin/xfce4-dict-plugin.c | 4 +++ src/xfce4-dict.c | 12 +++++++++ 5 files changed, 62 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d59cf9..ce12b13 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ * Redesign preferences dialog: use a GtkNotebook and use a XfceDialog. * Update POTFILES.in. * Remove debug messages. + * Add file menu to make preferences dialog accessable when run as + stand-alone application. 2008-03-27 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> diff --git a/lib/common.h b/lib/common.h index fce2ea2..84cc47f 100644 --- a/lib/common.h +++ b/lib/common.h @@ -61,6 +61,8 @@ typedef struct GtkWidget *window; GtkWidget *statusbar; GtkWidget *close_button; + GtkWidget *close_menu_item; + GtkWidget *pref_menu_item; GtkWidget *main_entry; GtkWidget *panel_entry; GtkWidget *main_textview; diff --git a/lib/gui.c b/lib/gui.c index c197a43..ccb6e9a 100644 --- a/lib/gui.c +++ b/lib/gui.c @@ -130,6 +130,43 @@ const guint8 *dict_get_icon_data(void) } +static GtkWidget *create_file_menu(DictData *dd) +{ + GtkWidget *menubar, *file, *file_menu, *help, *help_menu, *menu_item; + + menubar = gtk_menu_bar_new(); + + file = gtk_menu_item_new_with_mnemonic(_("_File")); + + file_menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), file_menu); + + dd->pref_menu_item = gtk_image_menu_item_new_from_stock("gtk-preferences", NULL); + gtk_container_add(GTK_CONTAINER(file_menu), dd->pref_menu_item); + + gtk_container_add(GTK_CONTAINER(file_menu), gtk_separator_menu_item_new()); + + dd->close_menu_item = gtk_image_menu_item_new_from_stock((dd->is_plugin) ? "gtk-close" : "gtk-quit", NULL); + gtk_container_add(GTK_CONTAINER(file_menu), dd->close_menu_item); + + help = gtk_menu_item_new_with_mnemonic(_("_Help")); + + help_menu = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), help_menu); + + menu_item = gtk_image_menu_item_new_from_stock("gtk-about", NULL); + gtk_container_add(GTK_CONTAINER(help_menu), menu_item); + g_signal_connect(menu_item, "activate", G_CALLBACK(dict_about_dialog), dd); + + gtk_container_add(GTK_CONTAINER(menubar), file); + gtk_container_add(GTK_CONTAINER(menubar), help); + + gtk_widget_show_all(menubar); + + return menubar; +} + + void dict_create_main_window(DictData *dd) { GtkWidget *main_box; @@ -150,6 +187,8 @@ void dict_create_main_window(DictData *dd) gtk_widget_show(main_box); gtk_container_add(GTK_CONTAINER(dd->window), main_box); + gtk_box_pack_start(GTK_BOX(main_box), create_file_menu(dd), FALSE, TRUE, 0); + /* entry box (label, entry, buttons) */ entry_box = gtk_hbox_new(FALSE, 10); gtk_widget_show(entry_box); @@ -192,7 +231,7 @@ void dict_create_main_window(DictData *dd) gtk_container_add(GTK_CONTAINER(align), gtk_label_new("")); gtk_box_pack_start(GTK_BOX(entry_box), align, FALSE, FALSE, 0); - dd->close_button = gtk_button_new_from_stock("gtk-close"); + dd->close_button = gtk_button_new_from_stock((dd->is_plugin) ? "gtk-close" : "gtk-quit"); gtk_widget_show(dd->close_button); gtk_box_pack_end(GTK_BOX(entry_box), dd->close_button, FALSE, FALSE, 2); @@ -271,7 +310,8 @@ void dict_about_dialog(GtkWidget *widget, DictData *dd) xfce_about_info_add_credit(info, "Enrico Tröger", "enrico(dot)troeger(at)uvena(dot)de", _("Developer")); xfce_about_info_set_homepage(info, "http://goodies.xfce.org"); - dialog = xfce_about_dialog_new_with_values(GTK_WINDOW(widget), info, dd->icon); + dialog = xfce_about_dialog_new_with_values( + GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(widget))), info, dd->icon); g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), NULL); gtk_window_set_title(GTK_WINDOW(dialog), "Xfce Dictionary"); gtk_dialog_run(GTK_DIALOG(dialog)); diff --git a/panel-plugin/xfce4-dict-plugin.c b/panel-plugin/xfce4-dict-plugin.c index 43f94f9..db52d38 100644 --- a/panel-plugin/xfce4-dict-plugin.c +++ b/panel-plugin/xfce4-dict-plugin.c @@ -358,6 +358,10 @@ static void dict_plugin_construct(XfcePanelPlugin *plugin) xfce_panel_plugin_menu_show_configure(plugin); xfce_panel_plugin_menu_show_about(plugin); + /* file menu */ + g_signal_connect(dpd->dd->close_menu_item, "activate", G_CALLBACK(dict_plugin_close_button_clicked), dpd); + g_signal_connect(dpd->dd->pref_menu_item, "activate", G_CALLBACK(dict_plugin_properties_dialog), dpd); + /* panel entry */ dpd->dd->panel_entry = gtk_entry_new(); gtk_entry_set_width_chars(GTK_ENTRY(dpd->dd->panel_entry), 15); diff --git a/src/xfce4-dict.c b/src/xfce4-dict.c index a45133d..b0b64d5 100644 --- a/src/xfce4-dict.c +++ b/src/xfce4-dict.c @@ -55,6 +55,15 @@ static void close_button_clicked(GtkWidget *button, DictData *dd) } +void pref_dialog_activated(GtkMenuItem *menuitem, DictData *dd) +{ + GtkWidget *dlg; + + dlg = dict_prefs_dialog_show(gtk_widget_get_toplevel(GTK_WIDGET(menuitem)), dd); + gtk_widget_show(dlg); +} + + gint main(gint argc, gchar *argv[]) { DictData *dd; @@ -83,6 +92,9 @@ gint main(gint argc, gchar *argv[]) g_signal_connect(dd->window, "delete-event", G_CALLBACK(main_quit), dd); g_signal_connect(dd->close_button, "clicked", G_CALLBACK(close_button_clicked), dd); + /* file menu */ + g_signal_connect(dd->close_menu_item, "activate", G_CALLBACK(close_button_clicked), dd); + g_signal_connect(dd->pref_menu_item, "activate", G_CALLBACK(pref_dialog_activated), dd); dict_status_add(dd, _("Ready.")); -- GitLab