bWidgets is a cross-platform widget framework with a narrow scope, designed specifically for Blender.
Note: This is not an official Blender project!
Unlike common UI toolkits, bWidgets does not contain window management, event management, graphics libraries, font management and the like. It is solely focused on core widget features: Widget types, layouts, styling, interaction.
Do not attempt to use bWidgets at this point. A lot of the core designs are still in progress.
Mission: Explore new design ideas & technology for the next decade of Blender UI development; start with a blank canvas.
The fundamental goals in relation to Blender are:
- Address long standing design issues & technical debt. Apply lessons learnt
from the current design.
- Keep good working designs!
- Enrich the UI design paradigms, don’t fight them.
- Extend UI design vocabulary & functionality: Animations, drag & drop, much improved theming, multi-line widgets, custom widgets, etc.
- Professional grounds for UI development: Clear specifications, comprehensive documentation, hugely increased testability, Blender UI builder app, debugging tools, ...
- A reusable widget toolkit for the Blender design, adoptable by other Blender services for a unified look & feel (standalone).
- Support exposing the entire toolkit to the Blender Python API.
- Bring fun back to Blender UI coding!
- Documentation landing page (subpages contain source-code documentation).
- High level code design documentation.
- Build instructions.
Components of this repository have different licenses:
- bWidgets itself is licensed under the GNU General Public License (GPL) 2 or
later.
- This is a temporary solution because it contains snippets from GPL licensed Blender code.
- Further contributions will be dual-licensed under GPL2 (or later) and the MIT license (see LICENSE.txt) until further notice. It is planned to switch to license that allows usage in non-GPL projects too, e.g. an MIT-like license.
- The demo application is permanently licensed under GPL2 or later.
- The demo application further includes source files of third party libraries together with their respective license files.
- Everything else (namely documentation and unit tests) is licenced under the MIT license.
bWidgets itself only requires a compiler supporting the C++11 ABI.
The demo application however requires Freetype2 and OpenGL 3.3 to compile/run.
It has been succesfully build on a number of macOS, Linux and Windows systems.