X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-output-window.c;h=458769d583c040fd745f9ef346e0fda36c753f23;hb=5b2ed095a8aaa98adaea4922855edcbfb619c728;hp=bd5047a7bc1430f1d0fb8039ab75396874545385;hpb=d544788058262e65e71591348d9976a7fd792c97;p=pspp diff --git a/src/ui/gui/psppire-output-window.c b/src/ui/gui/psppire-output-window.c index bd5047a7bc..458769d583 100644 --- a/src/ui/gui/psppire-output-window.c +++ b/src/ui/gui/psppire-output-window.c @@ -32,7 +32,6 @@ #include "output/driver-provider.h" #include "output/message-item.h" #include "output/output-item.h" -#include "output/tab.h" #include "output/table-item.h" #include "output/text-item.h" #include "ui/gui/help-menu.h" @@ -49,36 +48,7 @@ #define _(msgid) gettext (msgid) #define N_(msgid) msgid -static void psppire_output_window_class_init (PsppireOutputWindowClass *class); -static void psppire_output_window_init (PsppireOutputWindow *window); - -GType -psppire_output_window_get_type (void) -{ - static GType psppire_output_window_type = 0; - - if (!psppire_output_window_type) - { - static const GTypeInfo psppire_output_window_info = - { - sizeof (PsppireOutputWindowClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc)psppire_output_window_class_init, - (GClassFinalizeFunc) NULL, - NULL, - sizeof (PsppireOutputWindow), - 0, - (GInstanceInitFunc) psppire_output_window_init, - }; - - psppire_output_window_type = - g_type_register_static (PSPPIRE_TYPE_WINDOW, "PsppireOutputWindow", - &psppire_output_window_info, 0); - } - - return psppire_output_window_type; -} +G_DEFINE_TYPE (PsppireOutputWindow, psppire_output_window, PSPPIRE_TYPE_WINDOW) static GObjectClass *parent_class; @@ -95,7 +65,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; @@ -113,7 +83,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; } @@ -251,9 +221,10 @@ struct file_types const gchar *ext; }; -enum +enum { FT_AUTO = 0, + FT_SPV, FT_PDF, FT_HTML, FT_ODT, @@ -268,6 +239,7 @@ enum struct file_types ft[n_FT] = { {N_("Infer file type from extension"), NULL}, + {N_("SPSS Viewer (*.spv)"), ".spv"}, {N_("PDF (*.pdf)"), ".pdf"}, {N_("HTML (*.html)"), ".html"}, {N_("OpenDocument (*.odt)"), ".odt"}, @@ -284,7 +256,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)) @@ -297,12 +269,12 @@ on_combo_change (GtkFileChooser *chooser) else { gint i; - if ( x != 0 ) + if (x != 0) sensitive = TRUE; for (i = 1 ; i < N_EXTENSIONS ; ++i) { - if ( g_str_has_suffix (fn, ft[i].ext)) + if (g_str_has_suffix (fn, ft[i].ext)) { sensitive = TRUE; break; @@ -323,11 +295,11 @@ on_file_chooser_change (GObject *w, GParamSpec *pspec, gpointer data) GtkFileChooser *chooser = data; const gchar *name = g_param_spec_get_name (pspec); - if ( ! gtk_widget_get_realized (GTK_WIDGET (chooser))) + if (! gtk_widget_get_realized (GTK_WIDGET (chooser))) return; /* Ignore this one. It causes recursion. */ - if ( 0 == strcmp ("tooltip-text", name)) + if (0 == strcmp ("tooltip-text", name)) return; on_combo_change (chooser); @@ -339,7 +311,7 @@ on_file_chooser_change (GObject *w, GParamSpec *pspec, gpointer data) static void iterate_widgets (GtkWidget *w, gpointer data) { - if ( GTK_IS_CONTAINER (w)) + if (GTK_IS_CONTAINER (w)) gtk_container_forall (GTK_CONTAINER (w), iterate_widgets, data); else g_signal_connect (w, "notify", G_CALLBACK (on_file_chooser_change), data); @@ -353,7 +325,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); @@ -362,7 +334,7 @@ create_file_type_list (void) 1, ft[i].ext, -1); } - + return list; } @@ -374,7 +346,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, @@ -394,7 +366,7 @@ psppire_output_window_export (PsppireOutputWindow *window) { /* Create text cell renderer */ GtkCellRenderer *cell = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, FALSE ); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), cell, "text", 0); } @@ -414,7 +386,7 @@ psppire_output_window_export (PsppireOutputWindow *window) response = gtk_dialog_run (GTK_DIALOG (dialog)); - if ( response == GTK_RESPONSE_ACCEPT ) + if (response == GTK_RESPONSE_ACCEPT) { gint file_type = gtk_combo_box_get_active (GTK_COMBO_BOX (combo)); gchar *filename = gtk_file_chooser_get_filename (chooser); @@ -430,7 +402,7 @@ psppire_output_window_export (PsppireOutputWindow *window) gint i; for (i = 1 ; i < N_EXTENSIONS ; ++i) { - if ( g_str_has_suffix (filename, ft[i].ext)) + if (g_str_has_suffix (filename, ft[i].ext)) { file_type = i; break; @@ -448,12 +420,15 @@ 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); switch (file_type) { + case FT_SPV: + export_output (window, &options, "spv"); + break; case FT_PDF: export_output (window, &options, "pdf"); break; @@ -475,13 +450,7 @@ psppire_output_window_export (PsppireOutputWindow *window) /* Fall through */ case FT_ASCII: - string_map_insert (&options, "headers", "false"); - string_map_insert (&options, "paginate", "false"); - string_map_insert (&options, "squeeze", "true"); - string_map_insert (&options, "emphasis", "none"); string_map_insert (&options, "charts", "none"); - string_map_insert (&options, "top-margin", "0"); - string_map_insert (&options, "bottom-margin", "0"); export_output (window, &options, "txt"); break; default: @@ -505,16 +474,13 @@ psppire_output_window_init (PsppireOutputWindow *window) 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"))); - - connect_help (xml); - g_signal_connect (window, "focus-in-event", G_CALLBACK (cancel_urgency), @@ -527,7 +493,7 @@ psppire_output_window_init (PsppireOutputWindow *window) 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))); @@ -537,13 +503,13 @@ psppire_output_window_init (PsppireOutputWindow *window) g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (print)); - const gchar *accels[2] = { "P", NULL}; + const gchar *accels[2] = { "P", NULL}; gtk_application_set_accels_for_action (app, "win.print", accels); } - + { GSimpleAction *export = g_simple_action_new ("export", NULL); g_signal_connect_swapped (export, "activate", G_CALLBACK (psppire_output_window_export), window); @@ -559,13 +525,13 @@ psppire_output_window_init (PsppireOutputWindow *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}; + 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",