X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Fui%2Fgui%2Fpsppire-window.c;h=598de8930246591389a5dbdae3da7cd49e76d3e0;hb=dc29c57e7908b0bdc6ab84f8aa4b7cb8a780026c;hp=f2bd2d120ffe469b8f6a17c91e1f7af9bac40f21;hpb=fea925912b94d356a579598031abe54a191903fc;p=pspp diff --git a/src/ui/gui/psppire-window.c b/src/ui/gui/psppire-window.c index f2bd2d120f..598de89302 100644 --- a/src/ui/gui/psppire-window.c +++ b/src/ui/gui/psppire-window.c @@ -706,6 +706,22 @@ psppire_window_load (PsppireWindow *w, const gchar *file) return ok; } + +static void +on_selection_changed (GtkFileChooser *chooser, GtkWidget *encoding_selector) +{ + const gchar *sysname; + + const gchar *name = gtk_file_chooser_get_filename (chooser); + + if ( NULL == name ) + return; + + sysname = convert_glib_filename_to_system_filename (name, NULL); + + gtk_widget_set_sensitive (encoding_selector, ! any_reader_may_open (sysname)); +} + GtkWidget * psppire_window_file_chooser_dialog (PsppireWindow *toplevel) { @@ -721,24 +737,20 @@ psppire_window_file_chooser_dialog (PsppireWindow *toplevel) g_object_set (dialog, "local-only", FALSE, NULL); gtk_file_filter_set_name (filter, _("Data and Syntax Files")); - gtk_file_filter_add_pattern (filter, "*.sav"); - gtk_file_filter_add_pattern (filter, "*.SAV"); - gtk_file_filter_add_pattern (filter, "*.por"); - gtk_file_filter_add_pattern (filter, "*.POR"); + gtk_file_filter_add_mime_type (filter, "application/x-spss-sav"); + gtk_file_filter_add_mime_type (filter, "application/x-spss-por"); gtk_file_filter_add_pattern (filter, "*.sps"); gtk_file_filter_add_pattern (filter, "*.SPS"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("System Files (*.sav)")); - gtk_file_filter_add_pattern (filter, "*.sav"); - gtk_file_filter_add_pattern (filter, "*.SAV"); + gtk_file_filter_add_mime_type (filter, "application/x-spss-sav"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("Portable Files (*.por) ")); - gtk_file_filter_add_pattern (filter, "*.por"); - gtk_file_filter_add_pattern (filter, "*.POR"); + gtk_file_filter_add_mime_type (filter, "application/x-spss-por"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); filter = gtk_file_filter_new (); @@ -773,8 +785,13 @@ psppire_window_file_chooser_dialog (PsppireWindow *toplevel) free (dir_name); } - gtk_file_chooser_set_extra_widget ( - GTK_FILE_CHOOSER (dialog), psppire_encoding_selector_new ("Auto", true)); + + { + GtkWidget *encoding_selector = psppire_encoding_selector_new ("Auto", true); + gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), encoding_selector); + + g_signal_connect (dialog, "selection-changed", G_CALLBACK (on_selection_changed), encoding_selector); + } return dialog; }