#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Action {
MoveUp,
MoveDown,
MoveToTop,
MoveToBottom,
PageUp,
PageDown,
Enter,
GoParent,
GoBack,
GoForward,
ToggleSelect,
SelectAll,
ClearSelection,
MoveUpExtend,
MoveDownExtend,
Cut,
Copy,
Delete,
Rename,
CreateDir,
CreateFile,
ToggleHidden,
CycleSort,
Refresh,
StartFilter,
ClearFilter,
StartPathInput,
}
impl Action {
pub fn is_mutation(&self) -> bool {
matches!(
self,
Action::Delete | Action::Rename | Action::CreateDir | Action::CreateFile
)
}
pub fn is_navigation(&self) -> bool {
matches!(
self,
Action::Enter | Action::GoParent | Action::GoBack | Action::GoForward
)
}
pub fn is_selection(&self) -> bool {
matches!(
self,
Action::ToggleSelect
| Action::SelectAll
| Action::ClearSelection
| Action::MoveUpExtend
| Action::MoveDownExtend
)
}
pub fn is_clipboard(&self) -> bool {
matches!(self, Action::Cut | Action::Copy)
}
pub fn description(&self) -> &'static str {
match self {
Action::MoveUp => "Move up",
Action::MoveDown => "Move down",
Action::MoveToTop => "Move to top",
Action::MoveToBottom => "Move to bottom",
Action::PageUp => "Page up",
Action::PageDown => "Page down",
Action::Enter => "Enter/Select",
Action::GoParent => "Go to parent",
Action::GoBack => "Go back",
Action::GoForward => "Go forward",
Action::ToggleSelect => "Toggle selection",
Action::SelectAll => "Select all",
Action::ClearSelection => "Clear selection",
Action::MoveUpExtend => "Extend selection up",
Action::MoveDownExtend => "Extend selection down",
Action::Cut => "Cut",
Action::Copy => "Copy",
Action::Delete => "Delete",
Action::Rename => "Rename",
Action::CreateDir => "Create directory",
Action::CreateFile => "Create file",
Action::ToggleHidden => "Toggle hidden files",
Action::CycleSort => "Cycle sort mode",
Action::Refresh => "Refresh",
Action::StartFilter => "Start filter",
Action::ClearFilter => "Clear filter",
Action::StartPathInput => "Enter path",
}
}
}