New command SHOW SYSTEM to easily print information useful in bug reports.
[pspp] / src / ui / gui / help-menu.c
index 94c16843180bd78671941ab94e2ee3d848d84321..20c52ee848bfc76cada6277a8c74e9ad9c95b5b4 100644 (file)
@@ -24,7 +24,9 @@
 #include "libpspp/copyleft.h"
 #include "libpspp/message.h"
 #include "libpspp/version.h"
+#include "ui/gui/executor.h"
 #include "ui/gui/help-menu.h"
+#include "ui/gui/psppire-data-window.h"
 
 #include "gl/configmake.h"
 #include "gl/relocatable.h"
 
 static const gchar *artists[] = { "Bastián Díaz", "Hugo Alejandro", NULL};
 
-static void
-about_new (GtkMenuItem *mmm, GtkWindow *parent)
-{
-  GtkWidget *about =  gtk_about_dialog_new ();
-
-  gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG (about), "pspp");
-
-  gtk_window_set_icon_name (GTK_WINDOW (about), "pspp");
-
-  gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about), PACKAGE_URL);
-
-  gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (about),
-                               announced_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: Do not translate this string.  Instead, put the names of the people
-       who have helped in the translation. */
-     _("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);
-}
-
-
 /* Opening the htmluri in windows via cmd /start uri opens
    the windows command shell for a moment. The alternative is
    to start a script via wscript. This will not be visible*/
@@ -162,8 +117,75 @@ open_windows_help (const gchar *helpuri, GError **err)
 
   return FALSE;
 }
+
+static gboolean
+on_activate_link (GtkAboutDialog *label,
+               gchar          *uri,
+               gpointer        user_data)
+{
+  return  open_windows_help (uri, NULL);
+}
+#endif
+
+static void
+about_system_info (GtkMenuItem *mmm, GtkWindow *parent)
+{
+  execute_const_syntax_string (psppire_default_data_window (), "SHOW SYSTEM.");
+}
+
+static void
+about_new (GtkMenuItem *mmm, GtkWindow *parent)
+{
+  GtkWidget *about =  gtk_about_dialog_new ();
+
+#ifdef _WIN32
+  /* The default handler for Windows doesn't appear to work.  */
+  g_signal_connect (about, "activate-link", G_CALLBACK (on_activate_link), parent);
 #endif
 
+  gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG (about), "pspp");
+
+  gtk_window_set_icon_name (GTK_WINDOW (about), "pspp");
+
+  gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about), PACKAGE_URL);
+
+  gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (about),
+                               announced_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: Do not translate this string.  Instead, put the names of the people
+       who have helped in the translation. */
+     _("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);
+}
+
+
+
 /* Open the manual at PAGE with the following priorities
    First: local yelp help system
    Second: browser with local html doc dir in path pspp.html/<helppage>.html
@@ -251,6 +273,7 @@ create_help_menu (GtkWindow *toplevel)
   GtkWidget *menu = gtk_menu_new ();
 
   GtkWidget *help_about = gtk_menu_item_new_with_mnemonic (_("_About"));
+  GtkWidget *help_system_info = gtk_menu_item_new_with_mnemonic (_("_System Information"));
   GtkWidget *help_ref = gtk_menu_item_new_with_mnemonic (_("_Reference Manual"));
 
   GtkAccelGroup *accel_group = gtk_accel_group_new ();
@@ -263,9 +286,11 @@ create_help_menu (GtkWindow *toplevel)
                              GTK_ACCEL_VISIBLE);
 
   gtk_menu_attach (GTK_MENU (menu), help_ref, 0, 1, 0, 1);
-  gtk_menu_attach (GTK_MENU (menu), help_about, 0, 1, 1, 2);
+  gtk_menu_attach (GTK_MENU (menu), help_system_info, 0, 1, 1, 2);
+  gtk_menu_attach (GTK_MENU (menu), help_about, 0, 1, 2, 3);
 
   g_signal_connect (help_about, "activate", G_CALLBACK (about_new), toplevel);
+  g_signal_connect (help_system_info, "activate", G_CALLBACK (about_system_info), toplevel);
   g_signal_connect (help_ref, "activate", G_CALLBACK (reference_manual), NULL);
 
   g_object_set (menuitem, "submenu", menu, NULL);