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::{
|
use tui::{
|
||||||
backend::Backend,
|
backend::Backend,
|
||||||
layout::{Constraint, Direction, Layout, Rect},
|
layout::{Constraint, Direction, Layout, Rect, Alignment},
|
||||||
style::{Color, Modifier, Style},
|
style::{Color, Modifier, Style},
|
||||||
terminal::Frame,
|
terminal::Frame,
|
||||||
text::Text,
|
text::{Text, Spans, Span},
|
||||||
widgets::{BarChart, Clear, Block, Borders, Paragraph, Row, Table, TableState},
|
widgets::{BarChart, Clear, Block, Borders, Paragraph, Row, Table, Wrap, TableState},
|
||||||
Terminal,
|
Terminal,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -92,6 +92,7 @@ pub enum AppMode {
|
||||||
AddTask,
|
AddTask,
|
||||||
LogTask,
|
LogTask,
|
||||||
ModifyTask,
|
ModifyTask,
|
||||||
|
HelpPopup,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct App {
|
pub struct App {
|
||||||
|
@ -189,9 +190,54 @@ impl App {
|
||||||
f.render_widget(Clear, rects[1]);
|
f.render_widget(Clear, rects[1]);
|
||||||
self.draw_command(f, rects[1], &self.command[..], "Add Task");
|
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) {
|
fn draw_command(&self, f: &mut Frame<impl Backend>, rect: Rect, text: &str, title: &str) {
|
||||||
let p = Paragraph::new(Text::from(text))
|
let p = Paragraph::new(Text::from(text))
|
||||||
.block(Block::default().borders(Borders::ALL).title(title));
|
.block(Block::default().borders(Borders::ALL).title(title));
|
||||||
|
|
|
@ -76,11 +76,20 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||||
Key::Char('a') => {
|
Key::Char('a') => {
|
||||||
app.mode = AppMode::AddTask;
|
app.mode = AppMode::AddTask;
|
||||||
}
|
}
|
||||||
|
Key::Char('?') => {
|
||||||
|
app.mode = AppMode::HelpPopup;
|
||||||
|
}
|
||||||
Key::Char('/') => {
|
Key::Char('/') => {
|
||||||
app.mode = AppMode::Filter;
|
app.mode = AppMode::Filter;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
},
|
},
|
||||||
|
AppMode::HelpPopup => match input {
|
||||||
|
Key::Esc => {
|
||||||
|
app.mode = AppMode::Report;
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
AppMode::ModifyTask => match input {
|
AppMode::ModifyTask => match input {
|
||||||
Key::Char('\n') => {
|
Key::Char('\n') => {
|
||||||
app.task_modify();
|
app.task_modify();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue