]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Teach the thing to actually track the currently selected dive
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 31 Aug 2011 18:07:31 +0000 (11:07 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 31 Aug 2011 18:07:31 +0000 (11:07 -0700)
.. 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>
display.h
divelist.c
main.c
profile.c

index cde0708e3392484c4d995cf4a3b39989344d5a5a..29b21a65412424d3e789d5141754d5c04427ad90 100644 (file)
--- 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);
 
index d92cd6deeecb156b370532c70f2d3ee217665af2..3a38e9544efec719092e22f445158fbf70e7e993 100644 (file)
@@ -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 e567ee118fe7ae43281329bc6216dc5cfaed3337..af1348986b8aac1a18470051254988d112fd74e5 100644 (file)
--- 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);
index f850c2fff3a819a44c5199f770218d9fca7fe992..cc3f2485af5ec59fd6c79b0418476dafa3059265 100644 (file)
--- 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;