zng_app::widget::inspector

Trait WidgetInfoInspectorExt

source
pub trait WidgetInfoInspectorExt {
    // Required methods
    fn inspector_info(&self) -> Option<Arc<InspectorInfo>>;
    fn can_inspect(&self) -> bool;
    fn inspect_child<P: InspectWidgetPattern>(
        &self,
        pattern: P,
    ) -> Option<WidgetInfo>;
    fn inspect_descendant<P: InspectWidgetPattern>(
        &self,
        pattern: P,
    ) -> Option<WidgetInfo>;
    fn inspect_ancestor<P: InspectWidgetPattern>(
        &self,
        pattern: P,
    ) -> Option<WidgetInfo>;
    fn inspect_property<P: InspectPropertyPattern>(
        &self,
        pattern: P,
    ) -> Option<&dyn PropertyArgs>;
    fn parent_property(&self) -> Option<(PropertyId, usize)>;
}
Expand description

Extensions methods for WidgetInfo.

Required Methods§

source

fn inspector_info(&self) -> Option<Arc<InspectorInfo>>

Reference the builder that was used to generate the widget, the builder generated items and the widget info context.

Returns None if not build with the "inspector" feature, or if the widget instance was not created using the standard builder.

source

fn can_inspect(&self) -> bool

If a inspector_info is defined for the widget.

source

fn inspect_child<P: InspectWidgetPattern>( &self, pattern: P, ) -> Option<WidgetInfo>

Returns the first child that matches.

source

fn inspect_descendant<P: InspectWidgetPattern>( &self, pattern: P, ) -> Option<WidgetInfo>

Returns the first descendant that matches.

§Examples

Example searches for a “button” descendant, using a string search that matches the end of the WidgetType::path and an exact widget mod that matches the WidgetType::type_id.

mod widgets {
    use zng_app::widget::*;
     
    #[widget($crate::widgets::Button)]
    pub struct Button(base::WidgetBase);
}

let fuzzy = info.inspect_descendant("button");
let exact = info.inspect_descendant(std::any::TypeId::of::<crate::widgets::Button>());
source

fn inspect_ancestor<P: InspectWidgetPattern>( &self, pattern: P, ) -> Option<WidgetInfo>

Returns the first ancestor that matches.

source

fn inspect_property<P: InspectPropertyPattern>( &self, pattern: P, ) -> Option<&dyn PropertyArgs>

Search for a property set on the widget.

§Examples

Search for a property by name, and then downcast its value.

fn inspect_foo(info: WidgetInfo) -> Option<bool> {
    info.inspect_property("foo")?.value(0).as_any().downcast_ref().copied()
}
source

fn parent_property(&self) -> Option<(PropertyId, usize)>

Gets the parent property that has this widget as an input.

Returns Some((PropertyId, member_index)).

Object Safety§

This trait is not object safe.

Implementors§