aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/proto_dlg.c
diff options
context:
space:
mode:
authorGilbert Ramirez <gram@alumni.rice.edu>2001-03-01 21:34:09 +0000
committerGilbert Ramirez <gram@alumni.rice.edu>2001-03-01 21:34:09 +0000
commitc88e7b5a63395f6ba894bb79626f16e71038f1b0 (patch)
treefbe526242245f08e547986f425ccbe401cfb29bc /gtk/proto_dlg.c
parente9b0d49fb0f022472265bdcfc56ec550c44bde64 (diff)
Add "Toggle All", "Enable All", and "Disable All" buttons to the
protocol GUI. svn path=/trunk/; revision=3091
Diffstat (limited to 'gtk/proto_dlg.c')
-rw-r--r--gtk/proto_dlg.c88
1 files changed, 86 insertions, 2 deletions
diff --git a/gtk/proto_dlg.c b/gtk/proto_dlg.c
index 678df9d86d..e94906a375 100644
--- a/gtk/proto_dlg.c
+++ b/gtk/proto_dlg.c
@@ -1,6 +1,6 @@
/* proto_dlg.c
*
- * $Id: proto_dlg.c,v 1.7 2001/01/22 09:33:19 guy Exp $
+ * $Id: proto_dlg.c,v 1.8 2001/03/01 21:34:09 gram Exp $
*
* Laurent Deniel <deniel@worldnet.fr>
*
@@ -56,6 +56,10 @@ static void show_proto_selection(GtkWidget *main, GtkWidget *container);
static gboolean set_proto_selection(GtkWidget *);
static gboolean revert_proto_selection(void);
+static void toggle_all_cb(GtkWidget *button, gpointer parent_w);
+static void enable_all_cb(GtkWidget *button, gpointer parent_w);
+static void disable_all_cb(GtkWidget *button, gpointer parent_w);
+
static GtkWidget *proto_w = NULL;
/* list of protocols */
@@ -72,7 +76,7 @@ void proto_cb(GtkWidget *w, gpointer data)
{
GtkWidget *main_vb, *bbox, *proto_nb, *apply_bt, *cancel_bt, *ok_bt,
- *label, *scrolled_w, *selection_vb;
+ *label, *scrolled_w, *selection_vb, *button;
if (proto_w != NULL) {
reactivate_window(proto_w);
@@ -126,6 +130,35 @@ void proto_cb(GtkWidget *w, gpointer data)
gtk_widget_show(label);
gtk_box_pack_start(GTK_BOX(selection_vb), label, FALSE, FALSE, 0);
+
+ bbox = gtk_hbutton_box_new();
+ gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
+ gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
+ gtk_box_pack_start(GTK_BOX(selection_vb), bbox, FALSE, FALSE, 0);
+ gtk_widget_show(bbox);
+
+ /* Toggle All */
+ button = gtk_button_new_with_label("Toggle All");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(toggle_all_cb), GTK_OBJECT(proto_w));
+ gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ /* Enable All */
+ button = gtk_button_new_with_label("Enable All");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(enable_all_cb), GTK_OBJECT(proto_w));
+ gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ /* Disable All */
+ button = gtk_button_new_with_label("Disable All");
+ gtk_signal_connect(GTK_OBJECT(button), "clicked",
+ GTK_SIGNAL_FUNC(disable_all_cb), GTK_OBJECT(proto_w));
+ gtk_box_pack_start(GTK_BOX(bbox), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+
/* XXX add other protocol-related panels here ... */
gtk_widget_show(proto_nb);
@@ -167,6 +200,57 @@ void proto_cb(GtkWidget *w, gpointer data)
} /* proto_cb */
+
+/* Toggle All */
+static void
+toggle_all_cb(GtkWidget *button, gpointer parent_w)
+{
+
+ GSList *entry;
+
+ for (entry = protocol_list; entry != NULL; entry = g_slist_next(entry)) {
+ GtkWidget *button;
+ protocol_data_t *p = entry->data;
+
+ button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w),
+ p->abbrev);
+ /* gtk_toggle_button_toggled() didn't work for me... */
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),
+ !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
+ }
+}
+
+/* Enable/Disable All Helper */
+static void
+set_active_all(GtkWidget *button, gpointer parent_w, gboolean new_state)
+{
+
+ GSList *entry;
+
+ for (entry = protocol_list; entry != NULL; entry = g_slist_next(entry)) {
+ GtkWidget *button;
+ protocol_data_t *p = entry->data;
+
+ button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w),
+ p->abbrev);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), new_state);
+ }
+}
+
+/* Enable All */
+static void
+enable_all_cb(GtkWidget *button, gpointer parent_w)
+{
+ set_active_all(button, parent_w, TRUE);
+}
+
+/* Disable All */
+static void
+disable_all_cb(GtkWidget *button, gpointer parent_w)
+{
+ set_active_all(button, parent_w, FALSE);
+}
+
static void proto_destroy_cb(GtkWidget *w, gpointer data)
{
GSList *entry;