scary commit..but here goes.
[mikachu/openbox.git] / data / themerc.xsd
1 <?xml version="1.0"?>
2
3 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
4     targetNamespace="http://openbox.org/themerc"
5     xmlns:obt="http://openbox.org/themerc"
6     elementFormDefault="qualified"
7     version="1.0">
8
9   <xs:annotation>
10     <xs:documentation xml:lang="en">
11       Openbox theme definition
12       Version 1
13       Copyright 2007 Dana Jansens
14     </xs:documentation>
15   </xs:annotation>
16
17   <xs:element name="openbox_theme" type="obt:theme">
18     <xs:annotation>
19       <xs:documentation xml:lang="en">
20         The root node
21       </xs:documentation>
22     </xs:annotation>
23   </xs:element>
24
25   <xs:complexType name="padding">
26     <xs:attribute name="horizontal" type="xs:integer"/>
27     <xs:attribute name="vertical" type="xs:integer"/>
28   </xs:complexType>
29
30   <xs:complexType name="color">
31     <xs:attribute name="r" type="xs:integer"/>
32     <xs:attribute name="g" type="xs:integer"/>
33     <xs:attribute name="b" type="xs:integer"/>
34     <xs:attribute name="a" type="xs:integer"/>
35   </xs:complexType>
36
37   <xs:complexType name="point">
38     <xs:attribute name="x" type="xs:integer"/>
39     <xs:attribute name="y" type="xs:integer"/>
40   </xs:complexType>
41
42   <xs:simpleType name="justify">
43     <xs:restriction base="xs:string">
44       <xs:enumeration value="left"/>
45       <xs:enumeration value="right"/>
46       <xs:enumeration value="center"/>
47     </xs:restriction>
48   </xs:simpleType>
49
50   <xs:complexType name="shadow">
51     <xs:all>
52       <xs:element name="offset" type="obt:point" minOccurs="0"/>
53       <xs:element name="primary" type="obt:color" minOccurs="0"/>
54     </xs:all>
55   </xs:complexType>
56
57   <xs:complexType name="text">
58     <xs:all>
59       <xs:element name="primary" type="obt:color" minOccurs="0"/>
60       <xs:element name="shadow" type="obt:shadow" minOccurs="0"/>
61     </xs:all>
62   </xs:complexType>
63
64   <xs:complexType name="textarea">
65     <xs:all>
66       <xs:element name="style" type="xs:string" minOccurs="0"/>
67       <xs:element name="primary" type="obt:color" minOccurs="0"/>
68       <xs:element name="secondary" type="obt:color" minOccurs="0"/>
69       <xs:element name="interlace" type="obt:color" minOccurs="0"/>
70       <xs:element name="border" type="obt:color" minOccurs="0"/>
71       <xs:element name="text" type="obt:text" minOccurs="0"/>
72     </xs:all>
73   </xs:complexType>
74
75   <xs:complexType name="area">
76     <xs:all>
77       <xs:element name="style" type="xs:string" minOccurs="0"/>
78       <xs:element name="primary" type="obt:color" minOccurs="0"/>
79       <xs:element name="secondary" type="obt:color" minOccurs="0"/>
80       <xs:element name="interlace" type="obt:color" minOccurs="0"/>
81       <xs:element name="border" type="obt:color" minOccurs="0"/>
82     </xs:all>
83   </xs:complexType>
84
85   <xs:complexType name="buttonarea">
86     <xs:all>
87       <xs:element name="style" type="xs:string" minOccurs="0"/>
88       <xs:element name="primary" type="obt:color" minOccurs="0"/>
89       <xs:element name="secondary" type="obt:color" minOccurs="0"/>
90       <xs:element name="interlace" type="obt:color" minOccurs="0"/>
91       <xs:element name="border" type="obt:color" minOccurs="0"/> 
92       <xs:element name="image" type="obt:color" minOccurs="0"/>
93    </xs:all>
94   </xs:complexType>
95
96   <xs:complexType name="border">
97     <xs:all>
98       <xs:element name="primary" type="obt:color" minOccurs="0"/>
99       <xs:element name="width" type="xs:integer" minOccurs="0"/>
100     </xs:all>
101   </xs:complexType>
102
103   <xs:complexType name="allmenus">
104     <xs:all>
105       <xs:element name="border" type="obt:border" minOccurs="0"/>
106       <xs:element name="overlap" type="xs:integer" minOccurs="0"/>
107       <xs:element name="justify" type="obt:justify" minOccurs="0"/>
108       <xs:element name="title" type="obt:textarea" minOccurs="0"/>
109       <xs:element name="entries" type="obt:area" minOccurs="0"/>
110       <xs:element name="inactive" type="obt:text" minOccurs="0"/>
111       <xs:element name="active" type="obt:textarea" minOccurs="0"/>
112       <xs:element name="disabled" type="obt:text" minOccurs="0"/>
113     </xs:all>
114   </xs:complexType>
115
116   <xs:complexType name="allbuttons">
117     <xs:all>
118       <xs:element name="unpressed" type="obt:buttonarea" minOccurs="0"/>
119       <xs:element name="pressed" type="obt:buttonarea" minOccurs="0"/>
120       <xs:element name="hover" type="obt:buttonarea" minOccurs="0"/>
121       <xs:element name="disabled" type="obt:buttonarea" minOccurs="0"/>
122       <xs:element name="toggled" type="obt:buttonarea" minOccurs="0"/>
123     </xs:all>
124   </xs:complexType>
125
126   <xs:complexType name="window">
127     <xs:all>
128       <xs:element name="clientpadding" type="obt:color" minOccurs="0"/>
129       <xs:element name="titlebar" type="obt:area" minOccurs="0"/>
130       <xs:element name="label" type="obt:textarea" minOccurs="0"/>
131       <xs:element name="handle" type="obt:area" minOccurs="0"/>
132       <xs:element name="grip" type="obt:area" minOccurs="0"/>
133       <xs:element name="buttons" type="obt:allbuttons" minOccurs="0"/>
134     </xs:all>
135   </xs:complexType>
136
137   <xs:complexType name="allwindows">
138     <xs:all>
139       <xs:element name="clientpadding" type="obt:padding" minOccurs="0"/>
140       <xs:element name="justify" type="obt:justify" minOccurs="0"/>
141       <xs:element name="border" type="obt:border" minOccurs="0"/>
142       <xs:element name="inactive" type="obt:window" minOccurs="0"/>
143       <xs:element name="active" type="obt:window" minOccurs="0"/>
144     </xs:all>
145   </xs:complexType>
146
147   <xs:complexType name="allosd">
148     <xs:all>
149       <xs:element name="text" type="obt:text" minOccurs="0"/>
150     </xs:all>
151   </xs:complexType>
152
153   <xs:complexType name="themeDimensions">
154     <xs:all>
155       <xs:element name="padding" type="obt:padding" minOccurs="0"/>
156       <xs:element name="handle" type="xs:integer" minOccurs="0"/>
157     </xs:all>
158   </xs:complexType>
159
160   <xs:complexType name="theme">
161     <xs:all>
162       <xs:element name="dimensions" type="obt:themeDimensions" minOccurs="0"/>
163       <xs:element name="osd" type="obt:allosd" minOccurs="0"/>
164       <xs:element name="menu" type="obt:allmenus" minOccurs="0"/>
165       <xs:element name="window" type="obt:allwindows" minOccurs="0"/>
166     </xs:all>
167     <xs:attribute name="version" type="xs:integer" use="required" fixed="1"/>
168   </xs:complexType>
169 </xs:schema>