-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a simple example of the viewports API
- Loading branch information
Showing
4 changed files
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
[package] | ||
name = "multiple_viewports" | ||
version = "0.1.0" | ||
authors = ["Emil Ernerfeldt <[email protected]>"] | ||
license = "MIT OR Apache-2.0" | ||
edition = "2021" | ||
rust-version = "1.70" | ||
publish = false | ||
|
||
|
||
[dependencies] | ||
eframe = { path = "../../crates/eframe", features = [ | ||
"__screenshot", # __screenshot is so we can dump a screenshot using EFRAME_SCREENSHOT_TO | ||
] } | ||
env_logger = "0.10" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
Example how to show multiple viewports (native windows) can be created in `egui` when using the `eframe` backend. | ||
|
||
```sh | ||
cargo run -p multiple_viewports | ||
``` | ||
|
||
For a more advanced example, see [../test_viewports]. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release | ||
|
||
use eframe::egui; | ||
|
||
fn main() -> Result<(), eframe::Error> { | ||
env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`). | ||
let options = eframe::NativeOptions { | ||
initial_window_size: Some(egui::vec2(320.0, 240.0)), | ||
..Default::default() | ||
}; | ||
eframe::run_native( | ||
"Confirm exit", | ||
options, | ||
Box::new(|_cc| Box::<MyApp>::default()), | ||
) | ||
} | ||
|
||
#[derive(Default)] | ||
struct MyApp { | ||
show_child_viewport: bool, | ||
} | ||
|
||
impl eframe::App for MyApp { | ||
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { | ||
egui::CentralPanel::default().show(ctx, |ui| { | ||
ui.label("Hello from the root viewport"); | ||
|
||
ui.checkbox(&mut self.show_child_viewport, "Show secondary viewport"); | ||
}); | ||
|
||
if self.show_child_viewport { | ||
ctx.show_viewport( | ||
egui::ViewportBuilder::new(egui::ViewportId::from_hash_of("secondary_viewport")) | ||
.with_title("Secondary Viewport"), | ||
|ctx| { | ||
egui::CentralPanel::default().show(ctx, |ui| { | ||
ui.label("Hello from secondary viewport"); | ||
}); | ||
}, | ||
); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
This is a test of the viewports feature of eframe and egui, where we show off using multiple windows. | ||
|
||
For a simple example, see [../multiple_viewports]. |