diff options
-rw-r--r-- | gtk-gui.c | 17 | ||||
-rw-r--r-- | profile.c | 13 |
2 files changed, 29 insertions, 1 deletions
@@ -1021,6 +1021,13 @@ static void toggle_zoom(GtkWidget *w, gpointer data) repaint_dive(); } +static void prev_dc(GtkWidget *w, gpointer data) +{ + dc_number--; + /* If the dc number underflows, we'll "wrap around" and use the last dc */ + repaint_dive(); +} + static void next_dc(GtkWidget *w, gpointer data) { dc_number++; @@ -1053,7 +1060,8 @@ static GtkActionEntry menu_items[] = { { "ViewProfile", NULL, N_("Profile"), CTRLCHAR "2", NULL, G_CALLBACK(view_profile) }, { "ViewInfo", NULL, N_("Info"), CTRLCHAR "3", NULL, G_CALLBACK(view_info) }, { "ViewThree", NULL, N_("Three"), CTRLCHAR "4", NULL, G_CALLBACK(view_three) }, - { "NextDC", NULL, N_("Next DC"), CTRLCHAR "C", NULL, G_CALLBACK(next_dc) }, + { "PrevDC", NULL, N_("Prev DC"), NULL, NULL, G_CALLBACK(prev_dc) }, + { "NextDC", NULL, N_("Next DC"), NULL, NULL, G_CALLBACK(next_dc) }, }; static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); @@ -1095,6 +1103,7 @@ static const gchar* ui_string = " \ <menuitem name=\"Profile\" action=\"ViewProfile\" /> \ <menuitem name=\"Info\" action=\"ViewInfo\" /> \ <menuitem name=\"Paned\" action=\"ViewThree\" /> \ + <menuitem name=\"PrevDC\" action=\"PrevDC\" /> \ <menuitem name=\"NextDC\" action=\"NextDC\" /> \ </menu> \ </menu> \ @@ -1142,6 +1151,12 @@ static gboolean on_key_press(GtkWidget *w, GdkEventKey *event, GtkWidget *diveli case GDK_KEY_Down: select_next_dive(); return TRUE; + case GDK_KEY_Left: + prev_dc(NULL, NULL); + return TRUE; + case GDK_KEY_Right: + next_dc(NULL, NULL); + return TRUE; } return FALSE; } @@ -1800,11 +1800,24 @@ static void plot_set_scale(scale_mode_t scale) } } +/* make sure you pass this the FIRST dc - it just walks the list */ +static int nr_dcs(struct divecomputer *main) +{ + int i = 1; + struct divecomputer *dc = main; + + while ((dc = dc->next) != NULL) + i++; + return i; +} + static struct divecomputer *select_dc(struct divecomputer *main) { int i = dc_number; struct divecomputer *dc = main; + while (i < 0) + i += nr_dcs(main); do { if (--i < 0) return dc; |