diff options
-rw-r--r-- | display.h | 2 | ||||
-rw-r--r-- | gtk-gui.c | 9 | ||||
-rw-r--r-- | profile.c | 18 |
3 files changed, 28 insertions, 1 deletions
@@ -55,6 +55,6 @@ struct options { int print_selected; }; -extern char zoomed_plot; +extern char zoomed_plot, dc_number; #endif @@ -1014,6 +1014,13 @@ static void toggle_zoom(GtkWidget *w, gpointer data) repaint_dive(); } +static void next_dc(GtkWidget *w, gpointer data) +{ + dc_number++; + /* If the dc number overflows, we'll "wrap around" and zero it */ + repaint_dive(); +} + static GtkActionEntry menu_items[] = { { "FileMenuAction", NULL, N_("File"), NULL, NULL, NULL}, { "LogMenuAction", NULL, N_("Log"), NULL, NULL, NULL}, @@ -1039,6 +1046,7 @@ 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) }, }; static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); @@ -1080,6 +1088,7 @@ static const gchar* ui_string = " \ <menuitem name=\"Profile\" action=\"ViewProfile\" /> \ <menuitem name=\"Info\" action=\"ViewInfo\" /> \ <menuitem name=\"Paned\" action=\"ViewThree\" /> \ + <menuitem name=\"NextDC\" action=\"NextDC\" /> \ </menu> \ </menu> \ <menu name=\"FilterMenu\" action=\"FilterMenuAction\"> \ @@ -20,6 +20,7 @@ int selected_dive = 0; char zoomed_plot = 0; +char dc_number = 0; static double plot_scale = SCALE_SCREEN; static struct plot_data *last_pi_entry = NULL; @@ -1775,6 +1776,21 @@ static void plot_set_scale(scale_mode_t scale) } } +static struct divecomputer *select_dc(struct divecomputer *main) +{ + int i = dc_number; + struct divecomputer *dc = main; + + do { + if (--i < 0) + return dc; + } while ((dc = dc->next) != NULL); + + /* If we switched dives to one with fewer DC's, reset the dive computer counter */ + dc_number = 0; + return main; +} + void plot(struct graphics_context *gc, struct dive *dive, scale_mode_t scale) { struct plot_info *pi; @@ -1828,6 +1844,8 @@ void plot(struct graphics_context *gc, struct dive *dive, scale_mode_t scale) gc->maxx = (drawing_area->width - 2*drawing_area->x); gc->maxy = (drawing_area->height - 2*drawing_area->y); + dc = select_dc(dc); + /* This is per-dive-computer. Right now we just do the first one */ pi = create_plot_info(dive, dc, gc); |