The main change, is the new class KisSpinBoxUnitManager. This is an abstract interface to let the spinboxes use different sorts of units from KoUnit, but also document relative lenght units (vw, vh), angle units and time units.
This force some little tricks in the design, since the spinboxes must stay in the widget library, but a lot of needed info for relative units can't be acessed from this library.
So the idea is to subclass the KisSpinBoxUnitManager where it can acess thoses datas, then send a pointer to the spinboxes. With polymorphism we can make all of this work.
So now it's possible to change the unit by writing the symbol of this unit at the end of a KisDoubleParseUnitSpinBox.
There's a few problem left, for example in some places the spinbox is destroyed and rebuilt everytime the user want to use it, so the active unit is not kept.
There's also a few refactoring needed in a lot of places that use simple parse spinboxes with a suffix rather than unit spinbox.