Skip to main content

binocular/app/
action.rs

1use crate::preview::structured_log::LogEntry;
2use crate::preview::{PreviewContent, PreviewSource};
3use crate::runtime::interactive::input::InputEvent;
4use crate::search::matcher::MatcherState;
5use crate::search::types::SearchMode;
6
7pub enum AppEvent {
8    Input(InputEvent),
9    Matcher(MatcherState, u64),
10    Preview(PreviewSource, PreviewContent),
11    LogAppend(String, Vec<LogEntry>),
12}
13
14#[derive(Debug, PartialEq, Clone, Copy)]
15pub enum Mode {
16    Search,
17    Preview,
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
21pub enum InputMode {
22    Normal,
23    Visual,
24    VisualLine,
25    Insert,
26    Command,
27}
28
29#[derive(Debug, Clone, Copy, PartialEq, Eq)]
30pub enum HelpTab {
31    Overview,
32    Search,
33    Preview,
34    Logs,
35    Layout,
36}
37
38impl HelpTab {
39    pub fn title(self) -> &'static str {
40        match self {
41            Self::Overview => "Overview",
42            Self::Search => "Search",
43            Self::Preview => "Preview",
44            Self::Logs => "Logs",
45            Self::Layout => "Layout",
46        }
47    }
48
49    pub fn next(self) -> Self {
50        match self {
51            Self::Overview => Self::Search,
52            Self::Search => Self::Preview,
53            Self::Preview => Self::Logs,
54            Self::Logs => Self::Layout,
55            Self::Layout => Self::Overview,
56        }
57    }
58
59    pub fn previous(self) -> Self {
60        match self {
61            Self::Overview => Self::Layout,
62            Self::Search => Self::Overview,
63            Self::Preview => Self::Search,
64            Self::Logs => Self::Preview,
65            Self::Layout => Self::Logs,
66        }
67    }
68}
69
70#[derive(Debug, Clone, Copy, PartialEq, Eq)]
71pub enum AppAction {
72    Quit,
73    FocusSearch,
74    FocusPreview,
75    ToggleHelp,
76    CloseHelp,
77    ShowHelpTab(HelpTab),
78    NextHelpTab,
79    PreviousHelpTab,
80    TogglePreviewFullscreen,
81    SwapPanes,
82    AdjustPreviewWidth(i16),
83    ToggleSearchBarPosition,
84    TogglePreviewVisibility,
85    ToggleExactMatcher,
86    SetSearchMode(SearchMode),
87    RequestSearchRestart,
88}