X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-output-window.c;h=795804a82278d60fbf8810a0135ad010a72f7f00;hb=8855cb5d6ff72efd5bdb05b339cf9fb175991d5e;hp=074f90a88be77477ac9d9f8e095b058801464fad;hpb=9021515cfa1489f9cd37e7440807bdd1d40de37a;p=pspp diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index 074f90a88b..795804a822 100644 --- a/src/ui/gui/psppire-output-window.c +++ b/src/ui/gui/psppire-output-window.c @@ -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" @@ -139,17 +138,27 @@ psppire_output_submit (struct output_driver *this, { struct psppire_output_driver *pod = psppire_output_cast (this); PsppireOutputWindow *window; + bool new; - if (pod->window == NULL) + new = pod->window == NULL; + if (new) { pod->window = PSPPIRE_OUTPUT_WINDOW (psppire_output_window_new ()); - gtk_widget_show_all (GTK_WIDGET (pod->window)); pod->window->driver = pod; } window = pod->window; psppire_output_view_put (window->view, item); + if (new) + { + /* We could have called this earlier in the previous "if (new)" block, + but doing it here finds, in a plain GTK+ environment, a bug that + otherwise only showed up on an Ubuntu Unity desktop. See bug + #43362. */ + gtk_widget_show_all (GTK_WIDGET (pod->window)); + } + gtk_window_set_urgency_hint (GTK_WINDOW (pod->window), TRUE); } @@ -223,6 +232,7 @@ enum FT_HTML, FT_ODT, FT_TXT, + FT_ASCII, FT_PS, FT_CSV, n_FT @@ -236,6 +246,7 @@ struct file_types ft[n_FT] = { {N_("HTML (*.html)"), ".html"}, {N_("OpenDocument (*.odt)"), ".odt"}, {N_("Text (*.txt)"), ".txt"}, + {N_("Text [plain] (*.txt)"), ".txt"}, {N_("PostScript (*.ps)"), ".ps"}, {N_("Comma-Separated Values (*.csv)"), ".csv"} }; @@ -341,8 +352,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); @@ -434,6 +445,10 @@ psppire_output_window_export (PsppireOutputWindow *window) break; case FT_TXT: + string_map_insert (&options, "box", "unicode"); + /* Fall through */ + + case FT_ASCII: string_map_insert (&options, "headers", "false"); string_map_insert (&options, "paginate", "false"); string_map_insert (&options, "squeeze", "true"); @@ -458,11 +473,10 @@ psppire_output_window_export (PsppireOutputWindow *window) static void psppire_output_window_init (PsppireOutputWindow *window) { - GtkBuilder *xml; - - xml = builder_new ("output-window.ui"); + GtkBuilder *xml = builder_new ("output-window.ui"); - gtk_widget_reparent (get_widget_assert (xml, "vbox1"), GTK_WIDGET (window)); + GtkWidget *box = get_widget_assert (xml, "box1"); + gtk_container_add (GTK_CONTAINER (window), box); window->dispose_has_run = FALSE; @@ -486,11 +500,17 @@ psppire_output_window_init (PsppireOutputWindow *window) NULL); { + GtkWidget *w; GtkUIManager *uim = GTK_UI_MANAGER (get_object_assert (xml, "uimanager1", GTK_TYPE_UI_MANAGER)); - merge_help_menu (uim); + + GtkWidget *menubar = get_widget_assert (xml, "menubar"); + + gtk_menu_shell_append (GTK_MENU_SHELL (menubar), create_help_menu (GTK_WINDOW (window))); + + w = gtk_ui_manager_get_widget (uim,"/ui/menubar/windows_menuitem/windows_minimise-all"); PSPPIRE_WINDOW (window)->menu = - GTK_MENU_SHELL (gtk_ui_manager_get_widget (uim,"/ui/menubar/windows_menuitem/windows_minimise-all")->parent); + GTK_MENU_SHELL (gtk_widget_get_parent (w)); } g_signal_connect_swapped (get_action_assert (xml, "file_export"), "activate",