From d9a4d91a6b00691d4b363edeb2623ccc8d1f1d55 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao Date: Wed, 11 Mar 2020 15:22:17 -0400 Subject: remove window module and fix unwrap none when opening file --- src/commands/open_file.rs | 7 +- src/ui/widgets/tui_dirlist_detailed.rs | 14 +-- src/window/mod.rs | 3 - src/window/page_state.rs | 173 --------------------------------- 4 files changed, 12 insertions(+), 185 deletions(-) delete mode 100644 src/window/mod.rs delete mode 100644 src/window/page_state.rs diff --git a/src/commands/open_file.rs b/src/commands/open_file.rs index 39524e7..c871c29 100644 --- a/src/commands/open_file.rs +++ b/src/commands/open_file.rs @@ -55,8 +55,9 @@ impl OpenFile { let options = Self::get_options(paths[0]); if options.len() > 0 { backend.terminal_drop(); - options[0].execute_with(&paths)?; - backend.terminal_restore(); + let res = options[0].execute_with(&paths); + backend.terminal_restore()?; + return res; } else { OpenFileWith::open_with(context, backend, &paths)?; } @@ -123,7 +124,7 @@ impl OpenFileWith { match user_input.parse::() { Ok(n) if n >= mimetype_options.len() => Err(std::io::Error::new( std::io::ErrorKind::InvalidData, - "option does not exist".to_owned(), + "option does not exist".to_string(), )), Ok(n) => { let mimetype_entry = &mimetype_options[n]; diff --git a/src/ui/widgets/tui_dirlist_detailed.rs b/src/ui/widgets/tui_dirlist_detailed.rs index 0fffd79..e0e580c 100644 --- a/src/ui/widgets/tui_dirlist_detailed.rs +++ b/src/ui/widgets/tui_dirlist_detailed.rs @@ -33,13 +33,15 @@ impl<'a> Widget for TuiDirListDetailed<'a> { let y = area.top(); let dir_len = self.dirlist.contents.len(); - if dir_len == 0 { - let style = Style::default().bg(Color::Red).fg(Color::White); - buf.set_stringn(x, y, "empty", area.width as usize, style); - return; - } + let curr_index = match self.dirlist.index { + Some(i) => i, + None => { + let style = Style::default().bg(Color::Red).fg(Color::White); + buf.set_stringn(x, y, "empty", area.width as usize, style); + return; + } + }; - let curr_index = self.dirlist.index.unwrap(); let skip_dist = curr_index / area.height as usize * area.height as usize; let screen_index = if skip_dist > 0 { diff --git a/src/window/mod.rs b/src/window/mod.rs deleted file mode 100644 index ac50e58..0000000 --- a/src/window/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod page_state; - -pub use self::page_state::JoshutoPageState; diff --git a/src/window/page_state.rs b/src/window/page_state.rs deleted file mode 100644 index 4556d72..0000000 --- a/src/window/page_state.rs +++ /dev/null @@ -1,173 +0,0 @@ -#[derive(Clone, Debug)] -pub struct JoshutoPageState { - pub start: usize, - pub end: usize, -} - -impl JoshutoPageState { - pub fn update_page_state( - &mut self, - index: usize, - win_rows: i32, - vec_len: usize, - offset: usize, - ) { - if self.end != self.start + win_rows as usize { - self.end = self.start + win_rows as usize; - } - if self.end > vec_len { - self.end = vec_len - } - - if self.start + offset >= index { - self.start = if index as usize <= offset { - 0 - } else { - index as usize - offset - }; - self.end = if self.start + win_rows as usize >= vec_len { - vec_len - } else { - self.start + win_rows as usize - }; - self.start = if self.end <= win_rows as usize { - 0 - } else { - self.end - win_rows as usize - }; - } - if self.end <= index + offset { - self.end = if index as usize + offset >= vec_len { - vec_len - } else { - index as usize + offset - }; - self.start = if self.end <= win_rows as usize { - 0 - } else { - self.end - win_rows as usize - }; - self.end = if self.start + win_rows as usize >= vec_len { - vec_len - } else { - self.start + win_rows as usize - }; - } - } -} - -impl std::default::Default for JoshutoPageState { - fn default() -> Self { - JoshutoPageState { - start: usize::default(), - end: usize::default(), - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - #[test] - fn shorter_than_viewable_region() { - let mut page_state = JoshutoPageState::new(); - let index = 5; - let win_rows = 37; - let vec_len = 12; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(12, page_state.end); - let index = 30; - let win_rows = 37; - let vec_len = 12; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(12, page_state.end); - } - #[test] - fn test_01() { - let mut page_state = JoshutoPageState::new(); - let index = 3; - let win_rows = 25; - let vec_len = 40; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(25, page_state.end); - } - #[test] - fn test_02() { - let mut page_state = JoshutoPageState::new(); - let index = 12; - let win_rows = 25; - let vec_len = 40; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(25, page_state.end); - } - #[test] - fn test_inside_top_offset() { - let mut page_state = JoshutoPageState::new(); - page_state.start = 10; - let index = 12; - let win_rows = 25; - let vec_len = 40; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(6, page_state.start); - assert_eq!(31, page_state.end); - } - #[test] - fn test_inside_bottom_offset() { - let mut page_state = JoshutoPageState::new(); - page_state.start = 36; - let index = 34; - let win_rows = 25; - let vec_len = 40; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(15, page_state.start); - assert_eq!(40, page_state.end); - } - #[test] - fn test_small_size() { - let mut page_state = JoshutoPageState::new(); - let index = 3; - let win_rows = 6; - let vec_len = 6; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(6, page_state.end); - let index = 0; - let win_rows = 6; - let vec_len = 6; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(6, page_state.end); - let index = 6; - let win_rows = 6; - let vec_len = 6; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(0, page_state.start); - assert_eq!(6, page_state.end); - } - #[test] - fn test_negative() { - let mut page_state = JoshutoPageState::new(); - page_state.start = 10; - page_state.end = 5; - let index = 7; - let win_rows = 30; - let vec_len = 35; - let offset = 6; - page_state.update_page_state(index, win_rows, vec_len, offset); - assert_eq!(1, page_state.start); - assert_eq!(31, page_state.end); - } -} -- cgit v1.2.3