]> git.street.me.uk Git - andy/viking.git/blobdiff - src/vikmapniklayer.c
Make simple GPSBabel filter options use the updated acquire framework options.
[andy/viking.git] / src / vikmapniklayer.c
index 43802facf90d43e4b4437410f7394c699a3266e3..dc64985d3bcb726103ffe893de3a78925ad7ca2a 100644 (file)
@@ -163,6 +163,8 @@ VikLayerInterface vik_mapnik_layer_interface = {
        (VikLayerFuncDraw)                    mapnik_layer_draw,
        (VikLayerFuncChangeCoordMode)         NULL,
 
+       (VikLayerFuncGetTimestamp)            NULL,
+
        (VikLayerFuncSetMenuItemsSelection)   NULL,
        (VikLayerFuncGetMenuItemsSelection)   NULL,
 
@@ -270,7 +272,7 @@ static GHashTable *requests = NULL;
 /**
  * vik_mapnik_layer_init:
  *
- * Mostly to initialize preferences
+ * Just initialize preferences
  */
 void vik_mapnik_layer_init (void)
 {
@@ -291,7 +293,15 @@ void vik_mapnik_layer_init (void)
 
        tmp.s = "carto";
        a_preferences_register(&prefs[i++], tmp, MAPNIK_PREFS_GROUP_KEY);
+}
 
+/**
+ * vik_mapnik_layer_post_init:
+ *
+ * Initialize data structures - now that reading preferences is OK to perform
+ */
+void vik_mapnik_layer_post_init (void)
+{
        tp_mutex = vik_mutex_new();
 
        // Just storing keys only
@@ -819,6 +829,13 @@ static void mapnik_layer_draw ( VikMapnikLayer *vml, VikViewport *vvp )
                return;
        }
 
+       if ( vml->mi ) {
+               gchar *copyright = mapnik_interface_get_copyright ( vml->mi );
+               if ( copyright ) {
+                       vik_viewport_add_copyright ( vvp, copyright );
+               }
+       }
+
        VikCoord ul, br;
        ul.mode = VIK_COORD_LATLON;
        br.mode = VIK_COORD_LATLON;
@@ -954,6 +971,24 @@ static void mapnik_layer_carto ( menu_array_values values )
                mapnik_layer_draw ( vml, vvp );
 }
 
+/**
+ * Show Mapnik configuration parameters
+ */
+static void mapnik_layer_information ( menu_array_values values )
+{
+       VikMapnikLayer *vml = values[MA_VML];
+       if ( !vml->mi )
+               return;
+       GArray *array = mapnik_interface_get_parameters( vml->mi );
+       if ( array->len ) {
+               a_dialog_list (  VIK_GTK_WINDOW_FROM_LAYER(vml), _("Mapnik Information"), array, 1 );
+               // Free the copied strings
+               for ( int i = 0; i < array->len; i++ )
+                       g_free ( g_array_index(array,gchar*,i) );
+       }
+       g_array_free ( array, FALSE );
+}
+
 /**
  *
  */
@@ -1000,6 +1035,11 @@ static void mapnik_layer_add_menu_items ( VikMapnikLayer *vml, GtkMenu *menu, gp
                gtk_widget_show ( item );
        }
 
+       item = gtk_image_menu_item_new_from_stock ( GTK_STOCK_INFO, NULL );
+       g_signal_connect_swapped ( G_OBJECT(item), "activate", G_CALLBACK(mapnik_layer_information), values );
+       gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+       gtk_widget_show ( item );
+
        item = gtk_image_menu_item_new_from_stock ( GTK_STOCK_ABOUT, NULL );
        g_signal_connect_swapped ( G_OBJECT(item), "activate", G_CALLBACK(mapnik_layer_about), values );
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);