~tm85/lintuini

ref: 44f71ca723f3b73981a343799b1f64dc6a9e2aec lintuini/src/widgets/frame.rs -rw-r--r-- 1.1 KiB
44f71ca7TerraMaster85 feat: misguided 1st attempt a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use super::widget::{Widget, DisplayMode, WidgetSize, WidgetPos};
use crate::error;

pub struct Frame {
    size: WidgetSize,
    pos: WidgetPos,
    display_mode: DisplayMode,
    children: Vec<Box<dyn Widget>>,
}

impl Widget for Frame {
    fn set_size(&mut self, new_size: WidgetSize) -> Result<(), error::WitError>{
        self.size = new_size;
        Ok(())
    }
    fn size(&self) -> WidgetSize {
        self.size
    }

    fn add_child(&mut self, child: Box<dyn Widget>) -> Result<(), error::WitError>{
        self.children.push(child);
        Ok(())
    }
    fn children(&self) -> &[Box<dyn Widget>] {
        self.children.as_slice()
    }

    fn set_pos(&mut self, new_pos: WidgetPos) -> Result<(), error::WitError>{
        self.pos = new_pos;
        Ok(())
    }
    fn pos(&self) -> WidgetPos {
        self.pos
    }
    
    fn set_display_mode(&mut self, new_display_mode: DisplayMode) -> Result<(), error::WitError>{
        self.display_mode = new_display_mode;
        Ok(())
    }
    fn display_mode(&self) -> DisplayMode {
        self.display_mode
    }
}