1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 15:13:12 -04:00

Clean up viewports example slightly

This commit is contained in:
Emil Ernerfeldt
2023-11-03 11:36:36 +01:00
parent 0df4b493fb
commit 99417b45e3

View File

@@ -115,6 +115,20 @@ impl AsyncViewport {
}
}
struct SyncViewport<'a> {
name: String,
init: Box<dyn FnMut(&egui::Context) + 'a>,
}
impl<'a> SyncViewport<'a> {
fn new(name: impl Into<String>, init: impl FnMut(&egui::Context) + 'a) -> Self {
Self {
name: name.into(),
init: Box::new(init),
}
}
}
fn show_async_viewport(
ctx: &egui::Context,
name: impl Into<String>,
@@ -151,9 +165,6 @@ fn show_async_viewport(
}
ui.add(egui::DragValue::new(&mut *count).prefix("Count: "));
if ui.button("Add").clicked() {
*count += 1;
}
for (i, viewport) in viewports.iter().enumerate() {
if state.active[i] {
@@ -171,20 +182,6 @@ fn show_async_viewport(
);
}
struct SyncViewport<'a> {
name: String,
init: Box<dyn FnMut(&egui::Context) + 'a>,
}
impl<'a> SyncViewport<'a> {
fn new(name: impl Into<String>, init: impl FnMut(&egui::Context) + 'a) -> Self {
Self {
name: name.into(),
init: Box::new(init),
}
}
}
fn show_sync_viewport(
ctx: &egui::Context,
name: impl Into<String>,
@@ -216,10 +213,8 @@ fn show_sync_viewport(
ui.checkbox(&mut state.active[i], &viewport.name);
}
ui.add(egui::DragValue::new(&mut *count).prefix("Count: "));
if ui.button("Add").clicked() {
*count += 1;
}
ui.add(egui::DragValue::new(count).prefix("Count: "));
for (i, viewport) in viewports.iter_mut().enumerate() {
if state.active[i] {
(viewport.init)(&ctx);
@@ -316,37 +311,43 @@ fn show_as_popup(ctx: &egui::Context, name: &str, content: impl FnOnce(&mut egui
}
fn generic_ui(ui: &mut egui::Ui, container_id: impl Into<Id>) {
let container_id = container_id.into();
let ctx = ui.ctx().clone();
ui.label(format!(
"Frame nr: {} (this increases when this viewport is being rendered)",
ctx.frame_nr()
));
ui.label(format!("Current Viewport Id: {}", ctx.viewport_id()));
ui.label(format!("Current Parent Viewport Id: {}", ctx.viewport_id()));
ui.horizontal(|ui| {
let mut show_spinner =
ui.data_mut(|data| *data.get_temp_mut_or(container_id.with("show_spinner"), false));
ui.checkbox(&mut show_spinner, "Show Spinner (forces repaint)");
if show_spinner {
ui.spinner();
}
ui.data_mut(|data| data.insert_temp(container_id.with("show_spinner"), show_spinner));
});
ui.add_space(8.0);
ui.label(format!("Viewport Id: {}", ctx.viewport_id()));
ui.label(format!("Parent Viewport Id: {}", ctx.parent_viewport_id()));
ui.add_space(8.0);
let inner_rect = ctx.inner_rect();
let outer_rect = ctx.outer_rect();
ui.label(format!(
"Inner Rect: Pos: {:?}, Size: {:?}",
inner_rect.min,
inner_rect.size()
));
let outer_rect = ctx.outer_rect();
ui.label(format!(
"Outer Rect: Pos: {:?}, Size: {:?}",
outer_rect.min,
outer_rect.size()
));
let container_id = container_id.into();
let ctx = ui.ctx().clone();
let mut show_spinner =
ui.data_mut(|data| *data.get_temp_mut_or(container_id.with("show_spinner"), false));
ui.checkbox(&mut show_spinner, "Show Spinner");
if show_spinner {
ui.spinner();
}
ui.data_mut(|data| data.insert_temp(container_id.with("show_spinner"), show_spinner));
let tmp_pixels_per_point = ctx.pixels_per_point();
let mut pixels_per_point = ui.data_mut(|data| {
*data.get_temp_mut_or(container_id.with("pixels_per_point"), tmp_pixels_per_point)