blob: 1f69d47ca46bfb88dbf86b9ff3760d32d560448b [file] [log] [blame]
use egui::{TextEdit, Ui};
use crate::app_state::AppState;
use crate::settings::PersistentSettings;
use crate::views::render_view::RenderView;
pub struct SettingsViewer;
impl RenderView for SettingsViewer {
fn title(&self) -> String {
"Settings".into()
}
fn render(&self, ui: &mut Ui, state: &mut AppState) -> anyhow::Result<()> {
let settings = &mut state.settings;
egui::ScrollArea::vertical().show(ui, |ui| {
if ui.button("Reset to defaults").clicked() {
settings.persistent = PersistentSettings::default();
}
ui.label("AVM source root URL:");
let text_edit = TextEdit::singleline(&mut settings.persistent.avm_source_url).desired_width(800.0);
text_edit.show(ui);
ui.horizontal(|ui| {
let mut apply_cache_strategy = settings.persistent.apply_cache_strategy;
let mut cache_strategy_limit = settings.persistent.cache_strategy_limit;
ui.checkbox(&mut apply_cache_strategy, "Limit number of frames kept in memory");
ui.add_enabled(
apply_cache_strategy,
egui::Slider::new(&mut cache_strategy_limit, 1..=100),
);
settings.persistent.apply_cache_strategy = apply_cache_strategy;
settings.persistent.cache_strategy_limit = cache_strategy_limit;
});
ui.checkbox(
&mut settings.persistent.update_sharable_url,
"Update URL with sharable state",
);
let style = &mut settings.persistent.style.overlay;
ui.horizontal(|ui| {
ui.label("Highlighted object color:");
ui.color_edit_button_srgba(&mut style.highlighted_object_stroke.color);
});
ui.horizontal(|ui| {
ui.label("Selected object color:");
ui.color_edit_button_srgba(&mut style.selected_object_stroke.color);
});
ui.horizontal(|ui| {
ui.label("Coding unit color:");
ui.color_edit_button_srgba(&mut style.coding_unit_stroke.color);
});
ui.horizontal(|ui| {
ui.label("Transform unit color:");
ui.color_edit_button_srgba(&mut style.transform_unit_stroke.color);
});
ui.horizontal(|ui| {
ui.label("Superblock color:");
ui.color_edit_button_srgba(&mut style.superblock_stroke.color);
});
ui.horizontal(|ui| {
ui.label("Mode name color:");
ui.color_edit_button_srgba(&mut style.mode_name_color);
});
ui.horizontal(|ui| {
ui.label("Pixel / coeffs viewer text color:");
ui.color_edit_button_srgba(&mut style.pixel_viewer_text_color);
});
ui.checkbox(&mut style.enable_text_shadows, "Enable text shadows");
});
Ok(())
}
}