[tui] Add help text for last focused widget.
+ Fill in TODO help text for all widgets.
This commit is contained in:
parent
029e0b2952
commit
aa4bf8aea6
@ -97,7 +97,14 @@ impl<'a> App<'a> {
|
||||
AppExplorer => self.explorer.component_state.help_text.clone(),
|
||||
AppLogger => self.logger.component_state.help_text.clone(),
|
||||
};
|
||||
Paragraph::new(help)
|
||||
Paragraph::new(
|
||||
concat!(
|
||||
"ALT+Q: Focus project explorer | ALT+W: Focus editor | ALT+E: Focus logger |",
|
||||
" CTRL+C: Quit\n"
|
||||
)
|
||||
.to_string()
|
||||
+ help.as_str(),
|
||||
)
|
||||
.style(Color::Gray)
|
||||
.wrap(Wrap { trim: false })
|
||||
.centered()
|
||||
|
||||
@ -33,7 +33,8 @@ impl Editor {
|
||||
event_handler: EditorEventHandler::default(),
|
||||
file_path: None,
|
||||
syntax_set: SyntaxSet::load_defaults_nonewlines(),
|
||||
component_state: ComponentState::default().with_help_text("TODO: Vim help text"),
|
||||
component_state: ComponentState::default()
|
||||
.with_help_text("CTRL+S: Save file | Any other input is handled by vim"),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -7,11 +7,12 @@ use ratatui::prelude::Style;
|
||||
use ratatui::style::{Color, Modifier};
|
||||
use ratatui::widgets::{Block, Borders, StatefulWidget};
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
use tui_tree_widget::{Tree, TreeItem, TreeState};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Explorer<'a> {
|
||||
pub(crate) root_path: std::path::PathBuf,
|
||||
pub(crate) root_path: PathBuf,
|
||||
tree_items: TreeItem<'a, String>,
|
||||
tree_state: TreeState<String>,
|
||||
pub(crate) component_state: ComponentState,
|
||||
@ -27,7 +28,9 @@ impl<'a> Explorer<'a> {
|
||||
root_path: path.to_owned(),
|
||||
tree_items: Self::build_tree_from_path(path.to_owned())?,
|
||||
tree_state: TreeState::default(),
|
||||
component_state: ComponentState::default().with_help_text("TODO: Explorer help text."),
|
||||
component_state: ComponentState::default().with_help_text(
|
||||
"(↑/k)/(↓/j): Select item | ←/h: Close folder | →/l/Enter: Open folder",
|
||||
),
|
||||
};
|
||||
Ok(explorer)
|
||||
}
|
||||
@ -140,14 +143,14 @@ impl<'a> Component for Explorer<'a> {
|
||||
|
||||
fn handle_key_events(&mut self, key: KeyEvent) -> Result<Action> {
|
||||
let changed = match key.code {
|
||||
KeyCode::Up => self.tree_state.key_up(),
|
||||
KeyCode::Char('k') => self.tree_state.key_up(),
|
||||
KeyCode::Down => self.tree_state.key_down(),
|
||||
KeyCode::Char('j') => self.tree_state.key_down(),
|
||||
KeyCode::Left => self.tree_state.key_left(),
|
||||
KeyCode::Char('h') => self.tree_state.key_left(),
|
||||
KeyCode::Right => self.tree_state.key_right(),
|
||||
KeyCode::Char('l') => self.tree_state.key_right(),
|
||||
KeyCode::Up | KeyCode::Char('k') => self.tree_state.key_up(),
|
||||
KeyCode::Down | KeyCode::Char('j') => self.tree_state.key_down(),
|
||||
KeyCode::Left | KeyCode::Char('h') => {
|
||||
// Do not call key_left(); Calling it on a closed folder clears the selection.
|
||||
let key = self.tree_state.selected().to_owned();
|
||||
self.tree_state.close(key.as_ref())
|
||||
}
|
||||
KeyCode::Right | KeyCode::Char('l') => self.tree_state.key_right(),
|
||||
KeyCode::Enter => self.tree_state.toggle_selected(),
|
||||
_ => false,
|
||||
};
|
||||
|
||||
@ -19,12 +19,14 @@ impl Logger {
|
||||
}
|
||||
|
||||
pub fn new() -> Self {
|
||||
let state = TuiWidgetState::new();
|
||||
state.transition(TuiWidgetEvent::HideKey);
|
||||
Self {
|
||||
state: TuiWidgetState::new(),
|
||||
state,
|
||||
component_state: ComponentState::default().with_help_text(concat!(
|
||||
"Q: Quit | ↑/↓: Select target | f: Focus target",
|
||||
" | ←/→: Display level | +/-: Filter level | Space: Toggle hidden targets",
|
||||
" | h: Hide target selector | PageUp/Down: Scroll | Esc: Cancel scroll"
|
||||
"Space: Hide/show logging target selector panel | (↑/k)/(↓/j): Select target |",
|
||||
" (←/h)/(→/l): Display level | f: Focus target | +/-: Filter level |",
|
||||
" v: Toggle filtered targets visibility | PageUp/Down: Scroll | Esc: Cancel scroll"
|
||||
)),
|
||||
}
|
||||
}
|
||||
@ -62,17 +64,17 @@ impl Component for Logger {
|
||||
|
||||
fn handle_key_events(&mut self, key: KeyEvent) -> anyhow::Result<Action> {
|
||||
match key.code {
|
||||
KeyCode::Char(' ') => self.state.transition(TuiWidgetEvent::SpaceKey),
|
||||
KeyCode::Char('v') => self.state.transition(TuiWidgetEvent::SpaceKey),
|
||||
KeyCode::Esc => self.state.transition(TuiWidgetEvent::EscapeKey),
|
||||
KeyCode::PageUp => self.state.transition(TuiWidgetEvent::PrevPageKey),
|
||||
KeyCode::PageDown => self.state.transition(TuiWidgetEvent::NextPageKey),
|
||||
KeyCode::Up => self.state.transition(TuiWidgetEvent::UpKey),
|
||||
KeyCode::Down => self.state.transition(TuiWidgetEvent::DownKey),
|
||||
KeyCode::Left => self.state.transition(TuiWidgetEvent::LeftKey),
|
||||
KeyCode::Right => self.state.transition(TuiWidgetEvent::RightKey),
|
||||
KeyCode::Up | KeyCode::Char('k') => self.state.transition(TuiWidgetEvent::UpKey),
|
||||
KeyCode::Down | KeyCode::Char('j') => self.state.transition(TuiWidgetEvent::DownKey),
|
||||
KeyCode::Left | KeyCode::Char('h') => self.state.transition(TuiWidgetEvent::LeftKey),
|
||||
KeyCode::Right | KeyCode::Char('l') => self.state.transition(TuiWidgetEvent::RightKey),
|
||||
KeyCode::Char('+') => self.state.transition(TuiWidgetEvent::PlusKey),
|
||||
KeyCode::Char('-') => self.state.transition(TuiWidgetEvent::MinusKey),
|
||||
KeyCode::Char('h') => self.state.transition(TuiWidgetEvent::HideKey),
|
||||
KeyCode::Char(' ') => self.state.transition(TuiWidgetEvent::HideKey),
|
||||
KeyCode::Char('f') => self.state.transition(TuiWidgetEvent::FocusKey),
|
||||
_ => (),
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user