summaryrefslogtreecommitdiffstats
path: root/info.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-04-10 08:21:30 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-04-10 08:21:30 -0700
commit0a64844abd8c507f58bdeea4862a919f19a3ead1 (patch)
treee270986060bfe45bd2af8740128e0977c132873b /info.c
parent593a0a7a6091c1840e91c0de5a67d1656ee65737 (diff)
downloadsubsurface-0a64844abd8c507f58bdeea4862a919f19a3ead1.tar.gz
Turn tag checkboxes code into a simple loop
This makes the code much cleaner and also reuses the strings in the dtag_names array. This means the tag names are all lower case everywhere, but that seems like an acceptable trade-off. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Suggested-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'info.c')
-rw-r--r--info.c92
1 files changed, 16 insertions, 76 deletions
diff --git a/info.c b/info.c
index 4400d5363..07d9f83f5 100644
--- a/info.c
+++ b/info.c
@@ -799,11 +799,11 @@ static gboolean base_data_cb(GtkWidget *w, GdkEvent *event, gpointer _data)
void divetag_toggle_cb(GtkWidget *widget, gpointer data)
{
- int DT = GPOINTER_TO_INT (data);
+ int togglebit = GPOINTER_TO_INT (data);
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
- edit_dive.dive_tags |= DT;
+ edit_dive.dive_tags |= togglebit;
else
- edit_dive.dive_tags &= ~DT;
+ edit_dive.dive_tags &= ~togglebit;
}
static void dive_info_widget(GtkWidget *obox, struct dive *dive, struct dive_info *info, gboolean multi)
@@ -816,6 +816,7 @@ static void dive_info_widget(GtkWidget *obox, struct dive *dive, struct dive_inf
char airtemp[10];
const char *unit;
double value;
+ int i;
if (multi) {
GtkWidget *label;
@@ -889,79 +890,18 @@ 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);
- 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));
-
- 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));
-
- 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));
+ /* check boxes for the (currently fixed) list of tags;
+ * let's do 5 per row */
+ for (i = 0; i < DTAG_NR; i++) {
+ if (i % 5 == 0) {
+ sbox = gtk_hbox_new(FALSE, 6);
+ gtk_box_pack_start(GTK_BOX(framebox), sbox, TRUE, FALSE, 3);
+ }
+ button = gtk_check_button_new_with_label(_(dtag_names[i]));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), dive->dive_tags & (1 << i));
+ 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(1 << i));
+ }
/* only show notes if editing a single dive */
if (multi) {