[−][src]Trait pixel_widgets::widget::Widget
A user interface widget.
Required methods
fn widget(&self) -> &'static str
The name of this widget, used to identify widgets of this type in stylesheets.
fn len(&self) -> usize
Should return the amount of children this widget has. Must be consistent with
visit_children()
.
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, Message>))
Applies a visitor to all childs of the widget. If an widget fails to visit it's children, the children won't
be able to resolve their stylesheet, resulting in a panic when calling size
,
hit
, event
or
draw
.
fn size(&self, style: &Stylesheet) -> (Size, Size)
Returns the (width, height)
of this widget.
The extents are defined as a Size
,
which will later be resolved to actual dimensions.
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
Draw the widget. Returns a list of Primitive
s that should be drawn.
Arguments:
layout
: the layout assigned to the widgetclip
: a clipping rect for use withPrimitive::PushClip
.
Provided methods
fn state(&self) -> StateVec
The state of this widget, used for computing the style.
If None
is returned, Node
will automatically compute a state, such as "hover" and "pressed".
fn hit(
&self,
layout: Rectangle,
clip: Rectangle,
_style: &Stylesheet,
x: f32,
y: f32
) -> bool
&self,
layout: Rectangle,
clip: Rectangle,
_style: &Stylesheet,
x: f32,
y: f32
) -> bool
Perform a hit detect on the widget. Most widgets are fine with the default implementation, but some
widgets (like Window
need to report a miss (false
) even when the queried
position is within their layout.
Arguments:
layout
: the layout assigned to the widgetclip
: a clipping rect for mouse events. Mouse events outside of this rect should be considered invalid, such as withScroll
, where the widget would not be visible outside of the currently visible rect.x
: x mouse coordinate being queriedy
: y mouse coordinate being queried
fn focused(&self) -> bool
Test the widget for focus exclusivity.
If the widget or one of it's descendants is in an exclusive focus state, this function should return true
.
In all other cases, it should return false
. When a widget is in an exclusive focus state it is
the only widget that is allowed to receive events in event
.
Widgets that intended to use this behaviour are modal dialogs, dropdown boxes, context menu's, etc.
fn event(
&mut self,
_layout: Rectangle,
_clip: Rectangle,
_style: &Stylesheet,
_event: Event,
_context: &mut Context<Message>
)
&mut self,
_layout: Rectangle,
_clip: Rectangle,
_style: &Stylesheet,
_event: Event,
_context: &mut Context<Message>
)
Handle an event. If an event changes the graphical appearance of an Widget
,
redraw
should be called to let the Ui
know that
the ui should be redrawn.
Arguments:
layout
: the layout assigned to the widgetclip
: a clipping rect for mouse events. Mouse events outside of this rect should be considered invalid, such as withScroll
, where the widget would not be visible outside of the currently visible rect.event
: the event that needs to be handledcontext
: context for submitting messages and requesting redraws of the ui.
fn node_event(
&mut self,
_layout: Rectangle,
_style: &Stylesheet,
_event: NodeEvent,
_context: &mut Context<Message>
)
&mut self,
_layout: Rectangle,
_style: &Stylesheet,
_event: NodeEvent,
_context: &mut Context<Message>
)
Implementors
impl<'a, T> Widget<'a, T> for Space
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, _: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn draw(
&mut self,
layout: Rectangle,
_clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
_clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T> Widget<'a, T> for Text
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, _: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
_: Rectangle,
_: Rectangle,
_: &Stylesheet,
_: Event,
_: &mut Context<T>
)
[src]
&mut self,
_: Rectangle,
_: Rectangle,
_: &Stylesheet,
_: Event,
_: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
_: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
_: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T, F: Send + Fn(bool) -> T> Widget<'a, T> for Toggle<'a, T, F>
[src]
fn widget(&self) -> &'static str
[src]
fn state(&self) -> StateVec
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, _: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, stylesheet: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
_: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
_: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a + Send> Widget<'a, T> for Button<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn state(&self) -> StateVec
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a + Send> Widget<'a, T> for Column<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn focused(&self) -> bool
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a + Send, F: 'a + Send + Fn(String) -> T> Widget<'a, T> for Input<'a, T, F>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, _: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, stylesheet: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a + Send, Id: 'a + Send> Widget<'a, T> for Layers<'a, T, Id>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn focused(&self) -> bool
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a + Send, S: Send + AsRef<[MenuItem<'a, T>]> + AsMut<[MenuItem<'a, T>]>> Widget<'a, T> for Menu<'a, T, S>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn hit(
&self,
layout: Rectangle,
clip: Rectangle,
_style: &Stylesheet,
x: f32,
y: f32
) -> bool
[src]
&self,
layout: Rectangle,
clip: Rectangle,
_style: &Stylesheet,
x: f32,
y: f32
) -> bool
fn focused(&self) -> bool
[src]
fn event(
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for &'a Image
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, _: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn draw(
&mut self,
layout: Rectangle,
_: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
_: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Dummy
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, _: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn draw(
&mut self,
layout: Rectangle,
_: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
_: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Frame<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Panel<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn hit(
&self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
x: f32,
y: f32
) -> bool
[src]
&self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
x: f32,
y: f32
) -> bool
fn focused(&self) -> bool
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Progress<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Row<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn len(&self) -> usize
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn focused(&self) -> bool
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
stylesheet: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Scroll<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn focused(&self) -> bool
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: 'a> Widget<'a, T> for Window<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, _: &Stylesheet) -> (Size, Size)
[src]
fn hit(
&self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet,
x: f32,
y: f32
) -> bool
[src]
&self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet,
x: f32,
y: f32
) -> bool
fn focused(&self) -> bool
[src]
fn event(
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
viewport: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: DragDropId + Send, Message: 'a> Widget<'a, Message> for Drag<'a, T, Message>
[src]
fn widget(&self) -> &'static str
[src]
fn state(&self) -> StateVec
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, Message>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<Message>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<Message>
)
fn node_event(
&mut self,
layout: Rectangle,
_: &Stylesheet,
event: NodeEvent,
context: &mut Context<Message>
)
[src]
&mut self,
layout: Rectangle,
_: &Stylesheet,
event: NodeEvent,
context: &mut Context<Message>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: DragDropId, Message: 'a, OnAccept, OnDrop> Widget<'a, Message> for Drop<'a, T, Message, OnAccept, OnDrop> where
OnAccept: Send + Fn(T) -> bool,
OnDrop: Send + Fn(T, (f32, f32)) -> Message,
[src]
OnAccept: Send + Fn(T) -> bool,
OnDrop: Send + Fn(T, (f32, f32)) -> Message,
fn widget(&self) -> &'static str
[src]
fn state(&self) -> StateVec
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, Message>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<Message>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet,
event: Event,
context: &mut Context<Message>
)
fn node_event(
&mut self,
layout: Rectangle,
_: &Stylesheet,
event: NodeEvent,
context: &mut Context<Message>
)
[src]
&mut self,
layout: Rectangle,
_: &Stylesheet,
event: NodeEvent,
context: &mut Context<Message>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
impl<'a, T: Send + 'a> Widget<'a, T> for Dropdown<'a, T>
[src]
fn widget(&self) -> &'static str
[src]
fn state(&self) -> StateVec
[src]
fn len(&self) -> usize
[src]
fn visit_children(&mut self, visitor: &mut dyn FnMut(&mut Node<'a, T>))
[src]
fn size(&self, style: &Stylesheet) -> (Size, Size)
[src]
fn hit(
&self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
x: f32,
y: f32
) -> bool
[src]
&self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
x: f32,
y: f32
) -> bool
fn focused(&self) -> bool
[src]
fn event(
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
_: &Stylesheet,
event: Event,
context: &mut Context<T>
)
fn draw(
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>
[src]
&mut self,
layout: Rectangle,
clip: Rectangle,
style: &Stylesheet
) -> Vec<Primitive<'a>>