add osd border stuff
[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/4.0/themerc"
5     xmlns:obt="http://openbox.org/4.0/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="color">
26     <xs:attribute name="r" type="xs:integer"/>
27     <xs:attribute name="g" type="xs:integer"/>
28     <xs:attribute name="b" type="xs:integer"/>
29     <xs:attribute name="a" type="xs:integer"/>
30   </xs:complexType>
31
32   <xs:complexType name="point">
33     <xs:attribute name="x" type="xs:integer"/>
34     <xs:attribute name="y" type="xs:integer"/>
35   </xs:complexType>
36
37   <xs:simpleType name="justify">
38     <xs:restriction base="xs:string">
39       <xs:enumeration value="left"/>
40       <xs:enumeration value="right"/>
41       <xs:enumeration value="center"/>
42     </xs:restriction>
43   </xs:simpleType>
44
45   <xs:complexType name="shadow">
46     <xs:all>
47       <xs:element name="offset" type="obt:point" minOccurs="0"/>
48       <xs:element name="primary" type="obt:color" minOccurs="0"/>
49     </xs:all>
50   </xs:complexType>
51
52   <xs:complexType name="text">
53     <xs:all>
54       <xs:element name="primary" type="obt:color" minOccurs="0"/>
55       <xs:element name="shadow" type="obt:shadow" minOccurs="0"/>
56     </xs:all>
57   </xs:complexType>
58
59   <xs:complexType name="textarea">
60     <xs:all>
61       <xs:element name="style" type="xs:string" minOccurs="0"/>
62       <xs:element name="primary" type="obt:color" minOccurs="0"/>
63       <xs:element name="secondary" type="obt:color" minOccurs="0"/>
64       <xs:element name="interlace" type="obt:color" minOccurs="0"/>
65       <xs:element name="border" type="obt:color" minOccurs="0"/>
66       <xs:element name="text" type="obt:text" minOccurs="0"/>
67     </xs:all>
68   </xs:complexType>
69
70   <xs:complexType name="area">
71     <xs:all>
72       <xs:element name="style" type="xs:string" minOccurs="0"/>
73       <xs:element name="primary" type="obt:color" minOccurs="0"/>
74       <xs:element name="secondary" type="obt:color" minOccurs="0"/>
75       <xs:element name="interlace" type="obt:color" minOccurs="0"/>
76       <xs:element name="border" type="obt:color" minOccurs="0"/>
77     </xs:all>
78   </xs:complexType>
79
80   <xs:complexType name="buttonarea">
81     <xs:all>
82       <xs:element name="style" type="xs:string" minOccurs="0"/>
83       <xs:element name="primary" type="obt:color" minOccurs="0"/>
84       <xs:element name="secondary" type="obt:color" minOccurs="0"/>
85       <xs:element name="interlace" type="obt:color" minOccurs="0"/>
86       <xs:element name="border" type="obt:color" minOccurs="0"/> 
87       <xs:element name="image" type="obt:color" minOccurs="0"/>
88    </xs:all>
89   </xs:complexType>
90
91   <xs:complexType name="allmenus">
92     <xs:all>
93       <xs:element name="border" type="obt:color" minOccurs="0"/>
94       <xs:element name="overlap" type="xs:integer" minOccurs="0"/>
95       <xs:element name="justify" type="obt:justify" minOccurs="0"/>
96       <xs:element name="title" type="obt:textarea" minOccurs="0"/>
97       <xs:element name="entries" type="obt:area" minOccurs="0"/>
98       <xs:element name="inactive" type="obt:text" minOccurs="0"/>
99       <xs:element name="active" type="obt:textarea" minOccurs="0"/>
100       <xs:element name="disabled" type="obt:text" minOccurs="0"/>
101       <xs:element name="activedisabled" type="obt:textarea" minOccurs="0"/>
102     </xs:all>
103   </xs:complexType>
104
105   <xs:complexType name="allbuttons">
106     <xs:all>
107       <xs:element name="unpressed" type="obt:buttonarea" minOccurs="0"/>
108       <xs:element name="pressed" type="obt:buttonarea" minOccurs="0"/>
109       <xs:element name="hover" type="obt:buttonarea" minOccurs="0"/>
110       <xs:element name="disabled" type="obt:buttonarea" minOccurs="0"/>
111       <xs:element name="toggled-unpressed" type="obt:buttonarea" minOccurs="0"/>
112       <xs:element name="toggled-pressed" type="obt:buttonarea" minOccurs="0"/>
113       <xs:element name="toggled-hover" type="obt:buttonarea" minOccurs="0"/>
114     </xs:all>
115   </xs:complexType>
116
117   <xs:complexType name="window">
118     <xs:all>
119       <xs:element name="border" type="obt:color" minOccurs="0"/>
120       <xs:element name="titleseparator" type="obt:color" minOccurs="0"/>
121       <xs:element name="clientpadding" type="obt:color" minOccurs="0"/>
122       <xs:element name="titlebar" type="obt:area" minOccurs="0"/>
123       <xs:element name="label" type="obt:textarea" minOccurs="0"/>
124       <xs:element name="handle" type="obt:area" minOccurs="0"/>
125       <xs:element name="grip" type="obt:area" minOccurs="0"/>
126       <xs:element name="buttons" type="obt:allbuttons" minOccurs="0"/>
127     </xs:all>
128   </xs:complexType>
129
130   <xs:complexType name="allwindows">
131     <xs:all>
132       <xs:element name="justify" type="obt:justify" minOccurs="0"/>
133       <xs:element name="inactive" type="obt:window" minOccurs="0"/>
134       <xs:element name="active" type="obt:window" minOccurs="0"/>
135     </xs:all>
136   </xs:complexType>
137
138   <xs:complexType name="allosd">
139     <xs:all>
140       <xs:element name="border" type="obt:color" minOccurs="0"/>
141       <xs:element name="label" type="obt:textarea" minOccurs="0"/>
142       <xs:element name="background" type="obt:area" minOccurs="0"/>
143       <xs:element name="hilight" type="obt:area" minOccurs="0"/>
144       <xs:element name="unhilight" type="obt:area" minOccurs="0"/>
145     </xs:all>
146   </xs:complexType>
147
148   <xs:complexType name="windowDimensions">
149     <xs:all>
150       <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
151       <xs:element name="clientpadding" type="obt:point" minOccurs="0"/>
152     </xs:all>
153   </xs:complexType>
154
155   <xs:complexType name="menuDimensions">
156     <xs:all>
157       <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
158     </xs:all>
159   </xs:complexType>
160
161   <xs:complexType name="osdDimensions">
162     <xs:all>
163       <xs:element name="borderwidth" type="xs:integer" minOccurs="0"/>
164     </xs:all>
165   </xs:complexType>
166
167   <xs:complexType name="themeDimensions">
168     <xs:all>
169       <xs:element name="padding" type="obt:point" minOccurs="0"/>
170       <xs:element name="handle" type="xs:integer" minOccurs="0"/>
171       <xs:element name="window" type="obt:windowDimensions" minOccurs="0"/>
172       <xs:element name="menu" type="obt:menuDimensions" minOccurs="0"/>
173       <xs:element name="osd" type="obt:osdDimensions" minOccurs="0"/>
174     </xs:all>
175   </xs:complexType>
176
177   <xs:complexType name="about">
178     <xs:all>
179       <xs:element name="author" type="xs:string" minOccurs="0"/>
180       <xs:element name="email" type="xs:string" minOccurs="0"/>
181       <xs:element name="webpage" type="xs:string" minOccurs="0"/>
182       <xs:element name="comment" type="xs:string" minOccurs="0"/>
183     </xs:all>
184   </xs:complexType>
185
186   <xs:complexType name="theme">
187     <xs:all>
188       <xs:element name="about" type="obt:about" minOccurs="0"/>
189       <xs:element name="dimensions" type="obt:themeDimensions" minOccurs="0"/>
190       <xs:element name="osd" type="obt:allosd" minOccurs="0"/>
191       <xs:element name="menu" type="obt:allmenus" minOccurs="0"/>
192       <xs:element name="window" type="obt:allwindows" minOccurs="0"/>
193     </xs:all>
194     <xs:attribute name="version" type="xs:integer" use="required" fixed="1"/>
195     <xs:attribute name="engine" type="xs:string" use="required" fixed="box"/>
196   </xs:complexType>
197 </xs:schema>