This commit is contained in:
2026-03-08 19:47:40 +01:00
parent 989e0aef91
commit 20f33f5694

View File

@ -4,7 +4,7 @@ use ratatui::{
layout::{Alignment, Constraint, Direction, Layout}, layout::{Alignment, Constraint, Direction, Layout},
style::{Color, Modifier, Style}, style::{Color, Modifier, Style},
text::{Line, Span}, text::{Line, Span},
widgets::{Block, Borders, List, ListItem, Padding, Paragraph}, widgets::{Block, BorderType, Borders, List, ListItem, Padding, Paragraph},
}; };
use ratatui_image::StatefulImage; use ratatui_image::StatefulImage;
@ -16,7 +16,7 @@ pub fn render(f: &mut Frame, app: &mut App) {
let content_chunks = Layout::default() let content_chunks = Layout::default()
.direction(Direction::Horizontal) .direction(Direction::Horizontal)
.constraints([Constraint::Length(40), Constraint::Min(0)]) .constraints([Constraint::Length(45), Constraint::Min(0)])
.split(main_chunks[0]); .split(main_chunks[0]);
let items: Vec<ListItem> = app let items: Vec<ListItem> = app
@ -31,27 +31,49 @@ pub fn render(f: &mut Frame, app: &mut App) {
.add_modifier(Modifier::BOLD), .add_modifier(Modifier::BOLD),
))) )))
} else { } else {
ListItem::new(Line::from(i.as_str())) ListItem::new(Line::from(format!(" {}", i)))
} }
}) })
.collect(); .collect();
let list = List::new(items) let list = List::new(items)
.block(Block::default().borders(Borders::ALL).title(" Historique ")) .block(
Block::default()
.borders(Borders::ALL)
.border_type(BorderType::Rounded)
.border_style(Style::default().fg(Color::DarkGray))
.title(Span::styled(
" History ",
Style::default()
.fg(Color::White)
.add_modifier(Modifier::BOLD),
))
.title_alignment(Alignment::Center),
)
.highlight_style( .highlight_style(
Style::default() Style::default()
.bg(Color::DarkGray) .bg(Color::Rgb(40, 44, 52))
.fg(Color::White)
.add_modifier(Modifier::BOLD), .add_modifier(Modifier::BOLD),
) )
.highlight_symbol(">> "); .highlight_symbol(">> ");
f.render_stateful_widget(list, content_chunks[0], &mut app.list_state); f.render_stateful_widget(list, content_chunks[0], &mut app.list_state);
let right_panel_block = Block::default() let right_panel_block = Block::default()
.borders(Borders::ALL) .borders(Borders::ALL)
.title(" Prévisualisation ") .border_type(BorderType::Rounded)
.border_style(Style::default().fg(Color::DarkGray))
.title(Span::styled(
" Previsualisation ",
Style::default()
.fg(Color::White)
.add_modifier(Modifier::BOLD),
))
.title_alignment(Alignment::Center)
.padding(Padding::uniform(1)); .padding(Padding::uniform(1));
let inner_right_area = right_panel_block.inner(content_chunks[1]);
let inner_right_area = right_panel_block.inner(content_chunks[1]);
f.render_widget(right_panel_block, content_chunks[1]); f.render_widget(right_panel_block, content_chunks[1]);
if let Some(state) = &mut app.current_image { if let Some(state) = &mut app.current_image {
@ -64,7 +86,18 @@ pub fn render(f: &mut Frame, app: &mut App) {
f.render_widget(preview_paragraph, inner_right_area); f.render_widget(preview_paragraph, inner_right_area);
} }
let bottom_block = Block::default().borders(Borders::ALL); let current_color = match app.mode {
Mode::Normal => Color::Green,
Mode::ConfirmDelete => Color::Red,
Mode::Command => Color::Yellow,
Mode::Search => Color::Cyan,
};
let bottom_block = Block::default()
.borders(Borders::ALL)
.border_type(BorderType::Rounded)
.border_style(Style::default().fg(current_color));
let inner_bottom_area = bottom_block.inner(main_chunks[1]); let inner_bottom_area = bottom_block.inner(main_chunks[1]);
f.render_widget(bottom_block, main_chunks[1]); f.render_widget(bottom_block, main_chunks[1]);
@ -109,7 +142,11 @@ pub fn render(f: &mut Frame, app: &mut App) {
Span::raw(format!(" /{}", app.input_buffer)), Span::raw(format!(" /{}", app.input_buffer)),
]), ]),
}; };
f.render_widget(Paragraph::new(mode_text), bottom_chunks[0]);
f.render_widget(
Paragraph::new(mode_text).block(Block::default().padding(Padding::horizontal(1))),
bottom_chunks[0],
);
let total = app.filtered_items.len(); let total = app.filtered_items.len();
let current = if total == 0 { let current = if total == 0 {
@ -119,9 +156,9 @@ pub fn render(f: &mut Frame, app: &mut App) {
}; };
let stats_text = Line::from(vec![Span::styled( let stats_text = Line::from(vec![Span::styled(
format!(" {}/{} ", current, total), format!("{}/{} ", current, total),
Style::default() Style::default()
.fg(Color::Yellow) .fg(Color::DarkGray)
.add_modifier(Modifier::BOLD), .add_modifier(Modifier::BOLD),
)]) )])
.alignment(Alignment::Right); .alignment(Alignment::Right);