rust_kanban/app/
actions.rs

1use 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}