Show menu bar in main window instead of in example window

This commit is contained in:
Emil Ernerfeldt 2020-05-12 07:27:14 +02:00
parent cce94676b6
commit 8c0942bf1e
3 changed files with 19 additions and 11 deletions

View file

@ -16,7 +16,13 @@ pub struct ExampleApp {
} }
impl ExampleApp { impl ExampleApp {
pub fn ui(&mut self, ctx: &Arc<Context>) { 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<Context>) {
// TODO: Make it even simpler to show a window // TODO: Make it even simpler to show a window
// TODO: window manager for automatic positioning? // TODO: window manager for automatic positioning?
@ -42,10 +48,10 @@ impl ExampleApp {
} }
Window::new("Examples") Window::new("Examples")
.open(&mut open_windows.examples)
.default_pos(pos2(32.0, 100.0)) .default_pos(pos2(32.0, 100.0))
.default_size(vec2(430.0, 600.0)) .default_size(vec2(430.0, 600.0))
.show(ctx, |ui| { .show(ctx, |ui| {
show_menu_bar(ui, open_windows);
example_window.ui(ui); example_window.ui(ui);
}); });
@ -79,6 +85,7 @@ impl ExampleApp {
#[derive(Deserialize, Serialize)] #[derive(Deserialize, Serialize)]
struct OpenWindows { struct OpenWindows {
examples: bool,
settings: bool, settings: bool,
inspection: bool, inspection: bool,
memory: bool, memory: bool,
@ -88,8 +95,9 @@ struct OpenWindows {
impl Default for OpenWindows { impl Default for OpenWindows {
fn default() -> Self { fn default() -> Self {
Self { Self {
examples: true,
settings: false, settings: false,
inspection: true, inspection: false,
memory: false, memory: false,
fractal_clock: 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. // 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, // Maybe an Window or Area can detect that: if wasn't open last frame, but is now,
// then automatically go to front? // 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.settings, "Settings"));
ui.add(Checkbox::new(&mut windows.inspection, "Inspection")); ui.add(Checkbox::new(&mut windows.inspection, "Inspection"));
ui.add(Checkbox::new(&mut windows.memory, "Memory")); ui.add(Checkbox::new(&mut windows.memory, "Memory"));
ui.add(Checkbox::new(&mut windows.fractal_clock, "Fractal Clock")); ui.add(Checkbox::new(&mut windows.fractal_clock, "Fractal Clock"));
}); });
menu::menu(ui, "About", |ui| { 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"));
}); });
}); });
} }

View file

@ -79,7 +79,7 @@ fn main() {
let mut running = true; let mut running = true;
let mut frame_start = Instant::now(); let mut frame_start = Instant::now();
let mut frame_times = emigui::MovementTracker::new(1000, 1.0); 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(); let mut clipboard = emigui_glium::init_clipboard();
emigui_glium::read_memory(&ctx, memory_path); emigui_glium::read_memory(&ctx, memory_path);
@ -109,6 +109,7 @@ fn main() {
let emigui_start = Instant::now(); let emigui_start = Instant::now();
ctx.begin_frame(raw_input.clone()); // TODO: avoid clone ctx.begin_frame(raw_input.clone()); // TODO: avoid clone
let mut ui = ctx.fullscreen_ui(); let mut ui = ctx.fullscreen_ui();
example_app.ui(&mut ui);
let mut ui = ui.centered_column(ui.available_width().min(480.0)); let mut ui = ui.centered_column(ui.available_width().min(480.0));
ui.set_align(Align::Min); ui.set_align(Align::Min);
ui.add(label!("Emigui running inside of Glium").text_style(emigui::TextStyle::Heading)); ui.add(label!("Emigui running inside of Glium").text_style(emigui::TextStyle::Heading));
@ -131,8 +132,6 @@ fn main() {
.text_style(TextStyle::Monospace), .text_style(TextStyle::Monospace),
); );
examples.ui(&ctx);
let (output, paint_batches) = ctx.end_frame(); let (output, paint_batches) = ctx.end_frame();
frame_times.add( frame_times.add(

View file

@ -15,7 +15,7 @@ use wasm_bindgen::prelude::*;
#[wasm_bindgen] #[wasm_bindgen]
pub struct State { pub struct State {
examples: ExampleApp, example_app: ExampleApp,
ctx: Arc<Context>, ctx: Arc<Context>,
webgl_painter: emigui_wasm::webgl::Painter, webgl_painter: emigui_wasm::webgl::Painter,
@ -27,7 +27,7 @@ impl State {
let ctx = Context::new(pixels_per_point); let ctx = Context::new(pixels_per_point);
emigui_wasm::load_memory(&ctx); emigui_wasm::load_memory(&ctx);
Ok(State { Ok(State {
examples: Default::default(), example_app: Default::default(),
ctx, ctx,
webgl_painter: emigui_wasm::webgl::Painter::new(canvas_id)?, webgl_painter: emigui_wasm::webgl::Painter::new(canvas_id)?,
frame_times: emigui::MovementTracker::new(1000, 1.0), frame_times: emigui::MovementTracker::new(1000, 1.0),
@ -41,6 +41,7 @@ impl State {
self.ctx.begin_frame(raw_input); self.ctx.begin_frame(raw_input);
let mut ui = self.ctx.fullscreen_ui(); 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)); let mut ui = ui.centered_column(ui.available_width().min(480.0));
ui.set_align(Align::Min); ui.set_align(Align::Min);
ui.add(label!("Emigui!").text_style(TextStyle::Heading)); ui.add(label!("Emigui!").text_style(TextStyle::Heading));
@ -77,8 +78,6 @@ impl State {
.text_style(TextStyle::Monospace), .text_style(TextStyle::Monospace),
); );
self.examples.ui(&self.ctx);
let bg_color = srgba(0, 0, 0, 0); // Use background css color. let bg_color = srgba(0, 0, 0, 0); // Use background css color.
let (output, batches) = self.ctx.end_frame(); let (output, batches) = self.ctx.end_frame();