X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-output-window.c;h=bd5047a7bc1430f1d0fb8039ab75396874545385;hb=06033ee856ec75ed98dc7f4b5bf2c61876650fdf;hp=fd6b7b3422f39569ed2ac30b0c450c55036c8189;hpb=3ccf4f19ece6c4da5a2d13173c032011faf330b8;p=pspp diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index fd6b7b3422..bd5047a7bc 100644 --- a/src/ui/gui/psppire-output-window.c +++ b/src/ui/gui/psppire-output-window.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation + Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016 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 @@ -28,7 +28,6 @@ #include "libpspp/cast.h" #include "libpspp/message.h" #include "libpspp/string-map.h" -#include "output/cairo.h" #include "output/chart-item.h" #include "output/driver-provider.h" #include "output/message-item.h" @@ -39,6 +38,8 @@ #include "ui/gui/help-menu.h" #include "ui/gui/builder-wrapper.h" #include "ui/gui/psppire-output-view.h" +#include "ui/gui/psppire-conf.h" +#include "ui/gui/windows-menu.h" #include "gl/xalloc.h" @@ -145,6 +146,10 @@ psppire_output_submit (struct output_driver *this, if (new) { pod->window = PSPPIRE_OUTPUT_WINDOW (psppire_output_window_new ()); + GApplication *app = g_application_get_default (); + gtk_application_add_window (GTK_APPLICATION (app), + GTK_WINDOW (pod->window)); + pod->window->driver = pod; } window = pod->window; @@ -160,7 +165,27 @@ psppire_output_submit (struct output_driver *this, gtk_widget_show_all (GTK_WIDGET (pod->window)); } - gtk_window_set_urgency_hint (GTK_WINDOW (pod->window), TRUE); + PsppireConf *conf = psppire_conf_new (); + { + gboolean status = true; + psppire_conf_get_boolean (conf, "OutputWindowAction", "alert", + &status); + gtk_window_set_urgency_hint (GTK_WINDOW (pod->window), status); + } + + { + gboolean status ; + if (psppire_conf_get_boolean (conf, "OutputWindowAction", "maximize", + &status) && status) + gtk_window_maximize (GTK_WINDOW (pod->window)); + } + + { + gboolean status ; + if (psppire_conf_get_boolean (conf, "OutputWindowAction", "raise", + &status) && status) + gtk_window_present (GTK_WINDOW (pod->window)); + } } static struct output_driver_class psppire_output_class = @@ -353,8 +378,8 @@ psppire_output_window_export (PsppireOutputWindow *window) GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Export Output"), GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, + _("Cancel"), GTK_RESPONSE_CANCEL, + _("Save"), GTK_RESPONSE_ACCEPT, NULL); g_object_set (dialog, "local-only", FALSE, NULL); @@ -474,19 +499,18 @@ psppire_output_window_export (PsppireOutputWindow *window) static void psppire_output_window_init (PsppireOutputWindow *window) { - GtkBuilder *xml; - - xml = builder_new ("output-window.ui"); - - gtk_widget_reparent (get_widget_assert (xml, "vbox1"), GTK_WIDGET (window)); + GtkBuilder *xml = builder_new ("output-window.ui"); + GtkApplication *app = GTK_APPLICATION (g_application_get_default()); + GtkWidget *box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_add (GTK_CONTAINER (window), box); + GtkWidget *paned = get_widget_assert (xml, "paned1"); + window->dispose_has_run = FALSE; window->view = psppire_output_view_new ( GTK_LAYOUT (get_widget_assert (xml, "output")), - GTK_TREE_VIEW (get_widget_assert (xml, "overview")), - get_action_assert (xml, "edit_copy"), - get_action_assert (xml, "edit_select-all")); + GTK_TREE_VIEW (get_widget_assert (xml, "overview"))); connect_help (xml); @@ -496,29 +520,52 @@ psppire_output_window_init (PsppireOutputWindow *window) G_CALLBACK (cancel_urgency), NULL); - g_signal_connect (get_action_assert (xml,"windows_minimise-all"), - "activate", - G_CALLBACK (psppire_window_minimise_all), - NULL); + GObject *menu = get_object_assert (xml, "output-window-menu", G_TYPE_MENU); + GtkWidget *menubar = gtk_menu_bar_new_from_model (G_MENU_MODEL (menu)); + gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), paned, TRUE, TRUE, 0); + + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), + create_windows_menu (GTK_WINDOW (window))); + + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), + create_help_menu (GTK_WINDOW (window))); { - GtkWidget *w; - GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1", GTK_TYPE_UI_MANAGER)); - merge_help_menu (uim); + GSimpleAction *print = g_simple_action_new ("print", NULL); + g_signal_connect_swapped (print, "activate", G_CALLBACK (psppire_output_window_print), window); + g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (print)); - w = gtk_ui_manager_get_widget (uim,"/ui/menubar/windows_menuitem/windows_minimise-all"); - PSPPIRE_WINDOW (window)->menu = - GTK_MENU_SHELL (gtk_widget_get_parent (w)); + const gchar *accels[2] = { "P", NULL}; + gtk_application_set_accels_for_action (app, + "win.print", + accels); } - g_signal_connect_swapped (get_action_assert (xml, "file_export"), "activate", - G_CALLBACK (psppire_output_window_export), window); + + { + GSimpleAction *export = g_simple_action_new ("export", NULL); + g_signal_connect_swapped (export, "activate", G_CALLBACK (psppire_output_window_export), window); + g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (export)); + } + { + GSimpleAction *select_all = g_simple_action_new ("select-all", NULL); + g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (select_all)); + } - g_signal_connect_swapped (get_action_assert (xml, "file_print"), "activate", - G_CALLBACK (psppire_output_window_print), window); + { + GSimpleAction *copy = g_simple_action_new ("copy", NULL); + g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy)); + const gchar *accels[2] = { "C", NULL}; + gtk_application_set_accels_for_action (app, + "win.copy", + accels); + } + + g_object_unref (xml); g_signal_connect (window, "delete-event", @@ -530,7 +577,7 @@ GtkWidget* psppire_output_window_new (void) { return GTK_WIDGET (g_object_new (psppire_output_window_get_type (), - /* TRANSLATORS: This will form a filename. Please avoid whitespace. */ + /* TRANSLATORS: This will be part of a filename. Please avoid whitespace. */ "filename", _("Output"), "description", _("Output Viewer"), NULL));