fastpack-gui 0.21.0

Native desktop GUI for FastPack (primary interface)
Documentation
use eframe::egui;
use rust_i18n::t;

use crate::state::{AppState, LogLevel};

pub fn show(ui: &mut egui::Ui, state: &mut AppState) {
    ui.horizontal(|ui| {
        ui.strong(t!("output_log.title"));
        ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| {
            if ui.small_button(t!("output_log.clear")).clicked() {
                state.log.clear();
            }
        });
    });
    ui.separator();

    egui::ScrollArea::vertical()
        .stick_to_bottom(true)
        .auto_shrink([false, false])
        .show(ui, |ui| {
            for entry in &state.log {
                let color = match entry.level {
                    LogLevel::Info => egui::Color32::from_gray(220),
                    LogLevel::Warn => egui::Color32::from_rgb(255, 200, 60),
                    LogLevel::Error => egui::Color32::from_rgb(255, 90, 80),
                };
                let text = format!("[{}] {}", entry.time, entry.message);
                ui.label(egui::RichText::new(text).color(color).small().monospace());
            }
        });
}