diff --git a/display.h b/display.h index cde0708e3..29b21a654 100644 --- a/display.h +++ b/display.h @@ -5,6 +5,7 @@ #include #include +extern int selected_dive; extern GtkWidget *dive_profile_frame(void); extern GtkWidget *create_dive_list(void); diff --git a/divelist.c b/divelist.c index d92cd6dee..3a38e9544 100644 --- a/divelist.c +++ b/divelist.c @@ -13,8 +13,9 @@ static void selection_cb(GtkTreeSelection *selection, GtkTreeModel *model) if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) return; - gtk_tree_model_get_value(model, &iter, 0, &value); - printf("'%s' selected\n", g_value_get_string(&value)); + gtk_tree_model_get_value(model, &iter, 1, &value); + selected_dive = g_value_get_int(&value); + repaint_dive(); } static void fill_dive_list(GtkListStore *store) @@ -28,6 +29,7 @@ static void fill_dive_list(GtkListStore *store) gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, dive->name, + 1, i, -1); } } @@ -41,7 +43,7 @@ GtkWidget *create_dive_list(void) GtkTreeViewColumn *col; GtkWidget *scroll_window; - model = gtk_list_store_new(1, G_TYPE_STRING); + model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)); diff --git a/main.c b/main.c index e567ee118..af1348986 100644 --- a/main.c +++ b/main.c @@ -47,6 +47,13 @@ static void on_destroy(GtkWidget* w, gpointer data) gtk_main_quit(); } +static GtkWidget *dive_profile; + +void repaint_dive(void) +{ + gtk_widget_queue_draw(dive_profile); +} + int main(int argc, char **argv) { int i; @@ -87,6 +94,7 @@ int main(int argc, char **argv) /* Frame for dive profile */ frame = dive_profile_frame(); gtk_container_add(GTK_CONTAINER(vbox), frame); + dive_profile = frame; gtk_widget_set_app_paintable(win, TRUE); gtk_widget_show_all(win); diff --git a/profile.c b/profile.c index f850c2fff..cc3f2485a 100644 --- a/profile.c +++ b/profile.c @@ -5,9 +5,11 @@ #include "dive.h" #include "display.h" +int selected_dive = 0; + static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) { - struct dive *dive = dive_table.dives[0]; + struct dive *dive = dive_table.dives[selected_dive]; cairo_t *cr; int i;