summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2021-01-17 15:55:07 -0330
committerTim Oram <dev@mitmaro.ca>2021-01-27 19:03:19 -0330
commit8fd1c53e23d91ccb3051ab030042966eebe327f4 (patch)
tree4cb9e5e6bb8e4d2cb9bddf390a0cf42e772afeb7
parent2ca4725a8bd33cfeb69d8b15283f0225d43d7a40 (diff)
Add Size struct and refactor
-rw-r--r--src/confirm_abort/mod.rs5
-rw-r--r--src/confirm_rebase/mod.rs5
-rw-r--r--src/display/mod.rs8
-rw-r--r--src/edit/mod.rs6
-rw-r--r--src/external_editor/mod.rs10
-rw-r--r--src/list/mod.rs5
-rw-r--r--src/process/error.rs3
-rw-r--r--src/process/help.rs3
-rw-r--r--src/process/mod.rs6
-rw-r--r--src/process/window_size_error.rs6
-rw-r--r--src/show_commit/mod.rs3
-rw-r--r--src/view/mod.rs10
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));
});
}