Implement relative positioning system for DialogXML
This allows widgets to be positioned relative to other widgets. Two dialogs have been converted to use relative positioning. Also fix some issues with calculating the dialog rect.
This commit is contained in:
@@ -1,58 +1,58 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
|
||||
<dialog defbtn='done'>
|
||||
<button name='help' relative='neg pos' type='help' def-key='help' top='6' left='22'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='next' top='10' left='8' width='205' height='16'>Create/Edit Party:</text>
|
||||
<pict type='dlog' num='7' top='6' left='6'/>
|
||||
<text size='large' top='16' left='50' width='205' height='16'>Create/Edit Party:</text>
|
||||
<button name='help' type='help' def-key='help' top='4' left='498'/>
|
||||
|
||||
<pict name='pc1' type='pc' num='0' top='52' left='12'/>
|
||||
<text size='large' top='63' left='42' width='40' height='16'>PC #1</text>
|
||||
<text name='name1' size='title' font='dungeon' framed='true' top='60' left='93' width='152' height='20'/>
|
||||
<button name='delete1' type='tall' top='50' left='258'>Delete</button>
|
||||
<button name='trait1' type='trait' top='50' left='324'/>
|
||||
<button name='train1' type='tall' top='50' left='390'>Train</button>
|
||||
<button name='pic1' type='tall' top='50' left='455'>Graphic</button>
|
||||
<pict name='pc1' type='pc' relative='abs pos' rel-anchor='prev' num='0' top='10' left='12'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='11' left='2' width='40' height='16'>PC #1</text>
|
||||
<text name='name1' size='title' font='dungeon' framed='true' relative='pos neg' rel-anchor='prev' top='3' left='11' width='152' height='20'/>
|
||||
<button name='delete1' type='tall' relative='pos neg' rel-anchor='prev' top='10' left='13'>Delete</button>
|
||||
<button name='trait1' type='trait' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
|
||||
<button name='train1' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Train</button>
|
||||
<button name='pic1' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Graphic</button>
|
||||
|
||||
<pict name='pc2' type='pc' num='0' top='97' left='12'/>
|
||||
<text size='large' top='108' left='42' width='40' height='16'>PC #2</text>
|
||||
<text name='name2' size='title' font='dungeon' framed='true' top='105' left='93' width='152' height='20'/>
|
||||
<button name='delete2' type='tall' top='95' left='258'>Delete</button>
|
||||
<button name='trait2' type='trait' top='95' left='324'/>
|
||||
<button name='train2' type='tall' top='95' left='390'>Train</button>
|
||||
<button name='pic2' type='tall' top='95' left='455'>Graphic</button>
|
||||
<pict name='pc2' type='pc' relative='abs pos' anchor='pc1' num='0' top='9' left='12'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='11' left='2' width='40' height='16'>PC #2</text>
|
||||
<text name='name2' size='title' font='dungeon' framed='true' relative='pos neg' rel-anchor='prev' top='3' left='11' width='152' height='20'/>
|
||||
<button name='delete2' type='tall' relative='pos neg' rel-anchor='prev' top='10' left='13'>Delete</button>
|
||||
<button name='trait2' type='trait' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
|
||||
<button name='train2' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Train</button>
|
||||
<button name='pic2' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Graphic</button>
|
||||
|
||||
<pict name='pc3' type='pc' num='0' top='142' left='12'/>
|
||||
<text size='large' top='163' left='42' width='40' height='16'>PC #3</text>
|
||||
<text name='name3' size='title' font='dungeon' framed='true' top='150' left='93' width='152' height='20'/>
|
||||
<button name='delete3' type='tall' top='140' left='258'>Delete</button>
|
||||
<button name='trait3' type='trait' top='140' left='324'/>
|
||||
<button name='train3' type='tall' top='140' left='390'>Train</button>
|
||||
<button name='pic3' type='tall' top='140' left='455'>Graphic</button>
|
||||
<pict name='pc3' type='pc' relative='abs pos' anchor='pc2' num='0' top='9' left='12'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='11' left='2' width='40' height='16'>PC #3</text>
|
||||
<text name='name3' size='title' font='dungeon' framed='true' relative='pos neg' rel-anchor='prev' top='3' left='11' width='152' height='20'/>
|
||||
<button name='delete3' type='tall' relative='pos neg' rel-anchor='prev' top='10' left='13'>Delete</button>
|
||||
<button name='trait3' type='trait' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
|
||||
<button name='train3' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Train</button>
|
||||
<button name='pic3' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Graphic</button>
|
||||
|
||||
<pict name='pc4' type='pc' num='0' top='187' left='12'/>
|
||||
<text size='large' top='198' left='42' width='40' height='16'>PC #4</text>
|
||||
<text name='name4' size='title' font='dungeon' framed='true' top='195' left='93' width='152' height='20'/>
|
||||
<button name='delete4' type='tall' top='185' left='258'>Delete</button>
|
||||
<button name='trait4' type='trait' top='185' left='324'/>
|
||||
<button name='train4' type='tall' top='185' left='390'>Train</button>
|
||||
<button name='pic4' type='tall' top='185' left='455'>Graphic</button>
|
||||
<pict name='pc4' type='pc' relative='abs pos' anchor='pc3' num='0' top='9' left='12'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='11' left='2' width='40' height='16'>PC #4</text>
|
||||
<text name='name4' size='title' font='dungeon' framed='true' relative='pos neg' rel-anchor='prev' top='3' left='11' width='152' height='20'/>
|
||||
<button name='delete4' type='tall' relative='pos neg' rel-anchor='prev' top='10' left='13'>Delete</button>
|
||||
<button name='trait4' type='trait' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
|
||||
<button name='train4' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Train</button>
|
||||
<button name='pic4' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Graphic</button>
|
||||
|
||||
<pict name='pc5' type='pc' num='0' top='232' left='12'/>
|
||||
<text size='large' top='243' left='42' width='40' height='16'>PC #5</text>
|
||||
<text name='name5' size='title' font='dungeon' framed='true' top='240' left='93' width='152' height='20'/>
|
||||
<button name='delete5' type='tall' top='230' left='258'>Delete</button>
|
||||
<button name='trait5' type='trait' top='230' left='324'/>
|
||||
<button name='train5' type='tall' top='230' left='390'>Train</button>
|
||||
<button name='pic5' type='tall' top='230' left='455'>Graphic</button>
|
||||
<pict name='pc5' type='pc' relative='abs pos' anchor='pc4' num='0' top='9' left='12'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='11' left='2' width='40' height='16'>PC #5</text>
|
||||
<text name='name5' size='title' font='dungeon' framed='true' relative='pos neg' rel-anchor='prev' top='3' left='11' width='152' height='20'/>
|
||||
<button name='delete5' type='tall' relative='pos neg' rel-anchor='prev' top='10' left='13'>Delete</button>
|
||||
<button name='trait5' type='trait' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
|
||||
<button name='train5' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Train</button>
|
||||
<button name='pic5' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Graphic</button>
|
||||
|
||||
<pict name='pc6' type='pc' num='0' top='277' left='12'/>
|
||||
<text size='large' top='288' left='42' width='40' height='16'>PC #6</text>
|
||||
<text name='name6' size='title' font='dungeon' framed='true' top='285' left='93' width='152' height='20'/>
|
||||
<button name='delete6' type='tall' top='275' left='258'>Delete</button>
|
||||
<button name='trait6' type='trait' top='275' left='324'/>
|
||||
<button name='train6' type='tall' top='275' left='390'>Train</button>
|
||||
<button name='pic6' type='tall' top='275' left='455'>Graphic</button>
|
||||
<pict name='pc6' type='pc' relative='abs pos' anchor='pc5' num='0' top='9' left='12'/>
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='11' left='2' width='40' height='16'>PC #6</text>
|
||||
<text name='name6' size='title' font='dungeon' framed='true' relative='pos neg' rel-anchor='prev' top='3' left='11' width='152' height='20'/>
|
||||
<button name='delete6' type='tall' relative='pos neg' rel-anchor='prev' top='10' left='13'>Delete</button>
|
||||
<button name='trait6' type='trait' relative='pos pos-in' rel-anchor='prev' top='0' left='3'/>
|
||||
<button name='train6' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Train</button>
|
||||
<button name='pic6' type='tall' relative='pos pos-in' rel-anchor='prev' top='0' left='3'>Graphic</button>
|
||||
|
||||
<text top='324' left='9' width='181' height='15'>Click PC to rename.</text>
|
||||
<button name='done' type='done' top='320' left='455'/>
|
||||
<text relative='abs neg' top='20' left='9' width='181' height='15'>Click PC to rename.</text>
|
||||
<button name='done' relative='pos-in pos' anchor='pic6' type='done' top='3' left='0'/>
|
||||
</dialog>
|
||||
|
||||
@@ -1,46 +1,45 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
|
||||
<dialog defbtn='okay'>
|
||||
<!--
|
||||
TODO: All the LEDs here should have bold labels according to the original DITL; do they get that by default? The XSL transformation with CSS stylesheet doesn't give them bold labels.
|
||||
-->
|
||||
<pict type='dlog' num='16' top='8' left='8'/>
|
||||
<text size='large' top='6' left='49' width='218' height='16'>
|
||||
Blades of Exile Preferences:
|
||||
<text size='large' relative='pos pos-in' rel-anchor='prev' top='0' left='4' width='218' height='16'>
|
||||
Blades of Exile Preferences
|
||||
</text>
|
||||
<text size='large' top='25' left='59' width='182' height='17'>Display alignment:</text>
|
||||
<text framed='true' top='48' left='64' width='277' height='102'/>
|
||||
<text size='large' relative='pos-in pos' rel-anchor='prev' top='3' left='10' width='182' height='17'>Display alignment:</text>
|
||||
<text name='disp-frame' framed='true' relative='pos-in pos' rel-anchor='prev' top='6' left='5' width='277' height='102'/>
|
||||
<group name='display'>
|
||||
<led name='tl' top='55' left='72' width='54'>Top Left</led>
|
||||
<led name='tr' top='55' left='213' width='62'>Top Right</led>
|
||||
<led name='mid' top='88' left='147' width='75'>Center</led>
|
||||
<led name='bl' top='126' left='72' width='104'>Bottom Left</led>
|
||||
<led name='br' top='126' left='213' width='104'>Bottom Right</led>
|
||||
<led name='win' top='159' left='66' width='228'>Small Window (not full screen)</led>
|
||||
<led name='tl' relative='pos-in' anchor='disp-frame' top='7' left='8' width='54'>Top Left</led>
|
||||
<led name='tr' relative='neg-in pos-in' anchor='disp-frame' top='7' left='128' width='62'>Top Right</led>
|
||||
<led name='mid' relative='pos-in' anchor='disp-frame' top='40' left='83' width='75'>Center</led>
|
||||
<led name='bl' relative='pos-in neg-in' anchor='disp-frame' top='24' left='8' width='104'>Bottom Left</led>
|
||||
<led name='br' relative='neg-in' anchor='disp-frame' top='24' left='128' width='104'>Bottom Right</led>
|
||||
<led name='win' relative='pos-in pos' anchor='disp-frame' top='9' left='2' width='228'>Small Window (not full screen)</led>
|
||||
</group>
|
||||
<text size='large' top='181' left='54' width='182' height='17'>Game speed:</text>
|
||||
<text name='spd-head' size='large' relative='neg pos' anchor='disp-frame' top='31' left='10' width='182' height='17'>Game speed:</text>
|
||||
<group name='speed'>
|
||||
<led name='fast' top='202' left='69' width='53'>Fast</led>
|
||||
<led name='med' top='202' left='151' width='53'>Medium</led>
|
||||
<led name='slow' top='202' left='244' width='53'>Slow</led>
|
||||
<led name='snail' top='202' left='328' width='70'>Quite Slow</led>
|
||||
<led name='fast' relative='pos-in pos' anchor='spd-head' top='4' left='15' width='53'>Fast</led>
|
||||
<led name='med' relative='pos-in pos' anchor='spd-head' top='4' left='97' width='53'>Medium</led>
|
||||
<led name='slow' relative='pos-in pos' anchor='spd-head' top='4' left='190' width='53'>Slow</led>
|
||||
<led name='snail' relative='pos-in pos' anchor='spd-head' top='4' left='274' width='70'>Quite Slow</led>
|
||||
</group>
|
||||
<text size='large' top='221' left='53' width='182' height='17'>For older machines:</text>
|
||||
<led name='nofrills' top='244' left='53' width='335'>No graphics frills (lose special effects)</led>
|
||||
<led name='noanim' top='264' left='53' width='335'>Turn off terrain animation</led>
|
||||
<led name='noshore' top='284' left='53' width='335'>Turn of frills on shore</led>
|
||||
<led name='nomaps' top='309' left='53' width='120'>Don't Save Maps</led>
|
||||
<led name='nosound' top='309' left='228' width='117'>No Sounds</led>
|
||||
<led name='repeatdesc' top='329' left='53' width='287'>Show room descriptions more than once</led>
|
||||
<led name='nohelp' top='349' left='53' width='306'>Never show instant help</led>
|
||||
<led name='resethelp' top='369' left='53' width='340'>
|
||||
<text size='large' relative='pos-in pos' anchor='spd-head' top='23' left='0' width='182' height='17'>For older machines:</text>
|
||||
<led name='nofrills' relative='pos-in pos' rel-anchor='prev' top='6' left='0' width='335'>
|
||||
No graphics frills (lose special effects)
|
||||
</led>
|
||||
<led name='noanim' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='335'>Turn off terrain animation</led>
|
||||
<led name='noshore' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='335'>Turn of frills on shore</led>
|
||||
<led name='nomaps' relative='pos-in pos' rel-anchor='prev' top='15' left='0' width='120'>Don't Save Maps</led>
|
||||
<led name='nosound' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='117'>No Sounds</led>
|
||||
<led name='repeatdesc' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='287'>Show room descriptions more than once</led>
|
||||
<led name='nohelp' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='306'>Never show instant help</led>
|
||||
<led name='resethelp' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>
|
||||
Reset instant help (all help windows will reappear)
|
||||
</led>
|
||||
<led name='easier' top='389' left='53' width='352'>Make game easier (monsters much weaker)</led>
|
||||
<led name='lesswm' top='409' left='53' width='340'>Fewer wandering monsters</led>
|
||||
<led name='skipsplash' top='429' left='53' width='340'>Skip splash screen on startup</led>
|
||||
<led name='scaleui' top='449' left='53' width='340'>Apply UI scaling</led>
|
||||
<led name='easier' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='352'>Make game easier (monsters much weaker)</led>
|
||||
<led name='lesswm' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>Fewer wandering monsters</led>
|
||||
<led name='skipsplash' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>Skip splash screen on startup</led>
|
||||
<led name='scaleui' relative='pos-in pos' rel-anchor='prev' top='10' left='0' width='340'>Apply UI scaling</led>
|
||||
|
||||
<button name='okay' type='regular' top='466' left='354'>OK</button>
|
||||
<button name='cancel' type='regular' def-key='esc' top='466' left='281'>Cancel</button>
|
||||
<button name='okay' relative='abs pos' rel-anchor='prev' type='regular' top='7' left='354'>OK</button>
|
||||
<button name='cancel' relative='neg pos-in' anchor='okay' type='regular' def-key='esc' top='0' left='73'>Cancel</button>
|
||||
</dialog>
|
||||
|
||||
@@ -71,6 +71,25 @@
|
||||
<xs:enumeration value="double"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="relAnchor">
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="next"/>
|
||||
<xs:enumeration value="prev"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="relPosition">
|
||||
<xs:list>
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="abs"/>
|
||||
<xs:enumeration value="pos"/>
|
||||
<xs:enumeration value="neg"/>
|
||||
<xs:enumeration value="pos-in"/>
|
||||
<xs:enumeration value="neg-in"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:list>
|
||||
</xs:simpleType>
|
||||
<xs:attributeGroup name="rect-size">
|
||||
<xs:attribute name="top" use="required" type="xs:integer"/>
|
||||
<xs:attribute name="left" use="required" type="xs:integer"/>
|
||||
@@ -81,6 +100,11 @@
|
||||
<xs:attribute name="framed" default="false" type="bool"/>
|
||||
<xs:attribute name="outline" default="inset" type="frameStyle"/>
|
||||
</xs:attributeGroup>
|
||||
<xs:attributeGroup name="position">
|
||||
<xs:attribute name="anchor" type="xs:token"/>
|
||||
<xs:attribute name="rel-anchor" type="relAnchor"/>
|
||||
<xs:attribute name="relative" default="abs" type="relPosition"/>
|
||||
</xs:attributeGroup>
|
||||
<xs:attribute name="def-key" type="key"/>
|
||||
<xs:attributeGroup name="font">
|
||||
<xs:attribute name="font" default="bold">
|
||||
@@ -136,6 +160,7 @@
|
||||
<xs:attribute ref="def-key"/>
|
||||
<xs:attribute name="fromlist" default="none" type="xs:string"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="pict">
|
||||
<xs:attribute name="name" type="xs:token"/>
|
||||
@@ -157,6 +182,7 @@
|
||||
<xs:attribute ref="def-key"/>
|
||||
<xs:attribute name="num" use="required" type="xs:integer"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType mixed="true" name="button">
|
||||
<xs:sequence>
|
||||
@@ -170,6 +196,7 @@
|
||||
<xs:attribute ref="def-key"/>
|
||||
<xs:attribute name="fromlist" default="none" type="xs:string"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="led">
|
||||
<xs:simpleContent>
|
||||
@@ -185,6 +212,7 @@
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
<xs:attributeGroup ref="font"/>
|
||||
<xs:attribute name="wrap" default="false" type="bool"/>
|
||||
</xs:extension>
|
||||
@@ -199,6 +227,7 @@
|
||||
<xs:attribute name="link" type="xs:token"/>
|
||||
<xs:attribute name="style" type="scrollStyle" default="led"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ledGroup">
|
||||
<xs:sequence>
|
||||
@@ -236,6 +265,7 @@
|
||||
<xs:attributeGroup ref="frame"/>
|
||||
<xs:attribute name="style" type="scrollStyle" default="led"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
</xs:complexType>
|
||||
<xs:element name="dialog">
|
||||
<xs:complexType>
|
||||
@@ -278,5 +308,9 @@
|
||||
<xs:selector xpath="slider"/>
|
||||
<xs:field xpath="@link"/>
|
||||
</xs:keyref>
|
||||
<xs:keyref name="anchorLink" refer="uniqueID">
|
||||
<xs:selector xpath="*"/>
|
||||
<xs:field xpath="@anchor"/>
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
|
||||
Reference in New Issue
Block a user