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