X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=90c1fb5f69b322585d68ed684cc470948ef1ab4f;hb=e1970f6d1693391d3ec18365e9a0c7d16b4efa1a;hp=ce9309b1ce295fd4a8c657090db655b0143eb6a6;hpb=19cf39ef8802208ca67fc3e1cf12ce4b239aaabf;p=pspp diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index ce9309b1ce..90c1fb5f69 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -336,34 +336,46 @@ name_has_suffix (const gchar *name) } static gboolean -load_file (PsppireWindow *de, const gchar *file_name) +load_file (PsppireWindow *de, const gchar *file_name, gpointer syn) { - struct string filename; - gchar *utf8_file_name; - const char *mime_type; - gchar *syntax; + const char *mime_type = NULL; + gchar *syntax = NULL; bool ok; - ds_init_empty (&filename); - - utf8_file_name = g_filename_to_utf8 (file_name, -1, NULL, NULL, NULL); - - syntax_gen_string (&filename, ss_cstr (utf8_file_name)); - - g_free (utf8_file_name); + if (syn == NULL) + { + gchar *utf8_file_name; + struct string filename; + ds_init_empty (&filename); + + utf8_file_name = g_filename_to_utf8 (file_name, -1, NULL, NULL, NULL); + + syntax_gen_string (&filename, ss_cstr (utf8_file_name)); + + g_free (utf8_file_name); + + syntax = g_strdup_printf ("GET FILE=%s.", ds_cstr (&filename)); + ds_destroy (&filename); - syntax = g_strdup_printf ("GET FILE=%s.", ds_cstr (&filename)); - ds_destroy (&filename); + } + else + { + syntax = syn; + } ok = execute_syntax (PSPPIRE_DATA_WINDOW (de), lex_reader_for_string (syntax)); g_free (syntax); - mime_type = (name_has_por_suffix (file_name) - ? "application/x-spss-por" - : "application/x-spss-sav"); - - add_most_recent (file_name, mime_type); + if (ok && syn == NULL) + { + if (name_has_por_suffix (file_name)) + mime_type = "application/x-spss-por"; + else if (name_has_sav_suffix (file_name)) + mime_type = "application/x-spss-sav"; + + add_most_recent (file_name, mime_type); + } return ok; } @@ -632,14 +644,10 @@ static void fonts_activate (PsppireDataWindow *de) { GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (de)); - PangoFontDescription *current_font; - gchar *font_name; - GtkWidget *dialog = - gtk_font_selection_dialog_new (_("Font Selection")); - - - current_font = GTK_WIDGET(de->data_editor)->style->font_desc; - font_name = pango_font_description_to_string (current_font); + GtkWidget *dialog = gtk_font_selection_dialog_new (_("Font Selection")); + GtkStyle *style = gtk_widget_get_style (GTK_WIDGET(de->data_editor)); + PangoFontDescription *current_font = style->font_desc; + gchar *font_name = pango_font_description_to_string (current_font); gtk_font_selection_dialog_set_font_name (GTK_FONT_SELECTION_DIALOG (dialog), font_name); @@ -701,7 +709,7 @@ on_recent_data_select (GtkMenuShell *menushell, g_free (uri); - open_data_window (window, file); + open_data_window (window, file, NULL); g_free (file); } @@ -764,7 +772,7 @@ on_recent_files_select (GtkMenuShell *menushell, gpointer user_data) free (encoding); - if ( psppire_window_load (PSPPIRE_WINDOW (se), file) ) + if ( psppire_window_load (PSPPIRE_WINDOW (se), file, NULL) ) gtk_widget_show (se); else gtk_widget_destroy (se); @@ -779,7 +787,7 @@ set_unsaved (gpointer w) } static void -on_switch_page (PsppireDataEditor *de, GtkNotebookPage *p, +on_switch_page (PsppireDataEditor *de, gpointer p, gint pagenum, PsppireDataWindow *dw) { GtkWidget *page_menu_item; @@ -854,12 +862,14 @@ enable_save (PsppireDataWindow *dw) static void psppire_data_window_init (PsppireDataWindow *de) { + GtkWidget *w ; de->builder = builder_new ("data-editor.ui"); de->ui_manager = GTK_UI_MANAGER (get_object_assert (de->builder, "uimanager1", GTK_TYPE_UI_MANAGER)); - PSPPIRE_WINDOW (de)->menu = - GTK_MENU_SHELL (gtk_ui_manager_get_widget (de->ui_manager, "/ui/menubar/windows/windows_minimise_all")->parent); + w = gtk_ui_manager_get_widget (de->ui_manager, "/ui/menubar/windows/windows_minimise_all"); + + PSPPIRE_WINDOW (de)->menu = GTK_MENU_SHELL (gtk_widget_get_parent (w)); de->uim = NULL; de->merge_id = 0; @@ -1317,7 +1327,7 @@ create_data_window (void) } void -open_data_window (PsppireWindow *victim, const char *file_name) +open_data_window (PsppireWindow *victim, const char *file_name, gpointer hint) { GtkWidget *window; @@ -1330,7 +1340,7 @@ open_data_window (PsppireWindow *victim, const char *file_name) else window = psppire_data_window_new (NULL); - psppire_window_load (PSPPIRE_WINDOW (window), file_name); + psppire_window_load (PSPPIRE_WINDOW (window), file_name, hint); gtk_widget_show_all (window); }