X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-output-window.c;h=9ebc51d19640473648c1750d621939b2a4927f63;hb=40c169c1409b0f16e6ee8f0ceaa0ce6937c90a5c;hp=469966af2325adf73faafbba8e29194dcfc7168a;hpb=f8fdc760d4ee04801a2da8af0700b2a87f724ae4;p=pspp diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index 469966af23..9ebc51d196 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 @@ -38,6 +38,7 @@ #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" @@ -94,7 +95,7 @@ psppire_output_window_dispose (GObject *obj) { PsppireOutputWindow *window = PSPPIRE_OUTPUT_WINDOW (obj); - if (window->dispose_has_run) + if (window->dispose_has_run) return; window->dispose_has_run = TRUE; @@ -112,7 +113,7 @@ psppire_output_window_class_init (PsppireOutputWindowClass *class) parent_class = g_type_class_peek_parent (class); object_class->dispose = psppire_output_window_dispose; - + object_class->finalize = psppire_output_window_finalize; } @@ -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 = @@ -226,7 +251,7 @@ struct file_types const gchar *ext; }; -enum +enum { FT_AUTO = 0, FT_PDF, @@ -259,7 +284,7 @@ on_combo_change (GtkFileChooser *chooser) gboolean sensitive = FALSE; GtkWidget *combo = gtk_file_chooser_get_extra_widget (chooser); - int x = 0; + int x = 0; gchar *fn = gtk_file_chooser_get_filename (chooser); if (combo && gtk_widget_get_realized (combo)) @@ -328,7 +353,7 @@ create_file_type_list (void) int i; GtkTreeIter iter; GtkListStore *list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); - + for (i = 0 ; i < n_FT ; ++i) { gtk_list_store_append (list, &iter); @@ -337,7 +362,7 @@ create_file_type_list (void) 1, ft[i].ext, -1); } - + return list; } @@ -349,7 +374,7 @@ psppire_output_window_export (PsppireOutputWindow *window) GtkListStore *list; GtkFileChooser *chooser; - + GtkWidget *dialog = gtk_file_chooser_dialog_new (_("Export Output"), GTK_WINDOW (window), GTK_FILE_CHOOSER_ACTION_SAVE, @@ -423,7 +448,7 @@ psppire_output_window_export (PsppireOutputWindow *window) filename = g_strconcat (filename, ft[file_type].ext, NULL); g_free (of); } - + string_map_init (&options); string_map_insert (&options, "output-file", filename); @@ -475,17 +500,17 @@ static void psppire_output_window_init (PsppireOutputWindow *window) { GtkBuilder *xml = builder_new ("output-window.ui"); - - GtkWidget *box = get_widget_assert (xml, "box1"); + 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); @@ -495,21 +520,51 @@ psppire_output_window_init (PsppireOutputWindow *window) G_CALLBACK (cancel_urgency), NULL); - GtkWidget *menubar = get_widget_assert (xml, "menubar"); + 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))); + { + 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)); + + + 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)); + } + + { + 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_signal_connect_swapped (get_action_assert (xml, "file_print"), "activate", - G_CALLBACK (psppire_output_window_print), window); g_object_unref (xml); @@ -522,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));