[libchamplain] local-rendering-demo: Add loading icon for the NetworkMapDataSource



commit 67652a262782b88ec71e75b6d33627e986281ce2
Author: Simon Wenner <simon wenner ch>
Date:   Mon Jul 27 23:00:48 2009 +0200

    local-rendering-demo: Add loading icon for the NetworkMapDataSource

 demos/local-rendering.c |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)
---
diff --git a/demos/local-rendering.c b/demos/local-rendering.c
index a1b4148..7885667 100644
--- a/demos/local-rendering.c
+++ b/demos/local-rendering.c
@@ -31,7 +31,7 @@ static const char *maps[] = { "schaffhausen.osm", "las_palmas.osm" };
 static const char *rules[] = { "default-rules.xml", "high-contrast.xml" };
 
 static GtkWidget *memphis_box, *memphis_net_box, *memphis_local_box;
-static GtkWidget *rules_tree_view, *bg_button;
+static GtkWidget *rules_tree_view, *bg_button, *map_data_state_img;
 
 /*
  * Terminate the main loop.
@@ -43,6 +43,26 @@ on_destroy (GtkWidget *widget, gpointer data)
 }
 
 static void
+data_source_state_changed (ChamplainView *view,
+                    GParamSpec *gobject,
+                    GtkImage *image)
+{
+  ChamplainState state;
+
+  g_object_get (G_OBJECT (view), "state", &state, NULL);
+  if (state == CHAMPLAIN_STATE_LOADING)
+    {
+      gtk_image_set_from_stock (image, GTK_STOCK_NETWORK, GTK_ICON_SIZE_BUTTON);
+      g_print("NET DATA SOURCE STATE: loading\n");
+    }
+  else
+    {
+      gtk_image_clear (image);
+      g_print("NET DATA SOURCE STATE: done\n");
+    }
+}
+
+static void
 load_local_map_data (ChamplainMapSource *source)
 {
   ChamplainLocalMapDataSource *map_data_source;
@@ -65,6 +85,9 @@ load_network_map_data (ChamplainMapSource *source, ChamplainView *view)
       champlain_memphis_map_source_get_map_data_source (
       CHAMPLAIN_MEMPHIS_MAP_SOURCE (source)));
 
+  g_signal_connect (map_data_source, "notify::state", G_CALLBACK (data_source_state_changed),
+      map_data_state_img);
+
   g_object_get (G_OBJECT (view), "latitude", &lat, "longitude", &lon, NULL);
 
   champlain_network_map_data_source_load_map_data (map_data_source,
@@ -485,6 +508,9 @@ main (int argc,
   g_signal_connect (button, "clicked", G_CALLBACK (request_osm_data_cb), view);
   gtk_box_pack_start (GTK_BOX (memphis_net_box), button, FALSE, FALSE, 0);
 
+  map_data_state_img = gtk_image_new ();
+  gtk_box_pack_start (GTK_BOX (memphis_net_box), map_data_state_img, FALSE, FALSE, 0);
+
   gtk_box_pack_start (GTK_BOX (memphis_box), memphis_net_box, FALSE, FALSE, 0);
 
   /* rules chooser */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]