Rename myreversefunc -> psppire_data_store_string_to_value
[pspp] / src / ui / gui / psppire-data-store.c
index c0843b1a6729496ee445c954c72b3da3055c4436..f97b8eaf1cdc5b246ec81685e590640b79686fd0 100644 (file)
@@ -130,11 +130,22 @@ __iter_nth_child (GtkTreeModel *tree_model,
   return TRUE;
 }
 
+/* Set the contents of OUT to reflect the information provided by IN, COL, and
+   ROW, for MODEL.  Returns TRUE if successful. */
 gboolean
-myreversefunc (GtkTreeModel *model, gint col, gint row,
-              const gchar *in, GValue *out)
+psppire_data_store_string_to_value (GtkTreeModel *model, gint col, gint row,
+                                   const gchar *in, GValue *out)
 {
-  PsppireDataStore *store  = PSPPIRE_DATA_STORE (model);
+  PsppireDataStore *store = PSPPIRE_DATA_STORE (model);
+
+  while (col >= psppire_dict_get_var_cnt (store->dict))
+    {
+      const struct variable *var =
+       psppire_dict_insert_variable (store->dict,
+                                     psppire_dict_get_var_cnt (store->dict),
+                                     NULL);
+      g_return_val_if_fail (var, FALSE);
+    }
 
   const struct variable *variable = psppire_dict_get_variable (store->dict, col);
   g_return_val_if_fail (variable, FALSE);
@@ -810,7 +821,10 @@ psppire_data_store_set_value (PsppireDataStore *ds, casenumber casenum,
   ok = datasheet_put_value (ds->datasheet, casenum, var_get_case_index (var),
                             v);
   if (ok)
-    g_signal_emit (ds, signals [CASE_CHANGED], 0, casenum);
+    {
+      g_signal_emit (ds, signals [CASE_CHANGED], 0, casenum);
+      g_signal_emit (ds, signals [ITEMS_CHANGED], 0, casenum, 1, 1);
+    }
 
   return ok;
 }