switch toolbar actions; bold borders and titles

This commit is contained in:
🪞👃🪞 2024-05-29 13:34:36 +03:00
parent 7dd5f7f488
commit 31f8ec5362
8 changed files with 103 additions and 116 deletions

View file

@ -22,28 +22,39 @@ pub fn render_toolbar_vertical (
pub fn render_box (
stdout: &mut std::io::Stdout,
title: Option<&str>,
x: u16,
y: u16,
w: u16,
mut w: u16,
h: u16,
active: bool
) -> Result<(), Box<dyn Error>> {
let edge: String = std::iter::repeat("").take(w.saturating_sub(2) as usize).collect();
if let Some(title) = title {
w = u16::max(w, title.len() as u16 + 4);
}
let back: String = std::iter::repeat(" ").take(w.saturating_sub(2) as usize).collect();
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()))?;
let edge: String = std::iter::repeat("").take(w.saturating_sub(2) as usize).collect();
stdout.queue(MoveTo(x, y))?.queue(PrintStyledContent(format!("{edge}").bold().yellow()))?;
if let Some(title) = title {
stdout.queue(MoveTo(x+1, y))?.queue(PrintStyledContent(format!(" {title} ").bold().yellow()))?;
}
stdout.queue(MoveTo(x, y+h))?.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(""))?;
let edge: String = std::iter::repeat("").take(w.saturating_sub(2) as usize).collect();
stdout.queue(MoveTo(x, y))?.queue(PrintStyledContent(format!("{edge}").grey().dim()))?;
if let Some(title) = title {
stdout.queue(MoveTo(x+1, y))?.queue(Print(format!(" {title} ")))?;
}
stdout.queue(MoveTo(x, y+h))?.queue(Print(&format!("{edge}")))?;
for row in y+1..y+h {
stdout.queue(MoveTo(x, row))?.queue(PrintStyledContent("".grey().dim()))?;
stdout.queue(MoveTo(x+w-1, row))?.queue(PrintStyledContent("".grey().dim()))?;
}
stdout.queue(MoveTo(x, y+h))?.queue(PrintStyledContent(format!("{edge}").grey().dim()))?;
}
Ok(())
}