]> git.street.me.uk Git - andy/viking.git/blobdiff - src/viklayer.c
Now when we refresh tiles it will remove them from the memory cache like it was suppo...
[andy/viking.git] / src / viklayer.c
index 4ec83c82868fda9385852b0205ca2fa212d1a3b9..434db3d63d4627c03fe17d9204b6937d2cf277d7 100644 (file)
@@ -347,6 +347,20 @@ void vik_layer_realize ( VikLayer *l, VikTreeview *vt, GtkTreeIter *layer_iter )
     vik_layer_interfaces[l->type]->realize ( l, vt, layer_iter );
 }
 
+void vik_layer_set_menu_items_selection(VikLayer *l, guint16 selection)
+{
+  if ( vik_layer_interfaces[l->type]->set_menu_selection )
+    vik_layer_interfaces[l->type]->set_menu_selection ( l, selection );
+}
+
+guint16 vik_layer_get_menu_items_selection(VikLayer *l)
+{
+  if ( vik_layer_interfaces[l->type]->get_menu_selection )
+    return(vik_layer_interfaces[l->type]->get_menu_selection (l));
+  else
+    return(vik_layer_interfaces[l->type]->menu_items_selection);
+}
+
 void vik_layer_add_menu_items ( VikLayer *l, GtkMenu *menu, gpointer vlp )
 {
   if ( vik_layer_interfaces[l->type]->add_menu_items )
@@ -391,7 +405,7 @@ void vik_layer_post_read ( VikLayer *layer, gpointer vp )
 
 static GtkWidget *properties_widget_new_widget ( VikLayerParam *param, VikLayerParamData data )
 {
-  GtkWidget *rv;
+  GtkWidget *rv = NULL;
   switch ( param->widget_type )
   {
     case VIK_LAYER_WIDGET_COLOR:
@@ -430,14 +444,16 @@ static GtkWidget *properties_widget_new_widget ( VikLayerParam *param, VikLayerP
       break;
 #endif
     case VIK_LAYER_WIDGET_RADIOGROUP:
+      /* widget_data and extra_widget_data are GList */
       if ( param->type == VIK_LAYER_PARAM_UINT && param->widget_data )
       {
-        rv = vik_radio_group_new ( (const gchar **) param->widget_data );
+        rv = vik_radio_group_new ( param->widget_data );
         if ( param->extra_widget_data ) /* map of alternate uint values for options */
         {
           int i;
-          for ( i = 0; ((const char **)param->widget_data)[i]; i++ )
-            if ( ((guint *)param->extra_widget_data)[i] == data.u )
+         int nb_elem = g_list_length(param->widget_data);
+          for ( i = 0; i < nb_elem; i++ )
+            if ( g_list_nth_data(param->extra_widget_data, i) == data.u )
             {
               vik_radio_group_set_selected ( VIK_RADIO_GROUP(rv), i );
               break;
@@ -507,7 +523,7 @@ static VikLayerParamData properties_widget_get_value ( GtkWidget *widget, VikLay
     case VIK_LAYER_WIDGET_RADIOGROUP:
       rv.u = vik_radio_group_get_selected(VIK_RADIO_GROUP(widget));
       if ( param->extra_widget_data )
-        rv.u = ((guint *)param->extra_widget_data)[rv.u];
+        rv.u = (guint *)g_list_nth_data(param->extra_widget_data, rv.u);
       break;
     case VIK_LAYER_WIDGET_SPINBUTTON:
       if ( param->type == VIK_LAYER_PARAM_UINT )