first commit, again.
This commit is contained in:
58
README.md
Normal file
58
README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# 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 QString
|
||||
- [ ] ```XQModel``` ein QStandardItemModel mit ZQItems
|
||||
- [ ] ```XQItem``` 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 ViewItems
|
||||
- [ ] ```XQNodeManager``` 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.xml
|
||||
- [ ] ```XQModelHub``` Datenmanager-Klasse, hier läuft alles zusammen
|
||||
- [ ] ```class XQModelHub : public XQModel, public XQModelReader```: etwas fragwürdig, spart aber leidige Verpointerungen
|
||||
|
||||
|
Reference in New Issue
Block a user