X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/a8374fcba91073b5d7b16f2cb9f338bd9f3f8089..3adb68271b3969f524ebbba61ec49d6661e8979d:/src/vikmapniklayer.c diff --git a/src/vikmapniklayer.c b/src/vikmapniklayer.c index 43802fac..dc64985d 100644 --- a/src/vikmapniklayer.c +++ b/src/vikmapniklayer.c @@ -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);