summaryrefslogtreecommitdiffstats
path: root/src/action_map.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/action_map.rs')
-rw-r--r--src/action_map.rs200
1 files changed, 104 insertions, 96 deletions
diff --git a/src/action_map.rs b/src/action_map.rs
index 99e14a2..0ab9c85 100644
--- a/src/action_map.rs
+++ b/src/action_map.rs
@@ -2,7 +2,7 @@ use anyhow::Result;
use strum_macros::{Display, EnumIter, EnumString};
use crate::config::Colors;
-use crate::event_exec::EventExec;
+use crate::event_exec::{EventAction, LeaveMode};
use crate::status::Status;
/// Different kind of action which can be mapped to a key.
@@ -27,7 +27,6 @@ pub enum ActionMap {
Delete,
DeleteFile,
Diff,
- ToggleDisplayFull,
DragNDrop,
EncryptedDrive,
End,
@@ -36,8 +35,10 @@ pub enum ActionMap {
Filter,
FlagAll,
FuzzyFind,
- FuzzyFindLine,
FuzzyFindHelp,
+ FuzzyFindLine,
+ GoRoot,
+ GoStart,
Goto,
Help,
History,
@@ -47,7 +48,12 @@ pub enum ActionMap {
Log,
MarksJump,
MarksNew,
- ModeNormal,
+ MediaInfo,
+ MocpAddToPlayList,
+ MocpGoToSong,
+ MocpNext,
+ MocpPrevious,
+ MocpTogglePause,
MoveDown,
MoveLeft,
MoveRight,
@@ -66,34 +72,32 @@ pub enum ActionMap {
RefreshView,
RegexMatch,
Rename,
+ ResetMode,
ReverseFlags,
Search,
SearchNext,
SetWallpaper,
Shell,
+ ShellCommand,
ShellMenu,
Shortcut,
Sort,
Symlink,
Tab,
- MocpAddToPlayList,
- MocpGoToSong,
- MocpTogglePause,
- MocpNext,
- MocpPrevious,
- MediaInfo,
+ ToggleDisplayFull,
ToggleDualPane,
ToggleFlag,
ToggleHidden,
TogglePreviewSecond,
- TrashMoveFile,
- TrashRestoreFile,
TrashEmpty,
+ TrashMoveFile,
TrashOpen,
+ TrashRestoreFile,
Tree,
TreeFold,
- TreeUnFoldAll,
TreeFoldAll,
+ TreeUnFoldAll,
+ Custom(String),
}
impl ActionMap {
@@ -101,89 +105,93 @@ impl ActionMap {
/// Every Action links to a different `EventExec` method.
pub fn matcher(&self, status: &mut Status, colors: &Colors) -> Result<()> {
let current_tab = status.selected();
- match *self {
- ActionMap::Back => EventExec::event_back(status, colors),
- ActionMap::BackTab => EventExec::backtab(status),
- ActionMap::Backspace => EventExec::event_backspace(status),
- ActionMap::Bulk => EventExec::event_bulk(status),
- ActionMap::Chmod => EventExec::event_chmod(status),
- ActionMap::ClearFlags => EventExec::event_clear_flags(status),
- ActionMap::CliInfo => EventExec::event_cli_info(status),
- ActionMap::Command => EventExec::event_command(current_tab),
- ActionMap::Compress => EventExec::event_compress(status),
- ActionMap::CopyFilename => EventExec::event_copy_filename(status),
- ActionMap::CopyFilepath => EventExec::event_copy_filepath(status),
- ActionMap::CopyPaste => EventExec::event_copy_paste(status),
- ActionMap::CutPaste => EventExec::event_cut_paste(status),
- ActionMap::Delete => EventExec::event_delete(status),
- ActionMap::DeleteFile => EventExec::event_delete_file(status),
- ActionMap::Diff => EventExec::event_diff(status),
- ActionMap::ToggleDisplayFull => EventExec::event_toggle_display_full(status),
- ActionMap::DragNDrop => EventExec::event_drag_n_drop(status),
- ActionMap::EncryptedDrive => EventExec::event_encrypted_drive(status),
- ActionMap::End => EventExec::event_end(status, colors),
- ActionMap::Enter => EventExec::event_enter(status, colors),
- ActionMap::Exec => EventExec::event_exec(current_tab),
- ActionMap::Filter => EventExec::event_filter(current_tab),
- ActionMap::FlagAll => EventExec::event_flag_all(status),
- ActionMap::FuzzyFind => EventExec::event_fuzzyfind(status),
- ActionMap::FuzzyFindLine => EventExec::event_fuzzyfind_line(status),
- ActionMap::FuzzyFindHelp => EventExec::event_fuzzyfind_help(status),
- ActionMap::Goto => EventExec::event_goto(current_tab),
- ActionMap::Help => EventExec::event_help(status),
- ActionMap::Log => EventExec::event_log(current_tab),
- ActionMap::History => EventExec::event_history(current_tab),
- ActionMap::Home => EventExec::event_home(current_tab),
- ActionMap::MocpAddToPlayList => EventExec::event_mocp_add_to_playlist(current_tab),
- ActionMap::MocpGoToSong => EventExec::event_mocp_go_to_song(current_tab),
- ActionMap::MocpTogglePause => EventExec::event_mocp_toggle_pause(status),
- ActionMap::MocpNext => EventExec::event_mocp_next(),
- ActionMap::MocpPrevious => EventExec::event_mocp_previous(),
- ActionMap::Jump => EventExec::event_jump(status),
- ActionMap::KeyHome => EventExec::event_key_home(status, colors),
- ActionMap::MarksJump => EventExec::event_marks_jump(status),
- ActionMap::MarksNew => EventExec::event_marks_new(current_tab),
- ActionMap::ModeNormal => EventExec::event_reset_mode(current_tab),
- ActionMap::MoveDown => EventExec::event_move_down(status, colors),
- ActionMap::MoveLeft => EventExec::event_move_left(status, colors),
- ActionMap::MoveRight => EventExec::event_move_right(status, colors),
- ActionMap::MoveUp => EventExec::event_move_up(status, colors),
- ActionMap::NewDir => EventExec::event_new_dir(current_tab),
- ActionMap::NewFile => EventExec::event_new_file(current_tab),
- ActionMap::NvimFilepicker => EventExec::event_nvim_filepicker(status),
- ActionMap::NvimSetAddress => EventExec::event_set_nvim_server(status),
- ActionMap::OpenFile => EventExec::event_open_file(status),
- ActionMap::PageDown => EventExec::event_page_down(status, colors),
- ActionMap::PageUp => EventExec::event_page_up(status, colors),
- ActionMap::Preview => EventExec::event_preview(status, colors),
- ActionMap::Quit => EventExec::event_quit(current_tab),
- ActionMap::RefreshView => EventExec::event_refreshview(status, colors),
- ActionMap::RegexMatch => EventExec::event_regex_match(current_tab),
- ActionMap::Rename => EventExec::event_rename(current_tab),
- ActionMap::ReverseFlags => EventExec::event_reverse_flags(status),
- ActionMap::Search => EventExec::event_search(current_tab),
- ActionMap::SearchNext => EventExec::event_search_next(current_tab),
- ActionMap::SetWallpaper => EventExec::event_set_wallpaper(current_tab),
- ActionMap::Shell => EventExec::event_shell(status),
- ActionMap::ShellMenu => EventExec::event_shell_menu(current_tab),
- ActionMap::Shortcut => EventExec::event_shortcut(current_tab),
- ActionMap::Sort => EventExec::event_sort(current_tab),
- ActionMap::Symlink => EventExec::event_symlink(status),
- ActionMap::Tab => EventExec::event_tab(status),
- ActionMap::MediaInfo => EventExec::event_mediainfo(current_tab),
- ActionMap::ToggleDualPane => EventExec::event_toggle_dualpane(status),
- ActionMap::ToggleFlag => EventExec::event_toggle_flag(status),
- ActionMap::ToggleHidden => EventExec::event_toggle_hidden(status, colors),
- ActionMap::TogglePreviewSecond => EventExec::event_toggle_preview_second(status),
- ActionMap::TrashMoveFile => EventExec::event_trash_move_file(status),
- ActionMap::TrashRestoreFile => EventExec::event_trash_restore_file(status),
- ActionMap::TrashEmpty => EventExec::event_trash_empty(status),
- ActionMap::TrashOpen => EventExec::event_trash_open(status),
- ActionMap::Tree => EventExec::event_tree(status, colors),
- ActionMap::TreeFold => EventExec::event_tree_fold(current_tab, colors),
- ActionMap::TreeFoldAll => EventExec::event_tree_fold_all(current_tab, colors),
- ActionMap::TreeUnFoldAll => EventExec::event_tree_unfold_all(current_tab, colors),
- ActionMap::OpenConfig => EventExec::event_open_config(status),
+ match self {
+ ActionMap::Back => EventAction::back(status, colors),
+ ActionMap::BackTab => EventAction::backtab(status),
+ ActionMap::Backspace => EventAction::backspace(current_tab),
+ ActionMap::Bulk => EventAction::bulk(status),
+ ActionMap::Chmod => EventAction::chmod(status),
+ ActionMap::ClearFlags => EventAction::clear_flags(status),
+ ActionMap::CliInfo => EventAction::cli_info(status),
+ ActionMap::Command => EventAction::command(current_tab),
+ ActionMap::Compress => EventAction::compress(status),
+ ActionMap::CopyFilename => EventAction::copy_filename(current_tab),
+ ActionMap::CopyFilepath => EventAction::copy_filepath(current_tab),
+ ActionMap::CopyPaste => EventAction::copy_paste(status),
+ ActionMap::CutPaste => EventAction::cut_paste(status),
+ ActionMap::Delete => EventAction::delete(status),
+ ActionMap::DeleteFile => EventAction::delete_file(status),
+ ActionMap::Diff => EventAction::diff(status),
+ ActionMap::DragNDrop => EventAction::drag_n_drop(status),
+ ActionMap::EncryptedDrive => EventAction::encrypted_drive(status),
+ ActionMap::End => EventAction::end(current_tab, colors),
+ ActionMap::Enter => EventAction::enter(status, colors),
+ ActionMap::Exec => EventAction::exec(current_tab),
+ ActionMap::Filter => EventAction::filter(current_tab),
+ ActionMap::FlagAll => EventAction::flag_all(status),
+ ActionMap::FuzzyFind => EventAction::fuzzyfind(status),
+ ActionMap::FuzzyFindHelp => EventAction::fuzzyfind_help(status),
+ ActionMap::FuzzyFindLine => EventAction::fuzzyfind_line(status),
+ ActionMap::GoRoot => EventAction::go_root(current_tab),
+ ActionMap::GoStart => EventAction::go_start(status),
+ ActionMap::Goto => EventAction::goto(current_tab),
+ ActionMap::Help => EventAction::help(status),
+ ActionMap::History => EventAction::history(current_tab),
+ ActionMap::Home => EventAction::home(current_tab),
+ ActionMap::Jump => EventAction::jump(status),
+ ActionMap::KeyHome => EventAction::key_home(status, colors),
+ ActionMap::Log => EventAction::log(current_tab),
+ ActionMap::MarksJump => EventAction::marks_jump(status),
+ ActionMap::MarksNew => EventAction::marks_new(current_tab),
+ ActionMap::MediaInfo => EventAction::mediainfo(current_tab),
+ ActionMap::MocpAddToPlayList => EventAction::mocp_add_to_playlist(current_tab),
+ ActionMap::MocpGoToSong => EventAction::mocp_go_to_song(current_tab),
+ ActionMap::MocpNext => EventAction::mocp_next(),
+ ActionMap::MocpPrevious => EventAction::mocp_previous(),
+ ActionMap::MocpTogglePause => EventAction::mocp_toggle_pause(status),
+ ActionMap::MoveDown => EventAction::move_down(status, colors),
+ ActionMap::MoveLeft => EventAction::move_left(status, colors),
+ ActionMap::MoveRight => EventAction::move_right(status, colors),
+ ActionMap::MoveUp => EventAction::move_up(status, colors),
+ ActionMap::NewDir => EventAction::new_dir(current_tab),
+ ActionMap::NewFile => EventAction::new_file(current_tab),
+ ActionMap::NvimFilepicker => EventAction::nvim_filepicker(status),
+ ActionMap::NvimSetAddress => EventAction::set_nvim_server(status),
+ ActionMap::OpenConfig => EventAction::open_config(status),
+ ActionMap::OpenFile => EventAction::open_file(status),
+ ActionMap::PageDown => EventAction::page_down(current_tab, colors),
+ ActionMap::PageUp => EventAction::page_up(current_tab, colors),
+ ActionMap::Preview => EventAction::preview(status, colors),
+ ActionMap::Quit => EventAction::quit(current_tab),
+ ActionMap::RefreshView => EventAction::refreshview(status, colors),
+ ActionMap::RegexMatch => EventAction::regex_match(current_tab),
+ ActionMap::Rename => EventAction::rename(current_tab),
+ ActionMap::ResetMode => EventAction::reset_mode(current_tab),
+ ActionMap::ReverseFlags => EventAction::reverse_flags(status),
+ ActionMap::Search => EventAction::search(current_tab),
+ ActionMap::SearchNext => EventAction::search_next(current_tab),
+ ActionMap::SetWallpaper => EventAction::set_wallpaper(current_tab),
+ ActionMap::Shell => EventAction::shell(status),
+ ActionMap::ShellCommand => EventAction::shell_command(current_tab),
+ ActionMap::ShellMenu => EventAction::shell_menu(current_tab),
+ ActionMap::Shortcut => EventAction::shortcut(current_tab),
+ ActionMap::Sort => EventAction::sort(current_tab),
+ ActionMap::Symlink => EventAction::symlink(status),
+ ActionMap::Tab => EventAction::tab(status),
+ ActionMap::ToggleDisplayFull => EventAction::toggle_display_full(status),
+ ActionMap::ToggleDualPane => EventAction::toggle_dualpane(status),
+ ActionMap::ToggleFlag => EventAction::toggle_flag(status),
+ ActionMap::ToggleHidden => EventAction::toggle_hidden(status, colors),
+ ActionMap::TogglePreviewSecond => EventAction::toggle_preview_second(status),
+ ActionMap::TrashEmpty => EventAction::trash_empty(status),
+ ActionMap::TrashMoveFile => EventAction::trash_move_file(status),
+ ActionMap::TrashOpen => EventAction::trash_open(status),
+ ActionMap::TrashRestoreFile => LeaveMode::trash(status),
+ ActionMap::Tree => EventAction::tree(status, colors),
+ ActionMap::TreeFold => EventAction::tree_fold(current_tab, colors),
+ ActionMap::TreeFoldAll => EventAction::tree_fold_all(current_tab, colors),
+ ActionMap::TreeUnFoldAll => EventAction::tree_unfold_all(current_tab, colors),
+ ActionMap::Custom(string) => EventAction::custom(status, string.clone()),
ActionMap::Nothing => Ok(()),
}