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>

source

pub fn default_font(&self) -> SharedFont

Returns default font instance used by the UI.

source

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.

source

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.

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.

source

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.

source

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.

source

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.

source

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.

source

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>

source§

fn from(ui: &'a mut UserInterface) -> Self

Converts to this type from the input type.
source§

impl<'a> Index<Handle<UiNode>> for BuildContext<'a>

§

type Output = UiNode

The returned type after indexing.
source§

fn index(&self, index: Handle<UiNode>) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<'a> IndexMut<Handle<UiNode>> for BuildContext<'a>

source§

fn index_mut(&mut self, index: Handle<UiNode>) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more

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> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> FieldValue for Twhere T: 'static,

source§

fn as_any(&self) -> &(dyn Any + 'static)

Casts self to a &dyn Any
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V