rust_kanban/app/
actions.rs1use std::fmt::{self, Display};
2use strum::IntoEnumIterator;
3use strum_macros::EnumIter;
4
5#[derive(Debug, Clone, Copy, Eq, PartialEq, EnumIter)]
6pub enum Action {
7 ChangeCardStatusToActive,
8 ChangeCardStatusToCompleted,
9 ChangeCardStatusToStale,
10 ChangeCardPriorityToHigh,
11 ChangeCardPriorityToMedium,
12 ChangeCardPriorityToLow,
13 ClearAllToasts,
14 Delete,
15 DeleteBoard,
16 Down,
17 Accept,
18 GoToMainMenu,
19 GoToPreviousViewOrCancel,
20 HideUiElement,
21 Left,
22 MoveCardDown,
23 MoveCardLeft,
24 MoveCardRight,
25 MoveCardUp,
26 NewBoard,
27 NewCard,
28 NextFocus,
29 OpenConfigMenu,
30 PrvFocus,
31 Quit,
32 Redo,
33 ResetUI,
34 Right,
35 SaveState,
36 StopUserInput,
37 TakeUserInput,
38 ToggleCommandPalette,
39 Undo,
40 Up,
41}
42
43impl Action {
44 pub fn all() -> Vec<Action> {
45 Action::iter().collect()
46 }
47}
48
49impl Display for Action {
50 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
51 let str = match self {
52 Action::ChangeCardStatusToActive => "Change card status to active",
53 Action::ChangeCardStatusToCompleted => "Change card status to completed",
54 Action::ChangeCardStatusToStale => "Change card status to stale",
55 Action::ChangeCardPriorityToHigh => "Change card priority to high",
56 Action::ChangeCardPriorityToMedium => "Change card priority to medium",
57 Action::ChangeCardPriorityToLow => "Change card priority to low",
58 Action::ClearAllToasts => "Clear all toasts",
59 Action::Delete => "Delete focused element",
60 Action::DeleteBoard => "Delete Board",
61 Action::Down => "Go down",
62 Action::Accept => "Accept",
63 Action::GoToMainMenu => "Go to main menu",
64 Action::GoToPreviousViewOrCancel => "Go to previous View or cancel",
65 Action::HideUiElement => "Hide Focused element",
66 Action::Left => "Go left",
67 Action::MoveCardDown => "Move card down",
68 Action::MoveCardLeft => "Move card left",
69 Action::MoveCardRight => "Move card right",
70 Action::MoveCardUp => "Move card up",
71 Action::NewBoard => "Create new board",
72 Action::NewCard => "Create new card in current board",
73 Action::NextFocus => "Focus next",
74 Action::OpenConfigMenu => "Configure",
75 Action::PrvFocus => "Focus previous",
76 Action::Quit => "Quit",
77 Action::Redo => "Redo",
78 Action::ResetUI => "Reset UI",
79 Action::Right => "Go right",
80 Action::SaveState => "Save Kanban state",
81 Action::StopUserInput => "Stop input mode",
82 Action::TakeUserInput => "Enter input mode",
83 Action::ToggleCommandPalette => "Open command palette",
84 Action::Undo => "Undo",
85 Action::Up => "Go up",
86 };
87 write!(f, "{}", str)
88 }
89}