#![allow(dead_code)]
use abstracttui::prelude::*;
use abstracttui::ui::Canvas;
pub const MIN_SIZE: Size = Size { w: 40, h: 10 };
pub fn too_small(canvas: &mut dyn Canvas, rect: Rect, min: Size, t: &TokenSet) -> bool {
if rect.w >= min.w && rect.h >= min.h {
return false;
}
canvas.fill(rect, ' ', t.text, t.bg);
let msg = format!("terminal too small — need {}x{}", min.w, min.h);
let hint = format!("(currently {}x{})", rect.w, rect.h);
let cy = rect.y + (rect.h / 2 - 1).max(0);
print_centered(canvas, rect, cy, &msg, t.warn);
print_centered(canvas, rect, cy + 1, &hint, t.text_muted);
true
}
pub fn print_centered(canvas: &mut dyn Canvas, rect: Rect, y: i32, s: &str, fg: Rgba) {
let w = s.chars().count() as i32;
let x = rect.x + (rect.w - w).max(0) / 2;
canvas.print(Point::new(x, y), s, fg, Rgba::TRANSPARENT);
}
pub fn overlay_layout() -> LayoutStyle {
LayoutStyle::default().absolute(abstracttui::layout::Inset {
left: Some(0),
right: Some(0),
top: Some(0),
bottom: Some(0),
})
}
pub fn key_legend(canvas: &mut dyn Canvas, rect: Rect, t: &TokenSet, entries: &[(&str, &str)]) {
let y = rect.bottom() - 1;
let mut x = rect.x + 1;
for (key, what) in entries {
if x >= rect.right() {
break;
}
x += canvas.print(Point::new(x, y), key, t.accent, Rgba::TRANSPARENT);
x += canvas.print(Point::new(x, y), " ", t.text_muted, Rgba::TRANSPARENT);
x += canvas.print(Point::new(x, y), what, t.text_muted, Rgba::TRANSPARENT);
x += canvas.print(Point::new(x, y), " ", t.text_muted, Rgba::TRANSPARENT);
}
}