ui-layout-def.xsd 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287
  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.2">
  7. <!-- Root element -->
  8. <xs:element name="ui-layout-def" type="tns:UILayoutDefType"/>
  9. <!-- Root element for window include files -->
  10. <xs:element name="windows" type="tns:WindowIncludeFileType"/>
  11. <!-- Main document structure -->
  12. <xs:complexType name="UILayoutDefType">
  13. <xs:sequence>
  14. <xs:element name="validation-rules" type="tns:ValidationRulesType" minOccurs="0"/>
  15. <xs:element name="patterns" type="tns:PatternsType"/>
  16. <xs:element name="views" type="tns:ViewsType" minOccurs="0"/>
  17. <xs:element name="window-includes" type="tns:WindowIncludesType" minOccurs="0"/>
  18. <xs:element name="window" type="tns:WindowType" minOccurs="0" maxOccurs="unbounded"/>
  19. </xs:sequence>
  20. <xs:attribute name="version" type="xs:string" default="1.2"/>
  21. </xs:complexType>
  22. <!-- Window Include Files Structure -->
  23. <xs:complexType name="WindowIncludeFileType">
  24. <xs:sequence>
  25. <xs:element name="window" type="tns:WindowType" maxOccurs="unbounded"/>
  26. </xs:sequence>
  27. </xs:complexType>
  28. <!-- Window Includes -->
  29. <xs:complexType name="WindowIncludesType">
  30. <xs:sequence>
  31. <xs:element name="window-include" type="tns:WindowIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  32. </xs:sequence>
  33. </xs:complexType>
  34. <xs:complexType name="WindowIncludeType">
  35. <xs:attribute name="src" type="xs:string" use="required"/>
  36. <xs:attribute name="important" type="xs:boolean" default="false"/>
  37. </xs:complexType>
  38. <!-- Validation Rules -->
  39. <xs:complexType name="ValidationRulesType">
  40. <xs:sequence>
  41. <xs:element name="validation-include" type="tns:ValidationIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  42. <xs:element name="rule" type="tns:ValidationRuleType" minOccurs="0" maxOccurs="unbounded"/>
  43. </xs:sequence>
  44. </xs:complexType>
  45. <xs:complexType name="ValidationIncludeType">
  46. <xs:attribute name="src" type="xs:string" use="required"/>
  47. <xs:attribute name="important" type="xs:boolean" default="false"/>
  48. </xs:complexType>
  49. <xs:complexType name="ValidationRuleType">
  50. <xs:sequence>
  51. <xs:element name="description" type="xs:string"/>
  52. <xs:element name="constraint" type="xs:string" maxOccurs="unbounded"/>
  53. </xs:sequence>
  54. <xs:attribute name="name" type="xs:string" use="required"/>
  55. </xs:complexType>
  56. <!-- Patterns -->
  57. <xs:complexType name="PatternsType">
  58. <xs:sequence>
  59. <xs:element name="pattern-include" type="tns:PatternIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  60. <xs:choice minOccurs="0" maxOccurs="unbounded">
  61. <xs:element name="control" type="tns:ControlType"/>
  62. <xs:element name="structure" type="tns:StructureType"/>
  63. <xs:element name="wireframe" type="tns:WireframeType"/>
  64. </xs:choice>
  65. </xs:sequence>
  66. </xs:complexType>
  67. <xs:complexType name="PatternIncludeType">
  68. <xs:attribute name="src" type="xs:string" use="required"/>
  69. <xs:attribute name="important" type="xs:boolean" default="false"/>
  70. </xs:complexType>
  71. <!-- Views (NEW in v1.1) -->
  72. <xs:complexType name="ViewsType">
  73. <xs:sequence>
  74. <xs:element name="view-include" type="tns:ViewIncludeType" minOccurs="0" maxOccurs="unbounded"/>
  75. <xs:element name="view" type="tns:ViewType" minOccurs="0" maxOccurs="unbounded"/>
  76. </xs:sequence>
  77. </xs:complexType>
  78. <xs:complexType name="ViewIncludeType">
  79. <xs:attribute name="src" type="xs:string" use="required"/>
  80. <xs:attribute name="important" type="xs:boolean" default="false"/>
  81. </xs:complexType>
  82. <xs:complexType name="ViewType">
  83. <xs:sequence>
  84. <xs:element name="description" type="xs:string" minOccurs="0"/>
  85. <xs:element name="metadata" type="tns:ViewMetadataType" minOccurs="0"/>
  86. <xs:element name="dependencies" type="tns:ViewDependenciesType" minOccurs="0"/>
  87. <xs:element name="data-context" type="tns:DataContextType" minOccurs="0"/>
  88. <xs:element name="windows" type="tns:ViewWindowsType" minOccurs="0"/>
  89. <xs:element name="navigation" type="tns:ViewNavigationType" minOccurs="0"/>
  90. <xs:element name="behaviors" type="tns:ViewBehaviorsType" minOccurs="0"/>
  91. <xs:element name="composed-views" type="tns:ComposedViewsType" minOccurs="0"/>
  92. <xs:element name="layout" type="tns:ViewLayoutType" minOccurs="0"/>
  93. <xs:element name="coordination" type="tns:CoordinationType" minOccurs="0"/>
  94. <xs:element name="communication" type="tns:CommunicationType" minOccurs="0"/>
  95. <xs:element name="workflow" type="tns:WorkflowType" minOccurs="0"/>
  96. <xs:element name="module-views" type="tns:ModuleViewsType" minOccurs="0"/>
  97. <xs:element name="module-dependencies" type="tns:ModuleDependenciesType" minOccurs="0"/>
  98. <xs:element name="main-navigation" type="tns:MainNavigationType" minOccurs="0"/>
  99. </xs:sequence>
  100. <xs:attribute name="name" type="xs:string" use="required"/>
  101. <xs:attribute name="type" type="tns:ViewTypeEnum" use="required"/>
  102. <xs:attribute name="category" type="tns:ViewCategoryEnum" use="required"/>
  103. <xs:attribute name="inherits" type="xs:string"/>
  104. </xs:complexType>
  105. <!-- View Type and Category Enums -->
  106. <xs:simpleType name="ViewTypeEnum">
  107. <xs:restriction base="xs:string">
  108. <xs:enumeration value="business-entity"/>
  109. <xs:enumeration value="process-flow"/>
  110. <xs:enumeration value="dashboard"/>
  111. <xs:enumeration value="utility"/>
  112. <xs:enumeration value="wizard"/>
  113. <xs:enumeration value="composite"/>
  114. <xs:enumeration value="module"/>
  115. <xs:enumeration value="base"/>
  116. </xs:restriction>
  117. </xs:simpleType>
  118. <xs:simpleType name="ViewCategoryEnum">
  119. <xs:restriction base="xs:string">
  120. <xs:enumeration value="core"/>
  121. <xs:enumeration value="admin"/>
  122. <xs:enumeration value="reporting"/>
  123. <xs:enumeration value="system"/>
  124. <xs:enumeration value="framework"/>
  125. <xs:enumeration value="business"/>
  126. </xs:restriction>
  127. </xs:simpleType>
  128. <!-- View Metadata -->
  129. <xs:complexType name="ViewMetadataType">
  130. <xs:sequence>
  131. <xs:element name="model-class" type="xs:string" minOccurs="0"/>
  132. <xs:element name="view-model-class" type="xs:string" minOccurs="0"/>
  133. <xs:element name="controller-class" type="xs:string" minOccurs="0"/>
  134. <xs:element name="permissions" type="xs:string" minOccurs="0"/>
  135. </xs:sequence>
  136. </xs:complexType>
  137. <!-- View Dependencies -->
  138. <xs:complexType name="ViewDependenciesType">
  139. <xs:choice maxOccurs="unbounded">
  140. <xs:element name="view-ref" type="tns:ViewRefType"/>
  141. <xs:element name="shared-component" type="tns:SharedComponentType"/>
  142. </xs:choice>
  143. </xs:complexType>
  144. <xs:complexType name="ViewRefType">
  145. <xs:sequence>
  146. <xs:element name="interaction" type="tns:InteractionType" minOccurs="0"/>
  147. </xs:sequence>
  148. <xs:attribute name="name" type="xs:string" use="required"/>
  149. <xs:attribute name="relationship" type="tns:RelationshipEnum" use="required"/>
  150. <xs:attribute name="required" type="xs:boolean" default="false"/>
  151. <xs:attribute name="role" type="xs:string"/>
  152. <xs:attribute name="layout-slot" type="xs:string"/>
  153. </xs:complexType>
  154. <xs:simpleType name="RelationshipEnum">
  155. <xs:restriction base="xs:string">
  156. <xs:enumeration value="lookup"/>
  157. <xs:enumeration value="detail"/>
  158. <xs:enumeration value="reference"/>
  159. <xs:enumeration value="primary"/>
  160. </xs:restriction>
  161. </xs:simpleType>
  162. <xs:complexType name="InteractionType">
  163. <xs:attribute name="type" type="xs:string" use="required"/>
  164. <xs:attribute name="returns" type="xs:string"/>
  165. <xs:attribute name="context" type="xs:string"/>
  166. </xs:complexType>
  167. <xs:complexType name="SharedComponentType">
  168. <xs:attribute name="name" type="xs:string" use="required"/>
  169. <xs:attribute name="required" type="xs:boolean" default="false"/>
  170. </xs:complexType>
  171. <!-- Data Context -->
  172. <xs:complexType name="DataContextType">
  173. <xs:sequence>
  174. <xs:element name="property" type="tns:DataPropertyType" maxOccurs="unbounded"/>
  175. </xs:sequence>
  176. </xs:complexType>
  177. <xs:complexType name="DataPropertyType">
  178. <xs:attribute name="name" type="xs:string" use="required"/>
  179. <xs:attribute name="type" type="xs:string" use="required"/>
  180. <xs:attribute name="scope" type="tns:DataScopeEnum" default="view"/>
  181. </xs:complexType>
  182. <xs:simpleType name="DataScopeEnum">
  183. <xs:restriction base="xs:string">
  184. <xs:enumeration value="view"/>
  185. <xs:enumeration value="shared"/>
  186. <xs:enumeration value="global"/>
  187. </xs:restriction>
  188. </xs:simpleType>
  189. <!-- View Windows -->
  190. <xs:complexType name="ViewWindowsType">
  191. <xs:sequence>
  192. <xs:element name="window-ref" type="tns:WindowRefType" maxOccurs="unbounded"/>
  193. </xs:sequence>
  194. </xs:complexType>
  195. <xs:complexType name="WindowRefType">
  196. <xs:attribute name="name" type="xs:string" use="required"/>
  197. <xs:attribute name="role" type="tns:WindowRoleEnum" use="required"/>
  198. <xs:attribute name="default" type="xs:boolean" default="false"/>
  199. <xs:attribute name="modal" type="xs:boolean" default="false"/>
  200. </xs:complexType>
  201. <xs:simpleType name="WindowRoleEnum">
  202. <xs:restriction base="xs:string">
  203. <xs:enumeration value="main"/>
  204. <xs:enumeration value="editor"/>
  205. <xs:enumeration value="viewer"/>
  206. <xs:enumeration value="utility"/>
  207. <xs:enumeration value="catalog"/>
  208. <xs:enumeration value="step1"/>
  209. <xs:enumeration value="step2"/>
  210. <xs:enumeration value="step3"/>
  211. </xs:restriction>
  212. </xs:simpleType>
  213. <!-- View Navigation -->
  214. <xs:complexType name="ViewNavigationType">
  215. <xs:sequence>
  216. <xs:element name="action" type="tns:NavigationActionType" maxOccurs="unbounded"/>
  217. </xs:sequence>
  218. </xs:complexType>
  219. <xs:complexType name="NavigationActionType">
  220. <xs:attribute name="name" type="xs:string" use="required"/>
  221. <xs:attribute name="target" type="xs:string" use="required"/>
  222. <xs:attribute name="context" type="xs:string"/>
  223. </xs:complexType>
  224. <!-- View Behaviors -->
  225. <xs:complexType name="ViewBehaviorsType">
  226. <xs:sequence>
  227. <xs:element name="behavior" type="tns:ViewBehaviorType" maxOccurs="unbounded"/>
  228. </xs:sequence>
  229. </xs:complexType>
  230. <xs:complexType name="ViewBehaviorType">
  231. <xs:attribute name="name" type="xs:string" use="required"/>
  232. <xs:attribute name="scope" type="tns:BehaviorScopeEnum" default="view"/>
  233. </xs:complexType>
  234. <xs:simpleType name="BehaviorScopeEnum">
  235. <xs:restriction base="xs:string">
  236. <xs:enumeration value="view"/>
  237. <xs:enumeration value="global"/>
  238. </xs:restriction>
  239. </xs:simpleType>
  240. <!-- Composed Views -->
  241. <xs:complexType name="ComposedViewsType">
  242. <xs:sequence>
  243. <xs:element name="view-ref" type="tns:ViewRefType" maxOccurs="unbounded"/>
  244. </xs:sequence>
  245. </xs:complexType>
  246. <!-- View Layout -->
  247. <xs:complexType name="ViewLayoutType">
  248. <xs:sequence>
  249. <xs:element name="slot" type="tns:ViewSlotType" maxOccurs="unbounded"/>
  250. </xs:sequence>
  251. <xs:attribute name="wireframe" type="xs:string" use="required"/>
  252. </xs:complexType>
  253. <xs:complexType name="ViewSlotType">
  254. <xs:attribute name="name" type="xs:string" use="required"/>
  255. <xs:attribute name="view" type="xs:string" use="required"/>
  256. </xs:complexType>
  257. <!-- Coordination -->
  258. <xs:complexType name="CoordinationType">
  259. <xs:sequence>
  260. <xs:element name="rule" type="tns:CoordinationRuleType" maxOccurs="unbounded"/>
  261. </xs:sequence>
  262. </xs:complexType>
  263. <xs:complexType name="CoordinationRuleType">
  264. <xs:attribute name="when" type="xs:string" use="required"/>
  265. <xs:attribute name="then" type="xs:string" use="required"/>
  266. </xs:complexType>
  267. <!-- Communication -->
  268. <xs:complexType name="CommunicationType">
  269. <xs:sequence>
  270. <xs:element name="publishes" type="tns:PublishesType" minOccurs="0"/>
  271. <xs:element name="subscribes" type="tns:SubscribesType" minOccurs="0"/>
  272. </xs:sequence>
  273. </xs:complexType>
  274. <xs:complexType name="PublishesType">
  275. <xs:sequence>
  276. <xs:element name="event" type="tns:PublishedEventType" maxOccurs="unbounded"/>
  277. </xs:sequence>
  278. </xs:complexType>
  279. <xs:complexType name="SubscribesType">
  280. <xs:sequence>
  281. <xs:element name="event" type="tns:SubscribedEventType" maxOccurs="unbounded"/>
  282. </xs:sequence>
  283. </xs:complexType>
  284. <xs:complexType name="PublishedEventType">
  285. <xs:attribute name="name" type="xs:string" use="required"/>
  286. <xs:attribute name="data" type="xs:string"/>
  287. </xs:complexType>
  288. <xs:complexType name="SubscribedEventType">
  289. <xs:attribute name="name" type="xs:string" use="required"/>
  290. <xs:attribute name="source" type="xs:string" use="required"/>
  291. <xs:attribute name="handler" type="xs:string" use="required"/>
  292. </xs:complexType>
  293. <!-- Workflow -->
  294. <xs:complexType name="WorkflowType">
  295. <xs:sequence>
  296. <xs:element name="step" type="tns:WorkflowStepType" maxOccurs="unbounded"/>
  297. </xs:sequence>
  298. </xs:complexType>
  299. <xs:complexType name="WorkflowStepType">
  300. <xs:attribute name="name" type="xs:string" use="required"/>
  301. <xs:attribute name="window" type="xs:string" use="required"/>
  302. <xs:attribute name="next" type="xs:string"/>
  303. <xs:attribute name="previous" type="xs:string"/>
  304. </xs:complexType>
  305. <!-- Module Views -->
  306. <xs:complexType name="ModuleViewsType">
  307. <xs:sequence>
  308. <xs:element name="view-ref" type="tns:SimpleViewRefType" maxOccurs="unbounded"/>
  309. </xs:sequence>
  310. </xs:complexType>
  311. <xs:complexType name="SimpleViewRefType">
  312. <xs:attribute name="name" type="xs:string" use="required"/>
  313. </xs:complexType>
  314. <!-- Module Dependencies -->
  315. <xs:complexType name="ModuleDependenciesType">
  316. <xs:sequence>
  317. <xs:element name="module-ref" type="tns:ModuleRefType" maxOccurs="unbounded"/>
  318. </xs:sequence>
  319. </xs:complexType>
  320. <xs:complexType name="ModuleRefType">
  321. <xs:attribute name="name" type="xs:string" use="required"/>
  322. </xs:complexType>
  323. <!-- Main Navigation -->
  324. <xs:complexType name="MainNavigationType">
  325. <xs:sequence>
  326. <xs:element name="nav-item" type="tns:NavItemType" maxOccurs="unbounded"/>
  327. </xs:sequence>
  328. </xs:complexType>
  329. <xs:complexType name="NavItemType">
  330. <xs:attribute name="text" type="xs:string" use="required"/>
  331. <xs:attribute name="view" type="xs:string" use="required"/>
  332. <xs:attribute name="action" type="xs:string" use="required"/>
  333. </xs:complexType>
  334. <!-- Control Definition -->
  335. <xs:complexType name="ControlType">
  336. <xs:sequence>
  337. <xs:element name="description" type="xs:string" minOccurs="0"/>
  338. <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
  339. <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
  340. <xs:element name="behavior" type="tns:BehaviorType" minOccurs="0"/>
  341. <xs:element name="structure" type="tns:ControlStructureType" minOccurs="0"/>
  342. </xs:sequence>
  343. <xs:attribute name="name" type="xs:string" use="required"/>
  344. <xs:attribute name="type" type="tns:ControlTypeEnum" use="required"/>
  345. <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
  346. <xs:attribute name="inherits" type="xs:string"/>
  347. </xs:complexType>
  348. <xs:simpleType name="ControlTypeEnum">
  349. <xs:restriction base="xs:string">
  350. <xs:enumeration value="base"/>
  351. <xs:enumeration value="action"/>
  352. <xs:enumeration value="input"/>
  353. <xs:enumeration value="display"/>
  354. <xs:enumeration value="container"/>
  355. <xs:enumeration value="data"/>
  356. <xs:enumeration value="navigation"/>
  357. <xs:enumeration value="system"/>
  358. <xs:enumeration value="dialog"/>
  359. <xs:enumeration value="layout"/>
  360. <xs:enumeration value="media"/>
  361. <xs:enumeration value="decoration"/>
  362. </xs:restriction>
  363. </xs:simpleType>
  364. <xs:simpleType name="ControlCategoryEnum">
  365. <xs:restriction base="xs:string">
  366. <xs:enumeration value="abstract"/>
  367. <xs:enumeration value="basic"/>
  368. <xs:enumeration value="input"/>
  369. <xs:enumeration value="action"/>
  370. <xs:enumeration value="layout"/>
  371. <xs:enumeration value="data"/>
  372. <xs:enumeration value="navigation"/>
  373. <xs:enumeration value="composite"/>
  374. <xs:enumeration value="windows-specific"/>
  375. <xs:enumeration value="winforms-basic"/>
  376. <xs:enumeration value="winforms-input"/>
  377. <xs:enumeration value="winforms-action"/>
  378. <xs:enumeration value="winforms-container"/>
  379. <xs:enumeration value="winforms-data"/>
  380. <xs:enumeration value="winforms-status"/>
  381. <xs:enumeration value="winforms-menu"/>
  382. <xs:enumeration value="winforms-toolbar"/>
  383. <xs:enumeration value="winforms-scroll"/>
  384. <xs:enumeration value="winforms-display"/>
  385. <xs:enumeration value="winforms-system"/>
  386. <xs:enumeration value="winforms-validation"/>
  387. <xs:enumeration value="winforms-dialog"/>
  388. <xs:enumeration value="winforms-web"/>
  389. <xs:enumeration value="avalonia-specific"/>
  390. <xs:enumeration value="avalonia-layout"/>
  391. <xs:enumeration value="avalonia-input"/>
  392. <xs:enumeration value="avalonia-display"/>
  393. <xs:enumeration value="avalonia-data"/>
  394. <xs:enumeration value="avalonia-container"/>
  395. <xs:enumeration value="avalonia-decoration"/>
  396. <xs:enumeration value="avalonia-navigation"/>
  397. <xs:enumeration value="avalonia-popup"/>
  398. <xs:enumeration value="avalonia-window"/>
  399. <xs:enumeration value="avalonia-media"/>
  400. <xs:enumeration value="avalonia-notification"/>
  401. <xs:enumeration value="avalonia-composite"/>
  402. <xs:enumeration value="avalonia-graphics"/>
  403. <xs:enumeration value="kde-specific"/>
  404. <xs:enumeration value="web-specific"/>
  405. </xs:restriction>
  406. </xs:simpleType>
  407. <!-- Constraints -->
  408. <xs:complexType name="ConstraintsType">
  409. <xs:sequence>
  410. <xs:element name="allowed-parents" type="xs:string" minOccurs="0"/>
  411. <xs:element name="allowed-children" type="xs:string" minOccurs="0"/>
  412. <xs:element name="container" type="xs:boolean" minOccurs="0"/>
  413. <xs:element name="max-children" type="xs:string" minOccurs="0"/>
  414. <xs:element name="requires-structure" type="xs:string" minOccurs="0"/>
  415. <xs:element name="required-slots" type="xs:string" minOccurs="0"/>
  416. </xs:sequence>
  417. </xs:complexType>
  418. <!-- Attributes -->
  419. <xs:complexType name="AttributesType">
  420. <xs:sequence>
  421. <xs:element name="attribute" type="tns:AttributeType" maxOccurs="unbounded"/>
  422. </xs:sequence>
  423. </xs:complexType>
  424. <xs:complexType name="AttributeType">
  425. <xs:attribute name="name" type="xs:string" use="required"/>
  426. <xs:attribute name="type" type="tns:AttributeTypeEnum" use="required"/>
  427. <xs:attribute name="default" type="xs:string"/>
  428. <xs:attribute name="required" type="xs:boolean" default="false"/>
  429. <xs:attribute name="min" type="xs:int"/>
  430. <xs:attribute name="max" type="xs:int"/>
  431. <xs:attribute name="values" type="xs:string"/>
  432. </xs:complexType>
  433. <xs:simpleType name="AttributeTypeEnum">
  434. <xs:restriction base="xs:string">
  435. <xs:enumeration value="string"/>
  436. <xs:enumeration value="int"/>
  437. <xs:enumeration value="bool"/>
  438. <xs:enumeration value="enum"/>
  439. <xs:enumeration value="color"/>
  440. <xs:enumeration value="date"/>
  441. <xs:enumeration value="datetime"/>
  442. <xs:enumeration value="timespan"/>
  443. <xs:enumeration value="icon"/>
  444. <xs:enumeration value="image"/>
  445. <xs:enumeration value="object"/>
  446. <xs:enumeration value="decimal"/>
  447. <xs:enumeration value="float"/>
  448. <xs:enumeration value="double"/>
  449. <xs:enumeration value="char"/>
  450. <xs:enumeration value="font"/>
  451. <xs:enumeration value="size"/>
  452. <xs:enumeration value="point"/>
  453. <xs:enumeration value="padding"/>
  454. <xs:enumeration value="thickness"/>
  455. <xs:enumeration value="corner-radius"/>
  456. <xs:enumeration value="brush"/>
  457. <xs:enumeration value="geometry"/>
  458. </xs:restriction>
  459. </xs:simpleType>
  460. <!-- Behavior -->
  461. <xs:complexType name="BehaviorType">
  462. <xs:sequence>
  463. <xs:element name="event" type="tns:EventType" maxOccurs="unbounded"/>
  464. </xs:sequence>
  465. </xs:complexType>
  466. <xs:complexType name="EventType">
  467. <xs:attribute name="name" type="xs:string" use="required"/>
  468. <xs:attribute name="alias" type="xs:string"/>
  469. <xs:attribute name="required" type="xs:boolean" default="false"/>
  470. <xs:attribute name="handler-required" type="xs:boolean" default="false"/>
  471. <xs:attribute name="bubbles" type="xs:boolean" default="false"/>
  472. <xs:attribute name="parameters" type="xs:string"/>
  473. </xs:complexType>
  474. <!-- Control Structure -->
  475. <xs:complexType name="ControlStructureType">
  476. <xs:choice maxOccurs="unbounded">
  477. <xs:element name="items" type="tns:ItemsType"/>
  478. <xs:element name="menu-items" type="tns:MenuItemsType"/>
  479. <xs:element name="columns" type="tns:ColumnsType"/>
  480. <xs:element name="nodes" type="tns:NodesType"/>
  481. <xs:element name="tabs" type="tns:TabsType"/>
  482. <xs:element name="children" type="tns:ChildrenType"/>
  483. <xs:element name="selected-items" type="tns:SelectedItemsType"/>
  484. <xs:element name="context-menu" type="tns:ContextMenuType"/>
  485. <xs:element name="panel1" type="tns:PanelType"/>
  486. <xs:element name="panel2" type="tns:PanelType"/>
  487. <xs:element name="panels" type="tns:PanelsType"/>
  488. <xs:element name="tabpages" type="tns:TabPagesType"/>
  489. <xs:element name="table-layout" type="tns:TableLayoutType"/>
  490. <xs:element name="grid-definitions" type="tns:GridDefinitionsType"/>
  491. <xs:element name="view" type="tns:ListViewType"/>
  492. <xs:element name="links" type="tns:LinksType"/>
  493. <xs:element name="sub-items" type="tns:SubItemsType"/>
  494. <xs:element name="pane" type="tns:PaneType"/>
  495. <xs:element name="content" type="tns:ContentType"/>
  496. </xs:choice>
  497. </xs:complexType>
  498. <!-- Structure Components -->
  499. <xs:complexType name="ItemsType">
  500. <xs:choice maxOccurs="unbounded">
  501. <xs:element name="item" type="tns:ItemType"/>
  502. <xs:element name="listbox-item" type="tns:ListBoxItemType"/>
  503. <xs:element name="listview-item" type="tns:ListViewItemType"/>
  504. <xs:element name="tree-view-item" type="tns:TreeViewItemType"/>
  505. <xs:element name="combo-box-item" type="tns:ComboBoxItemType"/>
  506. <xs:element name="menu-item" type="tns:MenuItemStructureType"/>
  507. <xs:element name="status-item" type="tns:StatusItemType"/>
  508. <xs:element name="toolbar-item" type="tns:ToolbarItemType"/>
  509. <xs:element name="ListBoxItem" type="tns:ControlInstanceType"/>
  510. <xs:element name="ComboBoxItem" type="tns:ControlInstanceType"/>
  511. <xs:element name="TreeViewItem" type="tns:ControlInstanceType"/>
  512. <xs:element name="TabItem" type="tns:ControlInstanceType"/>
  513. </xs:choice>
  514. <xs:attribute name="min-count" type="xs:int" default="0"/>
  515. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  516. <xs:attribute name="max-depth" type="xs:int"/>
  517. </xs:complexType>
  518. <xs:complexType name="ItemType">
  519. <xs:sequence>
  520. <xs:element name="values" type="tns:ValuesType" minOccurs="0"/>
  521. <xs:element name="subitems" type="tns:SubItemsType" minOccurs="0"/>
  522. </xs:sequence>
  523. <xs:attribute name="value" type="xs:string"/>
  524. <xs:attribute name="text" type="xs:string"/>
  525. <xs:attribute name="selected" type="xs:boolean" default="false"/>
  526. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  527. <xs:attribute name="image" type="xs:string"/>
  528. <xs:attribute name="imageindex" type="xs:int" default="-1"/>
  529. <xs:attribute name="checked" type="xs:boolean" default="false"/>
  530. <xs:attribute name="checkstate" type="xs:string"/>
  531. <xs:attribute name="tag" type="xs:string"/>
  532. </xs:complexType>
  533. <xs:complexType name="ListBoxItemType">
  534. <xs:attribute name="value" type="xs:string" use="required"/>
  535. <xs:attribute name="text" type="xs:string" use="required"/>
  536. <xs:attribute name="selected" type="xs:boolean" default="false"/>
  537. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  538. <xs:attribute name="image" type="xs:string"/>
  539. </xs:complexType>
  540. <xs:complexType name="ListViewItemType">
  541. <xs:sequence>
  542. <xs:element name="values" type="tns:ValuesType"/>
  543. </xs:sequence>
  544. </xs:complexType>
  545. <xs:complexType name="TreeViewItemType">
  546. <xs:sequence>
  547. <xs:element name="children" type="tns:TreeViewChildrenType" minOccurs="0"/>
  548. </xs:sequence>
  549. <xs:attribute name="text" type="xs:string" use="required"/>
  550. <xs:attribute name="value" type="xs:string" use="required"/>
  551. <xs:attribute name="expanded" type="xs:boolean" default="false"/>
  552. <xs:attribute name="selected" type="xs:boolean" default="false"/>
  553. <xs:attribute name="checked" type="xs:boolean" default="false"/>
  554. <xs:attribute name="image" type="xs:string"/>
  555. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  556. </xs:complexType>
  557. <xs:complexType name="TreeViewChildrenType">
  558. <xs:sequence>
  559. <xs:element name="tree-view-item" type="tns:TreeViewItemType" maxOccurs="unbounded"/>
  560. </xs:sequence>
  561. <xs:attribute name="min-count" type="xs:int" default="0"/>
  562. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  563. <xs:attribute name="max-depth" type="xs:int" default="10"/>
  564. </xs:complexType>
  565. <xs:complexType name="ComboBoxItemType">
  566. <xs:attribute name="content" type="xs:string"/>
  567. <xs:attribute name="is-selected" type="xs:boolean" default="false"/>
  568. </xs:complexType>
  569. <xs:complexType name="StatusItemType">
  570. <xs:sequence>
  571. <xs:element name="control-ref" type="tns:ControlRefType"/>
  572. </xs:sequence>
  573. <xs:attribute name="type" type="xs:string" use="required"/>
  574. <xs:attribute name="text" type="xs:string"/>
  575. </xs:complexType>
  576. <xs:complexType name="ToolbarItemType">
  577. <xs:sequence>
  578. <xs:element name="control-ref" type="tns:ControlRefType"/>
  579. </xs:sequence>
  580. <xs:attribute name="type" type="xs:string" use="required"/>
  581. <xs:attribute name="text" type="xs:string"/>
  582. <xs:attribute name="tooltip" type="xs:string"/>
  583. <xs:attribute name="image" type="xs:string"/>
  584. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  585. <xs:attribute name="visible" type="xs:boolean" default="true"/>
  586. </xs:complexType>
  587. <xs:complexType name="ControlRefType">
  588. <xs:attribute name="allowed-types" type="xs:string" use="required"/>
  589. </xs:complexType>
  590. <xs:complexType name="ValuesType">
  591. <xs:sequence>
  592. <xs:element name="value" type="tns:ValueType" maxOccurs="unbounded"/>
  593. </xs:sequence>
  594. </xs:complexType>
  595. <xs:complexType name="ValueType">
  596. <xs:attribute name="column" type="xs:string" use="required"/>
  597. <xs:attribute name="text" type="xs:string" use="required"/>
  598. </xs:complexType>
  599. <xs:complexType name="SubItemsType">
  600. <xs:sequence>
  601. <xs:element name="subitem" type="tns:SubItemType" maxOccurs="unbounded"/>
  602. </xs:sequence>
  603. </xs:complexType>
  604. <xs:complexType name="SubItemType">
  605. <xs:attribute name="text" type="xs:string" use="required"/>
  606. </xs:complexType>
  607. <xs:complexType name="MenuItemsType">
  608. <xs:sequence>
  609. <xs:element name="menu-item" type="tns:MenuItemStructureType" maxOccurs="unbounded"/>
  610. </xs:sequence>
  611. <xs:attribute name="min-count" type="xs:int" default="1"/>
  612. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  613. <xs:attribute name="max-depth" type="xs:int"/>
  614. </xs:complexType>
  615. <xs:complexType name="MenuItemStructureType">
  616. <xs:sequence>
  617. <xs:element name="sub-items" type="tns:MenuSubItemsType" minOccurs="0"/>
  618. <xs:element name="menu-items" type="tns:MenuItemsType" minOccurs="0"/>
  619. </xs:sequence>
  620. <xs:attribute name="text" type="xs:string" use="required"/>
  621. <xs:attribute name="action" type="xs:string"/>
  622. <xs:attribute name="shortcut" type="xs:string"/>
  623. <xs:attribute name="separator" type="xs:boolean" default="false"/>
  624. <xs:attribute name="value" type="xs:string"/>
  625. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  626. <xs:attribute name="visible" type="xs:boolean" default="true"/>
  627. <xs:attribute name="checked" type="xs:boolean" default="false"/>
  628. <xs:attribute name="image" type="xs:string"/>
  629. <xs:attribute name="shortcutkeys" type="xs:string"/>
  630. <xs:attribute name="header" type="xs:string"/>
  631. <xs:attribute name="command" type="xs:string"/>
  632. <xs:attribute name="input-gesture" type="xs:string"/>
  633. <xs:attribute name="is-checkable" type="xs:boolean" default="false"/>
  634. <xs:attribute name="is-checked" type="xs:boolean" default="false"/>
  635. </xs:complexType>
  636. <xs:complexType name="MenuSubItemsType">
  637. <xs:sequence>
  638. <xs:element name="menu-item" type="tns:MenuItemStructureType" maxOccurs="unbounded"/>
  639. </xs:sequence>
  640. <xs:attribute name="min-count" type="xs:int" default="0"/>
  641. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  642. <xs:attribute name="max-depth" type="xs:int" default="5"/>
  643. </xs:complexType>
  644. <xs:complexType name="ColumnsType">
  645. <xs:sequence>
  646. <xs:element name="column" type="tns:ColumnType" minOccurs="0" maxOccurs="unbounded"/>
  647. <xs:element name="column-item" type="tns:ColumnItemType" minOccurs="0" maxOccurs="unbounded"/>
  648. <xs:element name="grid-view-column" type="tns:GridViewColumnType" minOccurs="0" maxOccurs="unbounded"/>
  649. <xs:element name="DataGridTextColumn" type="tns:DataGridTextColumnType" minOccurs="0" maxOccurs="unbounded"/>
  650. <xs:element name="DataGridCheckBoxColumn" type="tns:DataGridCheckBoxColumnType" minOccurs="0" maxOccurs="unbounded"/>
  651. <xs:element name="DataGridComboBoxColumn" type="tns:DataGridComboBoxColumnType" minOccurs="0" maxOccurs="unbounded"/>
  652. <xs:element name="DataGridTemplateColumn" type="tns:DataGridTemplateColumnType" minOccurs="0" maxOccurs="unbounded"/>
  653. </xs:sequence>
  654. <xs:attribute name="min-count" type="xs:int" default="1"/>
  655. <xs:attribute name="max-count" type="xs:int" default="50"/>
  656. </xs:complexType>
  657. <xs:complexType name="ColumnType">
  658. <xs:attribute name="name" type="xs:string" use="required"/>
  659. <xs:attribute name="text" type="xs:string" use="required"/>
  660. <xs:attribute name="width" type="xs:string"/>
  661. <xs:attribute name="sortable" type="xs:boolean" default="false"/>
  662. <xs:attribute name="headertext" type="xs:string"/>
  663. <xs:attribute name="datapropertyname" type="xs:string"/>
  664. <xs:attribute name="visible" type="xs:boolean" default="true"/>
  665. <xs:attribute name="readonly" type="xs:boolean" default="false"/>
  666. <xs:attribute name="resizable" type="xs:boolean" default="true"/>
  667. <xs:attribute name="sortmode" type="xs:string"/>
  668. <xs:attribute name="textalign" type="xs:string"/>
  669. </xs:complexType>
  670. <xs:complexType name="ColumnItemType">
  671. <xs:attribute name="name" type="xs:string" use="required"/>
  672. <xs:attribute name="text" type="xs:string" use="required"/>
  673. <xs:attribute name="width" type="xs:int" default="100"/>
  674. <xs:attribute name="sortable" type="xs:boolean" default="true"/>
  675. <xs:attribute name="visible" type="xs:boolean" default="true"/>
  676. <xs:attribute name="alignment" type="xs:string" default="left"/>
  677. <xs:attribute name="data-type" type="xs:string" default="text"/>
  678. </xs:complexType>
  679. <xs:complexType name="GridViewColumnType">
  680. <xs:attribute name="header" type="xs:string"/>
  681. <xs:attribute name="display-member-binding" type="xs:string"/>
  682. <xs:attribute name="width" type="xs:string" default="auto"/>
  683. </xs:complexType>
  684. <xs:complexType name="DataGridTextColumnType">
  685. <xs:attribute name="header" type="xs:string"/>
  686. <xs:attribute name="binding" type="xs:string"/>
  687. <xs:attribute name="width" type="xs:string" default="*"/>
  688. <xs:attribute name="is-read-only" type="xs:boolean" default="false"/>
  689. </xs:complexType>
  690. <xs:complexType name="DataGridCheckBoxColumnType">
  691. <xs:attribute name="header" type="xs:string"/>
  692. <xs:attribute name="binding" type="xs:string"/>
  693. <xs:attribute name="width" type="xs:string" default="auto"/>
  694. <xs:attribute name="is-read-only" type="xs:boolean" default="false"/>
  695. </xs:complexType>
  696. <xs:complexType name="DataGridComboBoxColumnType">
  697. <xs:attribute name="header" type="xs:string"/>
  698. <xs:attribute name="binding" type="xs:string"/>
  699. <xs:attribute name="width" type="xs:string" default="*"/>
  700. <xs:attribute name="is-read-only" type="xs:boolean" default="false"/>
  701. </xs:complexType>
  702. <xs:complexType name="DataGridTemplateColumnType">
  703. <xs:attribute name="header" type="xs:string"/>
  704. <xs:attribute name="width" type="xs:string" default="*"/>
  705. <xs:attribute name="is-read-only" type="xs:boolean" default="false"/>
  706. </xs:complexType>
  707. <xs:complexType name="NodesType">
  708. <xs:sequence>
  709. <xs:element name="node" type="tns:NodeType" maxOccurs="unbounded"/>
  710. </xs:sequence>
  711. <xs:attribute name="min-count" type="xs:int" default="0"/>
  712. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  713. <xs:attribute name="max-depth" type="xs:int" default="50"/>
  714. </xs:complexType>
  715. <xs:complexType name="NodeType">
  716. <xs:sequence>
  717. <xs:element name="nodes" type="tns:NodesType" minOccurs="0"/>
  718. </xs:sequence>
  719. <xs:attribute name="text" type="xs:string" use="required"/>
  720. <xs:attribute name="value" type="xs:string"/>
  721. <xs:attribute name="expanded" type="xs:boolean" default="false"/>
  722. <xs:attribute name="checked" type="xs:boolean" default="false"/>
  723. <xs:attribute name="imageindex" type="xs:int" default="-1"/>
  724. <xs:attribute name="selectedimageindex" type="xs:int" default="-1"/>
  725. <xs:attribute name="tag" type="xs:string"/>
  726. </xs:complexType>
  727. <xs:complexType name="TabsType">
  728. <xs:sequence>
  729. <xs:element name="tab" type="tns:TabType" minOccurs="0" maxOccurs="unbounded"/>
  730. <xs:element name="TabItem" type="tns:TabItemType" minOccurs="0" maxOccurs="unbounded"/>
  731. </xs:sequence>
  732. <xs:attribute name="min-count" type="xs:int" default="1"/>
  733. <xs:attribute name="max-count" type="xs:int" default="20"/>
  734. </xs:complexType>
  735. <xs:complexType name="TabType">
  736. <xs:complexContent>
  737. <xs:extension base="tns:ControlContentType">
  738. <xs:attribute name="name" type="xs:string" use="required"/>
  739. <xs:attribute name="text" type="xs:string" use="required"/>
  740. <xs:attribute name="visible" type="xs:boolean" default="true"/>
  741. <xs:attribute name="enabled" type="xs:boolean" default="true"/>
  742. </xs:extension>
  743. </xs:complexContent>
  744. </xs:complexType>
  745. <xs:complexType name="TabItemType">
  746. <xs:complexContent>
  747. <xs:extension base="tns:ControlContentType">
  748. <xs:sequence>
  749. <xs:element name="items" type="tns:TabItemItemsType" minOccurs="0"/>
  750. </xs:sequence>
  751. <xs:attribute name="header" type="xs:string"/>
  752. <xs:attribute name="is-selected" type="xs:boolean" default="false"/>
  753. </xs:extension>
  754. </xs:complexContent>
  755. </xs:complexType>
  756. <xs:complexType name="TabItemItemsType">
  757. <!-- Tab content -->
  758. </xs:complexType>
  759. <xs:complexType name="TabPagesType">
  760. <xs:sequence>
  761. <xs:element name="tabpage" type="tns:TabPageType" maxOccurs="unbounded"/>
  762. </xs:sequence>
  763. <xs:attribute name="min-count" type="xs:int" default="0"/>
  764. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  765. </xs:complexType>
  766. <xs:complexType name="TabPageType">
  767. <xs:attribute name="name" type="xs:string" use="required"/>
  768. <xs:attribute name="text" type="xs:string" use="required"/>
  769. <xs:attribute name="tooltip" type="xs:string"/>
  770. <xs:attribute name="imageindex" type="xs:int" default="-1"/>
  771. </xs:complexType>
  772. <xs:complexType name="ChildrenType">
  773. <xs:sequence>
  774. <xs:element name="child" type="tns:ChildType" minOccurs="0" maxOccurs="unbounded"/>
  775. </xs:sequence>
  776. <xs:attribute name="allow-multiple" type="xs:boolean" default="true"/>
  777. </xs:complexType>
  778. <xs:complexType name="ChildType">
  779. <xs:attribute name="grid-row" type="xs:int"/>
  780. <xs:attribute name="grid-column" type="xs:int"/>
  781. <xs:attribute name="grid-row-span" type="xs:int" default="1"/>
  782. <xs:attribute name="grid-column-span" type="xs:int" default="1"/>
  783. <xs:attribute name="dock" type="xs:string"/>
  784. <xs:attribute name="canvas-left" type="xs:double"/>
  785. <xs:attribute name="canvas-top" type="xs:double"/>
  786. <xs:attribute name="canvas-right" type="xs:double"/>
  787. <xs:attribute name="canvas-bottom" type="xs:double"/>
  788. </xs:complexType>
  789. <xs:complexType name="SelectedItemsType">
  790. <xs:attribute name="max-count" type="xs:string" use="required"/>
  791. </xs:complexType>
  792. <xs:complexType name="ContextMenuType">
  793. <xs:attribute name="max-count" type="xs:int" default="1"/>
  794. </xs:complexType>
  795. <xs:complexType name="PanelType">
  796. <xs:sequence>
  797. <xs:element name="children" type="tns:ChildrenType"/>
  798. </xs:sequence>
  799. <xs:attribute name="required" type="xs:boolean" default="true"/>
  800. </xs:complexType>
  801. <xs:complexType name="PanelsType">
  802. <xs:sequence>
  803. <xs:element name="panel" type="tns:PanelRefType" maxOccurs="unbounded"/>
  804. </xs:sequence>
  805. <xs:attribute name="min-count" type="xs:int" default="2"/>
  806. <xs:attribute name="max-count" type="xs:int" default="2"/>
  807. </xs:complexType>
  808. <xs:complexType name="PanelRefType">
  809. <xs:attribute name="name" type="xs:string" use="required"/>
  810. </xs:complexType>
  811. <xs:complexType name="TableLayoutType">
  812. <xs:sequence>
  813. <xs:element name="columns" type="tns:TableColumnsType"/>
  814. <xs:element name="rows" type="tns:TableRowsType"/>
  815. <xs:element name="cells" type="tns:CellsType"/>
  816. </xs:sequence>
  817. </xs:complexType>
  818. <xs:complexType name="TableColumnsType">
  819. <xs:sequence>
  820. <xs:element name="column" type="tns:TableColumnType" maxOccurs="unbounded"/>
  821. </xs:sequence>
  822. <xs:attribute name="min-count" type="xs:int" default="1"/>
  823. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  824. </xs:complexType>
  825. <xs:complexType name="TableColumnType">
  826. <xs:attribute name="sizetype" type="xs:string" use="required"/>
  827. <xs:attribute name="size" type="xs:string" use="required"/>
  828. </xs:complexType>
  829. <xs:complexType name="TableRowsType">
  830. <xs:sequence>
  831. <xs:element name="row" type="tns:TableRowType" maxOccurs="unbounded"/>
  832. </xs:sequence>
  833. <xs:attribute name="min-count" type="xs:int" default="1"/>
  834. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  835. </xs:complexType>
  836. <xs:complexType name="TableRowType">
  837. <xs:attribute name="sizetype" type="xs:string" use="required"/>
  838. <xs:attribute name="size" type="xs:string" use="required"/>
  839. </xs:complexType>
  840. <xs:complexType name="CellsType">
  841. <xs:sequence>
  842. <xs:element name="cell" type="tns:CellType" maxOccurs="unbounded"/>
  843. </xs:sequence>
  844. </xs:complexType>
  845. <xs:complexType name="CellType">
  846. <xs:attribute name="column" type="xs:int" use="required"/>
  847. <xs:attribute name="row" type="xs:int" use="required"/>
  848. <xs:attribute name="columnspan" type="xs:int" default="1"/>
  849. <xs:attribute name="rowspan" type="xs:int" default="1"/>
  850. </xs:complexType>
  851. <xs:complexType name="GridDefinitionsType">
  852. <xs:sequence>
  853. <xs:element name="row-definitions" type="tns:RowDefinitionsType"/>
  854. <xs:element name="column-definitions" type="tns:ColumnDefinitionsType"/>
  855. </xs:sequence>
  856. </xs:complexType>
  857. <xs:complexType name="RowDefinitionsType">
  858. <xs:sequence>
  859. <xs:element name="row-definition" type="tns:RowDefinitionType" maxOccurs="unbounded"/>
  860. </xs:sequence>
  861. </xs:complexType>
  862. <xs:complexType name="RowDefinitionType">
  863. <xs:attribute name="height" type="xs:string" use="required"/>
  864. <xs:attribute name="min-height" type="xs:string" default="0"/>
  865. <xs:attribute name="max-height" type="xs:string" default="Infinity"/>
  866. </xs:complexType>
  867. <xs:complexType name="ColumnDefinitionsType">
  868. <xs:sequence>
  869. <xs:element name="column-definition" type="tns:ColumnDefinitionType" maxOccurs="unbounded"/>
  870. </xs:sequence>
  871. </xs:complexType>
  872. <xs:complexType name="ColumnDefinitionType">
  873. <xs:attribute name="width" type="xs:string" use="required"/>
  874. <xs:attribute name="min-width" type="xs:string" default="0"/>
  875. <xs:attribute name="max-width" type="xs:string" default="Infinity"/>
  876. </xs:complexType>
  877. <xs:complexType name="ListViewType">
  878. <xs:sequence>
  879. <xs:element name="grid-view" type="tns:GridViewType"/>
  880. </xs:sequence>
  881. </xs:complexType>
  882. <xs:complexType name="GridViewType">
  883. <xs:sequence>
  884. <xs:element name="columns" type="tns:ColumnsType"/>
  885. </xs:sequence>
  886. </xs:complexType>
  887. <xs:complexType name="LinksType">
  888. <xs:sequence>
  889. <xs:element name="link" type="tns:LinkType" maxOccurs="unbounded"/>
  890. </xs:sequence>
  891. <xs:attribute name="min-count" type="xs:int" default="0"/>
  892. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  893. </xs:complexType>
  894. <xs:complexType name="LinkType">
  895. <xs:attribute name="start" type="xs:string" use="required"/>
  896. <xs:attribute name="length" type="xs:string" use="required"/>
  897. <xs:attribute name="linkdata" type="xs:string" use="required"/>
  898. </xs:complexType>
  899. <xs:complexType name="PaneType">
  900. <xs:complexContent>
  901. <xs:extension base="tns:ControlContentType"/>
  902. </xs:complexContent>
  903. </xs:complexType>
  904. <xs:complexType name="ContentType">
  905. <xs:complexContent>
  906. <xs:extension base="tns:ControlContentType"/>
  907. </xs:complexContent>
  908. </xs:complexType>
  909. <!-- Structure Definition -->
  910. <xs:complexType name="StructureType">
  911. <xs:sequence>
  912. <xs:element name="description" type="xs:string" minOccurs="0"/>
  913. <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
  914. <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
  915. <xs:element name="template" type="tns:TemplateType"/>
  916. </xs:sequence>
  917. <xs:attribute name="name" type="xs:string" use="required"/>
  918. <xs:attribute name="type" type="xs:string" use="required"/>
  919. <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
  920. <xs:attribute name="inherits" type="xs:string"/>
  921. </xs:complexType>
  922. <!-- Wireframe Definition -->
  923. <xs:complexType name="WireframeType">
  924. <xs:sequence>
  925. <xs:element name="description" type="xs:string" minOccurs="0"/>
  926. <xs:element name="template" type="tns:TemplateType"/>
  927. </xs:sequence>
  928. <xs:attribute name="name" type="xs:string" use="required"/>
  929. <xs:attribute name="type" type="xs:string" use="required"/>
  930. </xs:complexType>
  931. <!-- Template -->
  932. <xs:complexType name="TemplateType">
  933. <xs:complexContent>
  934. <xs:extension base="tns:ControlContentType"/>
  935. </xs:complexContent>
  936. </xs:complexType>
  937. <!-- Window Definition -->
  938. <xs:complexType name="WindowType">
  939. <xs:sequence>
  940. <xs:element name="attributes" type="tns:WindowAttributesType" minOccurs="0"/>
  941. <xs:element name="view-properties" type="tns:ViewPropertiesType" minOccurs="0"/>
  942. <xs:choice>
  943. <xs:element name="slot-overrides" type="tns:SlotOverridesType"/>
  944. <xs:element name="wireframe-instance" type="tns:WireframeInstanceType"/>
  945. <xs:group ref="tns:ControlContentGroup"/>
  946. </xs:choice>
  947. </xs:sequence>
  948. <xs:attribute name="name" type="xs:string" use="required"/>
  949. <xs:attribute name="title" type="xs:string" use="required"/>
  950. <xs:attribute name="wireframe" type="xs:string"/>
  951. <xs:attribute name="view" type="xs:string"/>
  952. </xs:complexType>
  953. <!-- Window Attributes -->
  954. <xs:complexType name="WindowAttributesType">
  955. <xs:sequence>
  956. <xs:element name="attribute" maxOccurs="unbounded">
  957. <xs:complexType>
  958. <xs:attribute name="name" type="xs:string" use="required"/>
  959. <xs:attribute name="value" type="xs:string" use="required"/>
  960. </xs:complexType>
  961. </xs:element>
  962. </xs:sequence>
  963. </xs:complexType>
  964. <!-- View Properties (NEW) -->
  965. <xs:complexType name="ViewPropertiesType">
  966. <xs:sequence>
  967. <xs:element name="role" type="tns:WindowRoleEnum"/>
  968. <xs:element name="default" type="xs:boolean" minOccurs="0"/>
  969. <xs:element name="modal" type="xs:boolean" minOccurs="0"/>
  970. <xs:element name="data-context-binding" type="xs:string" minOccurs="0"/>
  971. <xs:element name="parent-window" type="xs:string" minOccurs="0"/>
  972. </xs:sequence>
  973. </xs:complexType>
  974. <!-- Slot Overrides -->
  975. <xs:complexType name="SlotOverridesType">
  976. <xs:sequence>
  977. <xs:element name="slot" type="tns:SlotOverrideType" maxOccurs="unbounded"/>
  978. </xs:sequence>
  979. </xs:complexType>
  980. <xs:complexType name="SlotOverrideType">
  981. <xs:complexContent>
  982. <xs:extension base="tns:ControlContentType">
  983. <xs:attribute name="name" type="xs:string" use="required"/>
  984. </xs:extension>
  985. </xs:complexContent>
  986. </xs:complexType>
  987. <!-- Wireframe Instance -->
  988. <xs:complexType name="WireframeInstanceType">
  989. <xs:sequence>
  990. <xs:element name="slot" type="tns:SlotOverrideType" maxOccurs="unbounded"/>
  991. </xs:sequence>
  992. <xs:attribute name="name" type="xs:string" use="required"/>
  993. <xs:attribute name="wireframe" type="xs:string" use="required"/>
  994. </xs:complexType>
  995. <!-- Slot Definition -->
  996. <xs:complexType name="SlotType">
  997. <xs:complexContent>
  998. <xs:extension base="tns:ControlContentType">
  999. <xs:attribute name="name" type="xs:string" use="required"/>
  1000. <xs:attribute name="allowed-controls" type="xs:string"/>
  1001. <xs:attribute name="required" type="xs:boolean" default="false"/>
  1002. <xs:attribute name="default" type="xs:boolean" default="false"/>
  1003. </xs:extension>
  1004. </xs:complexContent>
  1005. </xs:complexType>
  1006. <!-- Control Content -->
  1007. <xs:complexType name="ControlContentType" mixed="true">
  1008. <xs:group ref="tns:ControlContentGroup" minOccurs="0" maxOccurs="unbounded"/>
  1009. <xs:anyAttribute processContents="lax"/>
  1010. </xs:complexType>
  1011. <xs:group name="ControlContentGroup">
  1012. <xs:choice>
  1013. <!-- Abstract Controls -->
  1014. <xs:element name="CommonControl" type="tns:ControlInstanceType"/>
  1015. <!-- Basic Controls -->
  1016. <xs:element name="Label" type="tns:ControlInstanceType"/>
  1017. <xs:element name="TextBox" type="tns:ControlInstanceType"/>
  1018. <xs:element name="ComboBox" type="tns:ControlInstanceType"/>
  1019. <xs:element name="Button" type="tns:ControlInstanceType"/>
  1020. <xs:element name="Panel" type="tns:ControlInstanceType"/>
  1021. <xs:element name="PopupPanel" type="tns:ControlInstanceType"/>
  1022. <xs:element name="Menu" type="tns:ControlInstanceType"/>
  1023. <xs:element name="ListView" type="tns:ControlInstanceType"/>
  1024. <xs:element name="TreeView" type="tns:ControlInstanceType"/>
  1025. <xs:element name="TabControl" type="tns:ControlInstanceType"/>
  1026. <xs:element name="ButtonBar" type="tns:ControlInstanceType"/>
  1027. <xs:element name="ListBox" type="tns:ControlInstanceType"/>
  1028. <xs:element name="CheckBox" type="tns:ControlInstanceType"/>
  1029. <xs:element name="RadioButton" type="tns:ControlInstanceType"/>
  1030. <xs:element name="Image" type="tns:ControlInstanceType"/>
  1031. <xs:element name="StatusBar" type="tns:ControlInstanceType"/>
  1032. <xs:element name="ToolBar" type="tns:ControlInstanceType"/>
  1033. <xs:element name="SplitPanel" type="tns:ControlInstanceType"/>
  1034. <xs:element name="Separator" type="tns:ControlInstanceType"/>
  1035. <!-- WinForms-Specific Controls -->
  1036. <xs:element name="RichTextBox" type="tns:ControlInstanceType"/>
  1037. <xs:element name="MaskedTextBox" type="tns:ControlInstanceType"/>
  1038. <xs:element name="CheckedListBox" type="tns:ControlInstanceType"/>
  1039. <xs:element name="GroupBox" type="tns:ControlInstanceType"/>
  1040. <xs:element name="SplitContainer" type="tns:ControlInstanceType"/>
  1041. <xs:element name="TableLayoutPanel" type="tns:ControlInstanceType"/>
  1042. <xs:element name="FlowLayoutPanel" type="tns:ControlInstanceType"/>
  1043. <xs:element name="DataGridView" type="tns:ControlInstanceType"/>
  1044. <xs:element name="ProgressBar" type="tns:ControlInstanceType"/>
  1045. <xs:element name="StatusStrip" type="tns:ControlInstanceType"/>
  1046. <xs:element name="MenuStrip" type="tns:ControlInstanceType"/>
  1047. <xs:element name="ToolStrip" type="tns:ControlInstanceType"/>
  1048. <xs:element name="ContextMenuStrip" type="tns:ControlInstanceType"/>
  1049. <xs:element name="NumericUpDown" type="tns:ControlInstanceType"/>
  1050. <xs:element name="DateTimePicker" type="tns:ControlInstanceType"/>
  1051. <xs:element name="MonthCalendar" type="tns:ControlInstanceType"/>
  1052. <xs:element name="TrackBar" type="tns:ControlInstanceType"/>
  1053. <xs:element name="HScrollBar" type="tns:ControlInstanceType"/>
  1054. <xs:element name="VScrollBar" type="tns:ControlInstanceType"/>
  1055. <xs:element name="PictureBox" type="tns:ControlInstanceType"/>
  1056. <xs:element name="Timer" type="tns:ControlInstanceType"/>
  1057. <xs:element name="OpenFileDialog" type="tns:ControlInstanceType"/>
  1058. <xs:element name="SaveFileDialog" type="tns:ControlInstanceType"/>
  1059. <xs:element name="FolderBrowserDialog" type="tns:ControlInstanceType"/>
  1060. <xs:element name="ColorDialog" type="tns:ControlInstanceType"/>
  1061. <xs:element name="FontDialog" type="tns:ControlInstanceType"/>
  1062. <xs:element name="PrintDialog" type="tns:ControlInstanceType"/>
  1063. <xs:element name="PrintPreviewDialog" type="tns:ControlInstanceType"/>
  1064. <xs:element name="WebBrowser" type="tns:ControlInstanceType"/>
  1065. <xs:element name="NotifyIcon" type="tns:ControlInstanceType"/>
  1066. <xs:element name="ErrorProvider" type="tns:ControlInstanceType"/>
  1067. <xs:element name="ToolTip" type="tns:ControlInstanceType"/>
  1068. <xs:element name="HelpProvider" type="tns:ControlInstanceType"/>
  1069. <xs:element name="LinkLabel" type="tns:ControlInstanceType"/>
  1070. <xs:element name="TabPage" type="tns:ControlInstanceType"/>
  1071. <!-- Avalonia-Specific Controls -->
  1072. <xs:element name="AvaloniaButton" type="tns:ControlInstanceType"/>
  1073. <xs:element name="RepeatButton" type="tns:ControlInstanceType"/>
  1074. <xs:element name="StackPanel" type="tns:ControlInstanceType"/>
  1075. <xs:element name="Grid" type="tns:ControlInstanceType"/>
  1076. <xs:element name="DockPanel" type="tns:ControlInstanceType"/>
  1077. <xs:element name="WrapPanel" type="tns:ControlInstanceType"/>
  1078. <xs:element name="Canvas" type="tns:ControlInstanceType"/>
  1079. <xs:element name="UniformGrid" type="tns:ControlInstanceType"/>
  1080. <xs:element name="AvaloniaTextBox" type="tns:ControlInstanceType"/>
  1081. <xs:element name="AutoCompleteBox" type="tns:ControlInstanceType"/>
  1082. <xs:element name="AvaloniaComboBox" type="tns:ControlInstanceType"/>
  1083. <xs:element name="CalendarDatePicker" type="tns:ControlInstanceType"/>
  1084. <xs:element name="TimePicker" type="tns:ControlInstanceType"/>
  1085. <xs:element name="Slider" type="tns:ControlInstanceType"/>
  1086. <xs:element name="AvaloniaLabel" type="tns:ControlInstanceType"/>
  1087. <xs:element name="TextBlock" type="tns:ControlInstanceType"/>
  1088. <xs:element name="AvaloniaListView" type="tns:ControlInstanceType"/>
  1089. <xs:element name="DataGrid" type="tns:ControlInstanceType"/>
  1090. <xs:element name="AvaloniaTreeView" type="tns:ControlInstanceType"/>
  1091. <xs:element name="Border" type="tns:ControlInstanceType"/>
  1092. <xs:element name="ScrollViewer" type="tns:ControlInstanceType"/>
  1093. <xs:element name="Expander" type="tns:ControlInstanceType"/>
  1094. <xs:element name="SplitView" type="tns:ControlInstanceType"/>
  1095. <xs:element name="MenuBar" type="tns:ControlInstanceType"/>
  1096. <xs:element name="ContextMenu" type="tns:ControlInstanceType"/>
  1097. <xs:element name="FlyoutBase" type="tns:ControlInstanceType"/>
  1098. <xs:element name="Window" type="tns:ControlInstanceType"/>
  1099. <xs:element name="UserControl" type="tns:ControlInstanceType"/>
  1100. <xs:element name="MediaElement" type="tns:ControlInstanceType"/>
  1101. <xs:element name="ColorPicker" type="tns:ControlInstanceType"/>
  1102. <xs:element name="PathIcon" type="tns:ControlInstanceType"/>
  1103. <xs:element name="Viewbox" type="tns:ControlInstanceType"/>
  1104. <xs:element name="NotificationCard" type="tns:ControlInstanceType"/>
  1105. <!-- Structure Elements -->
  1106. <xs:element name="FormField" type="tns:ControlInstanceType"/>
  1107. <xs:element name="AvaloniaFormField" type="tns:ControlInstanceType"/>
  1108. <xs:element name="AvaloniaButtonBar" type="tns:ControlInstanceType"/>
  1109. <xs:element name="AvaloniaToolbar" type="tns:ControlInstanceType"/>
  1110. <xs:element name="AvaloniaStatusBar" type="tns:ControlInstanceType"/>
  1111. <xs:element name="slot" type="tns:SlotType"/>
  1112. <!-- Item Elements -->
  1113. <xs:element name="ListBoxItem" type="tns:ControlInstanceType"/>
  1114. <xs:element name="ComboBoxItem" type="tns:ControlInstanceType"/>
  1115. <xs:element name="TreeViewItem" type="tns:ControlInstanceType"/>
  1116. <xs:element name="TabItem" type="tns:ControlInstanceType"/>
  1117. <xs:element name="MenuItem" type="tns:ControlInstanceType"/>
  1118. <xs:element name="NativeMenuItem" type="tns:ControlInstanceType"/>
  1119. <!-- Data Grid Columns -->
  1120. <xs:element name="DataGridColumn" type="tns:ControlInstanceType"/>
  1121. <xs:element name="DataGridTextColumn" type="tns:ControlInstanceType"/>
  1122. <xs:element name="DataGridCheckBoxColumn" type="tns:ControlInstanceType"/>
  1123. <xs:element name="DataGridComboBoxColumn" type="tns:ControlInstanceType"/>
  1124. <xs:element name="DataGridTemplateColumn" type="tns:ControlInstanceType"/>
  1125. <!-- Tool Strip Items -->
  1126. <xs:element name="ToolStripMenuItem" type="tns:ControlInstanceType"/>
  1127. <xs:element name="ToolStripButton" type="tns:ControlInstanceType"/>
  1128. <xs:element name="ToolStripLabel" type="tns:ControlInstanceType"/>
  1129. <xs:element name="ToolStripSeparator" type="tns:ControlInstanceType"/>
  1130. <xs:element name="ToolStripComboBox" type="tns:ControlInstanceType"/>
  1131. <xs:element name="ToolStripTextBox" type="tns:ControlInstanceType"/>
  1132. <xs:element name="ToolStripStatusLabel" type="tns:ControlInstanceType"/>
  1133. <xs:element name="ToolStripProgressBar" type="tns:ControlInstanceType"/>
  1134. <xs:element name="ToolStripDropDownButton" type="tns:ControlInstanceType"/>
  1135. <xs:element name="ToolStripSplitButton" type="tns:ControlInstanceType"/>
  1136. </xs:choice>
  1137. </xs:group>
  1138. <!-- Control Instance -->
  1139. <xs:complexType name="ControlInstanceType">
  1140. <xs:complexContent>
  1141. <xs:extension base="tns:ControlContentType">
  1142. <xs:attribute name="name" type="xs:string" use="required"/>
  1143. <xs:attribute name="slot" type="xs:string"/>
  1144. </xs:extension>
  1145. </xs:complexContent>
  1146. </xs:complexType>
  1147. </xs:schema>