orbtk_utils/
visibility.rs

1/// Is used to control the visibility of a widget
2#[derive(Debug, Copy, Clone, PartialEq)]
3pub enum Visibility {
4    /// The widget is visible.
5    Visible,
6
7    /// The widget will not be displayed, isn't taken into account in the
8    /// layout pipeline. It **does** consume memory in the render buffer.
9    Hidden,
10
11    /// The widget isn't displayed but `is` rendered. Thus it **does
12    /// not** consume space in the layout.
13    Collapsed,
14}
15
16impl Default for Visibility {
17    fn default() -> Visibility {
18        Visibility::Visible
19    }
20}
21
22// --- Conversions ---
23
24impl From<&str> for Visibility {
25    fn from(t: &str) -> Self {
26        match t {
27            "Hidden" | "hidden" => Visibility::Hidden,
28            "Collapsed" | "collapsed" => Visibility::Collapsed,
29            _ => Visibility::Visible,
30        }
31    }
32}
33
34#[cfg(test)]
35mod tests {
36    use super::*;
37
38    #[test]
39    fn test_into() {
40        let visibility: Visibility = "Hidden".into();
41        assert_eq!(visibility, Visibility::Hidden);
42
43        let visibility: Visibility = "hidden".into();
44        assert_eq!(visibility, Visibility::Hidden);
45
46        let visibility: Visibility = "Collapsed".into();
47        assert_eq!(visibility, Visibility::Collapsed);
48
49        let visibility: Visibility = "collapsed".into();
50        assert_eq!(visibility, Visibility::Collapsed);
51
52        let visibility: Visibility = "Visible".into();
53        assert_eq!(visibility, Visibility::Visible);
54
55        let visibility: Visibility = "visible".into();
56        assert_eq!(visibility, Visibility::Visible);
57
58        let visibility: Visibility = "other".into();
59        assert_eq!(visibility, Visibility::Visible);
60    }
61}