Fix:core:Possibilty to specify the default layout. Add active="1" to the layout node...
authorrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 13 Mar 2011 22:54:51 +0000 (22:54 +0000)
committerrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 13 Mar 2011 22:54:51 +0000 (22:54 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4342 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/layout.c
navit/navit/layout.h
navit/navit/navit.c
navit/navit/navit.dtd

index 27ff023..e470b88 100644 (file)
@@ -30,7 +30,7 @@ struct layout * layout_new(struct attr *parent, struct attr **attrs)
 {
        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;
@@ -51,6 +51,8 @@ struct layout * layout_new(struct attr *parent, struct attr **attrs)
                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;
 }
 
@@ -101,6 +103,9 @@ layout_get_attr(struct layout *layout, enum attr_type type, struct attr *attr, s
                        layer=g_list_next(layer);
                }
                break;
+       case attr_active:
+               attr->u.num=layout->active;
+               break;
        default:
                break;
        }
index 9dd0aae..41fcbbf 100644 (file)
@@ -82,7 +82,7 @@ struct cursor {
        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;
index 73a5810..50825e8 100644 (file)
@@ -2242,6 +2242,16 @@ navit_add_log(struct navit *this_, struct log *log)
        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)
 {
@@ -2260,9 +2270,7 @@ 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;
index 4ef8317..33b6e3c 100644 (file)
@@ -90,6 +90,7 @@
 <!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>