X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-window.c;h=4eb274b5284805b3cfc8742499d11c1409cd7a26;hb=refs%2Fbuilds%2F20111111030502%2Fpspp;hp=2b521970ceec0226bf4af930794679bf65a8abc4;hpb=32ee0e0402d6d56674f53a47d879ec5c07dabe09;p=pspp diff --git a/src/ui/gui/psppire-window.c b/src/ui/gui/psppire-window.c index 2b521970ce..4eb274b528 100644 --- a/src/ui/gui/psppire-window.c +++ b/src/ui/gui/psppire-window.c @@ -28,6 +28,7 @@ #define N_(msgid) msgid #include "data/any-reader.h" +#include "data/file-name.h" #include "data/dataset.h" #include "helper.h" @@ -488,7 +489,7 @@ psppire_window_init (PsppireWindow *window) g_signal_connect_swapped (window, "delete-event", G_CALLBACK (on_delete), window); - g_object_set (window, "icon-name", "psppicon", NULL); + g_object_set (window, "icon-name", "pspp", NULL); g_signal_connect (window, "realize", G_CALLBACK (on_realize), window); @@ -526,7 +527,7 @@ psppire_window_query_save (PsppireWindow *se) description); g_free (description); - g_object_set (dialog, "icon-name", "psppicon", NULL); + g_object_set (dialog, "icon-name", "pspp", NULL); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("If you don't save, changes from the last %ld seconds will be permanently lost."), @@ -706,6 +707,28 @@ 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); + + if ( ! fn_exists (sysname)) + { + gtk_widget_set_sensitive (encoding_selector, FALSE); + return; + } + + gtk_widget_set_sensitive (encoding_selector, ! any_reader_may_open (sysname)); +} + GtkWidget * psppire_window_file_chooser_dialog (PsppireWindow *toplevel) { @@ -721,24 +744,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 +792,17 @@ 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_widget_set_sensitive (encoding_selector, FALSE); + + g_signal_connect (dialog, "selection-changed", G_CALLBACK (on_selection_changed), + encoding_selector); + + gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER (dialog), encoding_selector); + } return dialog; }