use crate::knob::KnobSpec;
pub fn builder_property_groups() -> Vec<(&'static str, KnobSpec)> {
vec![
("Framework", framework()),
("Gestures", gestures()),
("Accessibility", accessibility()),
]
}
fn framework() -> KnobSpec {
KnobSpec::new()
.opt_text("visible_when", "Visible when", None)
.opt_bool("focusable", "Focusable", None)
.opt_i32("tab_index", "Tab index", None, 0, 999)
.opt_text("cursor", "Cursor", None)
.opt_bool("clips_children_on", "Clips children", None)
.opt_bool("event_pass_through", "Event pass-through", None)
.opt_bool("hit_transparent", "Hit transparent", None)
}
fn gestures() -> KnobSpec {
KnobSpec::new()
.opt_text("accept_tap_buttons", "Tap buttons", None)
.opt_text("accept_double_tap_buttons", "Double-tap buttons", None)
.opt_text("accept_triple_tap_buttons", "Triple-tap buttons", None)
.opt_text("accept_long_press_buttons", "Long-press buttons", None)
}
fn accessibility() -> KnobSpec {
KnobSpec::new()
.opt_text("access_label", "Label", None)
.opt_text("access_description", "Description", None)
.opt_text("access_hint", "Hint", None)
.opt_text("access_value", "Value", None)
.opt_text("access_identifier", "Identifier", None)
.opt_bool("access_hidden", "Hidden", None)
.opt_bool("access_disabled", "Disabled", None)
.opt_text("access_role", "Role", None)
.opt_text("access_live", "Live", None)
.opt_text("access_current", "Current", None)
.opt_text("access_has_popup", "Has popup", None)
.opt_text("access_orientation", "Orientation", None)
.opt_f32("access_numeric_value", "Numeric value", None, -1.0e6, 1.0e6)
.opt_f32("access_numeric_step", "Numeric step", None, -1.0e6, 1.0e6)
.opt_text("access_shortcut_literal", "Shortcut", None)
.opt_text("access_shortcut_id", "Shortcut id", None)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn groups_are_non_empty_and_named() {
let groups = builder_property_groups();
assert_eq!(groups.len(), 3);
for (label, spec) in &groups {
assert!(!label.is_empty());
assert!(
!spec.declarations().is_empty(),
"group {label} has no knobs"
);
}
}
#[test]
fn knob_ids_are_widgetbuilder_method_names() {
let fw = framework();
assert!(fw.get("focusable").is_some());
assert!(fw.get("tab_index").is_some());
assert!(fw.get("visible_when").is_some());
assert!(accessibility().get("access_label").is_some());
}
}