forked from AuroraMiddleware/gtk
df455db2e3
One requirement of .ui files is that each object must have an ID, even if it is never referred to or directly loaded from the code. This makes editing .ui files much more onerous than it has to be, due to the frequent need to invent new IDs, while avoiding clashes. This commit makes IDs optional in the XML. They only need to be provided for objects which are referred to or explictly loaded from the code. Since GtkBuilder needs IDs for its own internal accounting, we create IDs of the form ___object_N___ if not specified in the XML. https://bugzilla.gnome.org/show_bug.cgi?id=712553
327 lines
7.4 KiB
XML
327 lines
7.4 KiB
XML
<?xml version="1.0"?>
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="">
|
|
<start>
|
|
<element name="interface">
|
|
<optional>
|
|
<attribute name="domain">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="requires"/>
|
|
<ref name="object"/>
|
|
<ref name="template"/>
|
|
<ref name="menu"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</start>
|
|
<define name="requires">
|
|
<element name="requires">
|
|
<attribute name="lib">
|
|
<text/>
|
|
</attribute>
|
|
<attribute name="version">
|
|
<text/>
|
|
</attribute>
|
|
</element>
|
|
</define>
|
|
<define name="object">
|
|
<element name="object">
|
|
<optional>
|
|
<attribute name="id">
|
|
<data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="class">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="type-func">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="constructor">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="property"/>
|
|
<ref name="signal"/>
|
|
<ref name="child"/>
|
|
<ref name="ANY"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="template">
|
|
<element name="template">
|
|
<attribute name="class">
|
|
<text/>
|
|
</attribute>
|
|
<attribute name="parent">
|
|
<text/>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="property"/>
|
|
<ref name="signal"/>
|
|
<ref name="child"/>
|
|
<ref name="ANY"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="property">
|
|
<element name="property">
|
|
<attribute name="name">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="translatable">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="comments">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="context">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<text/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="signal">
|
|
<element name="signal">
|
|
<attribute name="name">
|
|
<text/>
|
|
</attribute>
|
|
<attribute name="handler">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="after">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="swapped">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="object">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="last_modification_time">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<empty/>
|
|
</element>
|
|
</define>
|
|
<define name="child">
|
|
<element name="child">
|
|
<optional>
|
|
<attribute name="type">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="internal-child">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="object"/>
|
|
<ref name="ANY"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="menu">
|
|
<element name="menu">
|
|
<attribute name="id">
|
|
<data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="domain">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="item"/>
|
|
<ref name="submenu"/>
|
|
<ref name="section"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="item">
|
|
<element name="item">
|
|
<optional>
|
|
<attribute name="id">
|
|
<data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="attribute_"/>
|
|
<ref name="link"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="attribute_">
|
|
<element name="attribute">
|
|
<attribute name="name">
|
|
<text/>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name="type">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="translatable">
|
|
<choice>
|
|
<value>yes</value>
|
|
<value>no</value>
|
|
</choice>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="context">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name="comments">
|
|
<text/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<text/>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
<define name="link">
|
|
<element name="link">
|
|
<optional>
|
|
<attribute name="id">
|
|
<data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name="name">
|
|
<text/>
|
|
</attribute>
|
|
<zeroOrMore>
|
|
<ref name="item"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="submenu">
|
|
<element name="submenu">
|
|
<optional>
|
|
<attribute name="id">
|
|
<data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="attribute_"/>
|
|
<ref name="item"/>
|
|
<ref name="submenu"/>
|
|
<ref name="section"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="section">
|
|
<element name="section">
|
|
<optional>
|
|
<attribute name="id">
|
|
<data type="ID" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"/>
|
|
</attribute>
|
|
</optional>
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="attribute_"/>
|
|
<ref name="item"/>
|
|
<ref name="submenu"/>
|
|
<ref name="section"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
<define name="ANY">
|
|
<element>
|
|
<anyName>
|
|
<except>
|
|
<name>interface</name>
|
|
<name>requires</name>
|
|
<name>object</name>
|
|
<name>property</name>
|
|
<name>signal</name>
|
|
<name>child</name>
|
|
<name>menu</name>
|
|
<name>item</name>
|
|
<name>attribute</name>
|
|
<name>link</name>
|
|
<name>submenu</name>
|
|
<name>section</name>
|
|
</except>
|
|
</anyName>
|
|
<zeroOrMore>
|
|
<attribute>
|
|
<anyName/>
|
|
<text/>
|
|
</attribute>
|
|
</zeroOrMore>
|
|
<interleave>
|
|
<zeroOrMore>
|
|
<ref name="ALL"/>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<text/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="ALL">
|
|
<element>
|
|
<anyName/>
|
|
<zeroOrMore>
|
|
<attribute>
|
|
<anyName/>
|
|
<text/>
|
|
</attribute>
|
|
</zeroOrMore>
|
|
<interleave>
|
|
<zeroOrMore>
|
|
<ref name="ALL"/>
|
|
</zeroOrMore>
|
|
<optional>
|
|
<text/>
|
|
</optional>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
</grammar>
|