diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2011-09-27 10:16:40 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2011-09-27 10:16:40 -0700 |
commit | 0aad4d6094173fd3c10e435be05bde541062232d (patch) | |
tree | eecc5b550701ffc7b056220a5717409439fcfabe | |
parent | dc2a0c1909727a1557b8f03e6b6ac3e427ebe4b7 (diff) | |
download | subsurface-0aad4d6094173fd3c10e435be05bde541062232d.tar.gz |
Add preference option to chose if SAC and/or OTU should be in divelist
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | display-gtk.h | 7 | ||||
-rw-r--r-- | divelist.c | 13 | ||||
-rw-r--r-- | divelist.h | 1 | ||||
-rw-r--r-- | gtk-gui.c | 32 | ||||
-rw-r--r-- | main.c | 1 |
5 files changed, 50 insertions, 4 deletions
diff --git a/display-gtk.h b/display-gtk.h index dee66368a..ad437465c 100644 --- a/display-gtk.h +++ b/display-gtk.h @@ -11,6 +11,13 @@ typedef struct { GtkWidget *bar; } progressbar_t; +typedef struct { + gboolean sac; + gboolean otu; +} visible_cols_t; + +extern visible_cols_t visible_cols; + extern const char *divelist_font; extern void set_divelist_font(const char *); diff --git a/divelist.c b/divelist.c index bb2a3e3a1..b43adfd0c 100644 --- a/divelist.c +++ b/divelist.c @@ -26,7 +26,7 @@ struct DiveList { GtkWidget *container_widget; GtkListStore *model; GtkTreeViewColumn *date, *depth, *duration, *location; - GtkTreeViewColumn *temperature, *cylinder, *nitrox, *sac; + GtkTreeViewColumn *temperature, *cylinder, *nitrox, *sac, *otu; int changed; }; @@ -422,6 +422,13 @@ void update_dive_list_units(void) gtk_tree_model_foreach(model, set_one_dive, NULL); } +void update_dive_list_col_visibility(void) +{ + gtk_tree_view_column_set_visible(dive_list.sac, visible_cols.sac); + gtk_tree_view_column_set_visible(dive_list.otu, visible_cols.otu); + return; +} + static void fill_dive_list(void) { int i; @@ -543,8 +550,8 @@ GtkWidget *dive_list_create(void) dive_list.temperature = divelist_column(&dive_list, DIVE_TEMPERATURE, UTF8_DEGREE "F", temperature_data_func, PANGO_ALIGN_RIGHT, TRUE); dive_list.cylinder = divelist_column(&dive_list, DIVE_CYLINDER, "Cyl", NULL, PANGO_ALIGN_CENTER, TRUE); dive_list.nitrox = divelist_column(&dive_list, DIVE_NITROX, "O" UTF8_SUBSCRIPT_2 "%", nitrox_data_func, PANGO_ALIGN_CENTER, TRUE); - dive_list.sac = divelist_column(&dive_list, DIVE_SAC, "SAC", sac_data_func, PANGO_ALIGN_CENTER, TRUE); - dive_list.sac = divelist_column(&dive_list, DIVE_OTU, "OTU", otu_data_func, PANGO_ALIGN_CENTER, FALSE); + dive_list.sac = divelist_column(&dive_list, DIVE_SAC, "SAC", sac_data_func, PANGO_ALIGN_CENTER, visible_cols.sac); + dive_list.otu = divelist_column(&dive_list, DIVE_OTU, "OTU", otu_data_func, PANGO_ALIGN_CENTER, visible_cols.otu); dive_list.location = divelist_column(&dive_list, DIVE_LOCATION, "Location", NULL, PANGO_ALIGN_LEFT, TRUE); fill_dive_list(); diff --git a/divelist.h b/divelist.h index 3151a69db..2635b7541 100644 --- a/divelist.h +++ b/divelist.h @@ -4,6 +4,7 @@ struct dive; extern void dive_list_update_dives(void); +extern void update_dive_list_col_visibility(void); extern void update_dive_list_units(void); extern void flush_divelist(struct dive *); @@ -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); @@ -243,10 +245,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; + GtkWidget *dialog, *font, *frame, *box, *button; menu_units = output_units; @@ -283,6 +294,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(GTK_DIALOG(dialog)->vbox), font, FALSE, FALSE, 5); @@ -298,10 +325,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); + 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); @@ -126,6 +126,7 @@ int main(int argc, char **argv) int i; output_units = SI_units; + parse_xml_init(); init_ui(argc, argv); |