leetcode_tui_rs/widgets/
help.rs1use ratatui::prelude::*;
2use ratatui::widgets::Widget;
3use ratatui::widgets::*;
4
5use crate::ctx::Ctx;
6
7pub(super) struct Help<'a> {
8 cx: &'a mut Ctx,
9}
10
11impl<'a> Help<'a> {
12 pub(super) fn new(cx: &'a mut Ctx) -> Self {
13 Self { cx }
14 }
15}
16
17impl<'a> Widget for Help<'a> {
18 fn render(self, area: ratatui::prelude::Rect, buf: &mut ratatui::prelude::Buffer) {
19 let selected_style = Style::default()
20 .add_modifier(Modifier::REVERSED)
21 .add_modifier(Modifier::BOLD)
22 .bg(Color::Rgb(229, 228, 226))
23 .fg(Color::Black);
24 let rows = self.cx.help.get_items().iter().map(|item| {
25 let cells = item.iter().map(|c| Cell::from(*c));
26 Row::new(cells)
27 });
28
29 let t = Table::new(
30 rows,
31 &[
32 Constraint::Percentage(50),
33 Constraint::Max(30),
34 Constraint::Min(10),
35 ],
36 )
37 .block(Block::default().borders(Borders::ALL).title("Help"))
38 .row_highlight_style(selected_style);
39 Clear.render(area, buf);
40 ratatui::widgets::StatefulWidget::render(t, area, buf, self.cx.help.get_mut_state());
41 }
42}