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.