X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=e2fa79692c112534e756b622601b02af6e2fa848;hb=f1a02381223dd6d652c590e2a5514967b9448905;hp=cdd00dca1d46c6efb6bd8892295f29ae8bcb0b9a;hpb=905ec939774f017a3e7108826d60c9c6072131c5;p=pspp diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index cdd00dca1d..e2fa79692c 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -319,8 +319,9 @@ add_most_recent (const char *file_name) #endif } -static void -open_data_file (const gchar *file_name, PsppireDataWindow *de) +void +psppire_data_window_load_file (PsppireDataWindow *de, + const gchar *file_name) { struct getl_interface *sss; struct string filename; @@ -337,6 +338,8 @@ open_data_file (const gchar *file_name, PsppireDataWindow *de) psppire_window_set_filename (PSPPIRE_WINDOW (de), file_name); add_most_recent (file_name); } + + psppire_window_set_unsaved (PSPPIRE_WINDOW (de), FALSE); } @@ -387,7 +390,7 @@ open_data_dialog (GtkAction *action, PsppireDataWindow *de) de->file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - open_data_file (de->file_name, de); + psppire_data_window_load_file (de, de->file_name); } break; default: @@ -454,6 +457,8 @@ save_file (PsppireDataWindow *de) ds_destroy (&file_name); execute_syntax (sss); + + psppire_window_set_unsaved (PSPPIRE_WINDOW (de), FALSE); } @@ -916,7 +921,7 @@ on_recent_data_select (GtkMenuShell *menushell, gpointer user_data) g_free (uri); - open_data_file (file, de); + psppire_data_window_load_file (de, file); g_free (file); } @@ -1000,7 +1005,11 @@ on_switch_sheet (GtkNotebook *notebook, } - +static void +set_unsaved (gpointer w) +{ + psppire_window_set_unsaved (PSPPIRE_WINDOW (w), TRUE); +} static void psppire_data_window_init (PsppireDataWindow *de) @@ -1021,6 +1030,17 @@ psppire_data_window_init (PsppireDataWindow *de) de->data_editor = PSPPIRE_DATA_EDITOR (psppire_data_editor_new (the_var_store, the_data_store)); + g_signal_connect_swapped (the_data_store, "case-changed", + G_CALLBACK (set_unsaved), de); + + g_signal_connect_swapped (the_data_store, "case-inserted", + G_CALLBACK (set_unsaved), de); + + g_signal_connect_swapped (the_data_store, "cases-deleted", + G_CALLBACK (set_unsaved), de); + + dataset_set_callback (the_dataset, set_unsaved, de); + connect_help (de->xml); g_object_ref (menubar);