git-igitt 0.1.18

Interactive Git terminal application to browse and visualize Git history graphs arranged for your branching model
Documentation
use tui::widgets::ListState;

pub struct ModelListState {
    pub models: Vec<String>,
    pub color: bool,
    pub state: ListState,
}

impl ModelListState {
    pub fn new(models: Vec<String>, color: bool) -> ModelListState {
        ModelListState {
            models,
            color,
            state: ListState::default(),
        }
    }

    pub fn fwd(&mut self, steps: usize) {
        let i = match self.state.selected() {
            Some(i) => std::cmp::min(i.saturating_add(steps), self.models.len() - 1),
            None => 0,
        };
        self.state.select(Some(i));
    }

    pub fn bwd(&mut self, steps: usize) {
        let i = match self.state.selected() {
            Some(i) => i.saturating_sub(steps),
            None => 0,
        };
        self.state.select(Some(i));
    }
}