margin

Function margin 

Source
pub fn margin<R, F: FnOnce(&mut UI<'_, '_>) -> R>(
    ui: &mut UI<'_, '_>,
    body: F,
) -> R
Examples found in repository?
examples/widget_gallery.rs (lines 24-58)
22    fn ui(&mut self, ui: &mut pierro::UI) {
23        pierro::scroll_area(ui, |ui| {
24            pierro::margin(ui, |ui| { 
25                pierro::label(ui, "A label");
26                pierro::v_spacing(ui, 10.0);
27
28                pierro::button(ui, "A button");
29                pierro::v_spacing(ui, 10.0);
30
31                pierro::text_edit(ui, &mut self.text_edit_text);
32                pierro::v_spacing(ui, 10.0);
33
34                pierro::checkbox_labeled(ui, "A checkbox", &mut self.checkbox_state);
35                pierro::v_spacing(ui, 10.0);
36
37                let context_menu_response = pierro::label(ui, "Context menu (right click me!)");
38                pierro::context_menu(ui, &context_menu_response, |ui| {
39                    pierro::label(ui, "Inside the context menu");
40                });
41                pierro::v_spacing(ui, 10.0);
42
43                pierro::collapsing_header(ui, "A collapsing header", |ui| {
44                    for i in 0..50 {
45                        pierro::label(ui, i.to_string());
46                    }
47                });
48                pierro::v_spacing(ui, 10.0);
49
50                pierro::dropdown(ui, self.dropdown_state.clone(), |ui| {
51                    for option in ["Option A", "Option B", "Option C"] {
52                        if pierro::menu_button(ui, option).mouse_clicked() {
53                            self.dropdown_state = option.to_owned();
54                        }
55                    }
56                });
57
58            });
59        });
60    }
61
62}
63
64struct Layout {
65    axis: pierro::Axis,
66    justify: pierro::Justify,
67    align: pierro::Align
68}
69
70impl Layout {
71    
72    fn new() -> Self {
73        Self {
74            axis: pierro::Axis::X,
75            justify: pierro::Justify::Center,
76            align: pierro::Align::Center
77        }
78    }
79
80    fn node(&self, ui: &mut pierro::UI, color: pierro::Color) {
81        ui.node(
82            pierro::UINodeParams::new(pierro::Size::px(100.0), pierro::Size::px(100.0))
83                .with_fill(color)
84        );
85    }
86
87    fn ui(&mut self, ui: &mut pierro::UI) {
88
89        pierro::margin(ui, |ui| {
90            pierro::dropdown_labeled(ui, "Axis: ", match self.axis {
91                pierro::Axis::X => "X",
92                pierro::Axis::Y => "Y",
93            }, |ui| {
94                if pierro::menu_button(ui, "X").mouse_clicked() {
95                    self.axis = pierro::Axis::X;
96                }
97                if pierro::menu_button(ui, "Y").mouse_clicked() {
98                    self.axis = pierro::Axis::Y;
99                }
100            });
101            pierro::v_spacing(ui, 5.0);
102
103            pierro::dropdown_labeled(ui, "Justify: ", match self.justify {
104                pierro::Justify::Min => "Min",
105                pierro::Justify::Center => "Center",
106                pierro::Justify::Max => "Max",
107            }, |ui| {
108                if pierro::menu_button(ui, "Min").mouse_clicked() {
109                    self.justify = pierro::Justify::Min;
110                }
111                if pierro::menu_button(ui, "Center").mouse_clicked() {
112                    self.justify = pierro::Justify::Center;
113                }
114                if pierro::menu_button(ui, "Max").mouse_clicked() {
115                    self.justify = pierro::Justify::Max;
116                }
117            });
118            pierro::v_spacing(ui, 5.0);
119
120            pierro::dropdown_labeled(ui, "Align: ", match self.align {
121                pierro::Align::Min => "Min",
122                pierro::Align::Center => "Center",
123                pierro::Align::Max => "Max",
124            }, |ui| {
125                if pierro::menu_button(ui, "Min").mouse_clicked() {
126                    self.align = pierro::Align::Min;
127                }
128                if pierro::menu_button(ui, "Center").mouse_clicked() {
129                    self.align = pierro::Align::Center;
130                }
131                if pierro::menu_button(ui, "Max").mouse_clicked() {
132                    self.align = pierro::Align::Max;
133                }
134            });
135        });
136
137        pierro::h_divider(ui);
138        pierro::container(ui,
139            pierro::Size::fr(1.0),
140            pierro::Size::fr(1.0),
141            pierro::Layout::new(self.axis).with_justify(self.justify).with_align(self.align),
142            |ui| {
143                self.node(ui, pierro::Color::RED);   
144                self.node(ui, pierro::Color::GREEN);   
145                self.node(ui, pierro::Color::BLUE);
146            });
147    }