1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
use strum_macros::{Display, EnumString};
use crate::event_exec::EventExec;
use crate::fm_error::FmResult;
use crate::status::Status;
#[derive(Clone, Debug, Display, EnumString)]
pub enum ActionMap {
Back,
BackTab,
Backspace,
Bulkrename,
Chmod,
ClearFlags,
CopyFilename,
CopyFilepath,
CopyPaste,
CutPaste,
Delete,
DeleteFile,
DisplayFull,
DragNDrop,
End,
Enter,
Exec,
Filter,
FlagAll,
FuzzyFind,
Goto,
Help,
History,
Home,
Jump,
KeyHome,
MarksJump,
MarksNew,
ModeNormal,
MoveDown,
MoveLeft,
MoveRight,
MoveUp,
NewDir,
NewFile,
Nothing,
NvimFilepicker,
OpenFile,
PageDown,
PageUp,
Preview,
Quit,
RefreshView,
RegexMatch,
Rename,
ReverseFlags,
Search,
SearchNext,
Shell,
Shortcut,
Sort,
Symlink,
Tab,
Thumbnail,
ToggleDualPane,
ToggleFlag,
ToggleHidden,
TrashMoveFile,
TrashRestoreFile,
TrashEmpty,
TrashOpen,
}
impl ActionMap {
pub fn matcher(&self, status: &mut Status) -> FmResult<()> {
let current_tab = status.selected();
match *self {
ActionMap::Back => EventExec::event_back(current_tab),
ActionMap::BackTab => EventExec::backtab(status),
ActionMap::Backspace => EventExec::event_backspace(status),
ActionMap::Bulkrename => EventExec::event_bulkrename(status),
ActionMap::Chmod => EventExec::event_chmod(status),
ActionMap::ClearFlags => EventExec::event_clear_flags(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::DisplayFull => EventExec::event_toggle_display_full(status),
ActionMap::DragNDrop => EventExec::event_drag_n_drop(status),
ActionMap::End => EventExec::event_end(status),
ActionMap::Enter => EventExec::enter(status),
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::Goto => EventExec::event_goto(current_tab),
ActionMap::Help => EventExec::event_help(status),
ActionMap::History => EventExec::event_history(current_tab),
ActionMap::Home => EventExec::event_home(current_tab),
ActionMap::Jump => EventExec::event_jump(status),
ActionMap::KeyHome => EventExec::event_key_home(status),
ActionMap::MarksJump => EventExec::event_marks_jump(status),
ActionMap::MarksNew => EventExec::event_marks_new(current_tab),
ActionMap::ModeNormal => EventExec::event_normal(current_tab),
ActionMap::MoveDown => EventExec::event_move_down(status),
ActionMap::MoveLeft => EventExec::event_move_left(status),
ActionMap::MoveRight => EventExec::event_move_right(status),
ActionMap::MoveUp => EventExec::event_move_up(status),
ActionMap::NewDir => EventExec::event_new_dir(current_tab),
ActionMap::NewFile => EventExec::event_new_file(current_tab),
ActionMap::NvimFilepicker => EventExec::event_nvim_filepicker(current_tab),
ActionMap::OpenFile => EventExec::event_open_file(status),
ActionMap::PageDown => EventExec::page_down(status),
ActionMap::PageUp => EventExec::page_up(status),
ActionMap::Preview => EventExec::event_preview(current_tab),
ActionMap::Quit => EventExec::event_quit(current_tab),
ActionMap::RefreshView => EventExec::event_refreshview(status),
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::Shell => EventExec::event_shell(status),
ActionMap::Shortcut => EventExec::event_shortcut(current_tab),
ActionMap::Sort => EventExec::event_sort(current_tab),
ActionMap::Symlink => EventExec::event_symlink(status),
ActionMap::Tab => EventExec::tab(status),
ActionMap::Thumbnail => EventExec::event_thumbnail(current_tab),
ActionMap::ToggleDualPane => EventExec::event_toggle_dualpane(status),
ActionMap::ToggleFlag => EventExec::event_toggle_flag(status),
ActionMap::ToggleHidden => EventExec::event_toggle_hidden(current_tab),
ActionMap::TrashMoveFile => EventExec::event_trash_move_file(status),
ActionMap::TrashRestoreFile => EventExec::event_trash_restore_file(status),
ActionMap::TrashEmpty => EventExec::exec_trash_empty(status),
ActionMap::TrashOpen => EventExec::event_trash_open(status),
ActionMap::Nothing => Ok(()),
}
}
}