Crate widgetry[][src]

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

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.

Macros

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

Structs

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).

Doesn’t do anything by itself, just used for widgetsing. Something else reaches in, asks for the ScreenRectangle to use.

A mutable builder for a group of colored polygons.

Similar to [Widget::row]/[Widget::column], but for GeomBatchs instead of [Widget]s, and follows a builder pattern

A stylable UI component builder which presents vector graphics from an ImageSource.

An f64 rounded to 4 decimal places. Useful with Spinners, to avoid values accumulating small drift.

ScreenDims is in units of logical pixels, as opposed to physical pixels.

ScreenPt is in units of logical pixels, as opposed to physical pixels.

ScreenRectangle is in units of logical pixels, as opposed to physical pixels.

Customize how widgetry works. Most of these settings can’t be changed after starting.

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.

Enums

When an action happens through a button-like widget, what data is plumbed back?

Rules for how content should stretch to fill its bounds

Before State::draw is called, draw something else.

The visual

The result of a Panel handling an event

A way to transform all colors in a GeomBatch.

When a state responds to an event, it can specify some way to manipulate the stack of states.

Constants

Traits

Any data that should last the entire lifetime of the application should be stored in the struct implementing this trait.

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.

A temporary state of an application. There’s a stack of these, with the most recent being the active one.

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

Type Definitions