refactor: mystery model #1

This commit is contained in:
Edward Langley
2026-04-01 00:32:07 -07:00
parent ff08e3c2c2
commit bbebc3344c

View File

@ -466,24 +466,38 @@ fn draw_command_bar(f: &mut Frame, area: Rect, app: &App) {
); );
} }
fn center_rect(area: Rect, width: u16, height: u16) -> Rect {
let w = width.min(area.width);
let h = height.min(area.height);
let x = area.x + area.width.saturating_sub(w) / 2;
let y = area.y + area.height.saturating_sub(h) / 2;
Rect::new(x, y, w, h)
}
fn draw_popup_frame(
f: &mut Frame,
popup: Rect,
title: &str,
border_color: Color,
) -> Rect {
f.render_widget(Clear, popup);
let block = Block::default()
.borders(Borders::ALL)
.border_style(Style::default().fg(border_color))
.title(title);
let inner = block.inner(popup);
f.render_widget(block, popup);
inner
}
fn draw_export_prompt(f: &mut Frame, area: Rect, app: &App) { fn draw_export_prompt(f: &mut Frame, area: Rect, app: &App) {
let buf = if let AppMode::ExportPrompt { buffer } = &app.mode { let buf = if let AppMode::ExportPrompt { buffer } = &app.mode {
buffer.as_str() buffer.as_str()
} else { } else {
"" ""
}; };
let popup_w = 64u16.min(area.width); let popup = center_rect(area, 64, 3);
let x = area.x + area.width.saturating_sub(popup_w) / 2; let inner = draw_popup_frame(f, popup, " Export CSV — path (Esc cancel) ", Color::Yellow);
let y = area.y + area.height / 2;
let popup_area = Rect::new(x, y, popup_w, 3);
f.render_widget(Clear, popup_area);
let block = Block::default()
.borders(Borders::ALL)
.border_style(Style::default().fg(Color::Yellow))
.title(" Export CSV — path (Esc cancel) ");
let inner = block.inner(popup_area);
f.render_widget(block, popup_area);
f.render_widget( f.render_widget(
Paragraph::new(format!("{buf}")).style(Style::default().fg(Color::Green)), Paragraph::new(format!("{buf}")).style(Style::default().fg(Color::Green)),
inner, inner,
@ -491,20 +505,8 @@ fn draw_export_prompt(f: &mut Frame, area: Rect, app: &App) {
} }
fn draw_welcome(f: &mut Frame, area: Rect, _app: &App) { fn draw_welcome(f: &mut Frame, area: Rect, _app: &App) {
let w = 58u16.min(area.width.saturating_sub(4)); let popup = center_rect(area, 58, 20);
let h = 20u16.min(area.height.saturating_sub(2)); let inner = draw_popup_frame(f, popup, " Welcome to improvise ", Color::Blue);
let x = area.x + area.width.saturating_sub(w) / 2;
let y = area.y + area.height.saturating_sub(h) / 2;
let popup = Rect::new(x, y, w, h);
f.render_widget(Clear, popup);
let block = Block::default()
.borders(Borders::ALL)
.border_style(Style::default().fg(Color::Blue))
.title(" Welcome to improvise ");
let inner = block.inner(popup);
f.render_widget(block, popup);
let lines: &[(&str, Style)] = &[ let lines: &[(&str, Style)] = &[
( (