X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-output-window.c;h=ba2dc8410d6aecc5f3bd439579634acfaeda6992;hb=258cbd9cdf386687122b0854274923acafc786d4;hp=66ea9d392707fee19c011aa66436be4684788047;hpb=e17bf22963466952e4333a9f9994ebad4ca2f5e8;p=pspp diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index 66ea9d3927..ba2dc8410d 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,7 @@ #include "ui/gui/help-menu.h" #include "ui/gui/builder-wrapper.h" #include "ui/gui/psppire-output-view.h" +#include "ui/gui/windows-menu.h" #include "gl/xalloc.h" @@ -145,6 +145,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; @@ -474,19 +478,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 +499,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 +556,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));