update egui & co, and rip out catppuccin_egui (garbage)

This commit is contained in:
2026-06-28 17:30:43 +01:00
parent e8df86c250
commit 3cf1d708a8
7 changed files with 318 additions and 157 deletions
+26 -23
View File
@@ -57,39 +57,39 @@ pub struct App {
}
impl eframe::App for App {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
ctx.request_repaint_after(Duration::from_millis(100));
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame) {
ui.request_repaint_after(Duration::from_millis(100));
self.empty_session.run_timers(&self.firewall).unwrap();
egui::TopBottomPanel::bottom("bottom_panel")
.exact_height(25.0)
.show(ctx, |ui| {
egui::Panel::bottom("bottom_panel")
.exact_size(25.0)
.show(ui, |ui| {
ui.with_layout(egui::Layout::left_to_right(egui::Align::Center), |ui| {
ui.build_menu(&mut self.stage);
});
});
egui::CentralPanel::default().show(ctx, |ui| {
egui::CentralPanel::default().show(ui, |ui| {
egui::ScrollArea::vertical()
.auto_shrink([false, true])
.show(ui, |ui| match self.stage {
Stage::Main => self.show_main_stage(ctx, ui),
Stage::Settings => self.show_settings_stage(ctx, ui),
Stage::About => self.show_about_stage(ctx, ui),
Stage::Main => self.show_main_stage(ui),
Stage::Settings => self.show_settings_stage(ui),
Stage::About => self.show_about_stage(ui),
});
});
if tools::debug_keycombo_pressed(ctx) || tools::debug_viewport_close_pressed(ctx) {
if tools::debug_keycombo_pressed(ui) || tools::debug_viewport_close_pressed(ui) {
self.flags.debug = !self.flags.debug;
}
if self.flags.debug {
self.show_debug_viewport(ctx);
self.show_debug_viewport(ui);
}
if self.flags.closing {
ctx.send_viewport_cmd(egui::ViewportCommand::Close);
ui.send_viewport_cmd(egui::ViewportCommand::Close);
}
}
}
impl App {
fn show_game_section(&mut self, _ctx: &egui::Context, ui: &mut egui::Ui) {
fn show_game_section(&mut self, ui: &mut egui::Ui) {
ui.header("Game");
ui.horizontal(|ui| {
if ui.button("Launch").clicked() {
@@ -107,7 +107,7 @@ impl App {
.prompt(force_close_button.clicked(), &mut self.system_info);
}
fn show_session_section(&mut self, _ctx: &egui::Context, ui: &mut egui::Ui) {
fn show_session_section(&mut self, ui: &mut egui::Ui) {
ui.header("Session");
ui.add_enabled_ui(!self.empty_session.disabled, |ui| {
ui.horizontal(|ui| {
@@ -140,7 +140,7 @@ impl App {
}
}
fn show_network_section(&mut self, _ctx: &egui::Context, ui: &mut egui::Ui) {
fn show_network_section(&mut self, ui: &mut egui::Ui) {
ui.header("Network");
egui::Frame::new()
.outer_margin(egui::vec2(0.0, -2.0))
@@ -212,13 +212,13 @@ impl App {
});
}
fn show_main_stage(&mut self, ctx: &egui::Context, ui: &mut egui::Ui) {
self.show_game_section(ctx, ui);
self.show_session_section(ctx, ui);
self.show_network_section(ctx, ui);
fn show_main_stage(&mut self, ui: &mut egui::Ui) {
self.show_game_section(ui);
self.show_session_section(ui);
self.show_network_section(ui);
}
fn show_settings_stage(&mut self, ctx: &egui::Context, ui: &mut egui::Ui) {
fn show_settings_stage(&mut self, ui: &mut egui::Ui) {
ui.collapsing("General", |ui| {
ui.horizontal(|ui| {
let selection = self.settings.theme;
@@ -228,7 +228,7 @@ impl App {
ui.build_menu(&mut self.settings.theme);
});
if selection != self.settings.theme {
catppuccin_egui::set_theme(ctx, self.settings.theme.into());
ui.set_theme(egui::Theme::from(self.settings.theme));
}
ui.label("Theme");
});
@@ -281,7 +281,7 @@ impl App {
});
}
fn show_about_stage(&self, _ctx: &egui::Context, ui: &mut egui::Ui) {
fn show_about_stage(&self, ui: &mut egui::Ui) {
ui.with_layout(egui::Layout::bottom_up(egui::Align::Center), |ui| {
ui.horizontal(|ui| {
ui.horizontal(|ui| {
@@ -294,7 +294,10 @@ impl App {
ui.label(" from ");
ui.scope(|ui| {
ui.style_mut().visuals.hyperlink_color =
catppuccin_egui::Theme::from(self.settings.theme).text;
egui::Theme::from(self.settings.theme)
.default_style()
.visuals
.text_color();
ui.hyperlink_to("futile", "https://futile.eu");
});
});
+1 -1
View File
@@ -30,7 +30,7 @@ impl App {
.show_ui(ui, |ui| ui.build_menu(&mut self.game_networking.blocked));
});
if ui.add(egui::Button::new("force refresh theme")).clicked() {
catppuccin_egui::set_theme(ui.ctx(), self.settings.theme.into());
ui.set_theme(egui::Theme::from(self.settings.theme));
}
if ui.button("panic button").clicked() {
panic!("this is the panic button");
+4 -5
View File
@@ -25,15 +25,14 @@ fn app_creator(
app.system_info.refresh();
// enable image loading support in egui
egui_extras::install_image_loaders(&cc.egui_ctx);
// set our initial theme, from earlier loaded settings. we set the egui theme
// to dark here to work around system theme based switching of the egui style
cc.egui_ctx.set_theme(egui::Theme::Dark);
catppuccin_egui::set_theme(&cc.egui_ctx, app.settings.theme.into());
// set our initial theme, from earlier loaded settings. we set the egui theme here to work
// around system theme based switching of the egui style
cc.egui_ctx.set_theme(egui::Theme::from(app.settings.theme));
// apply some global styling that we like
cc.egui_ctx.all_styles_mut(|style| {
style.spacing.item_spacing = egui::vec2(4.0, 4.0);
style.interaction.selectable_labels = false;
style.visuals.hyperlink_color = catppuccin_egui::Theme::from(app.settings.theme).text;
// style.visuals.hyperlink_color = catppuccin_egui::Theme::from(app.settings.theme).text;
});
// load any extra fonts that we need
let mut fonts = egui::FontDefinitions::default();
+10 -15
View File
@@ -1,4 +1,5 @@
use crate::util::win;
use eframe::egui;
use serde::{Deserialize, Serialize};
use strum::{Display, EnumIter};
@@ -9,30 +10,24 @@ pub enum Theme {
#[default]
#[strum(to_string = "Auto")]
Auto,
#[strum(to_string = "Latte")]
Latte,
#[strum(to_string = "Frappe")]
Frappe,
#[strum(to_string = "Macchiato")]
Macchiato,
#[strum(to_string = "Mocha")]
Mocha,
#[strum(to_string = "Light")]
Light,
#[strum(to_string = "Dark")]
Dark,
}
impl From<Theme> for catppuccin_egui::Theme {
impl From<Theme> for egui::Theme {
fn from(val: Theme) -> Self {
match val {
Theme::Auto => {
if win::is_system_theme_light() {
catppuccin_egui::LATTE
egui::Theme::Light
} else {
catppuccin_egui::MOCHA
egui::Theme::Dark
}
}
Theme::Latte => catppuccin_egui::LATTE,
Theme::Frappe => catppuccin_egui::FRAPPE,
Theme::Macchiato => catppuccin_egui::MACCHIATO,
Theme::Mocha => catppuccin_egui::MOCHA,
Theme::Light => egui::Theme::Light,
Theme::Dark => egui::Theme::Dark,
}
}
}
+4 -4
View File
@@ -11,12 +11,12 @@ pub fn load_icon() -> egui::IconData {
}
}
pub fn debug_keycombo_pressed(ctx: &egui::Context) -> bool {
ctx.input(|i| i.modifiers.all() && i.key_pressed(egui::Key::D))
pub fn debug_keycombo_pressed(ui: &egui::Ui) -> bool {
ui.input(|i| i.modifiers.all() && i.key_pressed(egui::Key::D))
}
pub fn debug_viewport_close_pressed(ctx: &egui::Context) -> bool {
ctx.input(|i| {
pub fn debug_viewport_close_pressed(ui: &egui::Ui) -> bool {
ui.input(|i| {
i.raw
.viewports
.get(&egui::ViewportId::from_hash_of("debug_viewport"))