Refactoring GUI Model¶
This report is about the refactoring done to the gui model and the switch from ParameterizedItem to SessionItem.
Dynamic propertes -> PropertyItem¶
In the previous model, all values are stored as variants in dynamic properties. These values were hidden from the model and made it inconvenient to access. Therefore we replaces dynamic properties with PropertyItems. The value is now stored in there DisplayRole (resp. EditRole) and every property has its own model index.
Item signals -> model signals / model mapper¶
ParameterizedItem supported a bunch of different signals which were emitted by the item itself. This has become confusing. Now SessionItem carries reference to its model and all signals are emitted on the model. Connections should be made to SessionModel to monitor changes (dataChanged / rowInserted / rowRemoved). SessionItem does not inherit from qobject anymore. The ModelMapper class helps to manage different types of signals.
Subitems / Ports / validchildren -> tag system¶
Instead of having a separate type of children now different types of children can be accessed through tags. Tag info entries carry information about min/max number of items and allowed model types. So they can be access separately, which replaces functionality of subitems and they do the necessary checks for ports and validchildren.
PropertyAttribute -> data roles¶
Instead of storing all attributes in a PropertyAttribute object, now different properties of SessionItems are stored in different data roles (FlagsRole, DecimalRole, LimitsRole, ...)
Cleaning up SessionItem and SessionModel¶
Unrelated code (XML and ParameterTrees) has been moved out, seldomly used functions (e.g. removeRegisteredProperty) were removed.