summaryrefslogtreecommitdiffstats
path: root/src/interactive
diff options
context:
space:
mode:
authorPiotr Wach <pwach@bloomberg.net>2024-01-07 09:19:09 +0000
committerPiotr Wach <pwach@bloomberg.net>2024-01-07 09:19:09 +0000
commitfeec3eb37d50c4b927ae3f948159693f134edf4b (patch)
tree7bd9ed5b4d42cac213255ff43e9b7e7e81afed40 /src/interactive
parent5123cf584ab68c0a2f491580289c7243e8651bfa (diff)
Move AppState to separate file
Diffstat (limited to 'src/interactive')
-rw-r--r--src/interactive/app/app_state.rs35
-rw-r--r--src/interactive/app/eventloop.rs36
-rw-r--r--src/interactive/app/handlers.rs5
-rw-r--r--src/interactive/app/mod.rs1
-rw-r--r--src/interactive/app/terminal_app.rs2
-rw-r--r--src/interactive/widgets/glob.rs2
-rw-r--r--src/interactive/widgets/main.rs2
7 files changed, 44 insertions, 39 deletions
diff --git a/src/interactive/app/app_state.rs b/src/interactive/app/app_state.rs
new file mode 100644
index 0000000..7983374
--- /dev/null
+++ b/src/interactive/app/app_state.rs
@@ -0,0 +1,35 @@
+use dua::WalkResult;
+
+use super::{navigation::Navigation, EntryDataBundle, SortMode};
+
+#[derive(Default, Copy, Clone, PartialEq)]
+pub enum FocussedPane {
+ #[default]
+ Main,
+ Help,
+ Mark,
+ Glob,
+}
+
+#[derive(Default)]
+pub struct Cursor {
+ pub show: bool,
+ pub x: u16,
+ pub y: u16,
+}
+
+#[derive(Default)]
+pub struct AppState {
+ pub navigation: Navigation,
+ pub glob_navigation: Option<Navigation>,
+ pub entries: Vec<EntryDataBundle>,
+ pub sorting: SortMode,
+ pub message: Option<String>,
+ pub focussed: FocussedPane,
+ pub is_scanning: bool,
+}
+
+pub enum ProcessingResult {
+ Finished(WalkResult),
+ ExitRequested(WalkResult),
+} \ No newline at end of file
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs
index 2d2459c..98e13c2 100644
--- a/src/interactive/app/eventloop.rs
+++ b/src/interactive/app/eventloop.rs
@@ -3,7 +3,7 @@ use crate::interactive::{
sorted_entries,
widgets::{glob_search, MainWindow, MainWindowProps},
ByteVisualization, CursorDirection, CursorMode, DisplayOptions, EntryDataBundle, MarkEntryMode,
- SortMode,
+ SortMode, app_state::FocussedPane,
};
use anyhow::Result;
use crossbeam::channel::Receiver;
@@ -17,41 +17,9 @@ use std::path::PathBuf;
use tui::backend::Backend;
use tui_react::Terminal;
-use super::input::input_channel;
+use super::{input::input_channel, app_state::{AppState, Cursor, ProcessingResult}};
use super::tree_view::TreeView;
-#[derive(Default, Copy, Clone, PartialEq)]
-pub enum FocussedPane {
- #[default]
- Main,
- Help,
- Mark,
- Glob,
-}
-
-#[derive(Default)]
-pub struct Cursor {
- pub show: bool,
- pub x: u16,
- pub y: u16,
-}
-
-#[derive(Default)]
-pub struct AppState {
- pub navigation: Navigation,
- pub glob_navigation: Option<Navigation>,
- pub entries: Vec<EntryDataBundle>,
- pub sorting: SortMode,
- pub message: Option<String>,
- pub focussed: FocussedPane,
- pub is_scanning: bool,
-}
-
-pub enum ProcessingResult {
- Finished(WalkResult),
- ExitRequested(WalkResult),
-}
-
impl AppState {
pub fn navigation_mut(&mut self) -> &mut Navigation {
self.glob_navigation
diff --git a/src/interactive/app/handlers.rs b/src/interactive/app/handlers.rs
index 6d5a7dd..611c2a0 100644
--- a/src/interactive/app/handlers.rs
+++ b/src/interactive/app/handlers.rs
@@ -1,8 +1,7 @@
use crate::interactive::{
app::tree_view::TreeView,
- app::FocussedPane::*,
widgets::{GlobPane, HelpPane, MainWindow, MarkMode, MarkPane},
- AppState, DisplayOptions, EntryDataBundle,
+ DisplayOptions, EntryDataBundle,
};
use crosstermion::input::Key;
use dua::traverse::TreeIndex;
@@ -10,6 +9,8 @@ use std::{fs, io, path::PathBuf};
use tui::backend::Backend;
use tui_react::Terminal;
+use super::app_state::{AppState, FocussedPane::*};
+
#[derive(Copy, Clone)]
pub enum CursorMode {
Advance,
diff --git a/src/interactive/app/mod.rs b/src/interactive/app/mod.rs
index 73eb2f2..742127a 100644
--- a/src/interactive/app/mod.rs
+++ b/src/interactive/app/mod.rs
@@ -6,6 +6,7 @@ pub mod input;
mod navigation;
pub mod tree_view;
pub mod terminal_app;
+pub mod app_state;
pub use bytevis::*;
pub use common::*;
diff --git a/src/interactive/app/terminal_app.rs b/src/interactive/app/terminal_app.rs
index b19bf1b..1367724 100644
--- a/src/interactive/app/terminal_app.rs
+++ b/src/interactive/app/terminal_app.rs
@@ -9,7 +9,7 @@ use anyhow::Result;
use crate::interactive::widgets::MainWindow;
-use super::{DisplayOptions, AppState, ProcessingResult, ByteVisualization, sorted_entries, refresh_key};
+use super::{DisplayOptions, ByteVisualization, sorted_entries, refresh_key, app_state::{ProcessingResult, AppState}};
/// State and methods representing the interactive disk usage analyser for the terminal
diff --git a/src/interactive/widgets/glob.rs b/src/interactive/widgets/glob.rs
index bad9fd9..9f385a2 100644
--- a/src/interactive/widgets/glob.rs
+++ b/src/interactive/widgets/glob.rs
@@ -18,7 +18,7 @@ use tui_react::{draw_text_nowrap_fn, Terminal};
use unicode_segmentation::UnicodeSegmentation;
use unicode_width::UnicodeWidthStr;
-use crate::interactive::Cursor;
+use crate::interactive::app_state::Cursor;
pub struct GlobPaneProps {
pub border_style: Style,
diff --git a/src/interactive/widgets/main.rs b/src/interactive/widgets/main.rs
index 46e6724..6a4bfb8 100644
--- a/src/interactive/widgets/main.rs
+++ b/src/interactive/widgets/main.rs
@@ -3,7 +3,7 @@ use crate::interactive::{
Entries, EntriesProps, Footer, FooterProps, GlobPane, GlobPaneProps, Header, HelpPane,
HelpPaneProps, MarkPane, MarkPaneProps, COLOR_MARKED,
},
- AppState, Cursor, DisplayOptions, FocussedPane,
+ DisplayOptions, app_state::{AppState, FocussedPane, Cursor},
};
use std::borrow::Borrow;
use tui::backend::Backend;