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 )
static GtkWidget *properties_widget_new_widget ( VikLayerParam *param, VikLayerParamData data )
{
- GtkWidget *rv;
+ GtkWidget *rv = NULL;
switch ( param->widget_type )
{
case VIK_LAYER_WIDGET_COLOR:
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;
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 )