Added psppire-dialog and psppire-buttonbox widgets.
[pspp-builds.git] / src / ui / gui / psppire-dict.c
index bba515019b4a5b8b97dd7874f24b6bbcca1413cd..4fc9c372c9af27ace50a7c2dfb924c858b4ebf7a 100644 (file)
@@ -49,6 +49,7 @@ enum  {VARIABLE_CHANGED,
        VARIABLE_RESIZED,
        VARIABLE_INSERTED,
        VARIABLES_DELETED,
+       WEIGHT_CHANGED,
        n_SIGNALS};
 
 static guint signal[n_SIGNALS];
@@ -158,6 +159,17 @@ psppire_dict_class_init (PsppireDictClass *class)
                  G_TYPE_INT,
                  G_TYPE_INT);
 
+
+  signal [WEIGHT_CHANGED] =
+    g_signal_new ("weight-changed",
+                 G_TYPE_FROM_CLASS (class),
+                 G_SIGNAL_RUN_FIRST,
+                 0,
+                 NULL, NULL,
+                 g_cclosure_marshal_VOID__INT,
+                 G_TYPE_NONE,
+                 1,
+                 G_TYPE_INT);
 }
 
 static void
@@ -190,11 +202,19 @@ mutcb (struct dictionary *d, int idx, void *pd)
   g_signal_emit (pd, signal[VARIABLE_CHANGED], 0, idx);
 }
 
+static void
+weight_changed_callback (struct dictionary *d, int idx, void *pd)
+{
+  g_signal_emit (pd, signal [WEIGHT_CHANGED], 0, idx);
+}
+
+
 static const struct dict_callbacks gui_callbacks =
   {
     addcb,
     delcb,
-    mutcb
+    mutcb,
+    weight_changed_callback
   };
 
 static void
@@ -311,7 +331,7 @@ psppire_dict_set_name (PsppireDict* d, gint idx, const gchar *name)
 
 /* Return the IDXth variable */
 struct variable *
-psppire_dict_get_variable (PsppireDict *d, gint idx)
+psppire_dict_get_variable (const PsppireDict *d, gint idx)
 {
   g_return_val_if_fail (d, NULL);
   g_return_val_if_fail (d->dict, NULL);
@@ -625,3 +645,18 @@ psppire_dict_rename_var (PsppireDict *dict, struct variable *v,
 {
   dict_rename_var (dict->dict, v, text);
 }
+
+
+void
+psppire_dict_set_weight_variable (PsppireDict *dict, struct variable *v)
+{
+  g_return_if_fail (v == NULL || var_is_numeric (v));
+  dict_set_weight (dict->dict, v);
+}
+
+
+struct variable *
+psppire_dict_get_weight_variable (const PsppireDict *dict)
+{
+  return dict_get_weight (dict->dict);
+}