git_igitt/widgets/
models_view.rs

1use tui::widgets::ListState;
2
3pub struct ModelListState {
4    pub models: Vec<String>,
5    pub color: bool,
6    pub state: ListState,
7}
8
9impl ModelListState {
10    pub fn new(models: Vec<String>, color: bool) -> ModelListState {
11        ModelListState {
12            models,
13            color,
14            state: ListState::default(),
15        }
16    }
17
18    pub fn fwd(&mut self, steps: usize) {
19        let i = match self.state.selected() {
20            Some(i) => std::cmp::min(i.saturating_add(steps), self.models.len() - 1),
21            None => 0,
22        };
23        self.state.select(Some(i));
24    }
25
26    pub fn bwd(&mut self, steps: usize) {
27        let i = match self.state.selected() {
28            Some(i) => i.saturating_sub(steps),
29            None => 0,
30        };
31        self.state.select(Some(i));
32    }
33}