ui-layout-def.xsd 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3. targetNamespace="ui-layout-definition"
  4. xmlns:tns="ui-layout-definition"
  5. elementFormDefault="qualified"
  6. version="1.1">
  7. <!-- Root element -->
  8. <xs:element name="ui-layout-def" type="tns:UILayoutDefType"/>
  9. <!-- Main document structure -->
  10. <xs:complexType name="UILayoutDefType">
  11. <xs:sequence>
  12. <xs:element name="validation-rules" type="tns:ValidationRulesType" minOccurs="0"/>
  13. <xs:element name="patterns" type="tns:PatternsType"/>
  14. <xs:element name="views" type="tns:ViewsType" minOccurs="0"/>
  15. <xs:element name="window" type="tns:WindowType" maxOccurs="unbounded"/>
  16. </xs:sequence>
  17. <xs:attribute name="version" type="xs:string" default="1.1"/>
  18. </xs:complexType>
  19. <!-- Validation Rules -->
  20. <xs:complexType name="ValidationRulesType">
  21. <xs:sequence>
  22. <xs:element name="validation-include" type="tns:ValidationIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  23. <xs:element name="rule" type="tns:ValidationRuleType" minOccurs="0" maxOccurs="unbounded"/>
  24. </xs:sequence>
  25. </xs:complexType>
  26. <xs:complexType name="ValidationIncludeType">
  27. <xs:attribute name="src" type="xs:string" use="required"/>
  28. <xs:attribute name="important" type="xs:boolean" default="false"/>
  29. </xs:complexType>
  30. <xs:complexType name="ValidationRuleType">
  31. <xs:sequence>
  32. <xs:element name="description" type="xs:string"/>
  33. <xs:element name="constraint" type="xs:string" maxOccurs="unbounded"/>
  34. </xs:sequence>
  35. <xs:attribute name="name" type="xs:string" use="required"/>
  36. </xs:complexType>
  37. <!-- Patterns -->
  38. <xs:complexType name="PatternsType">
  39. <xs:sequence>
  40. <xs:element name="pattern-include" type="tns:PatternIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  41. <xs:choice minOccurs="0" maxOccurs="unbounded">
  42. <xs:element name="control" type="tns:ControlType"/>
  43. <xs:element name="structure" type="tns:StructureType"/>
  44. <xs:element name="wireframe" type="tns:WireframeType"/>
  45. </xs:choice>
  46. </xs:sequence>
  47. </xs:complexType>
  48. <xs:complexType name="PatternIncludeType">
  49. <xs:attribute name="src" type="xs:string" use="required"/>
  50. <xs:attribute name="important" type="xs:boolean" default="false"/>
  51. </xs:complexType>
  52. <!-- Views (NEW in v1.1) -->
  53. <xs:complexType name="ViewsType">
  54. <xs:sequence>
  55. <xs:element name="view-include" type="tns:ViewIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  56. <xs:element name="view" type="tns:ViewType" minOccurs="0" maxOccurs="unbounded"/>
  57. </xs:sequence>
  58. </xs:complexType>
  59. <xs:complexType name="ViewIncludeType">
  60. <xs:attribute name="src" type="xs:string" use="required"/>
  61. <xs:attribute name="important" type="xs:boolean" default="false"/>
  62. </xs:complexType>
  63. <xs:complexType name="ViewType">
  64. <xs:sequence>
  65. <xs:element name="description" type="xs:string" minOccurs="0"/>
  66. <xs:element name="metadata" type="tns:ViewMetadataType" minOccurs="0"/>
  67. <xs:element name="dependencies" type="tns:ViewDependenciesType" minOccurs="0"/>
  68. <xs:element name="data-context" type="tns:DataContextType" minOccurs="0"/>
  69. <xs:element name="windows" type="tns:ViewWindowsType" minOccurs="0"/>
  70. <xs:element name="navigation" type="tns:ViewNavigationType" minOccurs="0"/>
  71. <xs:element name="behaviors" type="tns:ViewBehaviorsType" minOccurs="0"/>
  72. <xs:element name="composed-views" type="tns:ComposedViewsType" minOccurs="0"/>
  73. <xs:element name="layout" type="tns:ViewLayoutType" minOccurs="0"/>
  74. <xs:element name="coordination" type="tns:CoordinationType" minOccurs="0"/>
  75. <xs:element name="communication" type="tns:CommunicationType" minOccurs="0"/>
  76. <xs:element name="workflow" type="tns:WorkflowType" minOccurs="0"/>
  77. <xs:element name="module-views" type="tns:ModuleViewsType" minOccurs="0"/>
  78. <xs:element name="module-dependencies" type="tns:ModuleDependenciesType" minOccurs="0"/>
  79. <xs:element name="main-navigation" type="tns:MainNavigationType" minOccurs="0"/>
  80. </xs:sequence>
  81. <xs:attribute name="name" type="xs:string" use="required"/>
  82. <xs:attribute name="type" type="tns:ViewTypeEnum" use="required"/>
  83. <xs:attribute name="category" type="tns:ViewCategoryEnum" use="required"/>
  84. <xs:attribute name="inherits" type="xs:string"/>
  85. </xs:complexType>
  86. <!-- View Type and Category Enums -->
  87. <xs:simpleType name="ViewTypeEnum">
  88. <xs:restriction base="xs:string">
  89. <xs:enumeration value="business-entity"/>
  90. <xs:enumeration value="process-flow"/>
  91. <xs:enumeration value="dashboard"/>
  92. <xs:enumeration value="utility"/>
  93. <xs:enumeration value="wizard"/>
  94. <xs:enumeration value="composite"/>
  95. <xs:enumeration value="module"/>
  96. <xs:enumeration value="base"/>
  97. </xs:restriction>
  98. </xs:simpleType>
  99. <xs:simpleType name="ViewCategoryEnum">
  100. <xs:restriction base="xs:string">
  101. <xs:enumeration value="core"/>
  102. <xs:enumeration value="admin"/>
  103. <xs:enumeration value="reporting"/>
  104. <xs:enumeration value="system"/>
  105. <xs:enumeration value="framework"/>
  106. <xs:enumeration value="business"/>
  107. </xs:restriction>
  108. </xs:simpleType>
  109. <!-- View Metadata -->
  110. <xs:complexType name="ViewMetadataType">
  111. <xs:sequence>
  112. <xs:element name="model-class" type="xs:string" minOccurs="0"/>
  113. <xs:element name="view-model-class" type="xs:string" minOccurs="0"/>
  114. <xs:element name="controller-class" type="xs:string" minOccurs="0"/>
  115. <xs:element name="permissions" type="xs:string" minOccurs="0"/>
  116. </xs:sequence>
  117. </xs:complexType>
  118. <!-- View Dependencies -->
  119. <xs:complexType name="ViewDependenciesType">
  120. <xs:choice maxOccurs="unbounded">
  121. <xs:element name="view-ref" type="tns:ViewRefType"/>
  122. <xs:element name="shared-component" type="tns:SharedComponentType"/>
  123. </xs:choice>
  124. </xs:complexType>
  125. <xs:complexType name="ViewRefType">
  126. <xs:sequence>
  127. <xs:element name="interaction" type="tns:InteractionType" minOccurs="0"/>
  128. </xs:sequence>
  129. <xs:attribute name="name" type="xs:string" use="required"/>
  130. <xs:attribute name="relationship" type="tns:RelationshipEnum" use="required"/>
  131. <xs:attribute name="required" type="xs:boolean" default="false"/>
  132. <xs:attribute name="role" type="xs:string"/>
  133. <xs:attribute name="layout-slot" type="xs:string"/>
  134. </xs:complexType>
  135. <xs:simpleType name="RelationshipEnum">
  136. <xs:restriction base="xs:string">
  137. <xs:enumeration value="lookup"/>
  138. <xs:enumeration value="detail"/>
  139. <xs:enumeration value="reference"/>
  140. <xs:enumeration value="primary"/>
  141. </xs:restriction>
  142. </xs:simpleType>
  143. <xs:complexType name="InteractionType">
  144. <xs:attribute name="type" type="xs:string" use="required"/>
  145. <xs:attribute name="returns" type="xs:string"/>
  146. <xs:attribute name="context" type="xs:string"/>
  147. </xs:complexType>
  148. <xs:complexType name="SharedComponentType">
  149. <xs:attribute name="name" type="xs:string" use="required"/>
  150. <xs:attribute name="required" type="xs:boolean" default="false"/>
  151. </xs:complexType>
  152. <!-- Data Context -->
  153. <xs:complexType name="DataContextType">
  154. <xs:sequence>
  155. <xs:element name="property" type="tns:DataPropertyType" maxOccurs="unbounded"/>
  156. </xs:sequence>
  157. </xs:complexType>
  158. <xs:complexType name="DataPropertyType">
  159. <xs:attribute name="name" type="xs:string" use="required"/>
  160. <xs:attribute name="type" type="xs:string" use="required"/>
  161. <xs:attribute name="scope" type="tns:DataScopeEnum" default="view"/>
  162. </xs:complexType>
  163. <xs:simpleType name="DataScopeEnum">
  164. <xs:restriction base="xs:string">
  165. <xs:enumeration value="view"/>
  166. <xs:enumeration value="shared"/>
  167. <xs:enumeration value="global"/>
  168. </xs:restriction>
  169. </xs:simpleType>
  170. <!-- View Windows -->
  171. <xs:complexType name="ViewWindowsType">
  172. <xs:sequence>
  173. <xs:element name="window-ref" type="tns:WindowRefType" maxOccurs="unbounded"/>
  174. </xs:sequence>
  175. </xs:complexType>
  176. <xs:complexType name="WindowRefType">
  177. <xs:attribute name="name" type="xs:string" use="required"/>
  178. <xs:attribute name="role" type="tns:WindowRoleEnum" use="required"/>
  179. <xs:attribute name="default" type="xs:boolean" default="false"/>
  180. <xs:attribute name="modal" type="xs:boolean" default="false"/>
  181. </xs:complexType>
  182. <xs:simpleType name="WindowRoleEnum">
  183. <xs:restriction base="xs:string">
  184. <xs:enumeration value="main"/>
  185. <xs:enumeration value="editor"/>
  186. <xs:enumeration value="viewer"/>
  187. <xs:enumeration value="utility"/>
  188. <xs:enumeration value="catalog"/>
  189. <xs:enumeration value="step1"/>
  190. <xs:enumeration value="step2"/>
  191. <xs:enumeration value="step3"/>
  192. </xs:restriction>
  193. </xs:simpleType>
  194. <!-- View Navigation -->
  195. <xs:complexType name="ViewNavigationType">
  196. <xs:sequence>
  197. <xs:element name="action" type="tns:NavigationActionType" maxOccurs="unbounded"/>
  198. </xs:sequence>
  199. </xs:complexType>
  200. <xs:complexType name="NavigationActionType">
  201. <xs:attribute name="name" type="xs:string" use="required"/>
  202. <xs:attribute name="target" type="xs:string" use="required"/>
  203. <xs:attribute name="context" type="xs:string"/>
  204. </xs:complexType>
  205. <!-- View Behaviors -->
  206. <xs:complexType name="ViewBehaviorsType">
  207. <xs:sequence>
  208. <xs:element name="behavior" type="tns:ViewBehaviorType" maxOccurs="unbounded"/>
  209. </xs:sequence>
  210. </xs:complexType>
  211. <xs:complexType name="ViewBehaviorType">
  212. <xs:attribute name="name" type="xs:string" use="required"/>
  213. <xs:attribute name="scope" type="tns:BehaviorScopeEnum" default="view"/>
  214. </xs:complexType>
  215. <xs:simpleType name="BehaviorScopeEnum">
  216. <xs:restriction base="xs:string">
  217. <xs:enumeration value="view"/>
  218. <xs:enumeration value="global"/>
  219. </xs:restriction>
  220. </xs:simpleType>
  221. <!-- Composed Views -->
  222. <xs:complexType name="ComposedViewsType">
  223. <xs:sequence>
  224. <xs:element name="view-ref" type="tns:ViewRefType" maxOccurs="unbounded"/>
  225. </xs:sequence>
  226. </xs:complexType>
  227. <!-- View Layout -->
  228. <xs:complexType name="ViewLayoutType">
  229. <xs:sequence>
  230. <xs:element name="slot" type="tns:ViewSlotType" maxOccurs="unbounded"/>
  231. </xs:sequence>
  232. <xs:attribute name="wireframe" type="xs:string" use="required"/>
  233. </xs:complexType>
  234. <xs:complexType name="ViewSlotType">
  235. <xs:attribute name="name" type="xs:string" use="required"/>
  236. <xs:attribute name="view" type="xs:string" use="required"/>
  237. </xs:complexType>
  238. <!-- Coordination -->
  239. <xs:complexType name="CoordinationType">
  240. <xs:sequence>
  241. <xs:element name="rule" type="tns:CoordinationRuleType" maxOccurs="unbounded"/>
  242. </xs:sequence>
  243. </xs:complexType>
  244. <xs:complexType name="CoordinationRuleType">
  245. <xs:attribute name="when" type="xs:string" use="required"/>
  246. <xs:attribute name="then" type="xs:string" use="required"/>
  247. </xs:complexType>
  248. <!-- Communication -->
  249. <xs:complexType name="CommunicationType">
  250. <xs:sequence>
  251. <xs:element name="publishes" type="tns:PublishesType" minOccurs="0"/>
  252. <xs:element name="subscribes" type="tns:SubscribesType" minOccurs="0"/>
  253. </xs:sequence>
  254. </xs:complexType>
  255. <xs:complexType name="PublishesType">
  256. <xs:sequence>
  257. <xs:element name="event" type="tns:PublishedEventType" maxOccurs="unbounded"/>
  258. </xs:sequence>
  259. </xs:complexType>
  260. <xs:complexType name="SubscribesType">
  261. <xs:sequence>
  262. <xs:element name="event" type="tns:SubscribedEventType" maxOccurs="unbounded"/>
  263. </xs:sequence>
  264. </xs:complexType>
  265. <xs:complexType name="PublishedEventType">
  266. <xs:attribute name="name" type="xs:string" use="required"/>
  267. <xs:attribute name="data" type="xs:string"/>
  268. </xs:complexType>
  269. <xs:complexType name="SubscribedEventType">
  270. <xs:attribute name="name" type="xs:string" use="required"/>
  271. <xs:attribute name="source" type="xs:string" use="required"/>
  272. <xs:attribute name="handler" type="xs:string" use="required"/>
  273. </xs:complexType>
  274. <!-- Workflow -->
  275. <xs:complexType name="WorkflowType">
  276. <xs:sequence>
  277. <xs:element name="step" type="tns:WorkflowStepType" maxOccurs="unbounded"/>
  278. </xs:sequence>
  279. </xs:complexType>
  280. <xs:complexType name="WorkflowStepType">
  281. <xs:attribute name="name" type="xs:string" use="required"/>
  282. <xs:attribute name="window" type="xs:string" use="required"/>
  283. <xs:attribute name="next" type="xs:string"/>
  284. <xs:attribute name="previous" type="xs:string"/>
  285. </xs:complexType>
  286. <!-- Module Views -->
  287. <xs:complexType name="ModuleViewsType">
  288. <xs:sequence>
  289. <xs:element name="view-ref" type="tns:SimpleViewRefType" maxOccurs="unbounded"/>
  290. </xs:sequence>
  291. </xs:complexType>
  292. <xs:complexType name="SimpleViewRefType">
  293. <xs:attribute name="name" type="xs:string" use="required"/>
  294. </xs:complexType>
  295. <!-- Module Dependencies -->
  296. <xs:complexType name="ModuleDependenciesType">
  297. <xs:sequence>
  298. <xs:element name="module-ref" type="tns:ModuleRefType" maxOccurs="unbounded"/>
  299. </xs:sequence>
  300. </xs:complexType>
  301. <xs:complexType name="ModuleRefType">
  302. <xs:attribute name="name" type="xs:string" use="required"/>
  303. </xs:complexType>
  304. <!-- Main Navigation -->
  305. <xs:complexType name="MainNavigationType">
  306. <xs:sequence>
  307. <xs:element name="nav-item" type="tns:NavItemType" maxOccurs="unbounded"/>
  308. </xs:sequence>
  309. </xs:complexType>
  310. <xs:complexType name="NavItemType">
  311. <xs:attribute name="text" type="xs:string" use="required"/>
  312. <xs:attribute name="view" type="xs:string" use="required"/>
  313. <xs:attribute name="action" type="xs:string" use="required"/>
  314. </xs:complexType>
  315. <!-- Control Definition -->
  316. <xs:complexType name="ControlType">
  317. <xs:sequence>
  318. <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
  319. <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
  320. <xs:element name="behavior" type="tns:BehaviorType" minOccurs="0"/>
  321. <xs:element name="structure" type="tns:ControlStructureType" minOccurs="0"/>
  322. </xs:sequence>
  323. <xs:attribute name="name" type="xs:string" use="required"/>
  324. <xs:attribute name="type" type="tns:ControlTypeEnum" use="required"/>
  325. <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
  326. <xs:attribute name="inherits" type="xs:string"/>
  327. </xs:complexType>
  328. <xs:simpleType name="ControlTypeEnum">
  329. <xs:restriction base="xs:string">
  330. <xs:enumeration value="action"/>
  331. <xs:enumeration value="input"/>
  332. <xs:enumeration value="display"/>
  333. <xs:enumeration value="container"/>
  334. <xs:enumeration value="data"/>
  335. <xs:enumeration value="navigation"/>
  336. <xs:enumeration value="system"/>
  337. <xs:enumeration value="dialog"/>
  338. </xs:restriction>
  339. </xs:simpleType>
  340. <xs:simpleType name="ControlCategoryEnum">
  341. <xs:restriction base="xs:string">
  342. <xs:enumeration value="basic"/>
  343. <xs:enumeration value="input"/>
  344. <xs:enumeration value="action"/>
  345. <xs:enumeration value="layout"/>
  346. <xs:enumeration value="data"/>
  347. <xs:enumeration value="navigation"/>
  348. <xs:enumeration value="composite"/>
  349. <xs:enumeration value="windows-specific"/>
  350. <xs:enumeration value="kde-specific"/>
  351. <xs:enumeration value="web-specific"/>
  352. </xs:restriction>
  353. </xs:simpleType>
  354. <!-- Constraints -->
  355. <xs:complexType name="ConstraintsType">
  356. <xs:sequence>
  357. <xs:element name="allowed-parents" type="xs:string" minOccurs="0"/>
  358. <xs:element name="allowed-children" type="xs:string" minOccurs="0"/>
  359. <xs:element name="container" type="xs:boolean" minOccurs="0"/>
  360. <xs:element name="max-children" type="xs:string" minOccurs="0"/>
  361. <xs:element name="requires-structure" type="xs:string" minOccurs="0"/>
  362. <xs:element name="required-slots" type="xs:string" minOccurs="0"/>
  363. </xs:sequence>
  364. </xs:complexType>
  365. <!-- Attributes -->
  366. <xs:complexType name="AttributesType">
  367. <xs:sequence>
  368. <xs:element name="attribute" type="tns:AttributeType" maxOccurs="unbounded"/>
  369. </xs:sequence>
  370. </xs:complexType>
  371. <xs:complexType name="AttributeType">
  372. <xs:attribute name="name" type="xs:string" use="required"/>
  373. <xs:attribute name="type" type="tns:AttributeTypeEnum" use="required"/>
  374. <xs:attribute name="default" type="xs:string"/>
  375. <xs:attribute name="required" type="xs:boolean" default="false"/>
  376. <xs:attribute name="min" type="xs:int"/>
  377. <xs:attribute name="max" type="xs:int"/>
  378. <xs:attribute name="values" type="xs:string"/>
  379. </xs:complexType>
  380. <xs:simpleType name="AttributeTypeEnum">
  381. <xs:restriction base="xs:string">
  382. <xs:enumeration value="string"/>
  383. <xs:enumeration value="int"/>
  384. <xs:enumeration value="bool"/>
  385. <xs:enumeration value="enum"/>
  386. <xs:enumeration value="color"/>
  387. <xs:enumeration value="date"/>
  388. <xs:enumeration value="icon"/>
  389. <xs:enumeration value="object"/>
  390. </xs:restriction>
  391. </xs:simpleType>
  392. <!-- Behavior -->
  393. <xs:complexType name="BehaviorType">
  394. <xs:sequence>
  395. <xs:element name="event" type="tns:EventType" maxOccurs="unbounded"/>
  396. </xs:sequence>
  397. </xs:complexType>
  398. <xs:complexType name="EventType">
  399. <xs:attribute name="name" type="xs:string" use="required"/>
  400. <xs:attribute name="required" type="xs:boolean" default="false"/>
  401. <xs:attribute name="handler-required" type="xs:boolean" default="false"/>
  402. <xs:attribute name="bubbles" type="xs:boolean" default="false"/>
  403. <xs:attribute name="parameters" type="xs:string"/>
  404. </xs:complexType>
  405. <!-- Control Structure -->
  406. <xs:complexType name="ControlStructureType">
  407. <xs:choice maxOccurs="unbounded">
  408. <xs:element name="items" type="tns:ItemsType"/>
  409. <xs:element name="menu-items" type="tns:MenuItemsType"/>
  410. <xs:element name="columns" type="tns:ColumnsType"/>
  411. <xs:element name="nodes" type="tns:NodesType"/>
  412. <xs:element name="tabs" type="tns:TabsType"/>
  413. <xs:element name="children" type="tns:ChildrenType"/>
  414. <xs:element name="property-categories" type="tns:PropertyCategoriesType"/>
  415. <xs:element name="context-menu" type="tns:ContextMenuType"/>
  416. <xs:element name="central-widget" type="tns:CentralWidgetType"/>
  417. <xs:element name="toolbars" type="tns:ToolbarsType"/>
  418. <xs:element name="dock-widgets" type="tns:DockWidgetsType"/>
  419. </xs:choice>
  420. </xs:complexType>
  421. <!-- Structure Components -->
  422. <xs:complexType name="ItemsType">
  423. <xs:sequence>
  424. <xs:element name="item" type="tns:ItemType" maxOccurs="unbounded"/>
  425. </xs:sequence>
  426. <xs:attribute name="min-count" type="xs:int" default="0"/>
  427. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  428. </xs:complexType>
  429. <xs:complexType name="ItemType">
  430. <xs:sequence>
  431. <xs:element name="values" type="tns:ValuesType" minOccurs="0"/>
  432. </xs:sequence>
  433. <xs:attribute name="value" type="xs:string"/>
  434. <xs:attribute name="text" type="xs:string"/>
  435. </xs:complexType>
  436. <xs:complexType name="ValuesType">
  437. <xs:sequence>
  438. <xs:element name="value" type="tns:ValueType" maxOccurs="unbounded"/>
  439. </xs:sequence>
  440. </xs:complexType>
  441. <xs:complexType name="ValueType">
  442. <xs:attribute name="column" type="xs:string" use="required"/>
  443. <xs:attribute name="text" type="xs:string" use="required"/>
  444. </xs:complexType>
  445. <xs:complexType name="MenuItemsType">
  446. <xs:sequence>
  447. <xs:element name="menu-item" type="tns:MenuItemType" maxOccurs="unbounded"/>
  448. </xs:sequence>
  449. <xs:attribute name="min-count" type="xs:int" default="1"/>
  450. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  451. </xs:complexType>
  452. <xs:complexType name="MenuItemType">
  453. <xs:attribute name="text" type="xs:string" use="required"/>
  454. <xs:attribute name="action" type="xs:string"/>
  455. <xs:attribute name="shortcut" type="xs:string"/>
  456. <xs:attribute name="separator" type="xs:boolean" default="false"/>
  457. </xs:complexType>
  458. <xs:complexType name="ColumnsType">
  459. <xs:sequence>
  460. <xs:element name="column" type="tns:ColumnType" maxOccurs="unbounded"/>
  461. </xs:sequence>
  462. <xs:attribute name="min-count" type="xs:int" default="1"/>
  463. <xs:attribute name="max-count" type="xs:int" default="20"/>
  464. </xs:complexType>
  465. <xs:complexType name="ColumnType">
  466. <xs:attribute name="name" type="xs:string" use="required"/>
  467. <xs:attribute name="text" type="xs:string" use="required"/>
  468. <xs:attribute name="width" type="xs:string"/>
  469. <xs:attribute name="sortable" type="xs:boolean" default="false"/>
  470. </xs:complexType>
  471. <xs:complexType name="NodesType">
  472. <xs:sequence>
  473. <xs:element name="node" type="tns:NodeType" maxOccurs="unbounded"/>
  474. </xs:sequence>
  475. <xs:attribute name="min-count" type="xs:int" default="0"/>
  476. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  477. <xs:attribute name="max-depth" type="xs:int" default="10"/>
  478. </xs:complexType>
  479. <xs:complexType name="NodeType">
  480. <xs:sequence>
  481. <xs:element name="nodes" type="tns:NodesType" minOccurs="0"/>
  482. </xs:sequence>
  483. <xs:attribute name="text" type="xs:string" use="required"/>
  484. <xs:attribute name="value" type="xs:string"/>
  485. <xs:attribute name="expanded" type="xs:boolean" default="false"/>
  486. <xs:attribute name="checked" type="xs:boolean" default="false"/>
  487. </xs:complexType>
  488. <xs:complexType name="TabsType">
  489. <xs:sequence>
  490. <xs:element name="tab" type="tns:TabType" maxOccurs="unbounded"/>
  491. </xs:sequence>
  492. <xs:attribute name="min-count" type="xs:int" default="1"/>
  493. <xs:attribute name="max-count" type="xs:int" default="20"/>
  494. </xs:complexType>
  495. <xs:complexType name="TabType">
  496. <xs:complexContent>
  497. <xs:extension base="tns:ControlContentType">
  498. <xs:attribute name="name" type="xs:string" use="required"/>
  499. <xs:attribute name="text" type="xs:string" use="required"/>
  500. <xs:attribute name="visible" type="xs:boolean" default="true"/>
  501. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  502. </xs:extension>
  503. </xs:complexContent>
  504. </xs:complexType>
  505. <xs:complexType name="ChildrenType">
  506. <xs:attribute name="allow-multiple" type="xs:boolean" default="true"/>
  507. </xs:complexType>
  508. <xs:complexType name="PropertyCategoriesType">
  509. <xs:sequence>
  510. <xs:element name="category" type="tns:PropertyCategoryType" maxOccurs="unbounded"/>
  511. </xs:sequence>
  512. </xs:complexType>
  513. <xs:complexType name="PropertyCategoryType">
  514. <xs:attribute name="name" type="xs:string" use="required"/>
  515. <xs:attribute name="display-name" type="xs:string" use="required"/>
  516. <xs:attribute name="expanded" type="xs:boolean" default="true"/>
  517. </xs:complexType>
  518. <xs:complexType name="ContextMenuType">
  519. <!-- Context menu structure can be defined here -->
  520. </xs:complexType>
  521. <xs:complexType name="CentralWidgetType">
  522. <xs:attribute name="required" type="xs:boolean" default="true"/>
  523. </xs:complexType>
  524. <xs:complexType name="ToolbarsType">
  525. <xs:attribute name="max-count" type="xs:int" default="10"/>
  526. </xs:complexType>
  527. <xs:complexType name="DockWidgetsType">
  528. <xs:attribute name="max-count" type="xs:int" default="20"/>
  529. </xs:complexType>
  530. <!-- Structure Definition -->
  531. <xs:complexType name="StructureType">
  532. <xs:sequence>
  533. <xs:element name="description" type="xs:string" minOccurs="0"/>
  534. <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
  535. <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
  536. <xs:element name="template" type="tns:TemplateType"/>
  537. </xs:sequence>
  538. <xs:attribute name="name" type="xs:string" use="required"/>
  539. <xs:attribute name="type" type="xs:string" use="required"/>
  540. <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
  541. </xs:complexType>
  542. <!-- Wireframe Definition -->
  543. <xs:complexType name="WireframeType">
  544. <xs:sequence>
  545. <xs:element name="description" type="xs:string" minOccurs="0"/>
  546. <xs:element name="template" type="tns:TemplateType"/>
  547. </xs:sequence>
  548. <xs:attribute name="name" type="xs:string" use="required"/>
  549. <xs:attribute name="type" type="xs:string" use="required"/>
  550. </xs:complexType>
  551. <!-- Template -->
  552. <xs:complexType name="TemplateType">
  553. <xs:complexContent>
  554. <xs:extension base="tns:ControlContentType"/>
  555. </xs:complexContent>
  556. </xs:complexType>
  557. <!-- Window Definition -->
  558. <xs:complexType name="WindowType">
  559. <xs:sequence>
  560. <xs:element name="attributes" type="tns:WindowAttributesType" minOccurs="0"/>
  561. <xs:element name="view-properties" type="tns:ViewPropertiesType" minOccurs="0"/>
  562. <xs:choice>
  563. <xs:element name="slot-overrides" type="tns:SlotOverridesType"/>
  564. <xs:element name="wireframe-instance" type="tns:WireframeInstanceType"/>
  565. <xs:group ref="tns:ControlContentGroup"/>
  566. </xs:choice>
  567. </xs:sequence>
  568. <xs:attribute name="name" type="xs:string" use="required"/>
  569. <xs:attribute name="title" type="xs:string" use="required"/>
  570. <xs:attribute name="wireframe" type="xs:string"/>
  571. <xs:attribute name="view" type="xs:string"/>
  572. </xs:complexType>
  573. <!-- Window Attributes -->
  574. <xs:complexType name="WindowAttributesType">
  575. <xs:sequence>
  576. <xs:element name="attribute" maxOccurs="unbounded">
  577. <xs:complexType>
  578. <xs:attribute name="name" type="xs:string" use="required"/>
  579. <xs:attribute name="value" type="xs:string" use="required"/>
  580. </xs:complexType>
  581. </xs:element>
  582. </xs:sequence>
  583. </xs:complexType>
  584. <!-- View Properties (NEW) -->
  585. <xs:complexType name="ViewPropertiesType">
  586. <xs:sequence>
  587. <xs:element name="role" type="tns:WindowRoleEnum"/>
  588. <xs:element name="default" type="xs:boolean" minOccurs="0"/>
  589. <xs:element name="modal" type="xs:boolean" minOccurs="0"/>
  590. <xs:element name="data-context-binding" type="xs:string" minOccurs="0"/>
  591. <xs:element name="parent-window" type="xs:string" minOccurs="0"/>
  592. </xs:sequence>
  593. </xs:complexType>
  594. <!-- Slot Overrides -->
  595. <xs:complexType name="SlotOverridesType">
  596. <xs:sequence>
  597. <xs:element name="slot" type="tns:SlotOverrideType" maxOccurs="unbounded"/>
  598. </xs:sequence>
  599. </xs:complexType>
  600. <xs:complexType name="SlotOverrideType">
  601. <xs:complexContent>
  602. <xs:extension base="tns:ControlContentType">
  603. <xs:attribute name="name" type="xs:string" use="required"/>
  604. </xs:extension>
  605. </xs:complexContent>
  606. </xs:complexType>
  607. <!-- Wireframe Instance -->
  608. <xs:complexType name="WireframeInstanceType">
  609. <xs:sequence>
  610. <xs:element name="slot" type="tns:SlotOverrideType" maxOccurs="unbounded"/>
  611. </xs:sequence>
  612. <xs:attribute name="name" type="xs:string" use="required"/>
  613. <xs:attribute name="wireframe" type="xs:string" use="required"/>
  614. </xs:complexType>
  615. <!-- Slot Definition -->
  616. <xs:complexType name="SlotType">
  617. <xs:complexContent>
  618. <xs:extension base="tns:ControlContentType">
  619. <xs:attribute name="name" type="xs:string" use="required"/>
  620. <xs:attribute name="allowed-controls" type="xs:string"/>
  621. <xs:attribute name="required" type="xs:boolean" default="false"/>
  622. <xs:attribute name="default" type="xs:boolean" default="false"/>
  623. </xs:extension>
  624. </xs:complexContent>
  625. </xs:complexType>
  626. <!-- Control Content -->
  627. <xs:complexType name="ControlContentType" mixed="true">
  628. <xs:group ref="tns:ControlContentGroup" minOccurs="0" maxOccurs="unbounded"/>
  629. <xs:anyAttribute processContents="lax"/>
  630. </xs:complexType>
  631. <xs:group name="ControlContentGroup">
  632. <xs:choice>
  633. <!-- Basic Controls -->
  634. <xs:element name="Label" type="tns:ControlInstanceType"/>
  635. <xs:element name="TextBox" type="tns:ControlInstanceType"/>
  636. <xs:element name="ComboBox" type="tns:ControlInstanceType"/>
  637. <xs:element name="Button" type="tns:ControlInstanceType"/>
  638. <xs:element name="Panel" type="tns:ControlInstanceType"/>
  639. <xs:element name="PopupPanel" type="tns:ControlInstanceType"/>
  640. <xs:element name="Menu" type="tns:ControlInstanceType"/>
  641. <xs:element name="ListView" type="tns:ControlInstanceType"/>
  642. <xs:element name="TreeView" type="tns:ControlInstanceType"/>
  643. <xs:element name="TabControl" type="tns:ControlInstanceType"/>
  644. <xs:element name="ButtonBar" type="tns:ControlInstanceType"/>
  645. <!-- Windows-Specific Controls -->
  646. <xs:element name="RichTextBox" type="tns:ControlInstanceType"/>
  647. <xs:element name="PropertyGrid" type="tns:ControlInstanceType"/>
  648. <xs:element name="NotifyIcon" type="tns:ControlInstanceType"/>
  649. <!-- KDE-Specific Controls -->
  650. <xs:element name="KComboBox" type="tns:ControlInstanceType"/>
  651. <xs:element name="KMainWindow" type="tns:ControlInstanceType"/>
  652. <xs:element name="KFileDialog" type="tns:ControlInstanceType"/>
  653. <!-- Web-Specific Controls -->
  654. <xs:element name="WebBrowser" type="tns:ControlInstanceType"/>
  655. <xs:element name="DatePicker" type="tns:ControlInstanceType"/>
  656. <!-- Structure Elements -->
  657. <xs:element name="FormField" type="tns:ControlInstanceType"/>
  658. <xs:element name="slot" type="tns:SlotType"/>
  659. <xs:element name="wireframe-instance" type="tns:WireframeInstanceType"/>
  660. </xs:choice>
  661. </xs:group>
  662. <!-- Control Instance -->
  663. <xs:complexType name="ControlInstanceType">
  664. <xs:complexContent>
  665. <xs:extension base="tns:ControlContentType">
  666. <xs:attribute name="name" type="xs:string" use="required"/>
  667. <xs:attribute name="slot" type="xs:string"/>
  668. </xs:extension>
  669. </xs:complexContent>
  670. </xs:complexType>
  671. </xs:schema>