mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
switch toolbar actions; bold borders and titles
This commit is contained in:
parent
7dd5f7f488
commit
31f8ec5362
8 changed files with 103 additions and 116 deletions
|
|
@ -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(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue