use main loop with input everywhere

This commit is contained in:
🪞👃🪞 2024-05-29 11:32:26 +03:00
parent d6bf840a1f
commit 7dd5f7f488
16 changed files with 301 additions and 168 deletions

View file

@ -5,7 +5,6 @@ pub fn render_toolbar_vertical (
offset: (u16, u16),
actions: &[(&str, &str)],
) -> Result<(u16, u16), Box<dyn Error>> {
use crossterm::{*, style::{Stylize, PrintStyledContent}, cursor::MoveTo};
let move_to = |col, row| MoveTo(offset.0 + col, offset.1 + row);
let mut x: u16 = 1;
let mut y: u16 = 0;
@ -31,11 +30,20 @@ pub fn render_box (
) -> Result<(), Box<dyn Error>> {
let edge: String = std::iter::repeat("").take(w.saturating_sub(2) as usize).collect();
let back: String = std::iter::repeat(" ").take(w.saturating_sub(2) as usize).collect();
stdout.queue(MoveTo(x, y))?.queue(Print(&format!("{edge}")))?;
for row in y+1..y+h {
stdout.queue(MoveTo(x, row))?.queue(Print(""))?;
stdout.queue(MoveTo(x+w-1, row))?.queue(Print(""))?;
if active {
stdout.queue(MoveTo(x, y))?.queue(PrintStyledContent(format!("{edge}").bold().yellow()))?;
for row in y+1..y+h {
stdout.queue(MoveTo(x, row))?.queue(PrintStyledContent("".bold().yellow()))?;
stdout.queue(MoveTo(x+w-1, row))?.queue(PrintStyledContent("".bold().yellow()))?;
}
stdout.queue(MoveTo(x, y+h))?.queue(PrintStyledContent(format!("{edge}").bold().yellow()))?;
} else {
stdout.queue(MoveTo(x, y))?.queue(Print(&format!("{edge}")))?;
for row in y+1..y+h {
stdout.queue(MoveTo(x, row))?.queue(Print(""))?;
stdout.queue(MoveTo(x+w-1, row))?.queue(Print(""))?;
}
stdout.queue(MoveTo(x, y+h))?.queue(Print(&format!("{edge}")))?;
}
stdout.queue(MoveTo(x, y+h))?.queue(Print(&format!("{edge}")))?;
Ok(())
}