summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--planner-gtk.c21
-rw-r--r--planner.c8
-rw-r--r--planner.h1
3 files changed, 30 insertions, 0 deletions
diff --git a/planner-gtk.c b/planner-gtk.c
index 1b99fb391..d5fddec46 100644
--- a/planner-gtk.c
+++ b/planner-gtk.c
@@ -253,6 +253,16 @@ static gboolean gf_focus_out_cb(GtkWidget *entry, GdkEvent * event, gpointer dat
return FALSE;
}
+static gboolean last_stop_toggled_cb(GtkWidget *entry, GdkEvent * event, gpointer data)
+{
+ char *error_string = NULL;
+ set_last_stop(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(entry)));
+ show_planned_dive(&error_string);
+ if (error_string)
+ show_error(error_string);
+ return FALSE;
+}
+
static GtkWidget *add_gas_combobox_to_box(GtkWidget *box, const char *label, int idx)
{
GtkWidget *frame, *combo;
@@ -382,6 +392,17 @@ void input_plan()
add_entry_with_callback(hbox, 12, _("Dive starts when?"), "+60:00", starttime_focus_out_cb, NULL);
add_entry_with_callback(hbox, 12, _("Surface Pressure (mbar)"), SURFACE_PRESSURE_STRING, surfpres_focus_out_cb, NULL);
+ if (get_units()->length == METERS)
+ labeltext = _("Last stop at 6 Meters");
+ else
+ labeltext = _("Last stop at 20 Feet");
+
+ set_last_stop(FALSE);
+ content = gtk_check_button_new_with_label(labeltext);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(content), 0);
+ gtk_box_pack_start(GTK_BOX(hbox), content, FALSE, FALSE, 6);
+ g_signal_connect(G_OBJECT(content), "toggled", G_CALLBACK(last_stop_toggled_cb), NULL);
+
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
if (get_units()->volume == CUFT) {
diff --git a/planner.c b/planner.c
index 676afd45c..71273b3a1 100644
--- a/planner.c
+++ b/planner.c
@@ -47,6 +47,14 @@ void dump_plan(struct diveplan *diveplan)
}
#endif
+void set_last_stop(gboolean last_stop_6m)
+{
+ if (last_stop_6m == TRUE)
+ decostoplevels[1] = 6000;
+ else
+ decostoplevels[1] = 3000;
+}
+
void get_gas_from_events(struct divecomputer *dc, int time, int *o2, int *he)
{
struct event *event = dc->events;
diff --git a/planner.h b/planner.h
index 099f640fc..4de3c4669 100644
--- a/planner.h
+++ b/planner.h
@@ -11,6 +11,7 @@ extern timestamp_t current_time_notz(void);
extern void show_planned_dive(char **error_string_p);
extern int add_duration_to_nth_dp(struct diveplan *diveplan, int idx, int duration, gboolean is_rel);
extern void add_po2_to_nth_dp(struct diveplan *diveplan, int idx, int po2);
+extern void set_last_stop(gboolean last_stop_6m);
extern struct diveplan diveplan;
extern struct dive *planned_dive;