sequoia-view 0.1.0

Sequoia GUI framework — view tree and runtime
Documentation
use crate::runtime::ElementId;

#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum AccessibleRole {
    Button,
    Text,
    TextField,
    Checkbox,
    Switch,
    Slider,
    List,
    ListItem,
    Table,
    Tree,
    TreeItem,
    Dialog,
    Menu,
    MenuItem,
    Progress,
    Image,
    Group,
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Accessible {
    pub role: AccessibleRole,
    pub label: String,
}

impl Accessible {
    pub fn new(role: AccessibleRole, label: impl Into<String>) -> Self {
        Self {
            role,
            label: label.into(),
        }
    }
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AccessibleNode {
    pub element: ElementId,
    pub role: AccessibleRole,
    pub label: String,
    pub children: Vec<AccessibleNode>,
}

impl AccessibleNode {
    pub fn flat_labels(&self) -> Vec<String> {
        let mut out = vec![self.label.clone()];
        for c in &self.children {
            out.extend(c.flat_labels());
        }
        out
    }
}