[PATCH] Simplify dive tag checkbox code
subsurface at henrik.synth.no
subsurface at henrik.synth.no
Wed Apr 10 01:24:01 PDT 2013
From: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
Getting rid of duplicated code when generating gtk check buttons.
Signed-off-by: Henrik Brautaset Aronsen <subsurface at henrik.synth.no>
---
info.c | 89 ++++++++++++++++++------------------------------------------------
1 file changed, 24 insertions(+), 65 deletions(-)
diff --git a/info.c b/info.c
index 4400d53..b1843d6 100644
--- a/info.c
+++ b/info.c
@@ -806,6 +806,14 @@ void divetag_toggle_cb(GtkWidget *widget, gpointer data)
edit_dive.dive_tags &= ~DT;
}
+void checkbox_tag(GtkWidget *button, GtkWidget *sbox, struct dive *dive, int dtag, char *label)
+{
+ button = gtk_check_button_new_with_label(label);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & dtag);
+ gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
+ g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (dtag));
+}
+
static void dive_info_widget(GtkWidget *obox, struct dive *dive, struct dive_info *info, gboolean multi)
{
GtkWidget *hbox, *frame, *equipment, *ibox, *box, *button, *sbox, *framebox;
@@ -889,79 +897,30 @@ static void dive_info_widget(GtkWidget *obox, struct dive *dive, struct dive_inf
framebox = gtk_vbox_new(FALSE, 3);
gtk_container_add(GTK_CONTAINER(frame), framebox);
+ /* 1st line */
sbox = gtk_hbox_new(FALSE, 6);
gtk_box_pack_start(GTK_BOX(framebox), sbox, TRUE, FALSE, 3);
-/* 1st line */
- button = gtk_check_button_new_with_label(_("Boat"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_BOAT);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_BOAT));
-
- button = gtk_check_button_new_with_label(_("Shore"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_SHORE);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_SHORE));
-
- button = gtk_check_button_new_with_label(_("Pool"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_POOL);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_POOL));
-
- button = gtk_check_button_new_with_label(_("Lake"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_LAKE);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_LAKE));
-
- button = gtk_check_button_new_with_label(_("River"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_RIVER);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_RIVER));
+ checkbox_tag(button, sbox, dive, DTAG_BOAT, _("Boat"));
+ checkbox_tag(button, sbox, dive, DTAG_SHORE, _("Shore"));
+ checkbox_tag(button, sbox, dive, DTAG_POOL, _("Pool"));
+ checkbox_tag(button, sbox, dive, DTAG_LAKE, _("Lake"));
+ checkbox_tag(button, sbox, dive, DTAG_RIVER, _("River"));
+ /* 2nd line */
sbox = gtk_hbox_new(FALSE, 6);
gtk_box_pack_start(GTK_BOX(framebox), sbox, TRUE, FALSE, 3);
-/* 2nd line */
- button = gtk_check_button_new_with_label(_("Drift"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_DRIFT);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_DRIFT));
-
- button = gtk_check_button_new_with_label(_("Deep"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_DEEP);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_DEEP));
-
- button = gtk_check_button_new_with_label(_("Cavern"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_CAVERN);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_CAVERN));
-
- button = gtk_check_button_new_with_label(_("Ice"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_ICE);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_ICE));
-
- button = gtk_check_button_new_with_label(_("Wreck"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_WRECK);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_WRECK));
+ checkbox_tag(button, sbox, dive, DTAG_DRIFT, _("Drift"));
+ checkbox_tag(button, sbox, dive, DTAG_CAVE, _("Cave"));
+ checkbox_tag(button, sbox, dive, DTAG_CAVERN, _("Cavern"));
+ checkbox_tag(button, sbox, dive, DTAG_ICE, _("Ice"));
+ checkbox_tag(button, sbox, dive, DTAG_WRECK, _("Wreck"));
+ /* 3rd line */
sbox = gtk_hbox_new(FALSE, 6);
gtk_box_pack_start(GTK_BOX(framebox), sbox, TRUE, FALSE, 3);
-/* 3rd line */
- button = gtk_check_button_new_with_label(_("Cave"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_CAVE);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_CAVE));
-
- button = gtk_check_button_new_with_label(_("Night"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_NIGHT);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_NIGHT));
-
- button = gtk_check_button_new_with_label(_("Freshwater"));
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & DTAG_FRESH);
- gtk_box_pack_start(GTK_BOX(sbox), button, FALSE, FALSE, 6);
- g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(divetag_toggle_cb), GINT_TO_POINTER (DTAG_FRESH));
+ checkbox_tag(button, sbox, dive, DTAG_DEEP, _("Deep"));
+ checkbox_tag(button, sbox, dive, DTAG_NIGHT, _("Night"));
+ checkbox_tag(button, sbox, dive, DTAG_FRESH, _("Freshwater"));
/* only show notes if editing a single dive */
if (multi) {
--
1.8.2
More information about the subsurface
mailing list