From: John Darrington Date: Mon, 10 May 2010 16:50:38 +0000 (+0200) Subject: Refactor the Help menu. X-Git-Tag: v0.7.5~25^2~18 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp-builds.git;a=commitdiff_plain;h=cd7df218e1f2798b4ac8e193558a67e6ad59e3ed Refactor the Help menu. Instead of writing a help menu for each of the three main windows, implement it once, and merge it into the menubars using GtkUIManager --- diff --git a/src/ui/gui/about.c b/src/ui/gui/about.c deleted file mode 100644 index 5b606bf5..00000000 --- a/src/ui/gui/about.c +++ /dev/null @@ -1,87 +0,0 @@ -/* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2006, 2007, 2010 Free Software Foundation - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - 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, see . */ - - -#include - -#include - -#include -#include -#include "about.h" -#include "helper.h" - -#include "gl/configmake.h" - -#include -#define _(msgid) gettext (msgid) -#define N_(msgid) msgid - - -static const gchar *artists[] = { "Patrick Brunier", "Dondi Bogusky", NULL}; - -void -about_new (GtkMenuItem *m, GtkWindow *parent) -{ - GtkWidget *about = gtk_about_dialog_new (); - - GdkPixbuf *pb = - gdk_pixbuf_new_from_file_at_size (relocate (PKGDATADIR "/pspplogo.png"), - 64, 64, 0); - - gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (about), pb); - - - gtk_window_set_icon_name (GTK_WINDOW (about), "psppicon"); - - gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about), - "http://www.gnu.org/software/pspp"); - - gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (about), - bare_version); - - gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about), - (const gchar **) authors); - - gtk_about_dialog_set_artists (GTK_ABOUT_DIALOG (about), - artists); - - gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (about), - copyleft); - - gtk_about_dialog_set_comments (GTK_ABOUT_DIALOG (about), - _("A program for the analysis of sampled data")); - - gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about), - "Free Software Foundation"); - - gtk_about_dialog_set_translator_credits - ( - GTK_ABOUT_DIALOG (about), - /* TRANSLATORS: Use this string to list the people who have helped with - translation to your language. */ - _("translator-credits") - ); - - gtk_window_set_transient_for (GTK_WINDOW (about), parent); - - gtk_window_set_modal (GTK_WINDOW (about), TRUE); - - gtk_dialog_run (GTK_DIALOG (about)); - - gtk_widget_hide (about); -} - diff --git a/src/ui/gui/about.h b/src/ui/gui/about.h deleted file mode 100644 index 16956488..00000000 --- a/src/ui/gui/about.h +++ /dev/null @@ -1,20 +0,0 @@ -/* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2007, 2010 Free Software Foundation - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - 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, see . */ - -#include - - -void about_new (GtkMenuItem *m, GtkWindow *parent); diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index 52e77134..48154d6d 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -116,8 +116,6 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/psppire-hbuttonbox.c \ src/ui/gui/psppire-vbuttonbox.c \ src/ui/gui/psppire-acr.c \ - src/ui/gui/about.c \ - src/ui/gui/about.h \ src/ui/gui/checkbox-treeview.c \ src/ui/gui/checkbox-treeview.h \ src/ui/gui/comments-dialog.c \ @@ -149,6 +147,8 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/goto-case-dialog.c \ src/ui/gui/goto-case-dialog.h \ src/ui/gui/helper.c \ + src/ui/gui/help-menu.c \ + src/ui/gui/help-menu.h \ src/ui/gui/helper.h \ src/ui/gui/main.c \ src/ui/gui/missing-val-dialog.c \ diff --git a/src/ui/gui/data-editor.ui b/src/ui/gui/data-editor.ui index 8ae12eff..e05f4ffd 100644 --- a/src/ui/gui/data-editor.ui +++ b/src/ui/gui/data-editor.ui @@ -456,24 +456,6 @@ _Split - - - help - _Help - - - - - help_reference - _Reference Manual - - - - - gtk-about - help_about - - @@ -570,10 +552,6 @@ - - - - diff --git a/src/ui/gui/help-menu.c b/src/ui/gui/help-menu.c new file mode 100644 index 00000000..c24125d7 --- /dev/null +++ b/src/ui/gui/help-menu.c @@ -0,0 +1,150 @@ +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 2006, 2007, 2010 Free Software Foundation + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + 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, see . */ + + +#include + +#include + +#include +#include +#include "help-menu.h" +#include + +#include "gl/configmake.h" +#include "gl/relocatable.h" + +#include +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + + +static const gchar *artists[] = { "Patrick Brunier", "Dondi Bogusky", NULL}; + +static void +about_new (GtkMenuItem *m, GtkWindow *parent) +{ + GtkWidget *about = gtk_about_dialog_new (); + + GdkPixbuf *pb = + gdk_pixbuf_new_from_file_at_size (relocate (PKGDATADIR "/pspplogo.png"), + 64, 64, 0); + + gtk_about_dialog_set_logo (GTK_ABOUT_DIALOG (about), pb); + + + gtk_window_set_icon_name (GTK_WINDOW (about), "psppicon"); + + gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about), + "http://www.gnu.org/software/pspp"); + + gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (about), + bare_version); + + gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about), + (const gchar **) authors); + + gtk_about_dialog_set_artists (GTK_ABOUT_DIALOG (about), + artists); + + gtk_about_dialog_set_license (GTK_ABOUT_DIALOG (about), + copyleft); + + gtk_about_dialog_set_comments (GTK_ABOUT_DIALOG (about), + _("A program for the analysis of sampled data")); + + gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about), + "Free Software Foundation"); + + gtk_about_dialog_set_translator_credits + ( + GTK_ABOUT_DIALOG (about), + /* TRANSLATORS: Use this string to list the people who have helped with + translation to your language. */ + _("translator-credits") + ); + + gtk_window_set_transient_for (GTK_WINDOW (about), parent); + + gtk_window_set_modal (GTK_WINDOW (about), TRUE); + + gtk_dialog_run (GTK_DIALOG (about)); + + gtk_widget_hide (about); +} + + +static void +reference_manual (GtkMenuItem *menu, gpointer data) +{ + GError *err = NULL; + gchar *cmd = g_strdup_printf ("yelp file://%s", relocate (DOCDIR "/pspp.xml")); + + if ( ! g_spawn_command_line_async (cmd, &err) ) + { + msg (ME, _("Cannot open reference manual: %s. The PSPP user manual is " + "also available at " + "http://www.gnu.org/software/pspp/documentation.html"), + err->message); + } + + g_free (cmd); + g_clear_error (&err); +} + +void +merge_help_menu (GtkUIManager *uim) +{ + GtkActionGroup *action_group = gtk_action_group_new ("help"); + + static const GtkActionEntry entries[] = + { + { + "help", NULL, /* name, stock id */ + N_("_Help"), NULL, /* label, accelerator */ + NULL, + NULL, + }, + + { + "help_reference", GTK_STOCK_HELP, /* name, stock id */ + N_("_Reference Manual"), NULL, /* label, accelerator */ + NULL, /* tooltip */ + G_CALLBACK (reference_manual) + }, + + { + "help_about", GTK_STOCK_ABOUT, + NULL, NULL, NULL, + G_CALLBACK (about_new) + }, + }; + + gtk_action_group_set_translation_domain (action_group, PACKAGE); + + gtk_ui_manager_add_ui_from_string (uim, "\ + \ + \ + \ + \ + \ + \ + ", -1, 0); + + gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), NULL); + + gtk_ui_manager_insert_action_group (uim, action_group, 0); +} diff --git a/src/ui/gui/help-menu.h b/src/ui/gui/help-menu.h new file mode 100644 index 00000000..ff3740fb --- /dev/null +++ b/src/ui/gui/help-menu.h @@ -0,0 +1,25 @@ +/* PSPPIRE - a graphical user interface for PSPP. + Copyright (C) 2007, 2010 Free Software Foundation + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + 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, see . */ + +#ifndef HELP_MENU_H +#define HELP_MENU_H + +#include + + +void merge_help_menu (GtkUIManager *uim); + +#endif diff --git a/src/ui/gui/helper.c b/src/ui/gui/helper.c index 3be39813..e25342ed 100644 --- a/src/ui/gui/helper.c +++ b/src/ui/gui/helper.c @@ -230,25 +230,6 @@ connect_help (GtkBuilder *xml) } -void -reference_manual (GtkMenuItem *menu, gpointer data) -{ - GError *err = NULL; - gchar *cmd = g_strdup_printf ("yelp file://%s", relocate (DOCDIR "/pspp.xml")); - - if ( ! g_spawn_command_line_async (cmd, &err) ) - { - msg (ME, _("Cannot open reference manual: %s. The PSPP user manual is " - "also available at " - "http://www.gnu.org/software/pspp/documentation.html"), - err->message); - } - - g_free (cmd); - g_clear_error (&err); -} - - /* Create a deep copy of SRC */ GtkListStore * clone_list_store (const GtkListStore *src) diff --git a/src/ui/gui/helper.h b/src/ui/gui/helper.h index 671bb8ed..ec142c8e 100644 --- a/src/ui/gui/helper.h +++ b/src/ui/gui/helper.h @@ -54,8 +54,6 @@ gchar * convert_glib_filename_to_system_filename (const gchar *fname, void connect_help (GtkBuilder *); -void reference_manual (GtkMenuItem *, gpointer); - #define builder_new(NAME) builder_new_real (relocate (PKGDATADIR "/" NAME)) GtkBuilder *builder_new_real (const gchar *name); diff --git a/src/ui/gui/output-viewer.glade b/src/ui/gui/output-viewer.glade index dfc2663f..76770e9f 100644 --- a/src/ui/gui/output-viewer.glade +++ b/src/ui/gui/output-viewer.glade @@ -11,7 +11,7 @@ True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - + True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -81,31 +81,6 @@ - - - True - _Help - True - - - - - True - _Reference Manual - True - - - - - True - _About - True - - - - - - False diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index c655ece6..2968892d 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -24,7 +24,7 @@ #include "data/procedure.h" #include "language/syntax-string-source.h" #include "libpspp/message.h" -#include "ui/gui/about.h" +#include "ui/gui/help-menu.h" #include "ui/gui/comments-dialog.h" #include "ui/gui/compute-dialog.h" #include "ui/gui/correlation-dialog.h" @@ -1443,27 +1443,12 @@ psppire_data_window_init (PsppireDataWindow *de) } - g_signal_connect (get_action_assert (de->builder,"file_new_syntax"), - "activate", - G_CALLBACK (create_syntax_window), - NULL); - - - { - GtkAction *abt = get_action_assert (de->builder, "help_about"); - - g_signal_connect (abt, + g_signal_connect (get_action_assert (de->builder,"file_new_syntax"), "activate", - G_CALLBACK (about_new), - de); - } + G_CALLBACK (create_syntax_window), + NULL); - g_signal_connect (get_action_assert (de->builder,"help_reference"), - "activate", - G_CALLBACK (reference_manual), - de); - g_signal_connect (de->data_editor, "cases-selected", @@ -1540,6 +1525,8 @@ psppire_data_window_init (PsppireDataWindow *de) { GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (de->builder, "uimanager1", GTK_TYPE_UI_MANAGER)); + merge_help_menu (uim); + PSPPIRE_WINDOW (de)->menu = GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows/windows_minimise_all")->parent); } diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index 3003fba8..f78b8855 100644 --- a/src/ui/gui/psppire-output-window.c +++ b/src/ui/gui/psppire-output-window.c @@ -32,7 +32,7 @@ #include #include -#include "about.h" +#include "help-menu.h" #include "psppire-output-window.h" @@ -553,16 +553,6 @@ psppire_output_window_init (PsppireOutputWindow *window) G_CALLBACK (cancel_urgency), NULL); - g_signal_connect (get_action_assert (xml,"help_about"), - "activate", - G_CALLBACK (about_new), - window); - - g_signal_connect (get_action_assert (xml,"help_reference"), - "activate", - G_CALLBACK (reference_manual), - NULL); - g_signal_connect (get_action_assert (xml,"windows_minimise-all"), "activate", G_CALLBACK (psppire_window_minimise_all), @@ -570,9 +560,10 @@ psppire_output_window_init (PsppireOutputWindow *window) { GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1", GTK_TYPE_UI_MANAGER)); + merge_help_menu (uim); PSPPIRE_WINDOW (window)->menu = - GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar1/windows_menuitem/windows_minimise-all")->parent); + GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows_menuitem/windows_minimise-all")->parent); } g_signal_connect_swapped (get_action_assert (xml, "file_export"), "activate", diff --git a/src/ui/gui/psppire-syntax-window.c b/src/ui/gui/psppire-syntax-window.c index f9fe53cc..3541a165 100644 --- a/src/ui/gui/psppire-syntax-window.c +++ b/src/ui/gui/psppire-syntax-window.c @@ -30,7 +30,7 @@ #include "psppire-data-window.h" #include "psppire-window-register.h" #include "psppire.h" -#include "about.h" +#include "help-menu.h" #include "psppire-syntax-window.h" #include "syntax-editor-source.h" #include @@ -392,7 +392,7 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window) GtkBuilder *xml = builder_new ("syntax-editor.ui"); GtkWidget *box = gtk_vbox_new (FALSE, 0); - GtkWidget *menubar = get_widget_assert (xml, "menubar2"); + GtkWidget *menubar = get_widget_assert (xml, "menubar"); GtkWidget *sw = get_widget_assert (xml, "scrolledwindow8"); @@ -437,21 +437,6 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window) window); #endif - { - GtkAction *abt = get_action_assert (xml, "help_about"); - g_object_set (abt, "stock-id", "gtk-about", NULL); - - g_signal_connect (abt, - "activate", - G_CALLBACK (about_new), - window); - } - - g_signal_connect (get_action_assert (xml,"help_reference"), - "activate", - G_CALLBACK (reference_manual), - NULL); - g_signal_connect_swapped (get_action_assert (xml, "file_save"), "activate", G_CALLBACK (syntax_save), @@ -496,8 +481,10 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window) { GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1", GTK_TYPE_UI_MANAGER)); + merge_help_menu (uim); + PSPPIRE_WINDOW (window)->menu = - GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar2/windows/windows_minimise_all")->parent); + GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows/windows_minimise_all")->parent); } g_object_unref (xml); diff --git a/src/ui/gui/syntax-editor.glade b/src/ui/gui/syntax-editor.glade index 8f565e12..ae43ea5b 100644 --- a/src/ui/gui/syntax-editor.glade +++ b/src/ui/gui/syntax-editor.glade @@ -3,7 +3,7 @@ - + True GTK_PACK_DIRECTION_LTR GTK_PACK_DIRECTION_LTR @@ -223,32 +223,6 @@ - - - True - _Help - True - - - - - - True - _Reference Manual - True - - - - - True - _About - True - - - - - -