Applied patch #5653, which adds callbacks to dataset whenever its dictionary or
[pspp-builds.git] / src / ui / gui / psppire-data-store.c
index d75348584211afe2e72b3dbe5da8f8975c6d7fc9..9ed530344cf9f8c4d45652e3b535b7996510c6ec 100644 (file)
@@ -286,6 +286,25 @@ delete_variables_callback (GObject *obj, gint var_num, gint n_vars, gpointer dat
                                   var_num, -1);
 }
 
+
+static void
+variable_changed_callback (GObject *obj, gint var_num, gpointer data)
+{
+  PsppireDataStore *store;
+
+  g_return_if_fail (data);
+
+  store  = PSPPIRE_DATA_STORE (data);
+
+  g_sheet_column_columns_changed (G_SHEET_COLUMN (store),
+                                 var_num, 1);
+
+
+  g_sheet_model_range_changed (G_SHEET_MODEL (store),
+                              -1, var_num,
+                              -1, var_num);
+}
+
 static void
 insert_variable_callback (GObject *obj, gint var_num, gpointer data)
 {
@@ -365,8 +384,6 @@ psppire_data_store_new (PsppireDict *dict)
 void
 psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *dict)
 {
-  gint var_cnt = psppire_dict_get_next_value_idx (dict);
-
   data_store->dict = dict;
 
   if ( data_store->case_file)
@@ -375,7 +392,7 @@ psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *di
       data_store->case_file = 0;
     }
 
-  data_store->case_file = psppire_case_file_new (var_cnt);
+  data_store->case_file = psppire_case_file_new ();
 
   g_signal_connect (data_store->case_file, "cases-deleted",
                   G_CALLBACK (delete_cases_callback),
@@ -398,6 +415,11 @@ psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict *di
                   G_CALLBACK (delete_variables_callback),
                   data_store);
 
+  g_signal_connect (dict, "variable-changed",
+                  G_CALLBACK (variable_changed_callback),
+                  data_store);
+
+
   g_signal_connect (dict, "dict-size-changed",
                    G_CALLBACK (dict_size_change_callback),
                    data_store);
@@ -821,3 +843,4 @@ psppire_data_store_sheet_row_init (GSheetRowIface *iface)
 
   iface->get_button_label = geometry_get_row_button_label;
 }
+