Patch #5676 (syntax string source).
[pspp-builds.git] / src / ui / gui / psppire-dict.c
index 6391222cc50744771c78c077f3bd42cf1ceb519a..b4503125609fa8a941741f096c9f6f78b32f457d 100644 (file)
@@ -1,6 +1,6 @@
 /*
     PSPPIRE --- A Graphical User Interface for PSPP
-    Copyright (C) 2004, 2006  Free Software Foundation
+    Copyright (C) 2004, 2006, 2007  Free Software Foundation
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -50,11 +50,11 @@ enum  {VARIABLE_CHANGED,
        VARIABLE_INSERTED,
        VARIABLES_DELETED,
        WEIGHT_CHANGED,
+       FILTER_CHANGED,
+       SPLIT_CHANGED,
        n_SIGNALS};
 
-static guint signal[n_SIGNALS];
-
-#define CACHE_CHUNK 5
+static guint signals [n_SIGNALS];
 
 /* --- functions --- */
 /**
@@ -109,7 +109,7 @@ psppire_dict_class_init (PsppireDictClass *class)
 
   object_class->finalize = psppire_dict_finalize;
 
-  signal[VARIABLE_CHANGED] =
+  signal[VARIABLE_CHANGED] =
     g_signal_new ("variable_changed",
                  G_TYPE_FROM_CLASS (class),
                  G_SIGNAL_RUN_FIRST,
@@ -122,7 +122,7 @@ psppire_dict_class_init (PsppireDictClass *class)
 
 
 
-  signal[VARIABLE_INSERTED] =
+  signal[VARIABLE_INSERTED] =
     g_signal_new ("variable_inserted",
                  G_TYPE_FROM_CLASS (class),
                  G_SIGNAL_RUN_FIRST,
@@ -134,7 +134,7 @@ psppire_dict_class_init (PsppireDictClass *class)
                  G_TYPE_INT);
 
 
-  signal[VARIABLES_DELETED] =
+  signal[VARIABLES_DELETED] =
     g_signal_new ("variables_deleted",
                  G_TYPE_FROM_CLASS (class),
                  G_SIGNAL_RUN_FIRST,
@@ -147,7 +147,7 @@ psppire_dict_class_init (PsppireDictClass *class)
                  G_TYPE_INT);
 
 
-  signal[VARIABLE_RESIZED] =
+  signal[VARIABLE_RESIZED] =
     g_signal_new ("dict-size-changed",
                  G_TYPE_FROM_CLASS (class),
                  G_SIGNAL_RUN_FIRST,
@@ -160,7 +160,7 @@ psppire_dict_class_init (PsppireDictClass *class)
                  G_TYPE_INT);
 
 
-  signal [WEIGHT_CHANGED] =
+  signals [WEIGHT_CHANGED] =
     g_signal_new ("weight-changed",
                  G_TYPE_FROM_CLASS (class),
                  G_SIGNAL_RUN_FIRST,
@@ -170,6 +170,29 @@ psppire_dict_class_init (PsppireDictClass *class)
                  G_TYPE_NONE,
                  1,
                  G_TYPE_INT);
+
+
+  signals [FILTER_CHANGED] =
+    g_signal_new ("filter-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);
+
+
+  signals [SPLIT_CHANGED] =
+    g_signal_new ("split-changed",
+                 G_TYPE_FROM_CLASS (class),
+                 G_SIGNAL_RUN_FIRST,
+                 0,
+                 NULL, NULL,
+                 g_cclosure_marshal_VOID__VOID,
+                 G_TYPE_NONE,
+                 0);
 }
 
 static void
@@ -187,25 +210,37 @@ psppire_dict_finalize (GObject *object)
 static void
 addcb (struct dictionary *d, int idx, void *pd)
 {
-  g_signal_emit (pd, signal[VARIABLE_INSERTED], 0, idx);
+  g_signal_emit (pd, signal[VARIABLE_INSERTED], 0, idx);
 }
 
 static void
 delcb (struct dictionary *d, int idx, void *pd)
 {
-  g_signal_emit (pd, signal[VARIABLES_DELETED], 0, idx, 1);
+  g_signal_emit (pd, signal[VARIABLES_DELETED], 0, idx, 1);
 }
 
 static void
 mutcb (struct dictionary *d, int idx, void *pd)
 {
-  g_signal_emit (pd, signal[VARIABLE_CHANGED], 0, idx);
+  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);
+  g_signal_emit (pd, signals [WEIGHT_CHANGED], 0, idx);
+}
+
+static void
+filter_changed_callback (struct dictionary *d, int idx, void *pd)
+{
+  g_signal_emit (pd, signals [FILTER_CHANGED], 0, idx);
+}
+
+static void
+split_changed_callback (struct dictionary *d, void *pd)
+{
+  g_signal_emit (pd, signals [SPLIT_CHANGED], 0);
 }
 
 
@@ -214,7 +249,9 @@ static const struct dict_callbacks gui_callbacks =
     addcb,
     delcb,
     mutcb,
-    weight_changed_callback
+    weight_changed_callback,
+    filter_changed_callback,
+    split_changed_callback
   };
 
 static void
@@ -331,7 +368,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);
@@ -423,7 +460,7 @@ psppire_dict_resize_variable (PsppireDict *d, const struct variable *pv,
 
   fv = var_get_case_index (pv);
 
-  g_signal_emit (d, signal[VARIABLE_RESIZED], 0,
+  g_signal_emit (d, signal[VARIABLE_RESIZED], 0,
                fv + old_size,
                new_size - old_size );
 }
@@ -645,3 +682,10 @@ psppire_dict_rename_var (PsppireDict *dict, struct variable *v,
 {
   dict_rename_var (dict->dict, v, text);
 }
+
+
+struct variable *
+psppire_dict_get_weight_variable (const PsppireDict *dict)
+{
+  return dict_get_weight (dict->dict);
+}