menu_button

Function menu_button 

Source
pub fn menu_button<S: Into<String>>(
    ui: &mut UI<'_, '_>,
    label_text: S,
) -> Response
Examples found in repository?
examples/docking.rs (line 24)
23    fn add_tab_dropdown<F: FnMut(Self)>(ui: &mut pierro::UI, mut add_tab: F, _context: &mut ()) {
24        if pierro::menu_button(ui, "Hey").mouse_clicked() {
25            add_tab(Self {
26                text: "Hey",
27                n: 0,
28            });
29        }
30        if pierro::menu_button(ui, "Goodbye").mouse_clicked() {
31            add_tab(Self {
32                text: "Goodbye",
33                n: 123,
34            });
35        }
36    }
37
38}
39
40struct DockingApp {
41    docking_state: pierro::DockingState<DockingTab>,
42}
43
44impl pierro::App for DockingApp {
45
46    fn window_config() -> pierro::WindowConfig {
47        pierro::WindowConfig::default()
48            .with_title("Pierro Docking")
49    }
50
51    fn tick(&mut self, ui: &mut pierro::UI) {
52        pierro::menu_bar(ui, |ui| {
53            pierro::menu_bar_item(ui, "Menu", |ui| {
54                pierro::menu_button(ui, "Some");
55                pierro::menu_button(ui, "Stuff");
56                pierro::menu_button(ui, "Here");
57            });
58        });
59        self.docking_state.render(ui, &mut ());
60    }
More examples
Hide additional examples
examples/widget_gallery.rs (line 52)
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    }
148
149}
150
151enum GalleryTab {
152    Basic(Basic),
153    Layout(Layout)
154}
155
156impl pierro::DockingTab for GalleryTab {
157
158    type Context = ();
159
160    fn title(&self) -> String {
161        match self {
162            GalleryTab::Basic(..) => "Basic Widgets".to_owned(),
163            GalleryTab::Layout(..) => "Layout".to_owned()
164        }
165    }
166
167    fn render(&mut self, ui: &mut pierro::UI, _context: &mut ()) {
168            match self {
169                GalleryTab::Basic(basic) => basic.ui(ui),
170                GalleryTab::Layout(layout) => layout.ui(ui)
171            }
172    }
173
174    fn add_tab_dropdown<F: FnMut(Self)>(ui: &mut pierro::UI, mut add_tab: F, _context: &mut ()) {
175        if pierro::menu_button(ui, "Basic Widgets").mouse_clicked() {
176            add_tab(Self::Basic(Basic::new()));
177        }
178        if pierro::menu_button(ui, "Layout").mouse_clicked() {
179            add_tab(Self::Layout(Layout::new()));
180        }
181    }
182
183}
184
185impl pierro::App for Gallery {
186
187    fn window_config() -> pierro::WindowConfig {
188        pierro::WindowConfig::default()
189            .with_title("Pierro Widget Gallery")
190    }
191
192    fn tick(&mut self, ui: &mut pierro::UI) {
193        pierro::menu_bar(ui, |ui| {
194            pierro::menu_bar_item(ui, "Menubar", |ui| {
195                pierro::menu_button(ui, "Button A");
196                pierro::menu_button(ui, "Button B");
197                pierro::menu_button(ui, "Button C");
198                pierro::menu_category(ui, "Category", |ui| {
199                    pierro::menu_button(ui, "Button X");
200                    pierro::menu_button(ui, "Button Y");
201                });
202            });
203        });
204        self.docking_state.render(ui, &mut ());
205    }
examples/test.rs (line 29)
15    fn tick(&mut self, ui: &mut pierro::UI) {
16
17        let bg_color = ui.style::<pierro::Theme>().bg_dark;
18        let bg = ui.node(
19            pierro::UINodeParams::new(pierro::Size::fr(1.0), pierro::Size::fr(1.0))
20                .with_layout(pierro::Layout::vertical().with_vertical_overflow())
21                .with_fill(bg_color)
22                .with_transform(pierro::TSTransform::scale(self.zoom))
23        );
24        
25        ui.with_parent(bg.node_ref, |ui| {
26
27            pierro::menu_bar(ui, |ui| {
28                pierro::menu_bar_item(ui, "File", |ui| {
29                    if pierro::menu_button(ui, "New").mouse_clicked() {
30                        println!("New!!");
31                    }
32                    if pierro::menu_button(ui, "Open").mouse_clicked() {
33                        println!("Open!!");
34                    }
35                    pierro::menu_category(ui, "Recent", |ui| {
36                        pierro::menu_button(ui, "A.txt");
37                        pierro::menu_button(ui, "B.txt");
38                        pierro::menu_button(ui, "C.txt");
39                        pierro::menu_category(ui, "!!", |ui| {
40                            pierro::menu_button(ui, "A.txt");
41                            pierro::menu_button(ui, "B.txt");
42                            pierro::menu_button(ui, "C.txt");
43                        });
44                    });
45                    pierro::h_line(ui);
46                    pierro::menu_button(ui, "XYZ").mouse_clicked();
47                    pierro::menu_button(ui, "PQR").mouse_clicked();
48                });
49                pierro::menu_bar_item(ui, "Edit", |ui| {
50                    pierro::menu_button(ui, "Undo").mouse_clicked();
51                    pierro::menu_button(ui, "Redo").mouse_clicked();
52                });
53            });
54
55            pierro::v_spacing(ui, 15.0);
56            pierro::label(ui, "Above the scroll area");
57
58            pierro::dnd_source(ui, "Hello".to_string(), |ui| {
59                pierro::label(ui, "Drag me! (Hello)");
60            });
61            pierro::dnd_source(ui, "World".to_string(), |ui| {
62                pierro::label(ui, "Drag me! (World)");
63            });
64            if let Some(message) = pierro::dnd_drop_zone::<String, _>(ui, |ui| {
65                pierro::label(ui, "Drop here...");
66            }).1 {
67                println!("{}", message);
68            }
69
70            pierro::horizontal(ui, |ui| {
71                if pierro::button(ui, "+").mouse_clicked() {
72                    self.zoom *= 1.25;
73                }
74                if pierro::button(ui, "-").mouse_clicked() {
75                    self.zoom /= 1.25;
76                }
77                
78                let button_response = pierro::button(ui, "@");
79                pierro::context_menu(ui, &button_response, |ui| {
80                    pierro::label(ui, "Truly!!!");
81                });
82            });
83            pierro::v_spacing(ui, 15.0);
84            pierro::text_edit(ui, &mut self.text);
85            pierro::v_spacing(ui, 15.0);
86
87            pierro::scroll_area(ui, |ui| {
88
89                pierro::label(ui, "Button #1: 🍊");
90                if pierro::button(ui, "So long mom, I'm off to drop the bomb").mouse_clicked() {
91                    self.n += 1;
92                }
93
94                pierro::label(ui, "Button #2:");
95                if pierro::button(ui, "So long mom, I'm off to drop the bomb").mouse_clicked() {
96                    self.n -= 1;
97                }
98
99                pierro::label(ui, "The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.The quick brown fox jumped over the lazy dog.");
100
101                for i in 0..100 {
102                    pierro::label(ui, format!("{} {}", i, self.n));
103                }
104
105            });
106
107            pierro::v_spacing(ui, 15.0);
108            pierro::label(ui, "Below the scroll area");
109            pierro::label(ui, "Ниже области прокрутки");
110            pierro::label(ui, "أسفل منطقة التمرير");
111            pierro::v_spacing(ui, 15.0);
112
113        });
114
115    }