feat(gui): egui skeleton with dark theme

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
dailz
2026-04-10 21:19:34 +08:00
parent 53250e5903
commit 09e7f995fb
2 changed files with 64 additions and 1 deletions

43
crates/gui/src/app.rs Normal file
View File

@@ -0,0 +1,43 @@
pub struct LogViewerApp;
impl Default for LogViewerApp {
fn default() -> Self {
Self
}
}
impl eframe::App for LogViewerApp {
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame) {
egui::Panel::top("menu_bar").show_inside(ui, |ui| {
egui::MenuBar::new().ui(ui, |ui| {
ui.menu_button("File", |ui| {
if ui.button("Open").clicked() {
// TODO: file open dialog
}
if ui.button("Quit").clicked() {
// TODO: quit
}
});
ui.menu_button("Edit", |ui| {
if ui.button("Find (Ctrl+F)").clicked() {
// TODO: find
}
});
});
});
egui::Panel::bottom("status_bar").show_inside(ui, |ui| {
ui.horizontal(|ui| {
ui.label("Ready");
});
});
egui::CentralPanel::default().show_inside(ui, |ui| {
ui.vertical_centered(|ui| {
ui.add_space(100.0);
ui.heading("Log Viewer");
ui.label("Open a file to get started (File → Open)");
});
});
}
}

View File

@@ -1 +1,21 @@
fn main() {}
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
mod app;
fn main() -> eframe::Result {
let options = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default()
.with_inner_size([1200.0, 800.0])
.with_min_inner_size([600.0, 400.0]),
..Default::default()
};
eframe::run_native(
"Log Viewer",
options,
Box::new(|cc| {
cc.egui_ctx.set_visuals(egui::Visuals::dark());
Ok(Box::new(app::LogViewerApp))
}),
)
}