summaryrefslogtreecommitdiffstats
path: root/gtk-gui.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-01-13 16:24:58 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-01-13 16:26:35 -0800
commit23ce727e62c5670ca30c487fc9fd52eb25883de5 (patch)
tree4e04981e3d7d6da34be745894a7b20116b871006 /gtk-gui.c
parent53dbccb87a81313395fa6d3d48325389a070439b (diff)
downloadsubsurface-23ce727e62c5670ca30c487fc9fd52eb25883de5.tar.gz
Add support for MOD, EAD, AND and EADD in the mouse over display
- MOD: Maximum Operation Depth based on a configurable limit - EAD: Equivalent Air Depth considering N2 and (!) O2 narcotic - END: Equivalent Nitrogen (Narcotic) Depth considering just N2 narcotic (ignoring O2) - EADD: Equivalent Air Density Depth Please note that some people and even diving organisations have opposite definitions for EAD and END. Considering A stands for Air, lets choose the above. And considering N for Nitrogen it also fits in this scheme. This patch moves N2_IN_AIR from deco.c to dive.h as this is already used in several places and might be useful for future use also. It also respecifies N2_IN_AIR to a more correct value of 78,084%, the former one also included all other gases than oxygen appearing in air. If someone needs to use the former value it would be more correct to use 1-O2_IN_AIR instead. Signed-off-by: Jan Schubert / Jan.Schubert@GMX.li Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'gtk-gui.c')
-rw-r--r--gtk-gui.c35
1 files changed, 32 insertions, 3 deletions
diff --git a/gtk-gui.c b/gtk-gui.c
index f72aac42e..ae9c3740d 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -439,6 +439,8 @@ OPTIONCALLBACK(cylinder_toggle, prefs.visible_cols.cylinder)
OPTIONCALLBACK(po2_toggle, prefs.pp_graphs.po2)
OPTIONCALLBACK(pn2_toggle, prefs.pp_graphs.pn2)
OPTIONCALLBACK(phe_toggle, prefs.pp_graphs.phe)
+OPTIONCALLBACK(mod_toggle, prefs.mod)
+OPTIONCALLBACK(ead_toggle, prefs.ead)
OPTIONCALLBACK(red_ceiling_toggle, prefs.profile_red_ceiling)
OPTIONCALLBACK(calc_ceiling_toggle, prefs.profile_calc_ceiling)
OPTIONCALLBACK(calc_ceiling_3m_toggle, prefs.calc_ceiling_3m_incr)
@@ -529,9 +531,9 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
{
int result;
GtkWidget *dialog, *notebook, *font, *frame, *box, *vbox, *button, *xmlfile_button;
- GtkWidget *entry_po2, *entry_pn2, *entry_phe, *entry_gflow, *entry_gfhigh;
+ GtkWidget *entry_po2, *entry_pn2, *entry_phe, *entry_mod, *entry_ead, *entry_gflow, *entry_gfhigh;
const char *current_default, *new_default;
- char threshold_text[10], utf8_buf[128];
+ char threshold_text[10], mod_text[10], utf8_buf[128];
struct preferences oldprefs = prefs;
dialog = gtk_dialog_new_with_buttons(_("Preferences"),
@@ -722,6 +724,31 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
box = gtk_hbox_new(FALSE, 6);
gtk_container_add(GTK_CONTAINER(vbox), box);
+ button = gtk_check_button_new_with_label(_("Show MOD"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), prefs.mod);
+ gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6);
+ g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(mod_toggle), &entry_mod);
+
+ frame = gtk_frame_new(_("max ppO2"));
+ gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 6);
+ entry_mod = gtk_entry_new();
+ gtk_entry_set_max_length(GTK_ENTRY(entry_mod), 4);
+ snprintf(mod_text, sizeof(mod_text), "%.1f", prefs.mod_ppO2);
+ gtk_entry_set_text(GTK_ENTRY(entry_mod), mod_text);
+ gtk_widget_set_sensitive(entry_mod, prefs.mod);
+ gtk_container_add(GTK_CONTAINER(frame), entry_mod);
+
+ box = gtk_hbox_new(FALSE, 6);
+ gtk_container_add(GTK_CONTAINER(vbox), box);
+
+ button = gtk_check_button_new_with_label(_("Show EAD, END, EADD"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), prefs.ead);
+ gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6);
+ g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(ead_toggle), NULL);
+
+ box = gtk_hbox_new(FALSE, 6);
+ gtk_container_add(GTK_CONTAINER(vbox), box);
+
button = gtk_check_button_new_with_label(_("Show dc reported ceiling in red"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), prefs.profile_red_ceiling);
gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6);
@@ -766,7 +793,7 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
gtk_widget_show_all(dialog);
result = gtk_dialog_run(GTK_DIALOG(dialog));
if (result == GTK_RESPONSE_ACCEPT) {
- const char *po2_threshold_text, *pn2_threshold_text, *phe_threshold_text, *gflow_text, *gfhigh_text;
+ const char *po2_threshold_text, *pn2_threshold_text, *phe_threshold_text, *mod_text, *gflow_text, *gfhigh_text;
/* Make sure to flush any modified old dive data with old units */
update_dive(NULL);
@@ -778,6 +805,8 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
sscanf(pn2_threshold_text, "%lf", &prefs.pp_graphs.pn2_threshold);
phe_threshold_text = gtk_entry_get_text(GTK_ENTRY(entry_phe));
sscanf(phe_threshold_text, "%lf", &prefs.pp_graphs.phe_threshold);
+ mod_text = gtk_entry_get_text(GTK_ENTRY(entry_mod));
+ sscanf(mod_text, "%lf", &prefs.mod_ppO2);
gflow_text = gtk_entry_get_text(GTK_ENTRY(entry_gflow));
sscanf(gflow_text, "%lf", &prefs.gflow);
gfhigh_text = gtk_entry_get_text(GTK_ENTRY(entry_gfhigh));