rust_widgets 1.0.0

Pure Rust cross-platform native GUI library with hardware-adaptive rendering, 60+ widgets, touch/gesture support, i18n, and SVG-pipeline-accurate output
#[cfg(not(feature = "mini"))]
pub fn read_container_props(
    widget: &dyn Widget,
    property_name: &str,
) -> Result<CapabilityValue, CapabilityAccessError> {
    match widget.kind() {
        WidgetKind::Splitter => match property_name {
        "orientation" => {
        if let Some(splitter) = widget_as::<Splitter>(widget) {
        Ok(CapabilityValue::String(
        orientation_to_str(splitter.orientation()).to_string(),
        ))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "pane_count" => {
        if let Some(splitter) = widget_as::<Splitter>(widget) {
        Ok(CapabilityValue::UInt(splitter.pane_count() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::Toolbox => match property_name {
        "item_count" => {
        if let Some(tb) = widget_as::<ToolBox>(widget) {
        Ok(CapabilityValue::UInt(tb.count() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "current_index" => {
        if let Some(tb) = widget_as::<ToolBox>(widget) {
        Ok(CapabilityValue::UInt(tb.current_index() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "orientation" => {
        if let Some(tb) = widget_as::<ToolBox>(widget) {
        Ok(CapabilityValue::String(orientation_to_str(tb.orientation()).to_string()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::ScrollArea => match property_name {
        "widget_resizable" => {
        if let Some(sa) = widget_as::<ScrollArea>(widget) {
        Ok(CapabilityValue::Bool(sa.widget_resizable()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "horizontal_scroll_bar_policy" => {
        if let Some(sa) = widget_as::<ScrollArea>(widget) {
        let s = scroll_bar_policy_to_str(sa.horizontal_scroll_bar_policy());
        Ok(CapabilityValue::String(s.to_string()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "vertical_scroll_bar_policy" => {
        if let Some(sa) = widget_as::<ScrollArea>(widget) {
        let s = scroll_bar_policy_to_str(sa.vertical_scroll_bar_policy());
        Ok(CapabilityValue::String(s.to_string()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::TabWidget => match property_name {
        "tab_count" => {
        if let Some(tw) = widget_as::<TabWidget>(widget) {
        Ok(CapabilityValue::UInt(tw.count() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "current_index" => {
        if let Some(tw) = widget_as::<TabWidget>(widget) {
        Ok(CapabilityValue::UInt(tw.current_index() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::StackedWidget => match property_name {
        "widget_count" => {
        if let Some(sw) = widget_as::<StackedWidget>(widget) {
        Ok(CapabilityValue::UInt(sw.widget_count() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "current_index" => {
        if let Some(sw) = widget_as::<StackedWidget>(widget) {
        Ok(CapabilityValue::UInt(sw.current_index() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::CollapsiblePane => match property_name {
        "title" => {
        if let Some(cp) = widget_as::<CollapsiblePane>(widget) {
        Ok(CapabilityValue::String(cp.title().to_string()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "collapsed" => {
        if let Some(cp) = widget_as::<CollapsiblePane>(widget) {
        Ok(CapabilityValue::Bool(cp.is_collapsed()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::DockWidget => match property_name {
        "title" => {
        if let Some(dw) = widget_as::<DockWidget>(widget) {
        Ok(CapabilityValue::String(dw.title().to_string()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "floating" => {
        if let Some(dw) = widget_as::<DockWidget>(widget) {
        Ok(CapabilityValue::Bool(dw.is_floating()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::MdiArea => match property_name {
        "subwindow_count" => {
        if let Some(ma) = widget_as::<MdiArea>(widget) {
        Ok(CapabilityValue::UInt(ma.sub_window_count() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "active_subwindow" => {
        if let Some(ma) = widget_as::<MdiArea>(widget) {
        match ma.active_sub_window() {
        Some(id) => Ok(CapabilityValue::UInt(id)),
        None => Ok(CapabilityValue::Null),
        }
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "view_mode" => {
        if let Some(ma) = widget_as::<MdiArea>(widget) {
        let s = match ma.view_mode() {
        crate::widget::container_widgets::mdiarea::ViewMode::SubWindowView => {
        "sub_window_view"
        }
        crate::widget::container_widgets::mdiarea::ViewMode::TabbedView => "tabbed",
        };
        Ok(CapabilityValue::String(s.to_string()))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::TileView => match property_name {
        "current_page" => {
        if let Some(w) = widget_as::<TileView>(widget) {
        Ok(CapabilityValue::UInt(w.current_page() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        "page_count" => {
        if let Some(w) = widget_as::<TileView>(widget) {
        Ok(CapabilityValue::UInt(w.page_count() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        WidgetKind::PagerPageView => match property_name {
        "current_page" => {
        if let Some(w) = widget_as::<PagerPageView>(widget) {
        Ok(CapabilityValue::UInt(w.current_page() as u64))
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        },
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
    }
}