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 {
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: 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"));
});
});
}

View file

@ -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(

View file

@ -15,7 +15,7 @@ use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub struct State {
examples: ExampleApp,
example_app: ExampleApp,
ctx: Arc<Context>,
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();