mirror of
https://github.com/kdheepak/taskwarrior-tui.git
synced 2025-08-25 08:47:18 +02:00
Add keybindings.md and help widget
This commit is contained in:
parent
c6156333e7
commit
c8feaa15b3
4 changed files with 83 additions and 189 deletions
37
KEYBINDINGS.md
Normal file
37
KEYBINDINGS.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
Keybindings:
|
||||
|
||||
/: task {string} - Filter task report
|
||||
|
||||
a: task add {string} - Add new task
|
||||
|
||||
d: task {selected} done - Mark task as done
|
||||
|
||||
e: task {selected} edit - Open selected task in editor
|
||||
|
||||
j: {selected+=1} - Move down in task report
|
||||
|
||||
k: {selected-=1} - Move up in task report
|
||||
|
||||
l: task log {string} - Log new task
|
||||
|
||||
m: task {selected} modify {string} - Modify selected task
|
||||
|
||||
q: exit - Quit
|
||||
|
||||
s: task {selected} start/stop - Toggle start and stop
|
||||
|
||||
u: task undo - Undo
|
||||
|
||||
x: task delete {selected} - Delete
|
||||
|
||||
z: toggle task info - Toggle task info view
|
||||
|
||||
A: task {selected} annotate {string} - Annotate current task
|
||||
|
||||
?: help - Help menu
|
||||
|
||||
!: {string} - Custom shell command
|
||||
|
||||
]: Next view - Go to next view
|
||||
|
||||
[: Previous view - Go to previous view
|
192
src/app.rs
192
src/app.rs
|
@ -1,4 +1,5 @@
|
|||
use crate::calendar::Calendar;
|
||||
use crate::help::Help;
|
||||
use crate::config::TConfig;
|
||||
use crate::table::{Row, Table, TableState};
|
||||
|
||||
|
@ -579,197 +580,10 @@ impl TTApp {
|
|||
}
|
||||
|
||||
fn draw_help_popup(&self, f: &mut Frame<impl Backend>, rect: Rect) {
|
||||
let text = vec![
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" /"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task {string} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Filter task report"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" a"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task add {string} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Add new task"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" A"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task annotate {string} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Annotate task"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" d"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task done {selected} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Mark task as done"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" e"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task edit {selected} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Open selected task in editor"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" j"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"{selected+=1} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Move down in task report"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" k"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"{selected-=1} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Move up in task report"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" l"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task log {string} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Log new task"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" m"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task modify {string} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Modify selected task"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" q"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"exit ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Quit"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" s"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task start/stop {selected} ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Toggle start and stop"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" u"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task undo ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Undo"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" x"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"task delete ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Delete task"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" z"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"toggle details ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Toggle task detail panel"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" ?"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"help ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Show this help menu"),
|
||||
]),
|
||||
Spans::from(""),
|
||||
Spans::from(vec![
|
||||
Span::from(" !"),
|
||||
Span::from(" "),
|
||||
Span::styled(
|
||||
"shell ",
|
||||
Style::default().add_modifier(Modifier::BOLD),
|
||||
),
|
||||
Span::from(" "),
|
||||
Span::from("- Custom shell command"),
|
||||
]),
|
||||
|
||||
];
|
||||
let paragraph = Paragraph::new(text)
|
||||
.block(
|
||||
Block::default()
|
||||
.title(Span::styled("Help", Style::default().add_modifier(Modifier::BOLD)))
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded),
|
||||
)
|
||||
.alignment(Alignment::Left);
|
||||
let area = centered_rect(80, 90, rect);
|
||||
let h = Help::new();
|
||||
f.render_widget(Clear, area);
|
||||
f.render_widget(paragraph, area);
|
||||
f.render_widget(&h, area);
|
||||
}
|
||||
|
||||
fn draw_command<'a, T>(&self, f: &mut Frame<impl Backend>, rect: Rect, text: &str, title: T)
|
||||
|
|
42
src/help.rs
Normal file
42
src/help.rs
Normal file
|
@ -0,0 +1,42 @@
|
|||
use std::cmp;
|
||||
|
||||
use tui::{
|
||||
layout::{Alignment, Rect},
|
||||
buffer::Buffer,
|
||||
style::{Modifier, Style},
|
||||
text::{Text, Span, Spans},
|
||||
widgets::{Block, Widget, BorderType, Borders, Clear, Paragraph},
|
||||
};
|
||||
|
||||
|
||||
const TEXT: &str = include_str!("../KEYBINDINGS.md");
|
||||
|
||||
pub struct Help {
|
||||
title: String,
|
||||
}
|
||||
|
||||
impl Help {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
title: "Help".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Widget for &Help {
|
||||
fn render(self, area: Rect, buf: &mut Buffer) {
|
||||
let text: Vec<Spans> = TEXT.lines()
|
||||
.map(|line| Spans::from(format!("{}\n", line)))
|
||||
.collect();
|
||||
|
||||
Paragraph::new(text)
|
||||
.block(
|
||||
Block::default()
|
||||
.title(Span::styled(&self.title, Style::default().add_modifier(Modifier::BOLD)))
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Rounded)
|
||||
)
|
||||
.alignment(Alignment::Left)
|
||||
.render(area, buf);
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
mod app;
|
||||
mod calendar;
|
||||
mod help;
|
||||
mod config;
|
||||
mod table;
|
||||
mod util;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue