aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-12-05 16:33:34 -0500
committerJesse Luehrs <doy@tozt.net>2021-12-05 16:33:34 -0500
commitf4b04b4e35dc21d2e963abf0d4d3aae3bb61b0a2 (patch)
tree8d0cb794cf04f8c778650e6f847b2513d642d38e
parent97cd43606097a23b20b761928fcf65db9d42214a (diff)
downloadttyrec-bin-f4b04b4e35dc21d2e963abf0d4d3aae3bb61b0a2.tar.gz
ttyrec-bin-f4b04b4e35dc21d2e963abf0d4d3aae3bb61b0a2.zip
add help
-rw-r--r--src/bin/ttyplay/display.rs37
-rw-r--r--src/bin/ttyplay/event.rs12
-rw-r--r--src/bin/ttyplay/input.rs1
3 files changed, 50 insertions, 0 deletions
diff --git a/src/bin/ttyplay/display.rs b/src/bin/ttyplay/display.rs
index f5bcb00..3ae84e9 100644
--- a/src/bin/ttyplay/display.rs
+++ b/src/bin/ttyplay/display.rs
@@ -6,6 +6,7 @@ pub struct Display {
done_loading: bool,
paused: bool,
show_ui: bool,
+ show_help: bool,
}
impl Display {
@@ -16,6 +17,7 @@ impl Display {
done_loading: false,
paused: false,
show_ui: true,
+ show_help: false,
}
}
@@ -39,6 +41,10 @@ impl Display {
self.show_ui = !self.show_ui;
}
+ pub fn toggle_help(&mut self) {
+ self.show_help = !self.show_help;
+ }
+
pub async fn render(
&self,
screen: &vt100::Screen,
@@ -71,6 +77,37 @@ impl Display {
output.set_bgcolor(textmode::color::RED);
output.write_str("\u{23f8}");
+ if self.show_help {
+ output.reset_attributes();
+ output.set_fgcolor(textmode::color::BLACK);
+ output.set_bgcolor(textmode::color::CYAN);
+
+ output.move_to(size.0 - 12, size.1 - 23);
+ output.write_str(" keys ");
+ output.move_to(size.0 - 11, size.1 - 23);
+ output.write_str(" q: quit ");
+ output.move_to(size.0 - 10, size.1 - 23);
+ output.write_str(" space: pause/unpause ");
+ output.move_to(size.0 - 9, size.1 - 23);
+ output.write_str(" tab: hide/show ui ");
+ output.move_to(size.0 - 8, size.1 - 23);
+ output.write_str(" h/p: previous frame ");
+ output.move_to(size.0 - 7, size.1 - 23);
+ output.write_str(" l/n: next frame ");
+ output.move_to(size.0 - 6, size.1 - 23);
+ output.write_str(" g/0: first frame ");
+ output.move_to(size.0 - 5, size.1 - 23);
+ output.write_str(" G/$: last frame ");
+ output.move_to(size.0 - 4, size.1 - 23);
+ output.write_str(" +: increase speed ");
+ output.move_to(size.0 - 3, size.1 - 23);
+ output.write_str(" -: decrease speed ");
+ output.move_to(size.0 - 2, size.1 - 23);
+ output.write_str(" =: normal speed ");
+ output.move_to(size.0 - 1, size.1 - 23);
+ output.write_str(" ?: hide/show help ");
+ }
+
output.reset_attributes();
output.move_to(pos.0, pos.1);
}
diff --git a/src/bin/ttyplay/event.rs b/src/bin/ttyplay/event.rs
index 3a68965..68900cd 100644
--- a/src/bin/ttyplay/event.rs
+++ b/src/bin/ttyplay/event.rs
@@ -4,6 +4,7 @@ pub enum Event {
Paused(bool),
TimerAction(TimerAction),
ToggleUi,
+ ToggleHelp,
Quit,
}
@@ -70,6 +71,7 @@ struct Pending {
paused: Option<bool>,
timer_actions: std::collections::VecDeque<TimerAction>,
toggle_ui: bool,
+ toggle_help: bool,
quit: bool,
}
@@ -99,6 +101,9 @@ impl Pending {
Event::ToggleUi => {
self.toggle_ui = !self.toggle_ui;
}
+ Event::ToggleHelp => {
+ self.toggle_help = !self.toggle_help;
+ }
Event::Quit => {
self.quit = true;
}
@@ -112,6 +117,7 @@ impl Pending {
|| self.paused.is_some()
|| !self.timer_actions.is_empty()
|| self.toggle_ui
+ || self.toggle_help
|| self.quit
}
@@ -124,6 +130,9 @@ impl Pending {
} else if self.toggle_ui {
self.toggle_ui = false;
Some(Event::ToggleUi)
+ } else if self.toggle_help {
+ self.toggle_help = false;
+ Some(Event::ToggleHelp)
} else if let Some(paused) = self.paused.take() {
Some(Event::Paused(paused))
} else if let Some(frame) = self.frame_loaded.take() {
@@ -170,6 +179,9 @@ pub async fn handle_events(
Event::ToggleUi => {
display.toggle_ui();
}
+ Event::ToggleHelp => {
+ display.toggle_help();
+ }
Event::Quit => {
break;
}
diff --git a/src/bin/ttyplay/input.rs b/src/bin/ttyplay/input.rs
index 266c419..d061e24 100644
--- a/src/bin/ttyplay/input.rs
+++ b/src/bin/ttyplay/input.rs
@@ -30,6 +30,7 @@ pub fn spawn_task(
crate::event::TimerAction::Pause,
),
textmode::Key::Ctrl(b'i') => crate::event::Event::ToggleUi,
+ textmode::Key::Char('?') => crate::event::Event::ToggleHelp,
textmode::Key::Char('+') => crate::event::Event::TimerAction(
crate::event::TimerAction::SpeedUp,
),