feat: keyboard layout/variant search with custom combobox, hex color constants, various UI fixes

- Custom combobox implementation with TextEdit + Area popup for keyboard layout/variant search
- Added color_from_hex() helper, layout_buf/variant_buf fields
- Removed egui-dropdown dependency
- Popup items 28px -> 32px with gradient background
- Dropdown text color changed to pure white
- All color constants converted to hex format
- KLE SVG rendering improvements
- CHANGELOG.md updated
This commit is contained in:
Erkan IŞIK
2026-06-24 07:09:39 +03:00
parent d98ae22519
commit 635c844710
8 changed files with 2348 additions and 248 deletions
+19 -19
View File
@@ -48,8 +48,8 @@ fn run_gui(demo_mode: bool) -> eframe::Result<()> {
Box::new(move |cc| {
// Görsel yükleyicileri etkinleştir (PNG desteği)
egui_extras::install_image_loaders(&cc.egui_ctx);
ui::theme::set_theme_mode(false);
ui::theme::apply(&cc.egui_ctx, false);
ui::theme::set_theme_mode(true);
ui::theme::apply(&cc.egui_ctx, true);
let mut app = YaliApp::default();
app.state.demo_mode = demo_mode;
Box::new(app)
@@ -407,24 +407,24 @@ impl eframe::App for YaliApp {
}
// Alt kısım: tema değiştirme
// ui.with_layout(egui::Layout::bottom_up(egui::Align::Center), |ui| {
// ui.add_space(6.0);
ui.with_layout(egui::Layout::bottom_up(egui::Align::Center), |ui| {
ui.add_space(6.0);
// let theme_icon = if self.state.is_dark { "☀" } else { "🌙" };
// let theme_label = if self.state.is_dark { "Light" } else { "Dark" };
// if ui.add(
// egui::Button::new(
// egui::RichText::new(format!("{} {}", theme_icon, theme_label))
// .size(12.0)
// )
// .rounding(egui::Rounding::same(6.0))
// .min_size(egui::Vec2::new(100.0, 28.0))
// ).clicked() {
// self.state.is_dark = !self.state.is_dark;
// ui::theme::set_theme_mode(self.state.is_dark);
// ui::theme::apply(ctx, self.state.is_dark);
// }
// });
let theme_icon = if self.state.is_dark { "☀" } else { "🌙" };
let theme_label = if self.state.is_dark { "Light" } else { "Dark" };
if ui.add(
egui::Button::new(
egui::RichText::new(format!("{} {}", theme_icon, theme_label))
.size(12.0)
)
.rounding(egui::Rounding::same(6.0))
.min_size(egui::Vec2::new(100.0, 28.0))
).clicked() {
self.state.is_dark = !self.state.is_dark;
ui::theme::set_theme_mode(self.state.is_dark);
ui::theme::apply(ctx, self.state.is_dark);
}
});
});
// ── Alt panel: navigasyon ────────────────────────────