| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="ui-layout-patterns"
- xmlns:tns="ui-layout-patterns"
- elementFormDefault="qualified"
- version="1.2">
- <!-- Root element for pattern include files -->
- <xs:element name="patterns" type="tns:PatternsIncludeFileType"/>
- <!-- Pattern include file structure -->
- <xs:complexType name="PatternsIncludeFileType">
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="control" type="tns:ControlType"/>
- <xs:element name="structure" type="tns:StructureType"/>
- <xs:element name="wireframe" type="tns:WireframeType"/>
- </xs:choice>
- </xs:complexType>
- <!-- Control Definition -->
- <xs:complexType name="ControlType">
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
- <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
- <xs:element name="behavior" type="tns:BehaviorType" minOccurs="0"/>
- <xs:element name="structure" type="tns:ControlStructureType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="tns:ControlTypeEnum" use="required"/>
- <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
- <xs:attribute name="inherits" type="xs:string"/>
- </xs:complexType>
- <!-- Control Type Enumeration -->
- <xs:simpleType name="ControlTypeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="base"/>
- <xs:enumeration value="action"/>
- <xs:enumeration value="input"/>
- <xs:enumeration value="display"/>
- <xs:enumeration value="container"/>
- <xs:enumeration value="data"/>
- <xs:enumeration value="navigation"/>
- <xs:enumeration value="system"/>
- <xs:enumeration value="dialog"/>
- <xs:enumeration value="layout"/>
- <xs:enumeration value="media"/>
- <xs:enumeration value="decoration"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- Control Category Enumeration -->
- <xs:simpleType name="ControlCategoryEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="abstract"/>
- <xs:enumeration value="basic"/>
- <xs:enumeration value="input"/>
- <xs:enumeration value="action"/>
- <xs:enumeration value="layout"/>
- <xs:enumeration value="data"/>
- <xs:enumeration value="navigation"/>
- <xs:enumeration value="composite"/>
- <xs:enumeration value="windows-specific"/>
- <xs:enumeration value="winforms-basic"/>
- <xs:enumeration value="winforms-input"/>
- <xs:enumeration value="winforms-action"/>
- <xs:enumeration value="winforms-container"/>
- <xs:enumeration value="winforms-data"/>
- <xs:enumeration value="winforms-status"/>
- <xs:enumeration value="winforms-menu"/>
- <xs:enumeration value="winforms-toolbar"/>
- <xs:enumeration value="winforms-scroll"/>
- <xs:enumeration value="winforms-display"/>
- <xs:enumeration value="winforms-system"/>
- <xs:enumeration value="winforms-validation"/>
- <xs:enumeration value="winforms-dialog"/>
- <xs:enumeration value="winforms-web"/>
- <xs:enumeration value="avalonia-specific"/>
- <xs:enumeration value="avalonia-layout"/>
- <xs:enumeration value="avalonia-input"/>
- <xs:enumeration value="avalonia-display"/>
- <xs:enumeration value="avalonia-data"/>
- <xs:enumeration value="avalonia-container"/>
- <xs:enumeration value="avalonia-decoration"/>
- <xs:enumeration value="avalonia-navigation"/>
- <xs:enumeration value="avalonia-popup"/>
- <xs:enumeration value="avalonia-window"/>
- <xs:enumeration value="avalonia-media"/>
- <xs:enumeration value="avalonia-notification"/>
- <xs:enumeration value="avalonia-composite"/>
- <xs:enumeration value="avalonia-graphics"/>
- <xs:enumeration value="kde-specific"/>
- <xs:enumeration value="web-specific"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- Constraints -->
- <xs:complexType name="ConstraintsType">
- <xs:sequence>
- <xs:element name="allowed-parents" type="xs:string" minOccurs="0"/>
- <xs:element name="allowed-children" type="xs:string" minOccurs="0"/>
- <xs:element name="container" type="xs:boolean" minOccurs="0"/>
- <xs:element name="max-children" type="xs:string" minOccurs="0"/>
- <xs:element name="requires-structure" type="xs:string" minOccurs="0"/>
- <xs:element name="required-slots" type="xs:string" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Attributes -->
- <xs:complexType name="AttributesType">
- <xs:sequence>
- <xs:element name="attribute" type="tns:AttributeType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="AttributeType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="tns:AttributeTypeEnum" use="required"/>
- <xs:attribute name="default" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- <xs:attribute name="min" type="xs:int"/>
- <xs:attribute name="max" type="xs:int"/>
- <xs:attribute name="values" type="xs:string"/>
- </xs:complexType>
- <!-- Attribute Type Enumeration -->
- <xs:simpleType name="AttributeTypeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="string"/>
- <xs:enumeration value="int"/>
- <xs:enumeration value="bool"/>
- <xs:enumeration value="enum"/>
- <xs:enumeration value="color"/>
- <xs:enumeration value="date"/>
- <xs:enumeration value="datetime"/>
- <xs:enumeration value="timespan"/>
- <xs:enumeration value="icon"/>
- <xs:enumeration value="image"/>
- <xs:enumeration value="object"/>
- <xs:enumeration value="decimal"/>
- <xs:enumeration value="float"/>
- <xs:enumeration value="double"/>
- <xs:enumeration value="char"/>
- <xs:enumeration value="font"/>
- <xs:enumeration value="size"/>
- <xs:enumeration value="point"/>
- <xs:enumeration value="padding"/>
- <xs:enumeration value="thickness"/>
- <xs:enumeration value="corner-radius"/>
- <xs:enumeration value="brush"/>
- <xs:enumeration value="geometry"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- Behavior -->
- <xs:complexType name="BehaviorType">
- <xs:sequence>
- <xs:element name="event" type="tns:EventType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="EventType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="alias" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- <xs:attribute name="handler-required" type="xs:boolean" default="false"/>
- <xs:attribute name="bubbles" type="xs:boolean" default="false"/>
- <xs:attribute name="parameters" type="xs:string"/>
- </xs:complexType>
- <!-- Control Structure (simplified for patterns) -->
- <xs:complexType name="ControlStructureType">
- <xs:choice maxOccurs="unbounded">
- <xs:element name="items" type="tns:ItemsType"/>
- <xs:element name="menu-items" type="tns:MenuItemsType"/>
- <xs:element name="columns" type="tns:ColumnsType"/>
- <xs:element name="children" type="tns:ChildrenType"/>
- <xs:element name="selected-items" type="tns:SelectedItemsType"/>
- <xs:element name="context-menu" type="tns:ContextMenuType"/>
- <xs:element name="panel1" type="tns:PanelType"/>
- <xs:element name="panel2" type="tns:PanelType"/>
- <xs:element name="pane" type="tns:PaneType"/>
- <xs:element name="content" type="tns:ContentType"/>
- <xs:element name="grid-definitions" type="tns:GridDefinitionsType"/>
- <!-- Add other structure types as needed -->
- </xs:choice>
- </xs:complexType>
- <!-- Structure Definition -->
- <xs:complexType name="StructureType">
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
- <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
- <xs:element name="template" type="tns:TemplateType"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
- <xs:attribute name="inherits" type="xs:string"/>
- </xs:complexType>
- <!-- Wireframe Definition -->
- <xs:complexType name="WireframeType">
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="template" type="tns:TemplateType"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- </xs:complexType>
- <!-- Template (simplified - contains mixed content for flexibility) -->
- <xs:complexType name="TemplateType" mixed="true">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- <xs:anyAttribute processContents="lax"/>
- </xs:complexType>
- <!-- Supporting Types (simplified) -->
- <xs:complexType name="ItemsType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- <xs:attribute name="min-count" type="xs:int" default="0"/>
- <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
- <xs:attribute name="max-depth" type="xs:int"/>
- </xs:complexType>
- <xs:complexType name="MenuItemsType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- <xs:attribute name="min-count" type="xs:int" default="1"/>
- <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
- <xs:attribute name="max-depth" type="xs:int"/>
- </xs:complexType>
- <xs:complexType name="ColumnsType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- <xs:attribute name="min-count" type="xs:int" default="1"/>
- <xs:attribute name="max-count" type="xs:int" default="50"/>
- </xs:complexType>
- <xs:complexType name="ChildrenType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- <xs:attribute name="allow-multiple" type="xs:boolean" default="true"/>
- </xs:complexType>
- <xs:complexType name="SelectedItemsType">
- <xs:attribute name="max-count" type="xs:string" use="required"/>
- </xs:complexType>
- <xs:complexType name="ContextMenuType">
- <xs:attribute name="max-count" type="xs:int" default="1"/>
- </xs:complexType>
- <xs:complexType name="PanelType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- <xs:attribute name="required" type="xs:boolean" default="true"/>
- </xs:complexType>
- <xs:complexType name="PaneType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="ContentType">
- <xs:sequence>
- <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="GridDefinitionsType">
- <xs:sequence>
- <xs:element name="row-definitions" type="tns:RowDefinitionsType"/>
- <xs:element name="column-definitions" type="tns:ColumnDefinitionsType"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="RowDefinitionsType">
- <xs:sequence>
- <xs:element name="row-definition" type="tns:RowDefinitionType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="RowDefinitionType">
- <xs:attribute name="height" type="xs:string" use="required"/>
- <xs:attribute name="min-height" type="xs:string" default="0"/>
- <xs:attribute name="max-height" type="xs:string" default="Infinity"/>
- </xs:complexType>
- <xs:complexType name="ColumnDefinitionsType">
- <xs:sequence>
- <xs:element name="column-definition" type="tns:ColumnDefinitionType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="ColumnDefinitionType">
- <xs:attribute name="width" type="xs:string" use="required"/>
- <xs:attribute name="min-width" type="xs:string" default="0"/>
- <xs:attribute name="max-width" type="xs:string" default="Infinity"/>
- </xs:complexType>
- </xs:schema>
|