From 09e7f995fbcad8f5602b6a0c8e48e2baeb6ad928 Mon Sep 17 00:00:00 2001 From: dailz Date: Fri, 10 Apr 2026 21:19:34 +0800 Subject: [PATCH] feat(gui): egui skeleton with dark theme Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- crates/gui/src/app.rs | 43 ++++++++++++++++++++++++++++++++++++++++++ crates/gui/src/main.rs | 22 ++++++++++++++++++++- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 crates/gui/src/app.rs diff --git a/crates/gui/src/app.rs b/crates/gui/src/app.rs new file mode 100644 index 0000000..397d9e3 --- /dev/null +++ b/crates/gui/src/app.rs @@ -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)"); + }); + }); + } +} diff --git a/crates/gui/src/main.rs b/crates/gui/src/main.rs index f328e4d..6291652 100644 --- a/crates/gui/src/main.rs +++ b/crates/gui/src/main.rs @@ -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)) + }), + ) +}