WidgetBuilding

Struct WidgetBuilding 

Source
pub struct WidgetBuilding { /* private fields */ }
Expand description

Represents a finalizing WidgetBuilder.

Widgets can register a build action to get access to this on build, build action properties also receive it as their first argument. Build actions provides an opportunity to remove or capture the final properties of a widget, after they have all been resolved and when assigns generated. Build actions can also define the child node and insert intrinsic nodes.

Implementations§

Source§

impl WidgetBuilding

Source

pub fn widget_type(&self) -> WidgetType

The widget that started this builder.

Source

pub fn has_child(&self) -> bool

If an innermost node is defined.

If false by the end of build the FillUiNode is used as the innermost node.

Source

pub fn set_child(&mut self, node: impl IntoUiNode)

Set/replace the innermost node of the widget.

Source

pub fn disable_inspector(&mut self)

Don’t insert the inspector node and inspector metadata on build.

The inspector metadata is inserted by default when feature="inspector" is active.

Source

pub fn disable_trace_widget(&mut self)

Don’t insert the widget trace node on build.

The trace node is inserted by default when feature="trace_widget" is active.

Source

pub fn disable_trace_wgt_item(&mut self)

Don’t insert property/intrinsic trace nodes on build.

The trace nodes is inserted by default when feature="trace_wgt_item" is active.

Source

pub fn push_intrinsic( &mut self, group: NestGroup, name: &'static str, intrinsic: impl FnOnce(UiNode) -> UiNode + Send + Sync + 'static, )

Insert intrinsic node, that is a core functionality node of the widget that cannot be overridden.

The name is used for inspector/trace only, intrinsic nodes are not deduplicated.

Source

pub fn push_intrinsic_positioned( &mut self, position: NestPosition, name: &'static str, intrinsic: impl FnOnce(UiNode) -> UiNode + Send + Sync + 'static, )

Insert intrinsic node with custom nest position.

The name is used for inspector/trace only, intrinsic nodes are not deduplicated.

Source

pub fn remove_property( &mut self, property_id: PropertyId, ) -> Option<BuilderProperty>

Removes the property.

Note that if the property can already be captured by another widget component.

Source

pub fn capture_property( &mut self, property_id: PropertyId, ) -> Option<BuilderPropertyRef<'_>>

Flags the property as captured and returns a reference to it.

Note that captured properties are not instantiated in the final build, but they also are not removed like unset. A property can be “captured” more then once, and if the "inspector" feature is enabled they can be inspected.

Source

pub fn capture_var<T>(&mut self, property_id: PropertyId) -> Option<Var<T>>
where T: VarValue,

Flags the property as captured and downcast the input var.

Source

pub fn capture_var_or_else<T, F>( &mut self, property_id: PropertyId, or_else: impl FnOnce() -> F, ) -> Var<T>
where T: VarValue, F: IntoVar<T>,

Flags the property as captured and downcast the input var, or calls or_else to generate a fallback.

Source

pub fn capture_var_or_default<T>(&mut self, property_id: PropertyId) -> Var<T>
where T: VarValue + Default,

Flags the property as captured and downcast the input var, returns a new one with the default value.

Source

pub fn capture_ui_node(&mut self, property_id: PropertyId) -> Option<UiNode>

Flags the property as captured and get the input node.

Source

pub fn capture_ui_node_or_else( &mut self, property_id: PropertyId, or_else: impl FnOnce() -> UiNode, ) -> UiNode

Flags the property as captured and get the input node, or calls or_else to generate a fallback node.

Source

pub fn capture_ui_node_or_nil(&mut self, property_id: PropertyId) -> UiNode

Flags the property as captured and get the input node, or UiNode::nil if the property is not found.

Source

pub fn capture_handler<A>( &mut self, property_id: PropertyId, ) -> Option<ArcHandler<A>>
where A: Clone + 'static,

Flags the property as captured and downcast the input handler.

Source

pub fn build_action_property(&mut self) -> Option<&PropertyInfo>

Identifies the current running build action property.

Source

pub fn expect_property_capture(&mut self)

If is running a build_action_property and is building with debug assertions logs an error that explains the property will not work on the widget because it was not captured.

Methods from Deref<Target = WidgetBuilderProperties>§

Source

pub fn property( &self, property_id: PropertyId, ) -> Option<BuilderPropertyRef<'_>>

Reference the property, if it is present.

Source

pub fn property_mut( &mut self, property_id: PropertyId, ) -> Option<BuilderPropertyMut<'_>>

Modify the property, if it is present.

Source

pub fn properties(&self) -> impl Iterator<Item = BuilderPropertyRef<'_>>

Iterate over the current properties.

The properties may not be sorted in the correct order if the builder has never built.

Source

pub fn properties_mut(&mut self) -> impl Iterator<Item = BuilderPropertyMut<'_>>

iterate over mutable references to the current properties.

Source

pub fn capture_value<T>(&mut self, property_id: PropertyId) -> Option<T>
where T: VarValue,

Flags the property as captured and downcast the input value.

Unlike other property kinds you can capture values in the WidgetBuilder, note that the value may not the final value, unless you are capturing on build.

Other property kinds can only be captured in WidgetBuilding as their values strongly depend on the final when blocks that are only applied after building starts.

Source

pub fn capture_value_or_else<T>( &mut self, property_id: PropertyId, or_else: impl FnOnce() -> T, ) -> T
where T: VarValue,

Flags the property as captured and downcast the input value, or calls or_else to generate the value.

Source

pub fn capture_value_or_default<T>(&mut self, property_id: PropertyId) -> T
where T: VarValue + Default,

Flags the property as captured and downcast the input value, or returns the default value.

Trait Implementations§

Source§

impl Deref for WidgetBuilding

Source§

type Target = WidgetBuilderProperties

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<WidgetBuilding as Deref>::Target

Dereferences the value.
Source§

impl DerefMut for WidgetBuilding

Source§

fn deref_mut(&mut self) -> &mut <WidgetBuilding as Deref>::Target

Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

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

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where 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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,