2 #include <gdk/gdkkeysyms.h>
9 GtkWidget *image = NULL;
10 GtkWidget *bar = NULL;
12 void done_callback(WmsCacheNode *node, gpointer user_data)
14 g_message("done_callback: %p->%p", node, node->data);
15 gtk_image_set_from_pixbuf(GTK_IMAGE(image), node->data);
18 void chunk_callback(gsize cur, gsize total, gpointer user_data)
20 g_message("chunk_callback: %d/%d", cur, total);
21 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(bar), (gdouble)cur/total);
24 gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
26 if (event->keyval == GDK_q)
31 int main(int argc, char **argv)
33 gtk_init(&argc, &argv);
36 GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
37 GtkWidget *box = gtk_vbox_new(FALSE, 0);
38 GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
39 image = gtk_image_new();
40 bar = gtk_progress_bar_new();
41 gtk_container_add(GTK_CONTAINER(win), box);
42 gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 0);
43 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), image);
44 gtk_box_pack_start(GTK_BOX(box), bar, FALSE, FALSE, 0);
45 g_signal_connect(win, "key-press-event", G_CALLBACK(key_press_cb), NULL);
46 g_signal_connect(win, "destroy", gtk_main_quit, NULL);
47 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
48 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
50 gdouble res = 200, lon = -121.76, lat = 46.85;
52 WmsInfo *info = wms_info_new_for_bmng(bmng_pixbuf_loader, bmng_pixbuf_freeer);
53 wms_info_cache(info, res, lat, lon, NULL, NULL, NULL);
54 WmsCacheNode *node = wms_info_fetch(info, res, lat, lon, NULL);
55 if (node) gtk_image_set_from_pixbuf(GTK_IMAGE(image), node->data);
56 wms_info_cache(info, res, lat, lon, NULL, done_callback, NULL);
57 wms_info_cache(info, res, lat, lon, chunk_callback, done_callback, NULL);
59 //WmsInfo *info = wms_info_new_for_srtm(srtm_pixbuf_loader, srtm_pixbuf_freeer);
60 //wms_info_cache(info, res, lat, lon, chunk_callback, NULL, NULL);
61 //WmsCacheNode *node = wms_info_fetch(info, res, lat, lon, NULL);
62 //if (node) gtk_image_set_from_pixbuf(GTK_IMAGE(image), node->data);
64 gtk_widget_show_all(win);