Subwindow shortcut
This commit is contained in:
parent
baf7589aee
commit
0aafa08ddb
@ -1,7 +1,9 @@
|
|||||||
|
mod boot;
|
||||||
pub mod lengths_table;
|
pub mod lengths_table;
|
||||||
pub mod render;
|
pub mod render;
|
||||||
mod slider;
|
mod slider;
|
||||||
mod boot;
|
mod subwindow;
|
||||||
|
|
||||||
pub use slider::{slider, labeled_slider};
|
|
||||||
pub use boot::boot_eframe;
|
pub use boot::boot_eframe;
|
||||||
|
pub use slider::{labeled_slider, slider};
|
||||||
|
pub use subwindow::subwindow;
|
||||||
|
|||||||
39
utility/src/gui/subwindow.rs
Normal file
39
utility/src/gui/subwindow.rs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
use eframe::egui;
|
||||||
|
use eframe::egui::{Frame, Ui, ViewportBuilder};
|
||||||
|
|
||||||
|
pub fn subwindow(
|
||||||
|
ui: &mut Ui,
|
||||||
|
id: &str,
|
||||||
|
title: &str,
|
||||||
|
extra_settings: impl FnOnce(ViewportBuilder) -> ViewportBuilder,
|
||||||
|
mut content: impl FnMut(&mut Ui),
|
||||||
|
) -> Response {
|
||||||
|
let id = egui::ViewportId::from_hash_of(id);
|
||||||
|
let vb = extra_settings(ViewportBuilder::default().with_title(title));
|
||||||
|
|
||||||
|
let closed = ui.ctx().show_viewport_immediate(id, vb, |ui, _| {
|
||||||
|
egui::CentralPanel::default()
|
||||||
|
.frame(Frame::default().inner_margin(0.0))
|
||||||
|
.show(ui, |ui| content(ui));
|
||||||
|
|
||||||
|
return ui.input(|i| i.viewport().close_requested());
|
||||||
|
});
|
||||||
|
|
||||||
|
return Response { closed };
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Response {
|
||||||
|
closed: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Response {
|
||||||
|
pub fn close_requested(&self) -> bool {
|
||||||
|
return self.closed;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn on_close(&self, cb: impl FnOnce()) {
|
||||||
|
if self.closed {
|
||||||
|
cb()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user