X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-data-window.c;h=3a032f0a285de1cc050d3d47b22aafd99e73cf34;hb=f0eacba971be04bd52971a8a23263d38cde0e661;hp=a2cfcbbffcb8ddf0b2982ad300478740b7e4e80d;hpb=c3dd7acbbaca2931e601b6327a39a209f6cc0d9e;p=pspp diff --git a/src/ui/gui/psppire-data-window.c b/src/ui/gui/psppire-data-window.c index a2cfcbbffc..3a032f0a28 100644 --- a/src/ui/gui/psppire-data-window.c +++ b/src/ui/gui/psppire-data-window.c @@ -904,12 +904,25 @@ connect_action (PsppireDataWindow *dw, const char *action_name, GCallback handler) { GtkAction *action = get_action_assert (dw->builder, action_name); - + g_signal_connect_swapped (action, "activate", handler, dw); return action; } +/* Only a data file with at least one variable can be saved. */ +static void +enable_save (PsppireDataWindow *dw) +{ + PsppireDict *dict = dw->var_store->dictionary; + gboolean enable = psppire_dict_get_var_cnt (dict) > 0; + + gtk_action_set_sensitive (get_action_assert (dw->builder, "file_save"), + enable); + gtk_action_set_sensitive (get_action_assert (dw->builder, "file_save_as"), + enable); +} + /* Initializes as much of a PsppireDataWindow as we can and must before the dataset has been set. @@ -1006,6 +1019,13 @@ psppire_data_window_finish_init (PsppireDataWindow *de, G_CALLBACK (on_split_change), de); + g_signal_connect_swapped (dict, "backend-changed", + G_CALLBACK (enable_save), de); + g_signal_connect_swapped (dict, "variable-inserted", + G_CALLBACK (enable_save), de); + g_signal_connect_swapped (dict, "variable-deleted", + G_CALLBACK (enable_save), de); + enable_save (de); connect_action (de, "edit_copy", G_CALLBACK (on_edit_copy));