zng::widget::builder

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, it 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, intrinsic nodes and a custom builder.

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

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<I>( &mut self, group: NestGroup, name: &'static str, intrinsic: impl FnOnce(Box<dyn UiNodeBoxed>) -> I + Send + Sync + 'static, )
where I: UiNode,

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<I>( &mut self, position: NestPosition, name: &'static str, intrinsic: impl FnOnce(Box<dyn UiNodeBoxed>) -> I + Send + Sync + 'static, )
where I: UiNode,

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<Box<dyn VarBoxed<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, ) -> Box<dyn VarBoxed<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, ) -> Box<dyn VarBoxed<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<Box<dyn UiNodeBoxed>>

Flags the property as captured and get the input node.

source

pub fn capture_ui_node_or_else<F>( &mut self, property_id: PropertyId, or_else: impl FnOnce() -> F, ) -> Box<dyn UiNodeBoxed>
where F: 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_list( &mut self, property_id: PropertyId, ) -> Option<Box<dyn UiNodeListBoxed>>

Flags the property as captured and get the input list.

source

pub fn capture_ui_node_list_or_else<F>( &mut self, property_id: PropertyId, or_else: impl FnOnce() -> F, ) -> Box<dyn UiNodeListBoxed>
where F: UiNodeList,

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

source

pub fn capture_ui_node_list_or_empty( &mut self, property_id: PropertyId, ) -> Box<dyn UiNodeListBoxed>

Flags the property as captured and get the input list, or returns an empty list.

source

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

Flags the property as captured and downcast the input handler.

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
§

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

§

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

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

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

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.

§

impl<T> Instrument for T

§

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

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

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
§

impl<T> Pointable for T

§

const ALIGN: usize = _

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

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

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
§

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

§

impl<T> MaybeSendSync for T