Box the app creator (#1373)

This commit is contained in:
Emil Ernerfeldt 2022-03-18 14:23:07 +01:00 committed by GitHub
parent c8f6cae362
commit c69f39e869
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 46 additions and 23 deletions

View file

@ -4,7 +4,11 @@ use eframe::egui;
fn main() { fn main() {
let options = eframe::NativeOptions::default(); let options = eframe::NativeOptions::default();
eframe::run_native("Confirm exit", options, |_cc| Box::new(MyApp::default())); eframe::run_native(
"Confirm exit",
options,
Box::new(|_cc| Box::new(MyApp::default())),
);
} }
#[derive(Default)] #[derive(Default)]

View file

@ -15,9 +15,11 @@ use std::sync::Arc;
fn main() { fn main() {
let options = eframe::NativeOptions::default(); let options = eframe::NativeOptions::default();
eframe::run_native("Custom 3D painting in eframe", options, |cc| { eframe::run_native(
Box::new(MyApp::new(cc)) "Custom 3D painting in eframe",
}); options,
Box::new(|cc| Box::new(MyApp::new(cc))),
);
} }
struct MyApp { struct MyApp {

View file

@ -4,9 +4,11 @@ use eframe::egui;
fn main() { fn main() {
let options = eframe::NativeOptions::default(); let options = eframe::NativeOptions::default();
eframe::run_native("egui example: custom font", options, |cc| { eframe::run_native(
Box::new(MyApp::new(cc)) "egui example: custom font",
}); options,
Box::new(|cc| Box::new(MyApp::new(cc))),
);
} }
fn setup_custom_fonts(ctx: &egui::Context) { fn setup_custom_fonts(ctx: &egui::Context) {

View file

@ -9,7 +9,7 @@ fn main() {
eframe::run_native( eframe::run_native(
"Download and show an image with eframe/egui", "Download and show an image with eframe/egui",
options, options,
|_cc| Box::new(MyApp::default()), Box::new(|_cc| Box::new(MyApp::default())),
); );
} }

View file

@ -10,7 +10,7 @@ fn main() {
eframe::run_native( eframe::run_native(
"Native file dialogs and drag-and-drop files", "Native file dialogs and drag-and-drop files",
options, options,
|_cc| Box::new(MyApp::default()), Box::new(|_cc| Box::new(MyApp::default())),
); );
} }

View file

@ -4,7 +4,11 @@ use eframe::egui;
fn main() { fn main() {
let options = eframe::NativeOptions::default(); let options = eframe::NativeOptions::default();
eframe::run_native("My egui App", options, |_cc| Box::new(MyApp::default())); eframe::run_native(
"My egui App",
options,
Box::new(|_cc| Box::new(MyApp::default())),
);
} }
struct MyApp { struct MyApp {

View file

@ -5,9 +5,11 @@ use egui_extras::RetainedImage;
fn main() { fn main() {
let options = eframe::NativeOptions::default(); let options = eframe::NativeOptions::default();
eframe::run_native("Show an image with eframe/egui", options, |_cc| { eframe::run_native(
Box::new(MyApp::default()) "Show an image with eframe/egui",
}); options,
Box::new(|_cc| Box::new(MyApp::default())),
);
} }
struct MyApp { struct MyApp {

View file

@ -11,7 +11,11 @@ fn main() {
initial_window_size: Some(egui::vec2(1000.0, 700.0)), initial_window_size: Some(egui::vec2(1000.0, 700.0)),
..Default::default() ..Default::default()
}; };
eframe::run_native("svg example", options, |_cc| Box::new(MyApp::default())); eframe::run_native(
"svg example",
options,
Box::new(|_cc| Box::new(MyApp::default())),
);
} }
struct MyApp { struct MyApp {

View file

@ -20,7 +20,7 @@
//! //!
//! fn main() { //! fn main() {
//! let native_options = eframe::NativeOptions::default(); //! let native_options = eframe::NativeOptions::default();
//! eframe::run_native("My egui App", native_options, |cc| Box::new(MyEguiApp::new(cc))); //! eframe::run_native("My egui App", native_options, Box::new(|cc| Box::new(MyEguiApp::new(cc))));
//! } //! }
//! //!
//! #[derive(Default)] //! #[derive(Default)]
@ -54,7 +54,7 @@
//! #[cfg(target_arch = "wasm32")] //! #[cfg(target_arch = "wasm32")]
//! #[wasm_bindgen] //! #[wasm_bindgen]
//! pub fn start(canvas_id: &str) -> Result<(), eframe::wasm_bindgen::JsValue> { //! pub fn start(canvas_id: &str) -> Result<(), eframe::wasm_bindgen::JsValue> {
//! eframe::start_web(canvas_id, |cc| Box::new(MyApp::new(cc))) //! eframe::start_web(canvas_id, Box::new(|cc| Box::new(MyApp::new(cc))))
//! } //! }
//! ``` //! ```
@ -99,7 +99,7 @@ pub use egui_web::wasm_bindgen;
/// #[cfg(target_arch = "wasm32")] /// #[cfg(target_arch = "wasm32")]
/// #[wasm_bindgen] /// #[wasm_bindgen]
/// pub fn start(canvas_id: &str) -> Result<(), eframe::wasm_bindgen::JsValue> { /// pub fn start(canvas_id: &str) -> Result<(), eframe::wasm_bindgen::JsValue> {
/// eframe::start_web(canvas_id, |cc| Box::new(MyEguiApp::new(cc))) /// eframe::start_web(canvas_id, Box::new(|cc| Box::new(MyEguiApp::new(cc))))
/// } /// }
/// ``` /// ```
#[cfg(target_arch = "wasm32")] #[cfg(target_arch = "wasm32")]
@ -122,7 +122,7 @@ pub fn start_web(canvas_id: &str, app_creator: AppCreator) -> Result<(), wasm_bi
/// ///
/// fn main() { /// fn main() {
/// let native_options = eframe::NativeOptions::default(); /// let native_options = eframe::NativeOptions::default();
/// eframe::run_native("MyApp", native_options, |cc| Box::new(MyEguiApp::new(cc))); /// eframe::run_native("MyApp", native_options, Box::new(|cc| Box::new(MyEguiApp::new(cc))));
/// } /// }
/// ///
/// #[derive(Default)] /// #[derive(Default)]

View file

@ -19,5 +19,8 @@ pub fn start(canvas_id: &str) -> Result<(), wasm_bindgen::JsValue> {
// Redirect tracing to console.log and friends: // Redirect tracing to console.log and friends:
tracing_wasm::set_as_global_default(); tracing_wasm::set_as_global_default();
eframe::start_web(canvas_id, |cc| Box::new(egui_demo_lib::WrapApp::new(cc))) eframe::start_web(
canvas_id,
Box::new(|cc| Box::new(egui_demo_lib::WrapApp::new(cc))),
)
} }

View file

@ -16,7 +16,9 @@ fn main() {
drag_and_drop_support: true, drag_and_drop_support: true,
..Default::default() ..Default::default()
}; };
eframe::run_native("egui demo app", options, |cc| { eframe::run_native(
Box::new(egui_demo_lib::WrapApp::new(cc)) "egui demo app",
}); options,
Box::new(|cc| Box::new(egui_demo_lib::WrapApp::new(cc))),
);
} }

View file

@ -101,7 +101,7 @@ use std::sync::{Arc, Mutex};
/// The is is how your app is created. /// The is is how your app is created.
/// ///
/// You can use the [`CreationContext`] to setup egui, restore state, setup OpenGL things, etc. /// You can use the [`CreationContext`] to setup egui, restore state, setup OpenGL things, etc.
pub type AppCreator = fn(&CreationContext<'_>) -> Box<dyn App>; pub type AppCreator = Box<dyn FnOnce(&CreationContext<'_>) -> Box<dyn App>>;
/// Data that is passed to [`AppCreator`] that can be used to setup and initialize your app. /// Data that is passed to [`AppCreator`] that can be used to setup and initialize your app.
pub struct CreationContext<'s> { pub struct CreationContext<'s> {