mirror of
https://github.com/kdheepak/taskwarrior-tui.git
synced 2025-08-26 03:07:18 +02:00
Add help menu
This commit is contained in:
parent
aa2571f726
commit
98c1a7395d
2 changed files with 58 additions and 3 deletions
52
src/app.rs
52
src/app.rs
|
@ -15,11 +15,11 @@ use chrono::{DateTime, Duration, Local, NaiveDateTime, TimeZone};
|
|||
|
||||
use tui::{
|
||||
backend::Backend,
|
||||
layout::{Constraint, Direction, Layout, Rect},
|
||||
layout::{Constraint, Direction, Layout, Rect, Alignment},
|
||||
style::{Color, Modifier, Style},
|
||||
terminal::Frame,
|
||||
text::Text,
|
||||
widgets::{BarChart, Clear, Block, Borders, Paragraph, Row, Table, TableState},
|
||||
text::{Text, Spans, Span},
|
||||
widgets::{BarChart, Clear, Block, Borders, Paragraph, Row, Table, Wrap, TableState},
|
||||
Terminal,
|
||||
};
|
||||
|
||||
|
@ -92,6 +92,7 @@ pub enum AppMode {
|
|||
AddTask,
|
||||
LogTask,
|
||||
ModifyTask,
|
||||
HelpPopup,
|
||||
}
|
||||
|
||||
pub struct App {
|
||||
|
@ -189,9 +190,54 @@ impl App {
|
|||
f.render_widget(Clear, rects[1]);
|
||||
self.draw_command(f, rects[1], &self.command[..], "Add Task");
|
||||
},
|
||||
AppMode::HelpPopup => {
|
||||
self.draw_command(f, rects[1], &self.filter[..], "Filter Tasks");
|
||||
self.draw_help_popup(f, f.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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::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::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(" d") , Span::from(" ") , 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::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::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::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::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::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::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::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::from(Span::styled("task undo ", Style::default().add_modifier(Modifier::BOLD))) , Span::from(" ") , Span::from("- Undo")]) ,
|
||||
Spans::from(""),
|
||||
Spans::from(vec![Span::from(" ?") , Span::from(" ") , Span::from(Span::styled("help ", Style::default().add_modifier(Modifier::BOLD))) , Span::from(" ") , Span::from("- Show this help menu")]) ,
|
||||
Spans::from(""),
|
||||
];
|
||||
let paragraph = Paragraph::new(text)
|
||||
.block(
|
||||
Block::default()
|
||||
.title("Help")
|
||||
.borders(Borders::ALL)
|
||||
)
|
||||
.alignment(Alignment::Left);
|
||||
let area = centered_rect(80, 90, rect);
|
||||
f.render_widget(Clear, area);
|
||||
f.render_widget(paragraph, area);
|
||||
}
|
||||
|
||||
|
||||
fn draw_command(&self, f: &mut Frame<impl Backend>, rect: Rect, text: &str, title: &str) {
|
||||
let p = Paragraph::new(Text::from(text))
|
||||
.block(Block::default().borders(Borders::ALL).title(title));
|
||||
|
|
|
@ -76,11 +76,20 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
Key::Char('a') => {
|
||||
app.mode = AppMode::AddTask;
|
||||
}
|
||||
Key::Char('?') => {
|
||||
app.mode = AppMode::HelpPopup;
|
||||
}
|
||||
Key::Char('/') => {
|
||||
app.mode = AppMode::Filter;
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
AppMode::HelpPopup => match input {
|
||||
Key::Esc => {
|
||||
app.mode = AppMode::Report;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
AppMode::ModifyTask => match input {
|
||||
Key::Char('\n') => {
|
||||
app.task_modify();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue