{
struct layout *l;
struct color def_color = {COLOR_BACKGROUND_};
- struct attr *name_attr,*color_attr,*order_delta_attr,*font_attr,*day_attr,*night_attr;
+ struct attr *name_attr,*color_attr,*order_delta_attr,*font_attr,*day_attr,*night_attr,*active_attr;
if (! (name_attr=attr_search(attrs, NULL, attr_name)))
return NULL;
l->color = def_color;
if ((order_delta_attr=attr_search(attrs, NULL, attr_order_delta)))
l->order_delta=order_delta_attr->u.num;
+ if ((active_attr=attr_search(attrs, NULL, attr_active)))
+ l->active = active_attr->u.num;
return l;
}
layer=g_list_next(layer);
}
break;
+ case attr_active:
+ attr->u.num=layout->active;
+ break;
default:
break;
}
int interval;
};
-struct layout { char *name; char* dayname; char* nightname; char *font; struct color color; GList *layers; GList *cursors; int order_delta; };
+struct layout { char *name; char* dayname; char* nightname; char *font; struct color color; GList *layers; GList *cursors; int order_delta; int active; };
/* prototypes */
enum attr_type;
return 0;
}
+static int
+navit_add_layout(struct navit *this_, struct layout *layout)
+{
+ struct attr active;
+ this_->layouts = g_list_append(this_->layouts, layout);
+ layout_get_attr(layout, attr_active, &active, NULL);
+ if(active.u.num || !this_->layout_current)
+ this_->layout_current=layout;
+}
+
int
navit_add_attr(struct navit *this_, struct attr *attr)
{
ret=navit_set_graphics(this_, attr->u.graphics);
break;
case attr_layout:
- this_->layouts = g_list_append(this_->layouts, attr->u.layout);
- if(!this_->layout_current)
- this_->layout_current=attr->u.layout;
+ ret=navit_add_layout(this_, attr->u.layout);
break;
case attr_route:
this_->route=attr->u.route;
<!ATTLIST map debug CDATA #IMPLIED>
<!ELEMENT layout (cursor*,xi:include*,layer*)>
<!ATTLIST layout name CDATA #REQUIRED>
+<!ATTLIST layout active CDATA #IMPLIED>
<!ATTLIST layout color CDATA #IMPLIED>
<!ATTLIST layout font CDATA #IMPLIED>
<!ATTLIST layout daylayout CDATA #IMPLIED>