Manually add gas changes to a dive

Create a little widget that lists all the gases / tanks we know about and
allow the user to pick one of them.

Turns out that add_event only added events at the end of the list - but we
treat that list as chronologically sorted. So I fixed that little
mis-feature as well.

This does raise the question whether we need the inverse operation
(removing a gas change). And if there are other things that we should be
able to manually edit, now that we have the infrastructure for this neat
little context menu...

See #60 -- this doesn't address all of the issues mentioned there, but at
least deals with the 'headline' of the feature request...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-03-17 18:07:59 -07:00
parent bfa37c3cac
commit 8a5792d473
6 changed files with 91 additions and 5 deletions

View file

@ -1962,7 +1962,16 @@ static gboolean scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer
static void add_gas_change_cb(GtkWidget *menuitem, gpointer data)
{
double *x = data;
printf("x = %d:%02u\n", FRACTION(x_to_time(*x), 60));
int when = x_to_time(*x);
int cylnr = select_cylinder(current_dive, when);
if (cylnr >= 0) {
cylinder_t *cyl = &current_dive->cylinder[cylnr];
int value = cyl->gasmix.o2.permille / 10 | ((cyl->gasmix.he.permille / 10) << 16);
add_event(current_dc, when, 25, 0, value, "gaschange");
mark_divelist_changed(TRUE);
report_dives(FALSE, FALSE);
dive_list_update_dives();
}
}
static void popup_profile_menu(GtkWidget *widget, GdkEventButton *event)