1 Commits
Author SHA1 Message Date
hulthe c7d0f5ceea Initial Commit 2025-06-12 20:14:59 +02:00
+6 -1
View File
@@ -10,8 +10,9 @@ use egui::{
Align, Button, Color32, FontData, FontDefinitions, PointerButton, RichText, ScrollArea, Stroke, Align, Button, Color32, FontData, FontDefinitions, PointerButton, RichText, ScrollArea, Stroke,
}; };
/// We derive Deserialize/Serialize so we can persist app state on shutdown.
#[derive(serde::Deserialize, serde::Serialize)] #[derive(serde::Deserialize, serde::Serialize)]
#[serde(default)] #[serde(default)] // if we add new fields, give them default values when deserializing old state
pub struct App { pub struct App {
preferences: Preferences, preferences: Preferences,
@@ -140,6 +141,8 @@ impl App {
Stroke::new(1.0, Color32::from_rgb(200, 200, 200)); Stroke::new(1.0, Color32::from_rgb(200, 200, 200));
}); });
// Load previous app state (if any).
// Note that you must enable the `persistence` feature for this to work.
if let Some(storage) = cc.storage { if let Some(storage) = cc.storage {
return eframe::get_value(storage, eframe::APP_KEY).unwrap_or_default(); return eframe::get_value(storage, eframe::APP_KEY).unwrap_or_default();
} }
@@ -194,6 +197,8 @@ impl eframe::App for App {
//}); //});
egui::TopBottomPanel::top("top_panel").show(ctx, |ui| { egui::TopBottomPanel::top("top_panel").show(ctx, |ui| {
// The top panel is often a good place for a menu bar:
egui::containers::menu::Bar::new().ui(ui, |ui| { egui::containers::menu::Bar::new().ui(ui, |ui| {
// NOTE: no File->Quit on web pages! // NOTE: no File->Quit on web pages!
ui.menu_button("Menu ⚙", |ui| { ui.menu_button("Menu ⚙", |ui| {