mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 06:10:06 -04:00
38 lines
1.2 KiB
Rust
38 lines
1.2 KiB
Rust
/// Demonstrates how to make an app using egui.
|
|
///
|
|
/// Implements `epi::App` so it can be used with
|
|
/// [`egui_glium`](https://github.com/emilk/egui/tree/master/egui_glium), [`egui_glow`](https://github.com/emilk/egui/tree/master/egui_glow) and [`egui_web`](https://github.com/emilk/egui/tree/master/egui_web).
|
|
#[derive(Default)]
|
|
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
|
|
#[cfg_attr(feature = "serde", serde(default))]
|
|
pub struct DemoApp {
|
|
demo_windows: super::DemoWindows,
|
|
}
|
|
|
|
impl epi::App for DemoApp {
|
|
fn name(&self) -> &str {
|
|
"✨ Demos"
|
|
}
|
|
|
|
fn setup(
|
|
&mut self,
|
|
_ctx: &egui::CtxRef,
|
|
_frame: &mut epi::Frame<'_>,
|
|
_storage: Option<&dyn epi::Storage>,
|
|
) {
|
|
#[cfg(feature = "persistence")]
|
|
if let Some(storage) = _storage {
|
|
*self = epi::get_value(storage, epi::APP_KEY).unwrap_or_default();
|
|
}
|
|
}
|
|
|
|
#[cfg(feature = "persistence")]
|
|
fn save(&mut self, storage: &mut dyn epi::Storage) {
|
|
epi::set_value(storage, epi::APP_KEY, self);
|
|
}
|
|
|
|
fn update(&mut self, ctx: &egui::CtxRef, _frame: &mut epi::Frame<'_>) {
|
|
self.demo_windows.ui(ctx);
|
|
}
|
|
}
|