New function fmt_dollar_template based on pspp-dev discussion.
[pspp] / src / ui / gui / psppire-variable.c
index 6195a16b2ce1c1b421880a2d9e031d2f426dc684..70c69a7ee768b3bdcbee3cd02a67b287dc31a50d 100644 (file)
@@ -18,6 +18,8 @@
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
     02110-1301, USA. */
 
+#include <config.h>
+
 #include <string.h>
 #include <stdlib.h>
 
@@ -51,7 +53,7 @@ psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text)
 
   dict_rename_var(pv->dict->dict, pv->v, text);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
 
   return TRUE;
 }
@@ -66,7 +68,7 @@ psppire_variable_set_columns(struct PsppireVariable *pv, gint columns)
 
   var_set_display_width (pv->v, columns);
   
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
 
   return TRUE;
 }
@@ -80,7 +82,7 @@ psppire_variable_set_label(struct PsppireVariable *pv, const gchar *label)
 
   var_set_label (pv->v, label);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
 
   return TRUE;
 }
@@ -124,7 +126,7 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width)
        old_var_cnt = DIV_RND_UP(var_get_width (pv->v), MAX_SHORT_STRING);
       
       new_var_cnt = DIV_RND_UP(width, MAX_SHORT_STRING);
-      pv->v->width = width;
+      var_set_width (pv->v, width);
 
       psppire_dict_resize_variable(pv->dict, pv,
                                   old_var_cnt, new_var_cnt);
@@ -148,10 +150,7 @@ psppire_variable_set_type(struct PsppireVariable *pv, int type)
   else
     old_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING);
 
-  if ( type == NUMERIC ) 
-    pv->v->width = 0;
-  else if (var_get_width (pv->v))
-    pv->v->width = 1;
+  var_set_width (pv->v, type == VAR_NUMERIC ? 0 : 1);
 
   if ( var_get_width (pv->v) == 0 ) 
     new_var_cnt = 1;
@@ -161,7 +160,7 @@ psppire_variable_set_type(struct PsppireVariable *pv, int type)
   psppire_dict_resize_variable(pv->dict, pv,
                               old_var_cnt, new_var_cnt);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -180,7 +179,7 @@ psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt)
     {
       msg_enable ();
       var_set_both_formats (pv->v, fmt);
-      psppire_dict_var_changed(pv->dict, pv->v->index);
+      psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
       return TRUE;
     }
   msg_enable ();
@@ -197,10 +196,9 @@ psppire_variable_set_value_labels(const struct PsppireVariable *pv,
   g_return_val_if_fail(pv->dict, FALSE);
   g_return_val_if_fail(pv->v, FALSE);
 
-  val_labs_destroy(pv->v->val_labs);
-  pv->v->val_labs = val_labs_copy(vls);
+  var_set_value_labels (pv->v, vls);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -214,7 +212,7 @@ psppire_variable_set_missing(const struct PsppireVariable *pv,
 
   var_set_missing_values (pv->v, miss);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -226,7 +224,7 @@ psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spe
 
   var_set_write_format (pv->v, &fmt);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -238,7 +236,7 @@ psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spe
 
   var_set_print_format (pv->v, &fmt);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -253,7 +251,7 @@ psppire_variable_set_alignment(struct PsppireVariable *pv, gint align)
 
   var_set_alignment (pv->v, align);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -267,7 +265,7 @@ psppire_variable_set_measure(struct PsppireVariable *pv, gint measure)
 
   var_set_measure (pv->v, measure + 1);
 
-  psppire_dict_var_changed(pv->dict, pv->v->index);
+  psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v));
   return TRUE;
 }
 
@@ -329,7 +327,7 @@ psppire_variable_get_value_labels(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, NULL);
   g_return_val_if_fail(pv->v, NULL);
 
-  return pv->v->val_labs;
+  return var_get_value_labels (pv->v);
 }
 
 
@@ -379,7 +377,7 @@ psppire_variable_get_fv(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->fv;
+  return var_get_case_index (pv->v);
 }
 
 
@@ -390,6 +388,6 @@ psppire_variable_get_index(const struct PsppireVariable *pv)
   g_return_val_if_fail(pv, -1);
   g_return_val_if_fail(pv->v, -1);
 
-  return pv->v->index;
+  return var_get_dict_index (pv->v);
 }