guiver
An experiment in simple GUI programming with Rust:
- Piet is used for rendering
- (multipass) immediate mode rendering is used, inspired by egui
- but also retained mode widgets with message passing are provided, inspired by Tcl/Tk
Notes
- an application implements the
Applicationtrait - an application is in full control:
- it handles widget events in
Application::handle_widget_event()
- it handles widget events in
- widgets implement the
Widgettrait - the
WidgetManagerowns all widgets
Todo
- Layout:
- multiple single child layout widgets or only one
Container? - Layout Widgets need to:
- get the
Rects of all its childrenWidgetRequest?
- set the
Rects of all its childrenWidgetCommand- what about
Labels? their minimum rectangle is driven by the text and the fonttight?
-
PaintBrush
- get the
- multiple single child layout widgets or only one
- implement 7GUIs
- "Counter"
- implement
Button,Row,Column,Spacer,Padding
- implement
- "Temperature Converter"
- implement
TextEdit
- implement
- "Flight Booker"
- implement
DropdownBox
- implement
- "Timer"
- "CRUD"
- "Circle Drawer"
- "Cells"
- "Counter"
- allow a "no loop" optimization for static applications that only render once
- add Python bindings
- provide a WebAssembly demo