In need of a declarative UI framework with data binding, I did a proof-of-concept project that I want to share with the Juce community. It makes use of concepts I have been working with for decades. Some of the concepts originate from Smalltalk, although the ported code is clean Juce-style C++.
To keep this introduction short, I’ll point you directly to a very brief whitepaper (3 pages) and the GitHub project where you can play around with the framework yourself. Be warned though, this is still rough work in progess, with objects leaking on shutdown, etc.
There are a few code snippets in the PDF, although the examples in the project pretty much speak for themselves. Here’s a few highlights as a teaser:
- Specs are XML plus auto-generated C++ for the data binding
- Layout is declarative and responsive and supports FlexBox and LayoutFrame (FlexBox not yet fully integrated, but everything is already there to add it in).
- It is possible (in theory) to include a UI Editor with your development builds that has access to all your UI’s at runtime(!)
- Cool goodies inside like LayoutFrame, LayoutCursor and Metaclasses for basic reflection.
One night it struck me as fantastic, this possibility to include a UI Editor with development builds! Just imagine a small “Edit” icon on top of your windows. You could edit the UI live, save it and continue
The framework definitely supports that.
To be clear, I want this to be picked up, used, extended and enjoyed. I will definitely use it for my projects, so if some of it makes it into the Juce Universe, all the more better.