pixels_graphics_lib/ui/
mod.rs1pub mod alert;
2pub mod button;
3pub mod checkbox;
4pub mod dir_panel;
5pub mod helpers;
6pub mod icon_button;
7pub mod label;
8pub mod layout;
9pub mod menu_bar;
10mod menu_item_view;
11pub mod styles;
12pub mod text_field;
13pub mod toggle_button;
14pub mod toggle_icon_button;
15pub mod tooltip;
16
17use crate::prelude::*;
18use buffer_graphics_lib::prelude::*;
19use std::fmt::Debug;
20
21pub mod prelude {
22 pub use crate::ui::alert::*;
23 pub use crate::ui::button::*;
24 pub use crate::ui::checkbox::*;
25 pub use crate::ui::dir_panel::*;
26 pub use crate::ui::helpers::*;
27 pub use crate::ui::icon_button::*;
28 pub use crate::ui::label::*;
29 pub use crate::ui::layout::column::*;
30 pub use crate::ui::layout::row::*;
31 pub use crate::ui::layout::*;
32 pub use crate::ui::menu_bar::*;
33 pub use crate::ui::styles::*;
34 pub use crate::ui::text_field::*;
35 pub use crate::ui::toggle_button::*;
36 pub use crate::ui::toggle_icon_button::*;
37 pub use crate::ui::tooltip::*;
38 pub use crate::ui::*;
39}
40
41#[macro_export]
42macro_rules! render {
43 ($graphics:tt, $mouse:tt, $($view:expr$(,)?)*) => {
44 $(
45 $view.render($graphics, $mouse);
46 )*
47 };
48}
49
50pub trait PixelView: Debug {
51 fn set_position(&mut self, top_left: Coord);
52
53 fn bounds(&self) -> &Rect;
54
55 fn render(&self, graphics: &mut Graphics, mouse: &MouseData);
56
57 fn update(&mut self, timing: &Timing);
58
59 fn set_state(&mut self, new_state: ViewState);
60
61 fn get_state(&self) -> ViewState;
62}
63
64#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)]
65pub enum ViewState {
66 Normal,
67 Disabled,
68 Error,
69}
70
71impl ViewState {
72 pub fn get_err_dis(&self) -> (bool, bool) {
74 match self {
75 ViewState::Normal => (false, false),
76 ViewState::Disabled => (false, true),
77 ViewState::Error => (true, false),
78 }
79 }
80}