diff options
author | Tim Oram <dev@mitmaro.ca> | 2021-01-17 15:55:07 -0330 |
---|---|---|
committer | Tim Oram <dev@mitmaro.ca> | 2021-01-27 19:03:19 -0330 |
commit | 8fd1c53e23d91ccb3051ab030042966eebe327f4 (patch) | |
tree | 4cb9e5e6bb8e4d2cb9bddf390a0cf42e772afeb7 | |
parent | 2ca4725a8bd33cfeb69d8b15283f0225d43d7a40 (diff) |
Add Size struct and refactor
-rw-r--r-- | src/confirm_abort/mod.rs | 5 | ||||
-rw-r--r-- | src/confirm_rebase/mod.rs | 5 | ||||
-rw-r--r-- | src/display/mod.rs | 8 | ||||
-rw-r--r-- | src/edit/mod.rs | 6 | ||||
-rw-r--r-- | src/external_editor/mod.rs | 10 | ||||
-rw-r--r-- | src/list/mod.rs | 5 | ||||
-rw-r--r-- | src/process/error.rs | 3 | ||||
-rw-r--r-- | src/process/help.rs | 3 | ||||
-rw-r--r-- | src/process/mod.rs | 6 | ||||
-rw-r--r-- | src/process/window_size_error.rs | 6 | ||||
-rw-r--r-- | src/show_commit/mod.rs | 3 | ||||
-rw-r--r-- | src/view/mod.rs | 10 |
12 files changed, 43 insertions, 27 deletions
diff --git a/src/confirm_abort/mod.rs b/src/confirm_abort/mod.rs index 81069ab..d0a05ac 100644 --- a/src/confirm_abort/mod.rs +++ b/src/confirm_abort/mod.rs @@ -14,8 +14,9 @@ pub struct ConfirmAbort { impl ProcessModule for ConfirmAbort { fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (window_width, window_height) = view.get_view_size(); - self.view_data.set_view_size(window_width, window_height); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); + self.view_data.set_view_size(view_width, view_height); self.view_data.rebuild(); &self.view_data } diff --git a/src/confirm_rebase/mod.rs b/src/confirm_rebase/mod.rs index 71344b2..362a515 100644 --- a/src/confirm_rebase/mod.rs +++ b/src/confirm_rebase/mod.rs @@ -14,8 +14,9 @@ pub struct ConfirmRebase { impl ProcessModule for ConfirmRebase { fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (window_width, window_height) = view.get_view_size(); - self.view_data.set_view_size(window_width, window_height); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); + self.view_data.set_view_size(view_width, view_height); self.view_data.rebuild(); &self.view_data } diff --git a/src/display/mod.rs b/src/display/mod.rs index baf1022..d8621b7 100644 --- a/src/display/mod.rs +++ b/src/display/mod.rs @@ -10,12 +10,14 @@ mod color_manager; mod color_mode; pub mod curses; pub mod display_color; +mod size; mod utils; use crate::config::theme::Theme; use crate::display::color_manager::ColorManager; use crate::display::curses::{chtype, Curses, Input, A_DIM, A_REVERSE, A_UNDERLINE}; use crate::display::display_color::DisplayColor; +pub use crate::display::size::Size; use std::cell::RefCell; use std::convert::TryInto; @@ -260,8 +262,8 @@ impl<'d> Display<'d> { input } - pub(crate) fn get_window_size(&self) -> (usize, usize) { - (*self.width.borrow(), *self.height.borrow()) + pub(crate) fn get_window_size(&self) -> Size { + Size::new(*self.width.borrow(), *self.height.borrow()) } pub(crate) fn fill_end_of_line(&self) { @@ -450,7 +452,7 @@ mod tests { display_module_test(|mut test_context: TestContext| { test_context.curses.resize_term(10, 12); let display = Display::new(&mut test_context.curses, &test_context.config.theme); - assert_eq!(display.get_window_size(), (12, 10)); + assert_eq!(display.get_window_size(), Size::new(12, 10)); }); } diff --git a/src/edit/mod.rs b/src/edit/mod.rs index 29ff0d7..fc67f50 100644 --- a/src/edit/mod.rs +++ b/src/edit/mod.rs @@ -31,7 +31,8 @@ impl ProcessModule for Edit { } fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); let line = self.content.as_str(); let pointer = self.cursor_position; @@ -138,7 +139,8 @@ impl ProcessModule for Edit { break result.state(State::List); }, Input::Resize => { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); self.view_data.set_view_size(view_width, view_height); }, _ => { diff --git a/src/external_editor/mod.rs b/src/external_editor/mod.rs index bfb630d..f61973f 100644 --- a/src/external_editor/mod.rs +++ b/src/external_editor/mod.rs @@ -56,7 +56,8 @@ impl<'e> ProcessModule for ExternalEditor<'e> { } fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (window_width, window_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); self.view_data.clear(); match self.state { @@ -104,7 +105,7 @@ impl<'e> ProcessModule for ExternalEditor<'e> { }, } - self.view_data.set_view_size(window_width, window_height); + self.view_data.set_view_size(view_width, view_height); self.view_data.rebuild(); &self.view_data } @@ -205,8 +206,9 @@ impl<'e> ExternalEditor<'e> { Input::ScrollDown => self.view_data.scroll_down(), Input::ScrollUp => self.view_data.scroll_up(), Input::Resize => { - let (window_width, window_height) = view.get_view_size(); - self.view_data.set_view_size(window_width, window_height); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); + self.view_data.set_view_size(view_width, view_height); }, _ => return Some(input), } diff --git a/src/list/mod.rs b/src/list/mod.rs index 0c95270..5ad5a13 100644 --- a/src/list/mod.rs +++ b/src/list/mod.rs @@ -34,7 +34,8 @@ pub struct List<'l> { impl<'l> ProcessModule for List<'l> { fn build_view_data(&mut self, view: &View<'_>, todo_file: &TodoFile) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); self.view_data.clear(); self.view_data.set_view_size(view_width, view_height); @@ -72,7 +73,7 @@ impl<'l> ProcessModule for List<'l> { todo_file: &mut TodoFile, view: &View<'_>, ) -> ProcessResult { - let (_, view_height) = view.get_view_size(); + let view_height = view.get_view_size().height(); let input = input_handler.get_input(InputMode::List); let mut result = ProcessResult::new().input(input); match input { diff --git a/src/process/error.rs b/src/process/error.rs index 17b75fd..7778914 100644 --- a/src/process/error.rs +++ b/src/process/error.rs @@ -23,7 +23,8 @@ impl ProcessModule for Error { } fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); self.view_data.set_view_size(view_width, view_height); self.view_data.rebuild(); &self.view_data diff --git a/src/process/help.rs b/src/process/help.rs index e0ec39f..9c47492 100644 --- a/src/process/help.rs +++ b/src/process/help.rs @@ -42,7 +42,8 @@ impl ProcessModule for Help { } fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); let view_data = self.view_data.as_mut().unwrap_or(&mut self.no_help_view_data); view_data.set_view_size(view_width, view_height); view_data.rebuild(); diff --git a/src/process/mod.rs b/src/process/mod.rs index fe39147..8158d2e 100644 --- a/src/process/mod.rs +++ b/src/process/mod.rs @@ -44,7 +44,8 @@ impl<'r> Process<'r> { } pub(crate) fn run(&mut self, mut modules: Modules<'_>) -> Result<Option<ExitStatus>> { - let (view_width, view_height) = self.view.get_view_size(); + let view_width = self.view.get_view_size().width(); + let view_height = self.view.get_view_size().height(); if WindowSizeError::is_window_too_small(view_width, view_height) { self.handle_process_result(&mut modules, &ProcessResult::new().state(State::WindowSizeError)); } @@ -84,7 +85,8 @@ impl<'r> Process<'r> { self.exit_status = Some(ExitStatus::Abort); }, Some(Input::Resize) => { - let (view_width, view_height) = self.view.get_view_size(); + let view_width = self.view.get_view_size().width(); + let view_height = self.view.get_view_size().height(); if self.state != State::WindowSizeError && WindowSizeError::is_window_too_small(view_width, view_height) { self.state = State::WindowSizeError; diff --git a/src/process/window_size_error.rs b/src/process/window_size_error.rs index 7a85967..0181f36 100644 --- a/src/process/window_size_error.rs +++ b/src/process/window_size_error.rs @@ -26,7 +26,8 @@ impl ProcessModule for WindowSizeError { } fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); let message = if view_width <= MINIMUM_COMPACT_WINDOW_WIDTH { if view_width >= SHORT_ERROR_MESSAGE.len() { SHORT_ERROR_MESSAGE @@ -61,7 +62,8 @@ impl ProcessModule for WindowSizeError { let mut result = ProcessResult::new().input(input); if input == Input::Resize { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); if !Self::is_window_too_small(view_width, view_height) { result = result.state(self.return_state); } diff --git a/src/show_commit/mod.rs b/src/show_commit/mod.rs index c9206f3..eb28071 100644 --- a/src/show_commit/mod.rs +++ b/src/show_commit/mod.rs @@ -74,7 +74,8 @@ impl<'s> ProcessModule for ShowCommit<'s> { } fn build_view_data(&mut self, view: &View<'_>, _: &TodoFile) -> &ViewData { - let (view_width, view_height) = view.get_view_size(); + let view_width = view.get_view_size().width(); + let view_height = view.get_view_size().height(); let commit = self.commit.as_ref().unwrap(); // will only fail on programmer error if self.view_data.is_empty() { let is_full_width = view_width >= MINIMUM_FULL_WINDOW_WIDTH; diff --git a/src/view/mod.rs b/src/view/mod.rs index 2e0296c..e76b7db 100644 --- a/src/view/mod.rs +++ b/src/view/mod.rs @@ -7,7 +7,7 @@ pub mod view_line; use crate::constants::{TITLE, TITLE_HELP_INDICATOR_LENGTH, TITLE_LENGTH, TITLE_SHORT, TITLE_SHORT_LENGTH}; use crate::display::display_color::DisplayColor; -use crate::display::Display; +use crate::display::{Display, Size}; use crate::view::view_data::ViewData; use crate::view::view_line::ViewLine; use crate::Config; @@ -22,13 +22,13 @@ impl<'v> View<'v> { Self { display, config } } - pub(crate) fn get_view_size(&self) -> (usize, usize) { + pub(crate) fn get_view_size(&self) -> Size { self.display.get_window_size() } pub(crate) fn render(&self, view_data: &ViewData) { self.display.clear(); - let (_, window_height) = self.display.get_window_size(); + let window_height = self.display.get_window_size().height(); let mut line_index = 0; @@ -116,7 +116,7 @@ impl<'v> View<'v> { fn draw_title(&self, show_help: bool) { self.display.color(DisplayColor::Normal, false); self.display.set_style(false, true, false); - let (window_width, _) = self.display.get_window_size(); + let window_width = self.display.get_window_size().width(); let title_help_indicator_total_length = TITLE_HELP_INDICATOR_LENGTH + self.config.key_bindings.help.len(); @@ -197,7 +197,7 @@ mod tests { test_context.curses.resize_term(10, 20); let display = Display::new(&mut test_context.curses, &test_context.config.theme); let view = View::new(&display, &test_context.config); - assert_eq!(view.get_view_size(), (20, 10)); + assert_eq!(view.get_view_size(), Size::new(20, 10)); }); } |