diff options
Diffstat (limited to 'src/action_map.rs')
-rw-r--r-- | src/action_map.rs | 200 |
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(()), } |