I want to think about what a new GUI library for processing might need. One that could eventually become a candidate for a "core" GUI Library. So I want to keep Processing's design principles in mind. e.g. accessibility, ease of use, minimalism and extensibility.
I am thinking about the following goals:
- Spark discussion for a core GUI library
- Easy to use and setup: "easiest" of all the GUI libs for P5
- Minimal: Basic set of UI elements. clean / simple design.
- Extensible: Allow customized drawing of existing UI elements and adding completely new ones.
And here's a slew of features/ideas I have in mind:
- Support the "sketching" metaphor of processing: quickly drop in some UI elements to control parameters.
- Basic set of "most important" UI elements (what are they?): button/toggle for bangs and booleans, slider or numberbox for floats, ...
- Sensible/usable defaults for UI element parameters (position, size, ranges). it should be possible to create UI elements using empty constructors.
- Ability to change position, size and options "in-app" (using drag&drop and snap-to-grid). layout is automatically saved and restored.
- Minimal graphics (also to reduce overhead added by UI): simple color scheme (2 or 3 colors + font)
- Draw on top of everything, hotkeys to show and hide UI
- (Auto)save/restore of parameters. presets.
- Auto connect UI elements to parameters and functions via name, using reflection.
- Support for separate window for the controls
- Quick customization of: color scheme, font, default sizes, default layout
- Clean API. allow arbitrary datatypes for the state of UI elements. Event handling system at the core, like GUIDO. extensibility as core feature.
Any thoughts on this? Am I missing something critical?
Martin