2 unstable releases

0.1.0 Jul 25, 2022
0.0.1 Jul 5, 2022

#595 in GUI

MIT/Apache

87KB
2K SLoC

guiver

GUI programming with Rust.

guiver can be used in immediate mode, which is inspired by egui. In this case it is just a thin wrapper around druid-shell for event handling/windowing and Piet for rendering.

There are retained mode widgets that can be used with the help of an optional widget manager. The widgets are decoupled from the application data via message passing, which is inspired by Tk commands and egui.

Bildschirmfoto 2022-07-25 um 19 35 35 Bildschirmfoto 2022-07-25 um 19 59 34 Bildschirmfoto 2022-07-24 um 13 41 24 Bildschirmfoto 2022-07-24 um 11 59 31 Bildschirmfoto 2022-07-24 um 11 58 56 Bildschirmfoto 2022-07-24 um 12 59 33

Backlog

  • TextInput:
    • accept paste
    • display a caret
    • arrow keys should move the caret
    • support text selection:
      • Shift + cursor movement
      • Ctrl + A
    • Ctrl+X should cut the text
    • Ctrl-C should copy the text
  • add to `Style:
    • accent_color
    • font
    • spacing
      • use it in Row CTOR?
      • use it in Padding CTOR?
  • implement 7GUIs
    • 7GUIs "Flight Booker"
      • implement DropdownBox
    • 7GUIs "Timer"
    • 7GUIs "CRUD"
    • 7GUIs "Circle Drawer"
    • 7GUIs "Cells"
  • add Redmond 31 widgets
  • WidgetManager: implement collect_garbage()
    • remove all widgets that do not have the main widget as ancestor
  • WidgetManager: add tab order
  • allow a "no loop" optimization for static applications that only render once
  • add Python bindings
  • provide native widgets?
  • provide a WebAssembly demo

See also "So you want to write a GUI framework"

Dependencies

~3.5–7MB
~127K SLoC