ced/src/ui/shortcuts_window.rs

101 lines
4.4 KiB
Rust

use crate::app::TextEditor;
use eframe::egui;
fn render_shortcuts_content(ui: &mut egui::Ui) {
ui.vertical_centered(|ui| {
ui.label(egui::RichText::new("Navigation").size(18.0).strong());
ui.label(egui::RichText::new("Ctrl + N: New").size(14.0));
ui.label(egui::RichText::new("Ctrl + O: Open").size(14.0));
ui.label(egui::RichText::new("Ctrl + S: Save").size(14.0));
ui.label(egui::RichText::new("Ctrl + Shift + S: Save As").size(14.0));
ui.label(egui::RichText::new("Ctrl + T: New Tab").size(14.0));
ui.label(egui::RichText::new("Ctrl + Tab: Next Tab").size(14.0));
ui.label(egui::RichText::new("Ctrl + Shift + Tab: Last Tab").size(14.0));
ui.add_space(16.0);
ui.separator();
ui.label(egui::RichText::new("Editing").size(18.0).strong());
ui.label(egui::RichText::new("Ctrl + Z: Undo").size(14.0));
ui.label(egui::RichText::new("Ctrl + Shift + Z: Redo").size(14.0));
ui.label(egui::RichText::new("Ctrl + X: Cut").size(14.0));
ui.label(egui::RichText::new("Ctrl + C: Copy").size(14.0));
ui.label(egui::RichText::new("Ctrl + V: Paste").size(14.0));
ui.label(egui::RichText::new("Ctrl + A: Select All").size(14.0));
ui.label(egui::RichText::new("Ctrl + D: Delete Line").size(14.0));
ui.add_space(16.0);
ui.separator();
ui.label(egui::RichText::new("Views").size(18.0).strong());
ui.label(egui::RichText::new("Ctrl + L: Toggle Line Numbers").size(14.0));
ui.label(egui::RichText::new("Ctrl + Shift + L: Change Line Number Side").size(14.0));
ui.label(egui::RichText::new("Ctrl + K: Toggle Word Wrap").size(14.0));
ui.label(egui::RichText::new("Ctrl + H: Toggle Auto Hide Toolbar").size(14.0));
ui.label(egui::RichText::new("Ctrl + P: Preferences").size(14.0));
ui.label(egui::RichText::new("Ctrl + =/-: Increase/Decrease Font Size").size(14.0));
ui.label(egui::RichText::new("Ctrl + Shift + =/-: Zoom In/Out").size(14.0));
// ui.label(
// egui::RichText::new("Ctrl + Shift + .: Toggle Vim Mode")
// .size(14.0)
// );
// ui.label(
// egui::RichText::new("Ctrl + .: Toggle Vim Mode")
// .size(14.0)
// );
ui.add_space(12.0);
});
}
pub(crate) fn shortcuts_window(app: &mut TextEditor, ctx: &egui::Context) {
let visuals = &ctx.style().visuals;
let screen_rect = ctx.screen_rect();
// Calculate appropriate window size that always fits nicely in the main window
let window_width = (screen_rect.width() * 0.6).clamp(300.0, 400.0);
let window_height = (screen_rect.height() * 0.7).clamp(250.0, 500.0);
egui::Window::new("Shortcuts")
.collapsible(false)
.resizable(false)
.anchor(egui::Align2::CENTER_CENTER, egui::Vec2::ZERO)
.fixed_size([window_width, window_height])
.frame(egui::Frame {
fill: visuals.window_fill,
stroke: visuals.window_stroke,
corner_radius: egui::CornerRadius::same(8),
shadow: visuals.window_shadow,
inner_margin: egui::Margin::same(16),
outer_margin: egui::Margin::same(0),
})
.show(ctx, |ui| {
ui.vertical(|ui| {
// Scrollable content area
let available_height = ui.available_height() - 40.0; // Reserve space for close button
ui.allocate_ui_with_layout(
[ui.available_width(), available_height].into(),
egui::Layout::top_down(egui::Align::Center),
|ui| {
egui::ScrollArea::vertical()
.auto_shrink([false; 2])
.show(ui, |ui| {
render_shortcuts_content(ui);
});
},
);
// Fixed close button at bottom
ui.vertical_centered(|ui| {
ui.add_space(8.0);
let visuals = ui.visuals();
let close_button = egui::Button::new("Close")
.fill(visuals.widgets.inactive.bg_fill)
.stroke(visuals.widgets.inactive.bg_stroke);
if ui.add(close_button).clicked() {
app.show_shortcuts = false;
}
});
});
});
}