summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-08-31 11:07:31 -0700
committerGravatar Linus Torvalds <torvalds@linux-foundation.org>2011-08-31 11:07:31 -0700
commit2044dabc81062c22c7f95a2e0e57f931cee0205f (patch)
tree0897e4c399904053da87fa0eb4113b5ee88bf4a6
parent23e831a6ed61878240897cd6a7b276526a3f4ba4 (diff)
downloadsubsurface-2044dabc81062c22c7f95a2e0e57f931cee0205f.tar.gz
Teach the thing to actually track the currently selected dive
.. and repaint the profile when the selection changes. Now, if it just wasn't so ugly, it might even be useful. Except it obviously needs to also show all the other dive information. And allow the user to fill in details. And save the end results. So no, it's not useful. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-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;