+enum group_definition
+ {
+ GROUPS_UNDEF,
+ GROUPS_VALUES,
+ GROUPS_CUT_POINT
+ };
+
+struct tt_groups_dialog
+{
+ GtkWidget *dialog;
+ GtkWidget *label;
+ GtkWidget *table1;
+ GtkWidget *table2;
+ GtkWidget *hbox1;
+
+ GtkWidget *values_toggle_button;
+ GtkWidget *cut_point_toggle_button;
+
+ GtkWidget *grp_entry[2];
+ GtkWidget *cut_point_entry;
+
+ enum group_definition group_defn;
+ gchar *val[2];
+};
+
+static void
+set_group_criterion_type (GtkToggleButton *button,
+ struct tt_groups_dialog *groups)
+{
+ gboolean by_values = gtk_toggle_button_get_active (button);
+
+ gtk_widget_set_sensitive (groups->label, by_values);
+ gtk_widget_set_sensitive (groups->table2, by_values);
+
+ gtk_widget_set_sensitive (groups->hbox1, !by_values);
+}
+
+static void
+tt_groups_dialog_destroy (struct tt_groups_dialog *grps)
+{
+ g_object_unref (grps->table1);
+ g_object_unref (grps->table2);
+
+ g_free (grps->val[0]);
+ g_free (grps->val[1]);
+
+ g_free (grps);
+}
+
+static struct tt_groups_dialog *
+tt_groups_dialog_create (GtkBuilder *xml, GtkWindow *parent)
+{
+ struct tt_groups_dialog *grps = xmalloc (sizeof (*grps));
+
+ grps->group_defn = GROUPS_UNDEF;
+
+ grps->dialog = get_widget_assert (xml, "define-groups-dialog");
+ grps->table1 = get_widget_assert (xml, "table1");
+ grps->table2 = get_widget_assert (xml, "table2");
+ grps->label = get_widget_assert (xml, "label4");
+ grps->hbox1 = get_widget_assert (xml, "hbox1");
+
+ grps->grp_entry[0] = get_widget_assert (xml, "group1-entry");
+ grps->grp_entry[1] = get_widget_assert (xml, "group2-entry");
+ grps->cut_point_entry = get_widget_assert (xml, "cut-point-entry");
+
+ grps->cut_point_toggle_button = get_widget_assert (xml, "radiobutton4");
+ grps->values_toggle_button = get_widget_assert (xml, "radiobutton3");
+
+ g_object_ref (grps->table1);
+ g_object_ref (grps->table2);
+
+ g_signal_connect (grps->values_toggle_button, "toggled",
+ G_CALLBACK (set_group_criterion_type), grps);
+
+ gtk_window_set_transient_for (GTK_WINDOW (grps->dialog), parent);
+
+ grps->val[0] = xstrdup ("");
+ grps->val[1] = xstrdup ("");
+
+ return grps;
+}
+
+