use crate::ui::window_common::{gled_window_frame, tool_window_builder};
use egui::{Color32, Frame, Id, RichText, ScrollArea, Vec2, ViewportId};
#[derive(Debug, Default)]
pub(crate) struct ErrorsWindow {
pub(crate) entries: Vec<String>,
}
impl ErrorsWindow {
#[cfg_attr(feature = "profiling", profiling::function)]
pub(crate) fn update(&mut self, ctx: &egui::Context) {
if self.entries.is_empty() {
return;
}
ctx.show_viewport_immediate(
ViewportId(Id::new("errors window")),
tool_window_builder("Errors")
.with_inner_size(Vec2::new(560.0, 260.0))
.with_minimize_button(false)
.with_maximize_button(true)
.with_resizable(true),
|ctx, _viewport_class| {
ctx.input(|input| {
if input.viewport().close_requested()
|| crate::ui::window_common::embedded_close_clicked("Errors")
{
self.entries.clear();
}
});
gled_window_frame(ctx, "Errors", |ui| {
egui::CentralPanel::default()
.frame(Frame::default().fill(Color32::DARK_RED).inner_margin(8))
.show(ui, |ui| {
ScrollArea::vertical().auto_shrink(false).show(ui, |ui| {
for error in &self.entries {
ui.label(RichText::new(error).color(Color32::WHITE));
ui.add_space(6.0);
}
});
});
});
},
);
}
}