init, basic glogg clone

This commit is contained in:
2025-12-02 18:30:12 +01:00
parent fb9967ea41
commit e60f2bf319
26 changed files with 6512 additions and 0 deletions

49
src/ui/top_menu.rs Normal file
View File

@@ -0,0 +1,49 @@
use eframe::egui;
use crate::highlight::HighlightManager;
use crate::tab_manager::IndexingState;
pub fn render_top_menu(
ctx: &egui::Context,
highlight_manager: &mut HighlightManager,
indexing_state: &IndexingState,
on_open_file: &mut bool,
) {
egui::TopBottomPanel::top("top_panel").show(ctx, |ui| {
ui.horizontal(|ui| {
if ui.button("📂 Open File").clicked() {
*on_open_file = true;
}
if ui.button("🎨 Highlights").clicked() {
highlight_manager.toggle_editor();
}
ui.separator();
let mut to_toggle = None;
for (idx, rule) in highlight_manager.rules.iter().enumerate() {
let color = egui::Color32::from_rgb(rule.color[0], rule.color[1], rule.color[2]);
let button_text = egui::RichText::new(&rule.pattern)
.background_color(color)
.color(egui::Color32::BLACK);
if ui.selectable_label(rule.enabled, button_text).clicked() {
to_toggle = Some(idx);
}
}
if let Some(idx) = to_toggle {
highlight_manager.toggle_rule(idx);
// Signal that config should be saved
}
ui.separator();
if indexing_state.is_indexing() {
ui.spinner();
ui.label("Indexing...");
}
});
});
}