Simplify geometry XML format by folding row element.
This commit is contained in:
		@ -3,240 +3,246 @@
 | 
				
			|||||||
  <bounds x="0.000000" y="0.000000" width="640.0000" height="296.5853"/>
 | 
					  <bounds x="0.000000" y="0.000000" width="640.0000" height="296.5853"/>
 | 
				
			||||||
  <section angle="0">
 | 
					  <section angle="0">
 | 
				
			||||||
    <bounds x="15.60975" y="15.60975" width="640.0000" height="39.02439"/>
 | 
					    <bounds x="15.60975" y="15.60975" width="640.0000" height="39.02439"/>
 | 
				
			||||||
    <row columns="16" orientation="1"/>
 | 
					    <row orientation="1">
 | 
				
			||||||
    <key keycode="9" name="ESC" column="0" row="0" oref="outline2">
 | 
					      <key keycode="9" name="ESC" oref="outline2">
 | 
				
			||||||
      <bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="67" name="FK01" column="1" row="0" oref="outline2">
 | 
					      <key keycode="67" name="FK01" oref="outline2">
 | 
				
			||||||
      <bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="68" name="FK02" column="2" row="0" oref="outline2">
 | 
					      <key keycode="68" name="FK02" oref="outline2">
 | 
				
			||||||
      <bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="69" name="FK03" column="3" row="0" oref="outline2">
 | 
					      <key keycode="69" name="FK03" oref="outline2">
 | 
				
			||||||
      <bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="70" name="FK04" column="4" row="0" oref="outline2">
 | 
					      <key keycode="70" name="FK04" oref="outline2">
 | 
				
			||||||
      <bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="71" name="FK05" column="5" row="0" oref="outline2">
 | 
					      <key keycode="71" name="FK05" oref="outline2">
 | 
				
			||||||
      <bounds x="266.9268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="266.9268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="72" name="FK06" column="6" row="0" oref="outline2">
 | 
					      <key keycode="72" name="FK06" oref="outline2">
 | 
				
			||||||
      <bounds x="307.5121" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="307.5121" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="73" name="FK07" column="7" row="0" oref="outline2">
 | 
					      <key keycode="73" name="FK07" oref="outline2">
 | 
				
			||||||
      <bounds x="348.0975" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="348.0975" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="74" name="FK08" column="8" row="0" oref="outline2">
 | 
					      <key keycode="74" name="FK08" oref="outline2">
 | 
				
			||||||
      <bounds x="388.6829" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="388.6829" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="75" name="FK09" column="9" row="0" oref="outline2">
 | 
					      <key keycode="75" name="FK09" oref="outline2">
 | 
				
			||||||
      <bounds x="449.5609" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="449.5609" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="76" name="FK10" column="10" row="0" oref="outline2">
 | 
					      <key keycode="76" name="FK10" oref="outline2">
 | 
				
			||||||
      <bounds x="490.1463" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="490.1463" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="95" name="FK11" column="11" row="0" oref="outline2">
 | 
					      <key keycode="95" name="FK11" oref="outline2">
 | 
				
			||||||
      <bounds x="530.7317" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="530.7317" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="96" name="FK12" column="12" row="0" oref="outline2">
 | 
					      <key keycode="96" name="FK12" oref="outline2">
 | 
				
			||||||
      <bounds x="571.3170" y="1.560976" width="37.46341" height="37.46341"/>
 | 
						<bounds x="571.3170" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
 | 
					    </row>
 | 
				
			||||||
  </section>
 | 
					  </section>
 | 
				
			||||||
  <section angle="0">
 | 
					  <section angle="0">
 | 
				
			||||||
    <bounds x="15.60975" y="78.04878" width="608.7804" height="201.3658"/>
 | 
					    <bounds x="15.60975" y="78.04878" width="608.7804" height="201.3658"/>
 | 
				
			||||||
    <row columns="14" orientation="1"/>
 | 
					    <row orientation="1">
 | 
				
			||||||
    <row columns="14" orientation="1"/>
 | 
					      <key keycode="49" name="TLDE" oref="outline2">
 | 
				
			||||||
    <row columns="13" orientation="1"/>
 | 
						<bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <row columns="12" orientation="1"/>
 | 
					      </key>
 | 
				
			||||||
    <row columns="9" orientation="1"/>
 | 
					      <key keycode="10" name="AE01" oref="outline2">
 | 
				
			||||||
    <key keycode="49" name="TLDE" column="0" row="0" oref="outline2">
 | 
						<bounds x="43.70731" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="3.121951" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="11" name="AE02" oref="outline2">
 | 
				
			||||||
    <key keycode="10" name="AE01" column="1" row="0" oref="outline2">
 | 
						<bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="43.70731" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="12" name="AE03" oref="outline2">
 | 
				
			||||||
    <key keycode="11" name="AE02" column="2" row="0" oref="outline2">
 | 
						<bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="84.29268" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="13" name="AE04" oref="outline2">
 | 
				
			||||||
    <key keycode="12" name="AE03" column="3" row="0" oref="outline2">
 | 
						<bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="124.8780" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="14" name="AE05" oref="outline2">
 | 
				
			||||||
    <key keycode="13" name="AE04" column="4" row="0" oref="outline2">
 | 
						<bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="165.4634" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="15" name="AE06" oref="outline2">
 | 
				
			||||||
    <key keycode="14" name="AE05" column="5" row="0" oref="outline2">
 | 
						<bounds x="245.0731" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="206.0487" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="16" name="AE07" oref="outline2">
 | 
				
			||||||
    <key keycode="15" name="AE06" column="6" row="0" oref="outline2">
 | 
						<bounds x="285.6585" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="245.0731" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="17" name="AE08" oref="outline2">
 | 
				
			||||||
    <key keycode="16" name="AE07" column="7" row="0" oref="outline2">
 | 
						<bounds x="326.2439" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="285.6585" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="18" name="AE09" oref="outline2">
 | 
				
			||||||
    <key keycode="17" name="AE08" column="8" row="0" oref="outline2">
 | 
						<bounds x="366.8292" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="326.2439" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="19" name="AE10" oref="outline2">
 | 
				
			||||||
    <key keycode="18" name="AE09" column="9" row="0" oref="outline2">
 | 
						<bounds x="407.4146" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="366.8292" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="20" name="AE11" oref="outline2">
 | 
				
			||||||
    <key keycode="19" name="AE10" column="10" row="0" oref="outline2">
 | 
						<bounds x="448.0000" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="407.4146" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="21" name="AE12" oref="outline2">
 | 
				
			||||||
    <key keycode="20" name="AE11" column="11" row="0" oref="outline2">
 | 
						<bounds x="488.5853" y="1.560976" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="448.0000" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="22" name="BKSP" oref="outline13">
 | 
				
			||||||
    <key keycode="21" name="AE12" column="12" row="0" oref="outline2">
 | 
						<bounds x="529.1707" y="1.560976" width="79.60975" height="37.46341"/>
 | 
				
			||||||
      <bounds x="488.5853" y="1.560976" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					    </row>
 | 
				
			||||||
    <key keycode="22" name="BKSP" column="13" row="0" oref="outline13">
 | 
					    <row orientation="1">
 | 
				
			||||||
      <bounds x="529.1707" y="1.560976" width="79.60975" height="37.46341"/>
 | 
					      <key keycode="23" name="TAB" oref="outline4">
 | 
				
			||||||
    </key>
 | 
						<bounds x="3.121951" y="42.14634" width="59.31707" height="37.46341"/>
 | 
				
			||||||
    <key keycode="23" name="TAB" column="0" row="1" oref="outline4">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="3.121951" y="42.14634" width="59.31707" height="37.46341"/>
 | 
					      <key keycode="24" name="AD01" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="65.56097" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="24" name="AD01" column="1" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="65.56097" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="25" name="AD02" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="106.1463" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="25" name="AD02" column="2" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="106.1463" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="26" name="AD03" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="145.1707" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="26" name="AD03" column="3" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="145.1707" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="27" name="AD04" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="185.7560" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="27" name="AD04" column="4" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="185.7560" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="28" name="AD05" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="226.3414" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="28" name="AD05" column="5" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="226.3414" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="29" name="AD06" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="266.9268" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="29" name="AD06" column="6" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="266.9268" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="30" name="AD07" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="307.5121" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="30" name="AD07" column="7" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="307.5121" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="31" name="AD08" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="348.0975" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="31" name="AD08" column="8" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="348.0975" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="32" name="AD09" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="388.6829" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="32" name="AD09" column="9" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="388.6829" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="33" name="AD10" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="429.2682" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="33" name="AD10" column="10" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="429.2682" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="34" name="AD11" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="468.2926" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="34" name="AD11" column="11" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="468.2926" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="35" name="AD12" oref="outline2">
 | 
				
			||||||
    </key>
 | 
						<bounds x="508.8780" y="42.14634" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="35" name="AD12" column="12" row="1" oref="outline2">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="508.8780" y="42.14634" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="51" name="BKSL" oref="outline5">
 | 
				
			||||||
    </key>
 | 
						<bounds x="549.4634" y="42.14634" width="59.31707" height="37.46341"/>
 | 
				
			||||||
    <key keycode="51" name="BKSL" column="13" row="1" oref="outline5">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="549.4634" y="42.14634" width="59.31707" height="37.46341"/>
 | 
					    </row>
 | 
				
			||||||
    </key>
 | 
					    <row orientation="1">
 | 
				
			||||||
    <key keycode="66" name="CAPS" column="0" row="2" oref="outline6">
 | 
					      <key keycode="66" name="CAPS" oref="outline6">
 | 
				
			||||||
      <bounds x="3.121951" y="82.73170" width="68.68292" height="37.46341"/>
 | 
						<bounds x="3.121951" y="82.73170" width="68.68292" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="38" name="AC01" column="1" row="2" oref="outline2">
 | 
					      <key keycode="38" name="AC01" oref="outline2">
 | 
				
			||||||
      <bounds x="76.48780" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="76.48780" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="39" name="AC02" column="2" row="2" oref="outline2">
 | 
					      <key keycode="39" name="AC02" oref="outline2">
 | 
				
			||||||
      <bounds x="115.5121" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="115.5121" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="40" name="AC03" column="3" row="2" oref="outline2">
 | 
					      <key keycode="40" name="AC03" oref="outline2">
 | 
				
			||||||
      <bounds x="156.0975" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="156.0975" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="41" name="AC04" column="4" row="2" oref="outline2">
 | 
					      <key keycode="41" name="AC04" oref="outline2">
 | 
				
			||||||
      <bounds x="196.6829" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="196.6829" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="42" name="AC05" column="5" row="2" oref="outline2">
 | 
					      <key keycode="42" name="AC05" oref="outline2">
 | 
				
			||||||
      <bounds x="237.2682" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="237.2682" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="43" name="AC06" column="6" row="2" oref="outline2">
 | 
					      <key keycode="43" name="AC06" oref="outline2">
 | 
				
			||||||
      <bounds x="277.8536" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="277.8536" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="44" name="AC07" column="7" row="2" oref="outline2">
 | 
					      <key keycode="44" name="AC07" oref="outline2">
 | 
				
			||||||
      <bounds x="318.4390" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="318.4390" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="45" name="AC08" column="8" row="2" oref="outline2">
 | 
					      <key keycode="45" name="AC08" oref="outline2">
 | 
				
			||||||
      <bounds x="359.0243" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="359.0243" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="46" name="AC09" column="9" row="2" oref="outline2">
 | 
					      <key keycode="46" name="AC09" oref="outline2">
 | 
				
			||||||
      <bounds x="399.6097" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="399.6097" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="47" name="AC10" column="10" row="2" oref="outline2">
 | 
					      <key keycode="47" name="AC10" oref="outline2">
 | 
				
			||||||
      <bounds x="438.6341" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="438.6341" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="48" name="AC11" column="11" row="2" oref="outline2">
 | 
					      <key keycode="48" name="AC11" oref="outline2">
 | 
				
			||||||
      <bounds x="479.2195" y="82.73170" width="37.46341" height="37.46341"/>
 | 
						<bounds x="479.2195" y="82.73170" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="36" name="RTRN" column="12" row="2" oref="outline7">
 | 
					      <key keycode="36" name="RTRN" oref="outline7">
 | 
				
			||||||
      <bounds x="519.8048" y="82.73170" width="88.97561" height="37.46341"/>
 | 
						<bounds x="519.8048" y="82.73170" width="88.97561" height="37.46341"/>
 | 
				
			||||||
    </key>
 | 
					      </key>
 | 
				
			||||||
    <key keycode="50" name="LFSH" column="0" row="3" oref="outline8">
 | 
					    </row>
 | 
				
			||||||
      <bounds x="3.121951" y="121.7560" width="88.97561" height="37.46341"/>
 | 
					    <row orientation="1">
 | 
				
			||||||
    </key>
 | 
					      <key keycode="50" name="LFSH" oref="outline8">
 | 
				
			||||||
    <key keycode="52" name="AB01" column="1" row="3" oref="outline2">
 | 
						<bounds x="3.121951" y="121.7560" width="88.97561" height="37.46341"/>
 | 
				
			||||||
      <bounds x="95.21951" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="52" name="AB01" oref="outline2">
 | 
				
			||||||
    <key keycode="53" name="AB02" column="2" row="3" oref="outline2">
 | 
						<bounds x="95.21951" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="135.8048" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="53" name="AB02" oref="outline2">
 | 
				
			||||||
    <key keycode="54" name="AB03" column="3" row="3" oref="outline2">
 | 
						<bounds x="135.8048" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="176.3902" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="54" name="AB03" oref="outline2">
 | 
				
			||||||
    <key keycode="55" name="AB04" column="4" row="3" oref="outline2">
 | 
						<bounds x="176.3902" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="215.4146" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="55" name="AB04" oref="outline2">
 | 
				
			||||||
    <key keycode="56" name="AB05" column="5" row="3" oref="outline2">
 | 
						<bounds x="215.4146" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="256.0000" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="56" name="AB05" oref="outline2">
 | 
				
			||||||
    <key keycode="57" name="AB06" column="6" row="3" oref="outline2">
 | 
						<bounds x="256.0000" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="296.5853" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="57" name="AB06" oref="outline2">
 | 
				
			||||||
    <key keycode="58" name="AB07" column="7" row="3" oref="outline2">
 | 
						<bounds x="296.5853" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="337.1707" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="58" name="AB07" oref="outline2">
 | 
				
			||||||
    <key keycode="59" name="AB08" column="8" row="3" oref="outline2">
 | 
						<bounds x="337.1707" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="377.7560" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="59" name="AB08" oref="outline2">
 | 
				
			||||||
    <key keycode="60" name="AB09" column="9" row="3" oref="outline2">
 | 
						<bounds x="377.7560" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="418.3414" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="60" name="AB09" oref="outline2">
 | 
				
			||||||
    <key keycode="61" name="AB10" column="10" row="3" oref="outline2">
 | 
						<bounds x="418.3414" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="458.9268" y="121.7560" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="61" name="AB10" oref="outline2">
 | 
				
			||||||
    <key keycode="62" name="RTSH" column="11" row="3" oref="outline9">
 | 
						<bounds x="458.9268" y="121.7560" width="37.46341" height="37.46341"/>
 | 
				
			||||||
      <bounds x="499.5121" y="121.7560" width="109.2682" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					      <key keycode="62" name="RTSH" oref="outline9">
 | 
				
			||||||
    <key keycode="149" name="I149" column="0" row="4" oref="outline10">
 | 
						<bounds x="499.5121" y="121.7560" width="109.2682" height="37.46341"/>
 | 
				
			||||||
      <bounds x="3.121951" y="162.3414" width="37.46341" height="37.46341"/>
 | 
					      </key>
 | 
				
			||||||
    </key>
 | 
					    </row>
 | 
				
			||||||
    <key keycode="37" name="LCTL" column="1" row="4" oref="outline1">
 | 
					    <row orientation="1">
 | 
				
			||||||
      <bounds x="62.43902" y="162.3414" width="48.39024" height="37.46341"/>
 | 
					      <key keycode="149" name="I149" oref="outline10">
 | 
				
			||||||
    </key>
 | 
						<bounds x="3.121951" y="162.3414" width="37.46341" height="37.46341"/>
 | 
				
			||||||
    <key keycode="64" name="LALT" column="2" row="4" oref="outline1">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="113.9512" y="162.3414" width="48.39024" height="37.46341"/>
 | 
					      <key keycode="37" name="LCTL" oref="outline1">
 | 
				
			||||||
    </key>
 | 
						<bounds x="62.43902" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
    <key keycode="65" name="SPCE" column="3" row="4" oref="outline3">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="165.4634" y="162.3414" width="217.5853" height="37.46341"/>
 | 
					      <key keycode="64" name="LALT" oref="outline1">
 | 
				
			||||||
    </key>
 | 
						<bounds x="113.9512" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
    <key keycode="113" name="LEFT" column="4" row="4" oref="outline1">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="368.0487" y="162.3414" width="48.39024" height="37.46341"/>
 | 
					      <key keycode="65" name="SPCE" oref="outline3">
 | 
				
			||||||
    </key>
 | 
						<bounds x="165.4634" y="162.3414" width="217.5853" height="37.46341"/>
 | 
				
			||||||
    <key keycode="111" name="UP" column="5" row="4" oref="outline1">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="419.43894" y="162.3414" width="48.39024" height="37.46341"/>
 | 
					      <key keycode="113" name="LEFT" oref="outline1">
 | 
				
			||||||
    </key>
 | 
						<bounds x="368.0487" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
    <key keycode="116" name="DOWN" column="6" row="4" oref="outline1">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="470.82918" y="162.3414" width="48.39024" height="37.46341"/>
 | 
					      <key keycode="111" name="UP" oref="outline1">
 | 
				
			||||||
    </key>
 | 
						<bounds x="419.43894" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
    <key keycode="114" name="RGHT" column="7" row="4" oref="outline1">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="522.21942" y="162.3414" width="48.39024" height="37.46341"/>
 | 
					      <key keycode="116" name="DOWN" oref="outline1">
 | 
				
			||||||
    </key>
 | 
						<bounds x="470.82918" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
    <key keycode="150" name="I150" column="8" row="4" oref="outline10">
 | 
					      </key>
 | 
				
			||||||
      <bounds x="573.60966" y="162.3414" width="37.46341" height="37.46341"/>
 | 
					      <key keycode="114" name="RGHT" oref="outline1">
 | 
				
			||||||
    </key>
 | 
						<bounds x="522.21942" y="162.3414" width="48.39024" height="37.46341"/>
 | 
				
			||||||
 | 
					      </key>
 | 
				
			||||||
 | 
					      <key keycode="150" name="I150" oref="outline10">
 | 
				
			||||||
 | 
						<bounds x="573.60966" y="162.3414" width="37.46341" height="37.46341"/>
 | 
				
			||||||
 | 
					      </key>
 | 
				
			||||||
 | 
					    </row>
 | 
				
			||||||
  </section>
 | 
					  </section>
 | 
				
			||||||
  <outline id="outline2" corner-radius="1.000000">
 | 
					  <outline id="outline2" corner-radius="1.000000">
 | 
				
			||||||
    <point x="0.000000" y="0.000000"/>
 | 
					    <point x="0.000000" y="0.000000"/>
 | 
				
			||||||
 | 
				
			|||||||
@ -152,22 +152,24 @@ on_cancelled (EekKey     *key,
 | 
				
			|||||||
static EekKey *
 | 
					static EekKey *
 | 
				
			||||||
eek_section_real_create_key (EekSection *self,
 | 
					eek_section_real_create_key (EekSection *self,
 | 
				
			||||||
                             guint       keycode,
 | 
					                             guint       keycode,
 | 
				
			||||||
                             gint        column,
 | 
					                             gint        column_index,
 | 
				
			||||||
                             gint        row)
 | 
					                             gint        row_index)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    EekKey *key;
 | 
					    EekKey *key;
 | 
				
			||||||
    gint num_columns, num_rows;
 | 
					    gint num_rows;
 | 
				
			||||||
    EekOrientation orientation;
 | 
					    EekRow *row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    num_rows = eek_section_get_n_rows (self);
 | 
					    num_rows = eek_section_get_n_rows (self);
 | 
				
			||||||
    g_return_val_if_fail (0 <= row && row < num_rows, NULL);
 | 
					    g_return_val_if_fail (0 <= row_index && row_index < num_rows, NULL);
 | 
				
			||||||
    eek_section_get_row (self, row, &num_columns, &orientation);
 | 
					
 | 
				
			||||||
    g_return_val_if_fail (column < num_columns, NULL);
 | 
					    row = g_slist_nth_data (self->priv->rows, row_index);
 | 
				
			||||||
 | 
					    if (row->num_columns < column_index + 1)
 | 
				
			||||||
 | 
					        row->num_columns = column_index + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    key = g_object_new (EEK_TYPE_KEY,
 | 
					    key = g_object_new (EEK_TYPE_KEY,
 | 
				
			||||||
                        "keycode", keycode,
 | 
					                        "keycode", keycode,
 | 
				
			||||||
                        "column", column,
 | 
					                        "column", column_index,
 | 
				
			||||||
                        "row", row,
 | 
					                        "row", row_index,
 | 
				
			||||||
                        NULL);
 | 
					                        NULL);
 | 
				
			||||||
    g_return_val_if_fail (key, NULL);
 | 
					    g_return_val_if_fail (key, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -240,6 +240,7 @@ struct _GeometryParseData {
 | 
				
			|||||||
    EekSection *section;
 | 
					    EekSection *section;
 | 
				
			||||||
    EekKey *key;
 | 
					    EekKey *key;
 | 
				
			||||||
    gint num_columns;
 | 
					    gint num_columns;
 | 
				
			||||||
 | 
					    gint num_rows;
 | 
				
			||||||
    EekOrientation orientation;
 | 
					    EekOrientation orientation;
 | 
				
			||||||
    gdouble corner_radius;
 | 
					    gdouble corner_radius;
 | 
				
			||||||
    GSList *points;
 | 
					    GSList *points;
 | 
				
			||||||
@ -287,8 +288,8 @@ static const gchar *geometry_valid_path_list[] = {
 | 
				
			|||||||
    "outline/geometry",
 | 
					    "outline/geometry",
 | 
				
			||||||
    "bounds/section/geometry",
 | 
					    "bounds/section/geometry",
 | 
				
			||||||
    "row/section/geometry",
 | 
					    "row/section/geometry",
 | 
				
			||||||
    "key/section/geometry",
 | 
					    "key/row/section/geometry",
 | 
				
			||||||
    "bounds/key/section/geometry",
 | 
					    "bounds/key/row/section/geometry",
 | 
				
			||||||
    "point/outline/geometry",
 | 
					    "point/outline/geometry",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -384,27 +385,21 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (g_strcmp0 (element_name, "row") == 0) {
 | 
					    if (g_strcmp0 (element_name, "row") == 0) {
 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					 | 
				
			||||||
                                   "columns");
 | 
					 | 
				
			||||||
        if (attribute == NULL) {
 | 
					 | 
				
			||||||
            g_set_error (error,
 | 
					 | 
				
			||||||
                         G_MARKUP_ERROR,
 | 
					 | 
				
			||||||
                         G_MARKUP_ERROR_MISSING_ATTRIBUTE,
 | 
					 | 
				
			||||||
                         "no \"columns\" attribute for \"row\"");
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        data->num_columns = strtol (attribute, NULL, 10);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					        attribute = get_attribute (attribute_names, attribute_values,
 | 
				
			||||||
                                   "orientation");
 | 
					                                   "orientation");
 | 
				
			||||||
        if (attribute != NULL)
 | 
					        if (attribute != NULL)
 | 
				
			||||||
            data->orientation = strtol (attribute, NULL, 10);
 | 
					            data->orientation = strtol (attribute, NULL, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        eek_section_add_row (data->section,
 | 
				
			||||||
 | 
					                             data->num_columns,
 | 
				
			||||||
 | 
					                             data->orientation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        data->num_rows++;
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (g_strcmp0 (element_name, "key") == 0) {
 | 
					    if (g_strcmp0 (element_name, "key") == 0) {
 | 
				
			||||||
        guint keycode;
 | 
					        guint keycode;
 | 
				
			||||||
        gint column, row;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					        attribute = get_attribute (attribute_names, attribute_values,
 | 
				
			||||||
                                   "keycode");
 | 
					                                   "keycode");
 | 
				
			||||||
@ -417,29 +412,10 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        keycode = strtoul (attribute, NULL, 10);
 | 
					        keycode = strtoul (attribute, NULL, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					        data->key = eek_section_create_key (data->section,
 | 
				
			||||||
                                   "column");
 | 
					                                            keycode,
 | 
				
			||||||
        if (attribute == NULL) {
 | 
					                                            data->num_columns,
 | 
				
			||||||
            g_set_error (error,
 | 
					                                            data->num_rows - 1);
 | 
				
			||||||
                         G_MARKUP_ERROR,
 | 
					 | 
				
			||||||
                         G_MARKUP_ERROR_MISSING_ATTRIBUTE,
 | 
					 | 
				
			||||||
                         "no \"column\" attribute for \"key\"");
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        column = strtol (attribute, NULL, 10);
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					 | 
				
			||||||
                                   "row");
 | 
					 | 
				
			||||||
        if (attribute == NULL) {
 | 
					 | 
				
			||||||
            g_set_error (error,
 | 
					 | 
				
			||||||
                         G_MARKUP_ERROR,
 | 
					 | 
				
			||||||
                         G_MARKUP_ERROR_MISSING_ATTRIBUTE,
 | 
					 | 
				
			||||||
                         "no \"row\" attribute for \"row\"");
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        row = strtol (attribute, NULL, 10);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        data->key = eek_section_create_key (data->section, keycode, column, row);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        attribute = get_attribute (attribute_names, attribute_values,
 | 
					        attribute = get_attribute (attribute_names, attribute_values,
 | 
				
			||||||
                                   "name");
 | 
					                                   "name");
 | 
				
			||||||
@ -458,6 +434,9 @@ geometry_start_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
        g_hash_table_insert (data->key_oref_hash,
 | 
					        g_hash_table_insert (data->key_oref_hash,
 | 
				
			||||||
                             data->key,
 | 
					                             data->key,
 | 
				
			||||||
                             g_strdup (attribute));
 | 
					                             g_strdup (attribute));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        data->num_columns++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -533,6 +512,7 @@ geometry_end_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (g_strcmp0 (element_name, "section") == 0) {
 | 
					    if (g_strcmp0 (element_name, "section") == 0) {
 | 
				
			||||||
        data->section = NULL;
 | 
					        data->section = NULL;
 | 
				
			||||||
 | 
					        data->num_rows = 0;
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -541,6 +521,12 @@ geometry_end_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (g_strcmp0 (element_name, "row") == 0) {
 | 
				
			||||||
 | 
					        data->num_columns = 0;
 | 
				
			||||||
 | 
					        data->orientation = EEK_ORIENTATION_HORIZONTAL;
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (g_strcmp0 (element_name, "outline") == 0) {
 | 
					    if (g_strcmp0 (element_name, "outline") == 0) {
 | 
				
			||||||
        EekOutline *outline = g_slice_new (EekOutline);
 | 
					        EekOutline *outline = g_slice_new (EekOutline);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -566,15 +552,6 @@ geometry_end_element_callback (GMarkupParseContext *pcontext,
 | 
				
			|||||||
        g_free (data->oref);
 | 
					        g_free (data->oref);
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (g_strcmp0 (element_name, "row") == 0) {
 | 
					 | 
				
			||||||
        eek_section_add_row (data->section,
 | 
					 | 
				
			||||||
                             data->num_columns,
 | 
					 | 
				
			||||||
                             data->orientation);
 | 
					 | 
				
			||||||
        data->num_columns = 0;
 | 
					 | 
				
			||||||
        data->orientation = EEK_ORIENTATION_HORIZONTAL;
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const GMarkupParser geometry_parser = {
 | 
					static const GMarkupParser geometry_parser = {
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user