From bbebc3344ceb641893e19de46ebb3367865470c4 Mon Sep 17 00:00:00 2001 From: Edward Langley Date: Wed, 1 Apr 2026 00:32:07 -0700 Subject: [PATCH] refactor: mystery model #1 --- src/main.rs | 54 +++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/main.rs b/src/main.rs index 58526be..1d63685 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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) { let buf = if let AppMode::ExportPrompt { buffer } = &app.mode { buffer.as_str() } else { "" }; - let popup_w = 64u16.min(area.width); - let x = area.x + area.width.saturating_sub(popup_w) / 2; - 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); + let popup = center_rect(area, 64, 3); + let inner = draw_popup_frame(f, popup, " Export CSV — path (Esc cancel) ", Color::Yellow); f.render_widget( Paragraph::new(format!("{buf}▌")).style(Style::default().fg(Color::Green)), 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) { - let w = 58u16.min(area.width.saturating_sub(4)); - let h = 20u16.min(area.height.saturating_sub(2)); - 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 popup = center_rect(area, 58, 20); + let inner = draw_popup_frame(f, popup, " Welcome to improvise ", Color::Blue); let lines: &[(&str, Style)] = &[ (