aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-07 12:57:11 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-07 12:57:11 -0500
commitcbb6ad4c38a435a752d6590afc91d92606ad64c6 (patch)
treedf4f67444c2a15ade3f591c98d244cee1d86542a
parent435155bbe01bf53c035461887c59bb3888dcf699 (diff)
downloadteleterm-cbb6ad4c38a435a752d6590afc91d92606ad64c6.tar.gz
teleterm-cbb6ad4c38a435a752d6590afc91d92606ad64c6.zip
add key commands to move to first/last frame
-rw-r--r--src/cmd/play.rs65
1 files changed, 42 insertions, 23 deletions
diff --git a/src/cmd/play.rs b/src/cmd/play.rs
index 8c30bef..7386d68 100644
--- a/src/cmd/play.rs
+++ b/src/cmd/play.rs
@@ -175,6 +175,18 @@ impl Player {
self.set_timer();
}
+ fn first(&mut self) {
+ self.idx = 0;
+ self.recalculate_times();
+ self.set_timer();
+ }
+
+ fn last(&mut self) {
+ self.idx = self.ttyrec.len() - 1;
+ self.recalculate_times();
+ self.set_timer();
+ }
+
fn toggle_pause(&mut self) {
let now = std::time::Instant::now();
if let Some(time) = self.paused.take() {
@@ -330,6 +342,18 @@ impl PlaySession {
self.player.forward();
self.redraw()?;
}
+ crossterm::input::InputEvent::Keyboard(
+ crossterm::input::KeyEvent::Char('0'),
+ ) => {
+ self.player.first();
+ self.redraw()?;
+ }
+ crossterm::input::InputEvent::Keyboard(
+ crossterm::input::KeyEvent::Char('$'),
+ ) => {
+ self.player.last();
+ self.redraw()?;
+ }
_ => {}
}
Ok(false)
@@ -376,58 +400,53 @@ impl PlaySession {
self.write("─".repeat(2 + msg.len()).as_bytes())?;
self.write("╯".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 10, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 9, size.cols - 32)
.as_bytes(),
)?;
self.write("╭".as_bytes())?;
- self.write("─".repeat(22).as_bytes())?;
+ self.write("─".repeat(30).as_bytes())?;
self.write("╮".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 9, size.cols - 24)
- .as_bytes(),
- )?;
- self.write("│ Keys │".as_bytes())?;
- self.write(
- format!("\x1b[{};{}H", size.rows - 8, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 8, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ q: quit │".as_bytes())?;
+ self.write("│ Keys │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 7, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 7, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ Space: pause/unpause │".as_bytes())?;
+ self.write("│ q: quit │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 6, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 6, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ <: previous frame │".as_bytes())?;
+ self.write("│ Space: pause/unpause │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 5, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 5, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ >: next frame │".as_bytes())?;
+ self.write("│ </>: previous/next frame │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 4, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 4, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ +: increase speed │".as_bytes())?;
+ self.write("│ 0/$: first/last frame │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 3, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 3, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ -: decrease speed │".as_bytes())?;
+ self.write("│ +/-: increase/decrease speed │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 2, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 2, size.cols - 32)
.as_bytes(),
)?;
- self.write("│ =: normal speed │".as_bytes())?;
+ self.write("│ =: normal speed │".as_bytes())?;
self.write(
- format!("\x1b[{};{}H", size.rows - 1, size.cols - 24)
+ format!("\x1b[{};{}H", size.rows - 1, size.cols - 32)
.as_bytes(),
)?;
self.write("╰".as_bytes())?;
- self.write("─".repeat(22).as_bytes())?;
+ self.write("─".repeat(30).as_bytes())?;
self.write("╯".as_bytes())?;
self.write(b"\x1b8")?;
}