girt-core 2.2.1

Core modules for git-interactive-rebase-tool
Documentation
mod exit_status;
mod modules;
mod process_result;
mod state;

use anyhow::Error;
use input::InputOptions;
use lazy_static::lazy_static;
use todo_file::TodoFile;
use view::{RenderContext, ViewData, ViewSender};

pub(crate) use self::{exit_status::ExitStatus, modules::Modules, process_result::ProcessResult, state::State};
use crate::events::{Event, KeyBindings};

lazy_static! {
	static ref DEFAULT_INPUT_OPTIONS: InputOptions = InputOptions::RESIZE;
}

pub(crate) trait Module: Send {
	fn activate(&mut self, _rebase_todo: &TodoFile, _previous_state: State) -> ProcessResult {
		ProcessResult::new()
	}

	fn deactivate(&mut self) {}

	fn build_view_data(&mut self, _render_context: &RenderContext, _rebase_todo: &TodoFile) -> &ViewData;

	fn input_options(&self) -> &InputOptions {
		&DEFAULT_INPUT_OPTIONS
	}

	fn read_event(&self, event: Event, _key_bindings: &KeyBindings) -> Event {
		event
	}

	fn handle_event(&mut self, event: Event, _view_sender: &ViewSender, _rebase_todo: &mut TodoFile) -> ProcessResult;

	fn handle_error(&mut self, _error: &Error) {}
}