aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--display.h1
-rw-r--r--divelist.c8
-rw-r--r--main.c8
-rw-r--r--profile.c4
4 files changed, 17 insertions, 4 deletions
diff --git a/display.h b/display.h
index cde0708e3..29b21a654 100644
--- a/display.h
+++ b/display.h
@@ -5,6 +5,7 @@
#include <gdk/gdk.h>
#include <cairo.h>
+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;