101 lines
4.4 KiB
Rust
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;
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|