diff options
| author | pablu <me@pablu.de> | 2026-06-02 18:49:48 +0200 |
|---|---|---|
| committer | pablu <me@pablu.de> | 2026-06-02 18:49:48 +0200 |
| commit | b547e6758c635682c94794e5c13070a73c918203 (patch) | |
| tree | 2ca030a7acbe436a304e6b87dd93deb0b2351909 /src/widgets/use_flags.rs | |
| parent | afe649e0efc31fcd33a828e54bd6313cd37f1784 (diff) | |
wip: refactor architecture
Diffstat (limited to 'src/widgets/use_flags.rs')
| -rw-r--r-- | src/widgets/use_flags.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/widgets/use_flags.rs b/src/widgets/use_flags.rs new file mode 100644 index 0000000..8e2ecf4 --- /dev/null +++ b/src/widgets/use_flags.rs @@ -0,0 +1,43 @@ +use ratatui::{ + Frame, + layout::Rect, + style::{Color, Modifier}, + widgets::{Block, Borders, List, ListItem, ListState}, +}; + +use crate::{app::App, gentoo::InstalledPackage, theme::Theme}; + +pub fn render_use_flags(frame: &mut Frame, area: Rect, package: &InstalledPackage) { + let items = package.iuse.iter().map(|x| { + let text_style = if package.enabled_use_flags.contains(&x.name) { + Theme::success() + } else if x.default { + Theme::info() + } else { + Theme::error() + }; + + let text_style = if x.default { + text_style.add_modifier(Modifier::ITALIC) + } else { + text_style + }; + + ListItem::new(x.name.clone()).style(text_style) + }); + let list = List::new(items) + .style(Color::White) + .scroll_padding(1) + .direction(ratatui::widgets::ListDirection::TopToBottom) + .block( + Block::default() + .borders(Borders::ALL) + .title("USE Flags") + .border_style(Theme::block()), + ); + + let mut list_state = ListState::default(); + list_state.select_first(); + + frame.render_stateful_widget(list, area, &mut list_state); +} |
