XTree
Also, noch mal von vorn:
-
Es geht um das Editieren von XML Daten in einer baumartigen Darstellung am Bildschirm.
-
Es handelt sich vorwiegend um technische Daten: Strom, Spannung, unterschiedliche Betriebsparameter und sowas.
-
Die Qt Viewerklassen arbeiten feldbasiert, die Datenfelder heissen 'Items', die Basisklasse zu einem Datenfeld heisst bei uns
XQItem
-
Unser Darstellung der Datenfelder ist im Prinzip erstmal tabellenartig, bla blu
-
Die QtLib unterscheidet zwischen 'rendering' und 'editing'
-
bla blub
Also: itemtypes werden einfach beschrieben, mit properties, wie die properties intern implementiert werden, ist erstmal egal: ein type sheet
pattern: model-view-controller qt: model-view wir: modelhub only
--
ein ItemType aggregiert gemeinsame Eigenschaften von Items, z.b. UnitType, EditorType, RenderTypezusammen, die ein Gruppe von Items gemeinsam
Old stuff:
Getting started
Das working directory muss aufs source directory zeigen, da liegen unter xml/ die Testfiles.
Wo ich hinwill
- Alle models, menus etc. sollen in XML beschrieben werden, siehe xml/modelsheet.xml
- Es gibt nur eine Modelklasse: XQModel (ist ein QStandardItemModel)
- Datenlogik und Anwendungslogik sollen getrennt sein
- Dazu werden die Datenknoten (composites) in einen Wrapper verpackt und in den Items 'versteckt'
- Für jede Editorklasse XyzEditor.cpp gibt es eine Klasse XyzHub.cpp
- Im XyzHub wird die Anwendungslogik implementiert, d.h. die SIGNALs der UI werden mit Operationen auf das Model verbunden
- Operationen auf Datenknoten werden für die Anwendung transparent von der Datenschicht ausgeführt
- Die genaue Implementierung dafür ist mir noch unklar:
ZQNode::nodeManager.applyCommand( ZQCommand( ZQ::PasteNode, ZQNode& ) )
???
Basisklassen
znode::zbasic_node<string_type>
Knotenabstraction, vgl.std::basic_string<char_t>
ZQNode
template-Instanziierung von zbasic_node mit QStringXQModel
ein QStandardItemModel mit ZQItemsXQItem
ein QStandardItem mit einem XQNodeWrapper- (Sauberer wäre ein eigenes Model aus einem QAbstractItemModel, aber das ist dann wirklich Arbeit ...)
XQNodeWrapper
verpackt einen ZQNode* und vermittelt dessen Attributes an die ViewItemsXQNodeManager
operations on nodes, gibts noch nicht.- Eigentlich
znode::znode_manager<zbasic_node<string_type>...> ...
für alle Anwendungsfälle XQModelReader
erzeugt QModels aus XML, siehe XML/modelsheet.xmlXQModelHub
Datenmanager-Klasse, hier läuft alles zusammenclass XQModelHub : public XQModel, public XQModelReader
: etwas fragwürdig, spart aber leidige Verpointerungen