diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-27 11:05:39 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-09-27 11:05:39 -0700 |
commit | 30ee87be92f0a0fffc98106852d9623a65dfe4ed (patch) | |
tree | 8a2f2f8ee4ce9c6db1167269bad04ff369a38a5d /gtk-gui.c | |
parent | 1bf28b68c9dc9b929b1372b79920311a9c10e4cc (diff) | |
parent | f3134cbb8995267e6a18b9564f3022e7fe7314a9 (diff) | |
download | subsurface-30ee87be92f0a0fffc98106852d9623a65dfe4ed.tar.gz |
Merge branch 'otu-tracking-v2' of git://github.com/dirkhh/subsurface
* 'otu-tracking-v2' of git://github.com/dirkhh/subsurface:
Store options in gconf
Add preference option to chose if SAC and/or OTU should be in divelist
Fix up trivial conflicts in gtk-gui.c (cleanup in gtk dialog wrt
gtk_dialog_get_content_area() having introduced a new 'vbox' widget)
Diffstat (limited to 'gtk-gui.c')
-rw-r--r-- | gtk-gui.c | 38 |
1 files changed, 36 insertions, 2 deletions
@@ -33,6 +33,8 @@ struct units output_units; static GtkWidget *dive_profile; +visible_cols_t visible_cols = {TRUE, FALSE}; + void repaint_dive(void) { update_dive(current_dive); @@ -253,10 +255,19 @@ UNITCALLBACK(set_cuft, volume, CUFT) UNITCALLBACK(set_celsius, temperature, CELSIUS) UNITCALLBACK(set_fahrenheit, temperature, FAHRENHEIT) +#define OPTIONCALLBACK(name, option) \ +static void name(GtkWidget *w, gpointer data) \ +{ \ + option = GTK_TOGGLE_BUTTON(w)->active; \ +} + +OPTIONCALLBACK(otu_toggle, visible_cols.otu) +OPTIONCALLBACK(sac_toggle, visible_cols.sac) + static void preferences_dialog(GtkWidget *w, gpointer data) { int result; - GtkWidget *dialog, *font, *frame, *box, *vbox; + GtkWidget *dialog, *font, *frame, *box, *vbox, *button; menu_units = output_units; @@ -294,6 +305,22 @@ static void preferences_dialog(GtkWidget *w, gpointer data) "Fahrenheit", set_fahrenheit, (output_units.temperature == FAHRENHEIT), NULL); + frame = gtk_frame_new("Columns"); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, FALSE, FALSE, 5); + + box = gtk_hbox_new(FALSE, 6); + gtk_container_add(GTK_CONTAINER(frame), box); + + button = gtk_check_button_new_with_label("Show SAC"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.sac); + gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); + g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(sac_toggle), NULL); + + button = gtk_check_button_new_with_label("Show OTU"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.otu); + gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); + g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(otu_toggle), NULL); + font = gtk_font_button_new_with_font(divelist_font); gtk_box_pack_start(GTK_BOX(vbox), font, FALSE, FALSE, 5); @@ -309,10 +336,13 @@ static void preferences_dialog(GtkWidget *w, gpointer data) output_units = menu_units; update_dive_list_units(); repaint_dive(); + update_dive_list_col_visibility(); gconf_client_set_bool(gconf, GCONF_NAME(feet), output_units.length == FEET, NULL); gconf_client_set_bool(gconf, GCONF_NAME(psi), output_units.pressure == PSI, NULL); gconf_client_set_bool(gconf, GCONF_NAME(cuft), output_units.volume == CUFT, NULL); gconf_client_set_bool(gconf, GCONF_NAME(fahrenheit), output_units.temperature == FAHRENHEIT, NULL); + gconf_client_set_bool(gconf, GCONF_NAME(SAC), ! visible_cols.sac, NULL); /* inverted to get the correct default */ + gconf_client_set_bool(gconf, GCONF_NAME(OTU), visible_cols.otu, NULL); gconf_client_set_string(gconf, GCONF_NAME(divelist_font), divelist_font, NULL); } gtk_widget_destroy(dialog); @@ -485,7 +515,11 @@ void init_ui(int argc, char **argv) output_units.volume = CUFT; if (gconf_client_get_bool(gconf, GCONF_NAME(fahrenheit), NULL)) output_units.temperature = FAHRENHEIT; - + /* an unset key is FALSE - so in order to get the default behavior right we + invert the meaning of the SAC key */ + visible_cols.otu = gconf_client_get_bool(gconf, GCONF_NAME(OTU), NULL); + visible_cols.sac = ! gconf_client_get_bool(gconf, GCONF_NAME(SAC), NULL); + divelist_font = gconf_client_get_string(gconf, GCONF_NAME(divelist_font), NULL); if (!divelist_font) divelist_font = DIVELIST_DEFAULT_FONT; |