pub fn menu_button<S: Into<String>>(
ui: &mut UI<'_, '_>,
label_text: S,
) -> ResponseExamples 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
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 }