Struct fyrox_ui::BuildContext
source · pub struct BuildContext<'a> { /* private fields */ }
Expand description
Build context is used to decouple explicit UI state modification. Its main use is in the various widget
builders. Internally, it is just a mutable reference to the UI state. UI can be modified (add nodes, clone,
link, etc.) via build context. This is needed to explicitly highlight that it used to modify the UI
state. It is not recommended to use BuildContext for mutable access to widgets at runtime! Use message
passing to modify widgets at runtime, otherwise you will easily break invariant (inner state) of widgets.
The only place where it’s allowed to directly mutate widget’s state is at build stage (inside build
method of your widget builder).
Examples
#[derive(Clone)]
struct MyWidget {
widget: Widget,
}
struct MyWidgetBuilder {
widget_builder: WidgetBuilder,
}
impl MyWidgetBuilder {
pub fn build(self, ctx: &mut BuildContext) -> Handle<UiNode> {
let my_widget = MyWidget {
widget: self.widget_builder.build(),
};
ctx.add_node(UiNode::new(my_widget))
}
}
Implementations§
source§impl<'a> BuildContext<'a>
impl<'a> BuildContext<'a>
sourcepub fn default_font(&self) -> SharedFont
pub fn default_font(&self) -> SharedFont
Returns default font instance used by the UI.
sourcepub fn sender(&self) -> Sender<UiMessage>
pub fn sender(&self) -> Sender<UiMessage>
Returns current message sender of the UI, that is used for message passing mechanism. You can send messages for your widgets inside your builders, however this has limited use and should be avoided in the favor of explicit state modification to not overload message pipeline.
sourcepub fn add_node(&mut self, node: UiNode) -> Handle<UiNode>
pub fn add_node(&mut self, node: UiNode) -> Handle<UiNode>
Adds a new widget to the UI. See UiNode
docs for more info, UiNode::new
in particular.
sourcepub fn link(&mut self, child: Handle<UiNode>, parent: Handle<UiNode>)
pub fn link(&mut self, child: Handle<UiNode>, parent: Handle<UiNode>)
Links the child widget with the parent widget. Child widget’s position and size will be restricted by the new parent. When a widget is linked to other widget, its coordinates become relative to it parent.
sourcepub fn copy(&mut self, node: Handle<UiNode>) -> Handle<UiNode>
pub fn copy(&mut self, node: Handle<UiNode>) -> Handle<UiNode>
Copies a widget, adds it to the UI, links it to the root node of the UI and returns the handle to it.
sourcepub fn try_get_node(&self, node: Handle<UiNode>) -> Option<&UiNode>
pub fn try_get_node(&self, node: Handle<UiNode>) -> Option<&UiNode>
Tries to fetch the node by its handle. Returns None
if the handle is invalid.
sourcepub fn try_get_node_mut(&mut self, node: Handle<UiNode>) -> Option<&mut UiNode>
pub fn try_get_node_mut(&mut self, node: Handle<UiNode>) -> Option<&mut UiNode>
Tries to fetch the node by its handle. Returns None
if the handle is invalid.
sourcepub fn push_picking_restriction(&mut self, restriction: RestrictionEntry)
pub fn push_picking_restriction(&mut self, restriction: RestrictionEntry)
Pushes a new picking restriction to the picking-restriction stack. See UserInterface::push_picking_restriction
docs for more info.
sourcepub fn remove_picking_restriction(&mut self, node: Handle<UiNode>)
pub fn remove_picking_restriction(&mut self, node: Handle<UiNode>)
Explicitly removes picking restriction for the given node from the picking-restriction stack. See
UserInterface::remove_picking_restriction
docs for more info.
Trait Implementations§
source§impl<'a> From<&'a mut UserInterface> for BuildContext<'a>
impl<'a> From<&'a mut UserInterface> for BuildContext<'a>
source§fn from(ui: &'a mut UserInterface) -> Self
fn from(ui: &'a mut UserInterface) -> Self
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for BuildContext<'a>
impl<'a> !Send for BuildContext<'a>
impl<'a> !Sync for BuildContext<'a>
impl<'a> Unpin for BuildContext<'a>
impl<'a> !UnwindSafe for BuildContext<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FieldValue for Twhere
T: 'static,
impl<T> FieldValue for Twhere T: 'static,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.