I didn't update the imbricable project more than one year ago. I can say I did have the time due to my PhD, but it's maybe a lie. In any event, I want to work again on this project. Currently, I am implementing a second version of this project and I try to create a strong base. a versatile software as that one I did work during my PhD: Sofa.
So I present you the project: the bricks and 3D interfaces are not yet implemented, there is just a mechanism for data management. So the basic object is a member of a tree and it is composed of many attributes.
There are three types of attribute:
- Data may be an integer a string or another thing.
- Links are an access to an another Object. It is another way to use complex data. For example: an image may be stored as a list of pixels, but the program needs to know the size of the image to do image processing or other stuff.
- Processing is an access to a function. For example: apply a Gaussian blur to an image.
The useful objects are limited to the widgets and load/save mechanism:
- The display of an object (1),
- The display of a tree of objects (2). A click on an object of (2) may change the display (1) or a drop from (2) to (1) can create a link between objects,
- The display of the factory (3). A drop from (3) to (2) add an other object in the displayed tree (objects may not be accepted depending condition),
- A window which contains widgets. For examples: (1) (2) (3),
- A dock widget, a widget container which may be part of the window.
- A module loader. Open a dynamic library (*.dll or *.so) with many objects (tools or data containers).
- A reader and a writer of 'Imbricable' files. The files are written in XML.
This project is available on GitHub. I have developed on Linux, nevertheless it theoretically works on Windows or Mac (not tried). The Qt framework is used (graphical user interface) and smart pointers of the Boost library. Finally, makefiles are generated by CMake.
Currently, I work on the mechanism to save files (to add link information) and a launcher of projects.