I'd say do which ever one is easiest to do code-wise as both of those don't look to hard to implement in the xml. Also, I'd make sure that the subcategories don't indent the table labels over any farther as the longer ones get cut off without expanding the pane to a large size taking up your usable window.
On a different note, I've been making definitions for Ecuflash and noticed some interesting things about the xml. When you open Ecuflash, it loads all the definitions into memory (does this quite fast). From them on, whenever you open a rom, it opens immediately. The xml consists of a base defintion file (ex. wrxbase) which contains all the scalings and tables and then seperate xml files for each revision, which merely have the table addresses and any size difference for that revisions. Example:
WRXBASE.XML:
Code:
<rom>
<romid>
<xmlid>wrxbase</xmlid>
<internalidaddress>200</internalidaddress>
<internalidstring>--------</internalidstring>
<memmodel>68HC16Y5</memmodel>
</romid>
<scaling name="AFR" units="air/fuel ratio" toexpr="14.7/(1+x*.0078125)" frexpr="(14.7/x-1)/.0078125" format="%.2f" min="8" max="20" inc="0.1" storagetype="int8" endian="little"/>
<scaling name="AirFlow16" units="grams/sec" toexpr="x*0.00457763671875" frexpr="x/0.00457763671875" format="%.2f" min="0" max="299" inc="1" storagetype="uint16" endian="little"/>
<scaling name="AtmosBar16" units="bar relative" toexpr="x*0.001333224" frexpr="x/0.001333224" format="%.2f" min="0" max="2.7" inc="0.05" storagetype="uint16" endian="little"/>
<scaling name="BatteryVolts" units="volts" toexpr="x*.0030517578125" frexpr="x/.0030517578125" format="%.1f" min="0" max="20" inc="0.1" storagetype="uint16" endian="little"/>
<scaling name="BoostBar" units="bar absolute" toexpr="x*.010665792" frexpr="x/.010665792" format="%.2f" min="0" max="2.7" inc="0.05" storagetype="uint8" endian="little"/>
.........
<table name="Target Boost" category="Boost" type="3D" scaling="BoostBar">
<table name="Throttle Position" type="X Axis" elements="8" scaling="Throttle"/>
<table name="Engine Speed" type="Y Axis" elements="9" scaling="RPM"/>
</table>
<table name="Target Boost (MT)" category="Boost" type="3D" scaling="BoostBar">
<table name="Throttle Position" type="X Axis" elements="8" scaling="Throttle"/>
<table name="Engine Speed" type="Y Axis" elements="9" scaling="RPM"/>
</table>
A4SGE01C.XML:
Code:
<rom>
<romid>
<xmlid>A4SGE01C</xmlid>
<internalidaddress>200</internalidaddress>
<internalidstring>A4SGE01C</internalidstring>
<caseid>AF423</caseid>
<make>Subaru</make>
<market>USDM</market>
<model>Impreza</model>
<submodel>WRX</submodel>
<transmission>MT/AT</transmission>
<year>2002</year>
<flashmethod>wrx02</flashmethod>
<memmodel>68HC16Y5</memmodel>
</romid>
<include>wrxbase</include>
<table name="Boost Compensation (Atmospheric Pressure)" address="2b4be"/>
<table name="Boost Limit (Fuel Cut)" address="298e4"/>
<table name="Boost Limit (CEL)" address="2bb85" />
<table name="Target Boost (AT)" address="2b403">
<table name="Throttle Position" address="2b3f1"/>
<table name="Engine Speed" address="2b3de"/>
</table>