use ratatui::{
prelude::*,
widgets::{Block, Borders, Paragraph},
};
use crate::ui::theme;
pub struct HelpScreen;
impl HelpScreen {
pub fn new() -> Self {
HelpScreen
}
}
pub fn render_help_screen(f: &mut Frame, _screen: &HelpScreen) {
let block = Block::default()
.title("Help")
.borders(Borders::ALL)
.border_style(theme::BORDER_STYLE);
let help_lines = vec![
Line::raw(""),
Line::raw(" Welcome to Look Inside!").style(theme::ACCENT_BOLD_STYLE),
Line::raw(""),
Line::raw(" Global Keybindings:").style(theme::HIGHLIGHT_STYLE),
Line::from(vec![
Span::raw(" - "),
Span::raw("Alt+Q").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Return to the Start Menu."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Ctrl+S").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Save Current Workspace."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Ctrl+O").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Load Workspace."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("?").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Toggle this Help screen."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Esc").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Exit the application."),
]),
Line::raw(""),
Line::raw(" Start Menu:").style(theme::HIGHLIGHT_STYLE),
Line::from(vec![
Span::raw(" - "),
Span::raw("↑↓").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Navigate menu items."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Enter").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Select a menu item (Load Data, Statistics, Exit)."),
]),
Line::raw(""),
Line::raw(" Load Data Screen:").style(theme::HIGHLIGHT_STYLE),
Line::from(vec![
Span::raw(" - "),
Span::raw("↑↓←→").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Navigate through files and directories."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Enter").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Select a file to load or enter a directory."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Esc").style(theme::HIGHLIGHT_COLOR), Span::raw(": Go back to Start Menu."),
]),
Line::raw(""),
Line::raw(" Statistics View Screen:").style(theme::HIGHLIGHT_STYLE),
Line::from(vec![
Span::raw(" - "),
Span::raw("s").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Generate Descriptive Statistics and Null Analysis (default histogram/bar chart)."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("u").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Generate Null Analysis."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("h").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Enter column name for Histogram."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("b").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Enter column name for Bar Chart."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("m").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Enter columns for Correlation Matrix."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("a").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Enter column for Anomaly Detection."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("c").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Enter columns for Clustering."),
]),
Line::raw(""),
Line::raw(" Filter View Screen:").style(theme::HIGHLIGHT_STYLE),
Line::from(vec![
Span::raw(" - "),
Span::raw("f").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Enter filter expression (e.g., 'column_name > 10')."),
]),
Line::raw(""),
Line::raw(" Input Modes (e.g., for filter, column selection, save/load paths):").style(theme::HIGHLIGHT_STYLE),
Line::from(vec![
Span::raw(" - Any character: Type input."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Backspace").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Delete character."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Enter").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Confirm input and apply."),
]),
Line::from(vec![
Span::raw(" - "),
Span::raw("Esc").style(theme::HIGHLIGHT_STYLE),
Span::raw(": Cancel input and return to Normal mode."),
]),
Line::raw(""),
Line::raw(" More help will be added here as features are developed.").style(theme::TEXT_STYLE),
];
let paragraph = Paragraph::new(help_lines)
.block(block)
.wrap(ratatui::widgets::Wrap { trim: false })
.style(theme::TEXT_STYLE);
f.render_widget(paragraph, f.area());
}