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 write_advanced_props(
    widget: &mut dyn Widget,
    property_name: &str,
    value: CapabilityValue,
) -> Result<(), CapabilityAccessError> {
    match widget.kind() {
        WidgetKind::TabBar => {
        if let Some(tab_bar) = widget_as_mut::<TabBar>(widget) {
        match property_name {
        "current_index" => {
        tab_bar.set_current_index(expect_usize(value)?);
        Ok(())
        }
        "closable" => {
        tab_bar.set_closable(expect_bool(value)?);
        Ok(())
        }
        "movable" => {
        tab_bar.set_movable(expect_bool(value)?);
        Ok(())
        }
        "tab_min_width" => {
        tab_bar.set_tab_min_width(expect_usize(value)? as u32);
        Ok(())
        }
        "tab_max_width" => {
        tab_bar.set_tab_max_width(expect_usize(value)? as u32);
        Ok(())
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        }
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        WidgetKind::Calendar => {
        if let Some(calendar) = widget_as_mut::<Calendar>(widget) {
        match property_name {
        "selected_date" => {
        calendar.set_selected_date(expect_naive_date(value)?);
        Ok(())
        }
        "minimum_date" => {
        calendar.set_minimum_date(expect_naive_date(value)?);
        Ok(())
        }
        "maximum_date" => {
        calendar.set_maximum_date(expect_naive_date(value)?);
        Ok(())
        }
        "first_day_of_week" => {
        calendar.set_first_day_of_week(expect_weekday(value)?);
        Ok(())
        }
        "grid_visible" => {
        calendar.set_grid_visible(expect_bool(value)?);
        Ok(())
        }
        "navigation_bar_visible" => {
        calendar.set_navigation_bar_visible(expect_bool(value)?);
        Ok(())
        }
        "horizontal_header_visible" => {
        calendar.set_horizontal_header_visible(expect_bool(value)?);
        Ok(())
        }
        "vertical_header_visible" => {
        calendar.set_vertical_header_visible(expect_bool(value)?);
        Ok(())
        }
        "date_format" => {
        calendar.set_date_format(expect_string(value)?);
        Ok(())
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        }
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        WidgetKind::DatePicker => {
        if let Some(date_edit) = widget_as_mut::<DateEdit>(widget) {
        match property_name {
        "date" => {
        date_edit.set_date(expect_date(value)?);
        Ok(())
        }
        "minimum_date" => {
        date_edit.set_minimum_date(expect_date(value)?);
        Ok(())
        }
        "maximum_date" => {
        date_edit.set_maximum_date(expect_date(value)?);
        Ok(())
        }
        "display_format" => {
        date_edit.set_display_format(expect_string(value)?);
        Ok(())
        }
        "calendar_popup" => {
        date_edit.set_calendar_popup(expect_bool(value)?);
        Ok(())
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        }
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        WidgetKind::TimePicker => {
        if let Some(time_edit) = widget_as_mut::<TimeEdit>(widget) {
        match property_name {
        "time" => {
        time_edit.set_time(expect_time(value)?);
        Ok(())
        }
        "minimum_time" => {
        time_edit.set_minimum_time(expect_time(value)?);
        Ok(())
        }
        "maximum_time" => {
        time_edit.set_maximum_time(expect_time(value)?);
        Ok(())
        }
        "display_format" => {
        time_edit.set_display_format(expect_string(value)?);
        Ok(())
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        }
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        WidgetKind::RibbonBar => {
        if let Some(ribbon_bar) = widget_as_mut::<RibbonBar>(widget) {
        match property_name {
        "current_tab" => {
        ribbon_bar.set_current_tab(expect_usize(value)?);
        Ok(())
        }
        "expanded" => {
        ribbon_bar.set_expanded(expect_bool(value)?);
        Ok(())
        }
        "minimized" => {
        ribbon_bar.set_minimized(expect_bool(value)?);
        Ok(())
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
        }
        } else {
        Err(CapabilityAccessError::UnsupportedOnWidget)
        }
        }
        _ => Err(CapabilityAccessError::UnsupportedOnWidget),
    }
}