From 8c0942bf1e84c30887aefae35b6fd3d8d87dd369 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Tue, 12 May 2020 07:27:14 +0200 Subject: [PATCH] Show menu bar in main window instead of in example window --- emigui/src/examples/app.rs | 18 ++++++++++++++---- example_glium/src/main.rs | 5 ++--- example_wasm/src/lib.rs | 7 +++---- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/emigui/src/examples/app.rs b/emigui/src/examples/app.rs index 2bfad344..02e0fc05 100644 --- a/emigui/src/examples/app.rs +++ b/emigui/src/examples/app.rs @@ -16,7 +16,13 @@ pub struct ExampleApp { } impl ExampleApp { - pub fn ui(&mut self, ctx: &Arc) { + pub fn ui(&mut self, ui: &mut Ui) { + show_menu_bar(ui, &mut self.open_windows); + ui.add(Separator::new()); + self.windows(ui.ctx()); + } + + pub fn windows(&mut self, ctx: &Arc) { // TODO: Make it even simpler to show a window // TODO: window manager for automatic positioning? @@ -42,10 +48,10 @@ impl ExampleApp { } Window::new("Examples") + .open(&mut open_windows.examples) .default_pos(pos2(32.0, 100.0)) .default_size(vec2(430.0, 600.0)) .show(ctx, |ui| { - show_menu_bar(ui, open_windows); example_window.ui(ui); }); @@ -79,6 +85,7 @@ impl ExampleApp { #[derive(Deserialize, Serialize)] struct OpenWindows { + examples: bool, settings: bool, inspection: bool, memory: bool, @@ -88,8 +95,9 @@ struct OpenWindows { impl Default for OpenWindows { fn default() -> Self { Self { + examples: true, settings: false, - inspection: true, + inspection: false, memory: false, fractal_clock: false, } @@ -107,13 +115,15 @@ fn show_menu_bar(ui: &mut Ui, windows: &mut OpenWindows) { // TODO: open on top when clicking a new. // Maybe an Window or Area can detect that: if wasn't open last frame, but is now, // then automatically go to front? + ui.add(Checkbox::new(&mut windows.examples, "Examples")); ui.add(Checkbox::new(&mut windows.settings, "Settings")); ui.add(Checkbox::new(&mut windows.inspection, "Inspection")); ui.add(Checkbox::new(&mut windows.memory, "Memory")); ui.add(Checkbox::new(&mut windows.fractal_clock, "Fractal Clock")); }); menu::menu(ui, "About", |ui| { - ui.add(label!("This is Emigui, but you already knew that!")); + ui.add(label!("This is Emigui")); + ui.add(Hyperlink::new("https://github.com/emilk/emigui/").text("Emigui home page")); }); }); } diff --git a/example_glium/src/main.rs b/example_glium/src/main.rs index 1caaa711..1298070d 100644 --- a/example_glium/src/main.rs +++ b/example_glium/src/main.rs @@ -79,7 +79,7 @@ fn main() { let mut running = true; let mut frame_start = Instant::now(); let mut frame_times = emigui::MovementTracker::new(1000, 1.0); - let mut examples = ExampleApp::default(); + let mut example_app = ExampleApp::default(); let mut clipboard = emigui_glium::init_clipboard(); emigui_glium::read_memory(&ctx, memory_path); @@ -109,6 +109,7 @@ fn main() { let emigui_start = Instant::now(); ctx.begin_frame(raw_input.clone()); // TODO: avoid clone let mut ui = ctx.fullscreen_ui(); + example_app.ui(&mut ui); let mut ui = ui.centered_column(ui.available_width().min(480.0)); ui.set_align(Align::Min); ui.add(label!("Emigui running inside of Glium").text_style(emigui::TextStyle::Heading)); @@ -131,8 +132,6 @@ fn main() { .text_style(TextStyle::Monospace), ); - examples.ui(&ctx); - let (output, paint_batches) = ctx.end_frame(); frame_times.add( diff --git a/example_wasm/src/lib.rs b/example_wasm/src/lib.rs index a14d1f17..7995ff51 100644 --- a/example_wasm/src/lib.rs +++ b/example_wasm/src/lib.rs @@ -15,7 +15,7 @@ use wasm_bindgen::prelude::*; #[wasm_bindgen] pub struct State { - examples: ExampleApp, + example_app: ExampleApp, ctx: Arc, webgl_painter: emigui_wasm::webgl::Painter, @@ -27,7 +27,7 @@ impl State { let ctx = Context::new(pixels_per_point); emigui_wasm::load_memory(&ctx); Ok(State { - examples: Default::default(), + example_app: Default::default(), ctx, webgl_painter: emigui_wasm::webgl::Painter::new(canvas_id)?, frame_times: emigui::MovementTracker::new(1000, 1.0), @@ -41,6 +41,7 @@ impl State { self.ctx.begin_frame(raw_input); let mut ui = self.ctx.fullscreen_ui(); + self.example_app.ui(&mut ui); let mut ui = ui.centered_column(ui.available_width().min(480.0)); ui.set_align(Align::Min); ui.add(label!("Emigui!").text_style(TextStyle::Heading)); @@ -77,8 +78,6 @@ impl State { .text_style(TextStyle::Monospace), ); - self.examples.ui(&self.ctx); - let bg_color = srgba(0, 0, 0, 0); // Use background css color. let (output, batches) = self.ctx.end_frame();