Merge branch 'master' into import-gui
[pspp] / src / ui / gui / psppire-data-window.c
index ea3ec43d1fb7000a9724b64aab40a487159cc8d2..500877bdd38470abdda490fb8747746cc00718f6 100644 (file)
 #include "ui/gui/comments-dialog.h"
 #include "ui/gui/compute-dialog.h"
 #include "ui/gui/count-dialog.h"
-#include "ui/gui/crosstabs-dialog.h"
 #include "ui/gui/entry-dialog.h"
 #include "ui/gui/executor.h"
 #include "ui/gui/find-dialog.h"
-#include "ui/gui/frequencies-dialog.h"
 #include "ui/gui/goto-case-dialog.h"
 #include "ui/gui/help-menu.h"
 #include "ui/gui/helper.h"
@@ -905,12 +903,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.
 
@@ -1007,6 +1018,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));
 
@@ -1014,7 +1032,7 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
 
   connect_action (de, "file_new_data", G_CALLBACK (create_data_window));
 
-  connect_action (de, "file_import-text", G_CALLBACK (text_data_import_assistant));
+  connect_action (de, "file_import", G_CALLBACK (text_data_import_assistant));
 
   connect_action (de, "file_save", G_CALLBACK (psppire_window_save));
  
@@ -1071,8 +1089,6 @@ psppire_data_window_finish_init (PsppireDataWindow *de,
   connect_action (de, "transform_count", G_CALLBACK (count_dialog));
   connect_action (de, "transform_recode-same", G_CALLBACK (recode_same_dialog));
   connect_action (de, "transform_recode-different", G_CALLBACK (recode_different_dialog));
-  connect_action (de, "analyze_frequencies", G_CALLBACK (frequencies_dialog));
-  connect_action (de, "crosstabs", G_CALLBACK (crosstabs_dialog));
   connect_action (de, "univariate", G_CALLBACK (univariate_dialog));
   connect_action (de, "chi-square", G_CALLBACK (chisquare_dialog));
   connect_action (de, "runs", G_CALLBACK (runs_dialog));