X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=main.c;h=af1348986b8aac1a18470051254988d112fd74e5;hb=2044dabc81062c22c7f95a2e0e57f931cee0205f;hp=1b97930e50c7c61c02ea077bebb5dacd2efda9a4;hpb=d1ae1c48309cd0ac5af96114040407dd51e92c37;p=ext%2Fsubsurface.git diff --git a/main.c b/main.c index 1b97930..af13489 100644 --- a/main.c +++ b/main.c @@ -1,38 +1,9 @@ #include #include #include -#include -#include -#include #include "dive.h" - -static void show_dive(int nr, struct dive *dive) -{ - int i; - struct tm *tm; - - tm = gmtime(&dive->when); - - printf("At %02d:%02d:%02d %04d-%02d-%02d (%d ft max, %d minutes)\n", - tm->tm_hour, tm->tm_min, tm->tm_sec, - tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, - to_feet(dive->maxdepth), dive->duration.seconds / 60); - - if (!verbose) - return; - - for (i = 0; i < dive->samples; i++) { - struct sample *s = dive->sample + i; - - printf("%4d:%02d: %3d ft, %2d C, %4d PSI\n", - s->time.seconds / 60, - s->time.seconds % 60, - to_feet(s->depth), - to_C(s->temperature), - to_PSI(s->tankpressure)); - } -} +#include "display.h" static int sortfn(const void *_a, const void *_b) { @@ -76,50 +47,11 @@ static void on_destroy(GtkWidget* w, gpointer data) gtk_main_quit(); } -static gboolean on_expose(GtkWidget* w, GdkEventExpose* e, gpointer data) -{ - cairo_t* cr; - cr = gdk_cairo_create(w->window); - cairo_destroy(cr); - return FALSE; -} - -static GtkTreeModel *fill_dive_list(void) -{ - int i; - GtkListStore *store; - GtkTreeIter iter; - - store = gtk_list_store_new(1, G_TYPE_STRING); - - for (i = 0; i < dive_table.nr; i++) { - struct dive *dive = dive_table.dives[i]; +static GtkWidget *dive_profile; - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, - 0, dive->name, - -1); - } - - return GTK_TREE_MODEL(store); -} - -static GtkWidget *create_dive_list(void) +void repaint_dive(void) { - GtkWidget *list; - GtkCellRenderer *renderer; - GtkTreeModel *model; - - list = gtk_tree_view_new(); - - renderer = gtk_cell_renderer_text_new(); - gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(list), - -1, "Dive", renderer, "text", 0, NULL); - - model = fill_dive_list(); - gtk_tree_view_set_model(GTK_TREE_VIEW(list), model); - g_object_unref(model); - return list; + gtk_widget_queue_draw(dive_profile); } int main(int argc, char **argv) @@ -127,6 +59,8 @@ int main(int argc, char **argv) int i; GtkWidget *win; GtkWidget *divelist; + GtkWidget *vbox; + GtkWidget *frame; parse_xml_init(); @@ -146,10 +80,21 @@ int main(int argc, char **argv) win = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(on_destroy), NULL); - g_signal_connect(G_OBJECT(win), "expose-event", G_CALLBACK(on_expose), NULL); + /* HBOX for the list of dives and cairo window */ + vbox=gtk_hbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); + gtk_container_add(GTK_CONTAINER(win), vbox); + gtk_widget_show(vbox); + + /* Create the atual divelist */ divelist = create_dive_list(); - gtk_container_add(GTK_CONTAINER(win), divelist); + gtk_container_add(GTK_CONTAINER(vbox), divelist); + + /* 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);