Crate widgetry

Source
Expand description

§Widgets

If none of these do what you need, implementing a new WidgetImpl isn’t tough.

TODO inline pictures of some of these

  • Autocomplete - select predefined value by combining text entry with menus
  • Button - clickable buttons with keybindings and tooltips
  • Toggle - checkboxes, switches, and other toggles
  • CompareTimes - a scatter plot specialized for comparing times
  • DragDrop - a reorderable row of draggable cards
  • DrawWithTooltips - draw static geometry, with mouse tooltips in certain regions
  • Dropdown - a button that expands into a menu
  • FanChart - visualize a range of values over time
  • Filler - just carve out space in the layout for something else
  • JustDraw (argh private) - just draw text, GeomBatches, SVGs
  • LinePlot - visualize 2 variables with a line plot
  • Menu - select something from a menu, with keybindings
  • PersistentSplit - a button with a dropdown to change its state
  • ScatterPlot - visualize 2 variables with a scatter plot
  • Slider - horizontal and vertical sliders
  • Spinner - numeric input with up/down buttons
  • table::Table - rows and columns, supporting filtering and pagination
  • TextBox - single line text entry

Re-exports§

pub use crate::tools::Cached;

Modules§

app_state 🔒
A widgetry application splits its state into two pieces: global shared state that lasts for the entire lifetime of the application, and a stack of smaller states, only one of which is active at a time. For example, imagine an application to view a map. The shared state would include the map and pre-rendered geometry for it. The individual states might start with a splash screen or menu to choose a map, then a map viewer, then maybe a state to drill down into pieces of the map.
assets 🔒
backend 🔒
backend_glow 🔒
backend_glow_native 🔒
canvas 🔒
color 🔒
drawing 🔒
event 🔒
event_ctx 🔒
geom 🔒
input 🔒
mapspace
runner 🔒
screen_geom 🔒
style 🔒
svg 🔒
table
text 🔒
tools
widgets 🔒

Macros§

include_labeled_bytes
Like std::include_bytes!, but also returns its argument, the relative path to the bytes

Structs§

Autocomplete
ButtonBuilder
ButtonStyle
Canvas
CanvasSettings
Choice
Color
CompareTimes
DragDrop
DrawWithTooltips
Drawable
Geometry that’s been uploaded to the GPU once and can be quickly redrawn many times. Create by creating a GeomBatch and calling ctx.upload(batch).
EdgeInsets
EventCtx
FanChart
Filler
Doesn’t do anything by itself, just used for widgetsing. Something else reaches in, asks for the ScreenRectangle to use.
GeomBatch
A mutable builder for a group of colored tessellated polygons.
GeomBatchStack
Similar to [Widget::row]/[Widget::column], but for GeomBatchs instead of [Widget]s, and follows a builder pattern
GfxCtx
Image
A stylable UI component builder which presents vector graphics from an ImageSource.
LinePlot
LinearGradient
Menu
Panel
PanelBuilder
PersistentSplit
PlotOptions
Prerender
RoundedF64
An f64 rounded to 4 decimal places. Useful with Spinners, to avoid values accumulating small drift.
ScatterPlot
ScreenDims
ScreenDims is in units of logical pixels, as opposed to physical pixels.
ScreenPt
ScreenPt is in units of logical pixels, as opposed to physical pixels.
ScreenRectangle
ScreenRectangle is in units of logical pixels, as opposed to physical pixels.
Series
Settings
Customize how widgetry works. Most of these settings can’t be changed after starting.
Slider
Spinner
Stash
An invisible widget that stores some arbitrary data on the Panel. Users of the panel can read and write the value. This is one method for “returning” data when a State completes.
Style
TabController
Text
TextBox
TextSpan
Texture
Toggle
UserInput
Warper
Widget
WidgetOutput

Enums§

ClickOutcome
When an action happens through a button-like widget, what data is plumbed back?
ContentMode
Rules for how content should stretch to fill its bounds
ControlState
CornerRounding
DrawBaselayer
Before State::draw is called, draw something else.
Event
Fill
Font
HorizontalAlignment
ImageSource
The visual
Key
MultiKey
Outcome
The result of a Panel handling an event
PanelDims
RewriteColor
A way to transform all colors in a GeomBatch.
StackAlignment
StackAxis
Transition
When a state responds to an event, it can specify some way to manipulate the stack of states.
UpdateType
VerticalAlignment

Constants§

DEFAULT_CORNER_RADIUS

Traits§

SharedAppState
Any data that should last the entire lifetime of the application should be stored in the struct implementing this trait.
SimpleState
Many states fit a pattern of managing a single panel, handling mouseover events, and other interactions on the map. Implementing this instead of State reduces some boilerplate.
State
A temporary state of an application. There’s a stack of these, with the most recent being the active one.
TextExt
WidgetImpl
Create a new widget by implementing this trait. You can instantiate your widget by calling Widget::new(Box::new(instance of your new widget)), which gives you the usual style options.

Functions§

Line
hotkeys
lctrl
run

Type Aliases§

OutlineStyle