guiver 0.0.1

GUI programming with Piet/Druid Shell
Documentation

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 Application trait
  • an application is in full control:
    • it handles widget events in Application::handle_widget_event()
  • widgets implement the Widget trait
  • the WidgetManager owns all widgets

Todo

  • Layout:
    • multiple single child layout widgets or only one Container?
    • Layout Widgets need to:
      • get the Rects of all its children
        • WidgetRequest?
      • set the Rects of all its children
        • WidgetCommand
        • what about Labels? their minimum rectangle is driven by the text and the font
          • tight?
      • PaintBrush
  • implement 7GUIs
    • "Counter"
      • implement Button, Row, Column, Spacer, Padding
    • "Temperature Converter"
      • implement TextEdit
    • "Flight Booker"
      • implement DropdownBox
    • "Timer"
    • "CRUD"
    • "Circle Drawer"
    • "Cells"
  • allow a "no loop" optimization for static applications that only render once
  • add Python bindings
  • provide a WebAssembly demo

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