A node based UI widgets library made in VL for Skia rendering.
The library includes:
- A collection of ready to use widgets to handle the most common value types in vvvv Gamma
- A set of Layout nodes to easily arrange your widgets and create responsive UIs
- A bunch of utilities and help patches
To use the latest stable version:
-
Go to Gamma's Quad menu > Manage Nugets > Commandline and type:
nuget install VL.Elementa
-
Press Enter and wait the ending of the installation process
- Clone the repository
- Build the solution located in the
src
folder inRelease
mode. - You can then start contributing to the lib.
Read this wiki page to get specific guidelines on how to contribute new widgets.
MIT License - You're free to use VL.Elementa in your creative & commercial projects.
- Massive documentation update : many new help patches, pin and nodes descriptions
- New widgets :
- DropdownGrid
- DropdownGridEnum
- IntegerPolar
- ValuePolar
- IntegerPolarUpDown
- New StylePresets : readymade stylesheets you can plug to your Elementa graph. Contribute your own!
- AnyHovered : tells you if any widget of your graph is hovered. Comes with its help patch
- Changed pin names in Layout nodes.
Inherit Size From Children
and all similar names are nowAuto Size
- Masked irrelevant pins for some Layout nodes
- Layout nodes now have an optionnal pin to that draws a helper stroke to visualize them more easily
- Boolean widgets (bang, toggle, press) now have a new default drawer making it more obvious if they're true or not
- Layer Objects are now stroked when selected
- NEW Style system. there's no StyleSheet property anymore in IElementum interface (everything gets managed by the Styleable component, already implemented within every widget)
- NEW "Selector" utility library to validate conditions within an entity-component tree graph (used for the style system)
- NEW css file parser (builds an Elementa StyleSheet)
- NEW ClientBounds, ElementaContextReceiver and UndoRedo utility widget nodes
- NEW DisplayText optional input pin for Toggle, Bang, Press widgets
- NEW sticky behaviour for slider widget (and all widgets that internally use slider behaviour)
- NEW Formattable component
- NEW Grid layout node
- NEW Root architecture with pluggable component processors
- NEW EditBehaviour options for some widgets: AbsoluteEditing/RelativeEditing/StickyEditing
- FIX in ToSkiaLayer (in Root): disabled skia rendering in the first frame to avoid UI flickering (due to frame delays in retrieving the bounds from renderer)
- FIX in IntegerUpDown behaviour (wasn't updating Min and Max values in idle)
- Refactoring of Layour nodes: proper cached mechanism that improves a lot performances and better modularization of the internal components.
- Layout nodes come just with a Spectral version (no pingroup version anymore)
- All widgets now come with a Spectral version (that expect a component spread as input, not using pingroup)
- Styleable component now as advanced, not meant to be plugged to the widgets to customize their style
- Taggable component reworked: now it simply contains an
HashSet<Object>
. it comes also as a (Spectral Advanced) version, with no pingroup. - Attributable component got refreshed as well: attributes come as
Dictionary<String, Object>
- renamed Typeable component to Focusable
- Rotary widget now internally made with a slider (since they share the same behaviour).
- Another small fix in Panel
- Panel fix
- Cleanup in the node browser
- some fixes
- New LayerElementum widget
- New Drawable component
- Drawing performance improved
- New Image node
- Fixes in help patches
- New Panel node
- New Folder node
- New Style utility nodes
- New Tooltip component
- Added GetStyleSheet operation in IElementum
- Added GetComponentsVersion in IElementum
- Changed GetDirtyLayout and GetDirtyGraph operations in IElementum to GetLayoutVersion and GetGraphVersion
- Introduced ElementaContext class: every widget have access to the graph resources
- Added SetElementaContext and SetMe operations in IElementum
- Introduced SetElementaContext and SetParent operations in IComponent: each component has now access to any resource of the graph and can easily edit its own parent widget
- Different Layout/Graph/Components changes check system
- Help patches now referencing the nuget instead of the vl file (SavingAs the patches doesn't break the reference)
- Cleaned Root node architecture
- fixed Moveable and Resizeable components behaviour in multi selection scenarios
- New componentProcessors management
- Individual help patches available for all widgets
- Added node and pin descriptions on all widgets
- Reorganized help patches
- Deleted TextFieldMultiline, which is now TextField
- Some minor fixes
- New nodes to push widgets to Overlay
- Renamed the library to VL.Elementa
- New widget architecture : value properties and widget manager are now generic
- completely reworked StyleSheet management
- Style can be provided to a widget with the new Styleable component
- Orientation, multi-components widgets and specific attributes are now handled by components (was in widget managers before)
- Widgets can now have custom drawers
- Layout nodes (stack, columns, etc) now provide more options to play with, allowing more precise layout
- Added Padding to layout nodes
- A widget's ValueProperty can be provided from outside, allowing several widgets to share the same ValueProperty
- mapping between external ValueProperties of different types
- New help patches explaining custom drawers, shared value properties and Moveable/Resizeable components
- First version of the architecture