mod dashboard;
mod diff;
mod format;
mod help;
pub mod theme;
pub mod worktree;
use ratatui::Frame;
use ratatui::style::{Modifier, Style};
use super::app::{App, ViewMode};
fn dim_buffer(f: &mut Frame) {
let area = f.area();
let buf = f.buffer_mut();
for y in area.y..area.y + area.height {
for x in area.x..area.x + area.width {
if let Some(cell) = buf.cell_mut((x, y)) {
cell.set_style(Style::default().add_modifier(Modifier::DIM));
}
}
}
}
pub use self::dashboard::render_dashboard;
pub use self::diff::render_diff_view;
pub use self::help::{
render_add_worktree, render_base_picker, render_confirm_kill, render_confirm_remove,
render_help, render_project_picker, render_sweep,
};
pub fn ui(f: &mut Frame, app: &mut App) {
match &mut app.view_mode {
ViewMode::Dashboard => render_dashboard(f, app),
ViewMode::Diff(diff_view) => render_diff_view(f, diff_view, &app.palette),
}
let has_modal = app.show_help
|| app.pending_kill_pane_id.is_some()
|| app.pending_remove.is_some()
|| app.pending_base_picker.is_some()
|| app.pending_project_picker.is_some()
|| app.pending_sweep.is_some()
|| app.pending_add_worktree.is_some();
if has_modal {
dim_buffer(f);
}
if app.show_help {
render_help(f, app);
} else if app.pending_kill_pane_id.is_some() {
render_confirm_kill(f, app);
} else if app.pending_remove.is_some() {
render_confirm_remove(f, app);
} else if app.pending_base_picker.is_some() {
render_base_picker(f, app);
} else if app.pending_project_picker.is_some() {
render_project_picker(f, app);
} else if app.pending_sweep.is_some() {
render_sweep(f, app);
} else if app.pending_add_worktree.is_some() {
render_add_worktree(f, app);
}
}