Added valid predicates to transpose and sort dialogs.
authorJohn Darrington <john@darrington.wattle.id.au>
Fri, 8 Feb 2008 03:33:43 +0000 (03:33 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Fri, 8 Feb 2008 03:33:43 +0000 (03:33 +0000)
src/ui/gui/ChangeLog
src/ui/gui/sort-cases-dialog.c
src/ui/gui/transpose-dialog.c

index 608a83f687283d51fe8f956cbbd14a29b8785115..711624d03a5432d6d485a7b33cf6bdc7e6e200ea 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-08  John Darrington <john@darrington.wattle.id.au>
+
+       * sort-cases-dialog.c transpose-dialog.c: Added dialog_valid
+       predicates.
+
 2008-02-04  John Darrington <john@darrington.wattle.id.au>
 
        * checkbox-treeview.c: In toggle callback, use the treeview's 
index a722063bca70beb42f7ca4a4a990926fa369b4b1..62fac58379b7aaf71f0de9fed8672c98ee3ed74a 100644 (file)
@@ -45,6 +45,21 @@ struct sort_cases_dialog
   GtkToggleButton *ascending;
 };
 
+
+static gboolean
+dialog_state_valid (gpointer data)
+{
+  struct sort_cases_dialog *scd = data;
+  GtkTreeModel *model = gtk_tree_view_get_model (scd->tv);
+
+  gint n_rows = gtk_tree_model_iter_n_children  (model, NULL);
+
+  if ( n_rows == 0 )
+    return FALSE;
+
+  return TRUE;
+}
+
 static char *
 generate_syntax (const struct sort_cases_dialog *scd)
 {
@@ -117,6 +132,11 @@ sort_cases_dialog (GObject *o, gpointer data)
   scd.ascending =
     GTK_TOGGLE_BUTTON (get_widget_assert (xml, "sort-cases-radiobutton0"));
 
+
+  psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (dialog),
+                                     dialog_state_valid, &scd);
+
+
   response = psppire_dialog_run (PSPPIRE_DIALOG (dialog));
 
 
index 3a1f3a931002e53e0127ff7ed9f6dff869e22cfd..cdd3364d8fa7aa9d5a1971be51d0fd8c4fb453a4 100644 (file)
@@ -55,6 +55,28 @@ refresh (PsppireDialog *dialog, gpointer data)
   gtk_entry_set_text (GTK_ENTRY (entry), "");
 }
 
+static gboolean
+dialog_state_valid (gpointer data)
+{
+  GladeXML *xml = data;
+
+  GtkWidget *tv = get_widget_assert (xml, "variables-treeview");
+  GtkWidget *entry = get_widget_assert (xml, "new-name-entry");
+
+  GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (tv));
+
+  gint n_rows = gtk_tree_model_iter_n_children  (model, NULL);
+
+  if ( n_rows == 0 )
+    return FALSE;
+
+  if ( 0 == strcmp ("", gtk_entry_get_text (GTK_ENTRY (entry))))
+    return FALSE;
+
+  return TRUE;
+}
+
+
 void
 transpose_dialog (GObject *o, gpointer data)
 {
@@ -99,6 +121,9 @@ transpose_dialog (GObject *o, gpointer data)
 
   gtk_window_set_transient_for (GTK_WINDOW (dialog), de->parent.window);
 
+  psppire_dialog_set_valid_predicate (PSPPIRE_DIALOG (dialog),
+                                     dialog_state_valid, xml);
+
   response = psppire_dialog_run (PSPPIRE_DIALOG (dialog));
 
   switch (response)