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)) + }), + ) +}