git_igitt/widgets/
models_view.rs1use 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}