Refactoring: common function set_sensitivity from toggle
authorJohn Darrington <john@darrington.wattle.id.au>
Fri, 23 Nov 2012 18:49:03 +0000 (19:49 +0100)
committerJohn Darrington <john@darrington.wattle.id.au>
Fri, 23 Nov 2012 18:49:03 +0000 (19:49 +0100)
Many dialog boxes have a signal handler to set the sensitivity
of a widget, according to the state of a toggle button.  Until
now, they had all written their own.

src/ui/gui/binomial-dialog.c
src/ui/gui/chi-square-dialog.c
src/ui/gui/dialog-common.c
src/ui/gui/dialog-common.h
src/ui/gui/psppire-dialog-action-logistic.c
src/ui/gui/psppire-val-chooser.c
src/ui/gui/select-cases-dialog.c

index ee3fbd7bf2cdb76c5c1c57160fceb1dcd687fba8..8f1df37f4970153498a1a6d7889216111958f404 100644 (file)
@@ -42,14 +42,6 @@ struct binomial_dialog
   GtkWidget *cutpoint_entry;
 };
 
-static void
-set_sensitivity (GtkToggleButton *button, GtkWidget *w)
-{
-  gboolean state = gtk_toggle_button_get_active (button);
-  gtk_widget_set_sensitive (w, state);
-}
-
-
 static gboolean
 get_proportion (const struct binomial_dialog *bin_d, double *prop)
 {
@@ -171,7 +163,7 @@ binomial_dialog (PsppireDataWindow *dw)
                "predicate", var_is_numeric,
                NULL);
 
-  g_signal_connect (bin_d.cutpoint_button, "toggled", G_CALLBACK (set_sensitivity),
+  g_signal_connect (bin_d.cutpoint_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle),
                    bin_d.cutpoint_entry);
 
   g_signal_connect_swapped (dialog, "refresh", G_CALLBACK (refresh),  &bin_d);
index dfa39f06eba9df63651810834c535fd7a27e554a..c67923ca28b5261de3132b1e12fe2b43c1410fc6 100644 (file)
@@ -46,14 +46,6 @@ struct chisquare_dialog
   GtkListStore *expected_list;
 };
 
-static void
-set_sensitivity (GtkToggleButton *button, GtkWidget *w)
-{
-  gboolean state = gtk_toggle_button_get_active (button);
-  gtk_widget_set_sensitive (w, state);
-}
-
-
 static gboolean
 dialog_state_valid (gpointer data)
 {
@@ -201,14 +193,14 @@ chisquare_dialog (PsppireDataWindow *dw)
                NULL);
 
 
-  g_signal_connect (csd.range_button, "toggled", G_CALLBACK (set_sensitivity), 
+  g_signal_connect (csd.range_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle), 
                    range_table);
 
 
-  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity), 
+  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle), 
                    values_acr);
 
-  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity), 
+  g_signal_connect (csd.values_button, "toggled", G_CALLBACK (set_sensitivity_from_toggle), 
                    expected_value_entry);
 
 
index c61cb14a64a88ef4b3dba174f194277c5c552216..416be46f443389adeaf6cac2ede7ceb4f74426b4 100644 (file)
@@ -165,3 +165,28 @@ numeric_only (GtkWidget *source, GtkWidget *dest)
   return retval;
 }
 
+/*
+  A pair of functions intended to be used as callbacks for the "toggled" signal
+  of a GtkToggleButton widget.  They make the sensitivity of W follow the status
+  of the togglebutton.
+*/
+void
+set_sensitivity_from_toggle (GtkToggleButton *togglebutton,  GtkWidget *w)
+{
+  gboolean active = gtk_toggle_button_get_active (togglebutton);
+
+  gtk_widget_set_sensitive (w, active);
+}
+
+/* */
+void
+set_sensitivity_from_toggle_invert (GtkToggleButton *togglebutton,
+                                   GtkWidget *w)
+{
+  gboolean active = gtk_toggle_button_get_active (togglebutton);
+
+  gtk_widget_set_sensitive (w, !active);
+}
+
+
+
index 328904acfc9643fbf669cf6cd0f2f3451166d9c1..d32082477d80dee20ce4f857c2b767e5f2879e00 100644 (file)
@@ -54,5 +54,13 @@ gboolean homogeneous_types (GtkWidget *source, GtkWidget *dest);
 */
 gboolean numeric_only (GtkWidget *source, GtkWidget *dest);
 
+/*
+  A pair of functions intended to be used as callbacks for the "toggled" signal
+  of a GtkToggleButton widget.  They make the sensitivity of W follow the status
+  of the togglebutton.
+*/
+void set_sensitivity_from_toggle (GtkToggleButton *togglebutton,  GtkWidget *w);
+void set_sensitivity_from_toggle_invert (GtkToggleButton *togglebutton,  GtkWidget *w);
+
 
 #endif
index d93a2f5b0c5e85fd871f7d6a4e6452af119c33d0..0426931e85231e10ee2da445e3c6c5f831be9003 100644 (file)
@@ -41,16 +41,6 @@ psppire_dialog_action_logistic_class_init (PsppireDialogActionLogisticClass *cla
 
 G_DEFINE_TYPE (PsppireDialogActionLogistic, psppire_dialog_action_logistic, PSPPIRE_TYPE_DIALOG_ACTION);
 
-static void
-set_sensitivity_from_toggle (GtkToggleButton *togglebutton,  gpointer data)
-{
-  GtkWidget *w = data;
-  gboolean active = gtk_toggle_button_get_active (togglebutton);
-
-  gtk_widget_set_sensitive (w, active);
-}
-
-
 static gboolean
 dialog_state_valid (gpointer data)
 {
index 680e147b62c845424c5aeb83ca7c507ff4bbf539..01d694e27e7e2fc98808488e27d0c603aecbe05e 100644 (file)
@@ -17,6 +17,7 @@
 #include <config.h>
 
 #include <gtk/gtk.h>
+#include "dialog-common.h"
 #include "psppire-val-chooser.h"
 
 #include "libpspp/str.h"
@@ -334,14 +335,6 @@ static struct layout range_opt[n_VAL_CHOOSER_BUTTONS]=
     {N_("_All other values"),          NULL,         else_set   }
   };
 
-static void
-set_sensitivity_from_toggle (GtkToggleButton *togglebutton,  GtkWidget *w)
-{
-  gboolean active = gtk_toggle_button_get_active (togglebutton);
-
-  gtk_widget_set_sensitive (w, active);
-}
-
 static void
 psppire_val_chooser_init (PsppireValChooser *vr)
 {
index be0a957f6c46e3c6e15140358bfe55945cbfe654..c03906a6a8a2fedec3c5301864a9bf2224bd430b 100644 (file)
@@ -60,27 +60,6 @@ struct select_cases_dialog
 static gchar * generate_syntax (const struct select_cases_dialog *scd);
 
 
-static void
-set_sensitivity_from_toggle (GtkToggleButton *togglebutton,  gpointer data)
-{
-  GtkWidget *w = data;
-  gboolean active = gtk_toggle_button_get_active (togglebutton);
-
-  gtk_widget_set_sensitive (w, active);
-}
-
-static void
-set_sensitivity_from_toggle_invert (GtkToggleButton *togglebutton,
-                                   gpointer data)
-{
-  GtkWidget *w = data;
-  gboolean active = gtk_toggle_button_get_active (togglebutton);
-
-  gtk_widget_set_sensitive (w, !active);
-}
-
-
-
 static const gchar label1[]=N_("Approximately %3d%% of all cases.");
 static const gchar label2[]=N_("Exactly %3d cases from the first %3d cases.");