Enable changing of missing values from the variable sheet
authorJohn Darrington <john@darrington.wattle.id.au>
Wed, 19 Apr 2017 10:06:39 +0000 (12:06 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Wed, 19 Apr 2017 10:06:39 +0000 (12:06 +0200)
src/ui/gui/psppire-data-editor.c
src/ui/gui/psppire-data-editor.h

index 1d804ef05b230ca847612386eb0517264b97a13b..c480fd223bd5d900b6a5b9aeccdedc18c7813951 100644 (file)
@@ -128,6 +128,29 @@ var_sheet_data_to_string (GtkTreeModel *m, gint col, gint row, const GValue *in)
   return jmd_sheet_default_forward_conversion (m, col, row, in);
 }
 
+static void
+set_missing_values (GtkCellRenderer *renderer,
+     GtkCellEditable *editable,
+     gchar           *path,
+     gpointer         user_data)
+{
+  PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (user_data);
+  gint row = -1, col = -1;
+  jmd_sheet_get_active_cell (JMD_SHEET (de->var_sheet), &col, &row);
+
+  struct variable *var =
+    psppire_dict_get_variable (PSPPIRE_DICT (de->dict), row);
+
+  struct missing_values mv;
+  if (GTK_RESPONSE_OK == psppire_missing_val_dialog_run (NULL,
+                                                        var, &mv))
+    {
+      var_set_missing_values (var, &mv);
+    }
+
+  mv_destroy (&mv);
+}
+
 static void
 set_value_labels (GtkCellRenderer *renderer,
      GtkCellEditable *editable,
@@ -136,7 +159,7 @@ set_value_labels (GtkCellRenderer *renderer,
 {
   PsppireDataEditor *de = PSPPIRE_DATA_EDITOR (user_data);
   gint row = -1, col = -1;
-  sscanf (path, "r%dc%d", &row, &col);
+  jmd_sheet_get_active_cell (JMD_SHEET (de->var_sheet), &col, &row);
 
   struct variable *var =
     psppire_dict_get_variable (PSPPIRE_DICT (de->dict), row);
@@ -181,6 +204,9 @@ select_renderer_func (gint col, gint row, GType type, PsppireDataEditor *de)
     case DICT_TVM_COL_VALUE_LABELS:
       return de->value_label_renderer;
 
+    case DICT_TVM_COL_MISSING_VALUES:
+      return de->missing_values_renderer;
+
     case DICT_TVM_COL_ALIGNMENT:
       return alignment_renderer;
 
@@ -1078,6 +1104,11 @@ psppire_data_editor_init (PsppireDataEditor *de)
   g_signal_connect (de->value_label_renderer,
                    "editing-started", G_CALLBACK (set_value_labels),
                    de);
+
+  de->missing_values_renderer = gtk_cell_renderer_text_new ();
+  g_signal_connect (de->missing_values_renderer,
+                   "editing-started", G_CALLBACK (set_missing_values),
+                   de);
 }
 
 GtkWidget*
index e2db89f51a60b0da91e2ed284f8ad22ea634e8bf..dfea654085fd6e6861a1c43811eb92a01b86067d 100644 (file)
@@ -84,6 +84,7 @@ struct _PsppireDataEditor
   gboolean split;              /* True if the sheets are in split view. */
 
   GtkCellRenderer *value_label_renderer;
+  GtkCellRenderer *missing_values_renderer;
 };
 
 struct _PsppireDataEditorClass