Yep, I have done it. It has taken a little time, but I am now in the final steps to finish a new engine to develop interactive components. This can be used to create workflow systems or user interfaces.
The UI subsystem I created for my simple sensor application was not capable to handle the complexity and flexibility required to implement a multi-dimensional layout engine.
I struggeled around a few days with the layout engine based on the old UI subsystem, but then decided to revamp the subsystem completely to create a new – more Pi-Calculus based – system, where the connection ports are copyable and channels between ports are created on demand.
So today, after 3 attempts I finally finished the user interface event subsystem. Thanks to elists I was capable to create a small scheduler for event handlers and a template based system similar to the signal and slots system of trolltech’s Qt framework.
The externalising of slots is done now. I have created a small application named ‘desktop’ which is capable to handle space organisation for the terminals starting up. Additionally, the server supports a hierarchical slot namespace, so it is possible to place and access slots by path names.
Today I decided, that it would be nice to support window (slot) decorations containing some essential buttons. So it is not time to start building the user interface subsystem. Of course, it will include automatic 2d/3d layout-management and full support for the costomisation of 3D widgets.
Expect some buttons soon, click, click
Ok, slot management is implemented, today, while thinking what to put next on my todo list I got a new idea: I will rewrite the whole slot management system to allow any client to provide 3D slots and to start other clients inside these slots. This would solve some of my current issues with space partitioning and application startup:
I rewrote the complete focusmanager and movement engine, so now it is possible to use the mouse-wheel to adjust the relative depth to the current object. Additionally, it is now possible to concatenate movements: Users are able to adjust the relative depth while moving the focus to a new object.