use crossterm::event::{KeyCode, KeyEvent, KeyEventKind, KeyModifiers};
use tuitab::app::App;
use tuitab::event::handle_key_event;
pub fn key(app: &mut App, code: KeyCode) {
let event = KeyEvent {
code,
modifiers: KeyModifiers::NONE,
kind: KeyEventKind::Press,
state: crossterm::event::KeyEventState::NONE,
};
let action = handle_key_event(event, app.mode, app.stack.can_pop());
app.handle_action(action);
}
pub fn press(app: &mut App, keys: &str) {
for c in keys.chars() {
key(app, KeyCode::Char(c));
}
}
pub fn open(path: &str, cursor_column: &str) -> App {
let mut app = App::new_as(std::path::Path::new(path), None, None).unwrap();
let idx = app
.stack
.active()
.dataframe
.column_index(cursor_column)
.unwrap();
app.stack.active_mut().cursor_col = idx;
app
}
#[allow(dead_code)] pub fn columns(app: &App) -> Vec<String> {
app.stack
.active()
.dataframe
.columns
.iter()
.map(|c| c.name.clone())
.collect()
}