1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-29 04:40:03 -04:00

remove style in parameter + cleanup

This commit is contained in:
adrien
2026-06-21 21:53:31 +02:00
parent b742e230a0
commit 8762c7dba7
5 changed files with 73 additions and 52 deletions

View File

@@ -1,7 +1,7 @@
use std::collections::HashMap;
use eframe::egui::{
Color32, Style,
Color32,
theme_plugin::{ThemeCache, ThemeStyle},
widget_style::{
ButtonStyle, Classes, HasClasses as _, StyleStruct as _, WidgetState, WidgetStyle,
@@ -78,17 +78,19 @@ impl ESSEngine {
}
}
/// This implementation basically do nothing. This is only the minimum requirement with caching.
impl ThemeStyle<WidgetStyle> for ESSEngine {
fn style(&mut self, classes: &Classes, state: WidgetState, base: &Style) -> WidgetStyle {
self.cache
.get(classes, state, || base.widget_style(classes, state))
fn style(&mut self, classes: &Classes, state: WidgetState) -> WidgetStyle {
self.cache.get(classes, state, || {
WidgetStyle::default_style(classes, state)
})
}
}
impl ThemeStyle<ButtonStyle> for ESSEngine {
fn style(&mut self, classes: &Classes, state: WidgetState, base: &Style) -> ButtonStyle {
fn style(&mut self, classes: &Classes, state: WidgetState) -> ButtonStyle {
self.cache.get(classes, state, || {
let mut default = ButtonStyle::default_style(classes, state, base);
let mut default = ButtonStyle::default_style(classes, state);
for classe in classes.list() {
if let Some(properties) = self.info.get(&classe.to_string()) {
for (property, value) in properties {

View File

@@ -53,12 +53,10 @@ fn main() -> eframe::Result {
if ui.text_edit_multiline(&mut style_code).changed()
&& let Ok(engine) = ESSEngine::try_parse(&style_code)
{
// Overwrite the current theme with the new one.clear
ui.replace_theme::<WidgetStyle>(engine.clone());
ui.replace_theme::<ButtonStyle>(engine);
}
// Should find a way to detect if a change is made on a plugin
// Maybe by saving the plugin in the system instead and invalidating the cache when it's pulled as mut ?
});
});