diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-04-18 19:10:57 -0400 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-04-18 19:10:57 -0400 |
commit | 3fa40b654a96df76f445da7da3a35bce69730ca8 (patch) | |
tree | fa80a7c2b8d622f3adcd5bbb1585ab99d0bccebd /src/ui/widgets | |
parent | 06b9a79c02717463ed360077a837534b362784b3 (diff) |
update to tui-rs 0.9
Diffstat (limited to 'src/ui/widgets')
-rw-r--r-- | src/ui/widgets/tui_dirlist.rs | 2 | ||||
-rw-r--r-- | src/ui/widgets/tui_dirlist_detailed.rs | 2 | ||||
-rw-r--r-- | src/ui/widgets/tui_footer.rs | 6 | ||||
-rw-r--r-- | src/ui/widgets/tui_menu.rs | 16 | ||||
-rw-r--r-- | src/ui/widgets/tui_prompt.rs | 11 | ||||
-rw-r--r-- | src/ui/widgets/tui_tab.rs | 4 | ||||
-rw-r--r-- | src/ui/widgets/tui_textfield.rs | 26 | ||||
-rw-r--r-- | src/ui/widgets/tui_topbar.rs | 4 | ||||
-rw-r--r-- | src/ui/widgets/tui_view.rs | 22 |
9 files changed, 42 insertions, 51 deletions
diff --git a/src/ui/widgets/tui_dirlist.rs b/src/ui/widgets/tui_dirlist.rs index 8840bda..d4c7db1 100644 --- a/src/ui/widgets/tui_dirlist.rs +++ b/src/ui/widgets/tui_dirlist.rs @@ -17,7 +17,7 @@ impl<'a> TuiDirList<'a> { } impl<'a> Widget for TuiDirList<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { if area.width < 1 || area.height < 1 { return; } diff --git a/src/ui/widgets/tui_dirlist_detailed.rs b/src/ui/widgets/tui_dirlist_detailed.rs index 1e40cbd..114b499 100644 --- a/src/ui/widgets/tui_dirlist_detailed.rs +++ b/src/ui/widgets/tui_dirlist_detailed.rs @@ -20,7 +20,7 @@ impl<'a> TuiDirListDetailed<'a> { } impl<'a> Widget for TuiDirListDetailed<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { if area.width < 4 || area.height < 1 { return; } diff --git a/src/ui/widgets/tui_footer.rs b/src/ui/widgets/tui_footer.rs index 83598a2..6cb8a70 100644 --- a/src/ui/widgets/tui_footer.rs +++ b/src/ui/widgets/tui_footer.rs @@ -1,5 +1,3 @@ -use std::fs; - use tui::buffer::Buffer; use tui::layout::Rect; use tui::style::{Color, Style}; @@ -19,7 +17,7 @@ impl<'a> TuiFooter<'a> { } impl<'a> Widget for TuiFooter<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { use std::os::unix::fs::PermissionsExt; let mode = self.entry.metadata.permissions.mode(); @@ -59,6 +57,6 @@ impl<'a> Widget for TuiFooter<'a> { _ => {} } - Paragraph::new(text.iter()).wrap(true).draw(area, buf); + Paragraph::new(text.iter()).wrap(true).render(area, buf); } } diff --git a/src/ui/widgets/tui_menu.rs b/src/ui/widgets/tui_menu.rs index e862065..ce663af 100644 --- a/src/ui/widgets/tui_menu.rs +++ b/src/ui/widgets/tui_menu.rs @@ -36,11 +36,11 @@ impl TuiCommandMenu { loop { terminal.draw(|mut frame| { - let f_size = frame.size(); + let f_size: Rect = frame.size(); { - let mut view = TuiView::new(&context); - view.render(&mut frame, f_size); + let view = TuiView::new(&context); + frame.render_widget(view, f_size); } { @@ -72,7 +72,7 @@ impl TuiCommandMenu { height: (display_str_len + BORDER_HEIGHT) as u16, }; - TuiMenu::new(&display_str).render(&mut frame, menu_rect); + frame.render_widget(TuiMenu::new(&display_str), menu_rect); } }); @@ -117,11 +117,11 @@ impl<'a> TuiMenu<'a> { const LONG_SPACE: &str = " "; impl<'a> Widget for TuiMenu<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { let text_iter = self.options.iter(); - let mut block = Block::default().borders(Borders::TOP); - - block.draw(area, buf); + let block = Block::default() + .borders(Borders::TOP) + .render(area, buf); let style = Style::default(); diff --git a/src/ui/widgets/tui_prompt.rs b/src/ui/widgets/tui_prompt.rs index b9848d0..2840d79 100644 --- a/src/ui/widgets/tui_prompt.rs +++ b/src/ui/widgets/tui_prompt.rs @@ -1,7 +1,7 @@ use termion::event::Key; use tui::layout::Rect; use tui::style::{Color, Style}; -use tui::widgets::{Paragraph, Text, Widget}; +use tui::widgets::{Paragraph, Text}; use crate::context::JoshutoContext; use crate::ui::TuiBackend; @@ -24,7 +24,7 @@ impl<'a> TuiPrompt<'a> { context.events.flush(); loop { terminal.draw(|mut frame| { - let f_size = frame.size(); + let f_size: Rect = frame.size(); if f_size.height == 0 { return; } @@ -32,7 +32,7 @@ impl<'a> TuiPrompt<'a> { { let mut view = TuiView::new(&context); view.show_bottom_status = false; - view.render(&mut frame, f_size); + frame.render_widget(view, f_size); } let prompt_style = Style::default().fg(Color::LightYellow); @@ -46,9 +46,8 @@ impl<'a> TuiPrompt<'a> { height: 1, }; - Paragraph::new(text.iter()) - .wrap(true) - .render(&mut frame, textfield_rect); + frame.render_widget(Paragraph::new(text.iter()) + .wrap(true), textfield_rect); }); if let Ok(event) = context.events.next() { diff --git a/src/ui/widgets/tui_tab.rs b/src/ui/widgets/tui_tab.rs index 55ca497..fd74a9c 100644 --- a/src/ui/widgets/tui_tab.rs +++ b/src/ui/widgets/tui_tab.rs @@ -16,7 +16,7 @@ impl<'a> TuiTabBar<'a> { } impl<'a> Widget for TuiTabBar<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { let selected = Style::default().modifier(Modifier::REVERSED); let text = [ @@ -24,6 +24,6 @@ impl<'a> Widget for TuiTabBar<'a> { Text::raw(format!("/{}", self.len)), ]; - Paragraph::new(text.iter()).wrap(true).draw(area, buf); + Paragraph::new(text.iter()).wrap(true).render(area, buf); } } diff --git a/src/ui/widgets/tui_textfield.rs b/src/ui/widgets/tui_textfield.rs index 096e589..78f3b37 100644 --- a/src/ui/widgets/tui_textfield.rs +++ b/src/ui/widgets/tui_textfield.rs @@ -1,13 +1,10 @@ -use std::io::Write; - use rustyline::completion::{Candidate, Completer, FilenameCompleter, Pair}; use rustyline::line_buffer; use termion::event::Key; use tui::layout::Rect; use tui::style::{Color, Modifier, Style}; -use tui::widgets::{Paragraph, Text, Widget}; -use unicode_width::UnicodeWidthChar; +use tui::widgets::{Paragraph, Text}; use crate::context::JoshutoContext; use crate::ui::TuiBackend; @@ -37,11 +34,11 @@ pub struct TuiTextField<'a> { _prompt: &'a str, _prefix: &'a str, _suffix: &'a str, - _menu: Option<&'a mut TuiMenu<'a>>, + _menu: Option<TuiMenu<'a>>, } impl<'a> TuiTextField<'a> { - pub fn menu(mut self, menu: &'a mut TuiMenu<'a>) -> Self { + pub fn menu(mut self, menu: TuiMenu<'a>) -> Self { self._menu = Some(menu); self } @@ -80,13 +77,12 @@ impl<'a> TuiTextField<'a> { line_buffer.set_pos(char_idx); let terminal = backend.terminal_mut(); - let mut cursor_xpos = line_buffer.pos(); loop { - cursor_xpos = line_buffer.pos(); + let cursor_xpos = line_buffer.pos(); terminal .draw(|mut frame| { - let f_size = frame.size(); + let f_size: Rect = frame.size(); if f_size.height == 0 { return; } @@ -94,10 +90,10 @@ impl<'a> TuiTextField<'a> { { let mut view = TuiView::new(&context); view.show_bottom_status = false; - view.render(&mut frame, f_size); + frame.render_widget(view, f_size); } - if let Some(menu) = self._menu.as_mut() { + if let Some(menu) = self._menu.take() { let menu_len = menu.len(); let menu_y = if menu_len + 2 > f_size.height as usize { 0 @@ -111,7 +107,7 @@ impl<'a> TuiTextField<'a> { width: f_size.width, height: menu_len as u16, }; - menu.render(&mut frame, rect); + frame.render_widget(menu, rect); } let cmd_prompt_style = Style::default().fg(Color::LightGreen); @@ -145,9 +141,8 @@ impl<'a> TuiTextField<'a> { height: 1, }; - Paragraph::new(text.iter()) - .wrap(true) - .render(&mut frame, textfield_rect); + frame.render_widget(Paragraph::new(text.iter()) + .wrap(true), textfield_rect); }) .unwrap(); @@ -186,7 +181,6 @@ impl<'a> TuiTextField<'a> { Key::Up => {} Key::Down => {} Key::Esc => { - terminal.hide_cursor(); return None; } Key::Char('\t') => { diff --git a/src/ui/widgets/tui_topbar.rs b/src/ui/widgets/tui_topbar.rs index e87a3e5..eabbb96 100644 --- a/src/ui/widgets/tui_topbar.rs +++ b/src/ui/widgets/tui_topbar.rs @@ -18,7 +18,7 @@ impl<'a> TuiTopBar<'a> { } impl<'a> Widget for TuiTopBar<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { let username_style = Style::default() .fg(Color::LightGreen) .modifier(Modifier::BOLD); @@ -34,6 +34,6 @@ impl<'a> Widget for TuiTopBar<'a> { Text::styled(curr_path_str, path_style), ]; - Paragraph::new(text.iter()).wrap(true).draw(area, buf); + Paragraph::new(text.iter()).wrap(true).render(area, buf); } } diff --git a/src/ui/widgets/tui_view.rs b/src/ui/widgets/tui_view.rs index cc6e1b2..481bcc6 100644 --- a/src/ui/widgets/tui_view.rs +++ b/src/ui/widgets/tui_view.rs @@ -1,6 +1,6 @@ use tui::buffer::Buffer; use tui::layout::{Direction, Layout, Rect}; -use tui::style::{Color, Modifier, Style}; +use tui::style::{Color, Style}; use tui::widgets::{Paragraph, Text, Widget}; use super::{TuiDirList, TuiDirListDetailed, TuiFooter, TuiTabBar, TuiTopBar}; @@ -25,7 +25,7 @@ impl<'a> TuiView<'a> { } impl<'a> Widget for TuiView<'a> { - fn draw(&mut self, area: Rect, buf: &mut Buffer) { + fn render(self, area: Rect, buf: &mut Buffer) { let f_size = area; let curr_tab = self.context.curr_tab_ref(); @@ -60,7 +60,7 @@ impl<'a> Widget for TuiView<'a> { width: topbar_width, height: 1, }; - TuiTopBar::new(curr_path).draw(rect, buf); + TuiTopBar::new(curr_path).render(rect, buf); let rect = Rect { x: topbar_width, @@ -74,7 +74,7 @@ impl<'a> Widget for TuiView<'a> { "" }; TuiTabBar::new(name, self.context.curr_tab_index, self.context.tabs.len()) - .draw(rect, buf); + .render(rect, buf); } else { let topbar_width = f_size.width; @@ -84,16 +84,16 @@ impl<'a> Widget for TuiView<'a> { width: topbar_width, height: 1, }; - TuiTopBar::new(curr_path).draw(rect, buf); + TuiTopBar::new(curr_path).render(rect, buf); } } if let Some(curr_list) = parent_list.as_ref() { - TuiDirList::new(&curr_list).draw(layout_rect[0], buf); + TuiDirList::new(&curr_list).render(layout_rect[0], buf); }; if let Some(curr_list) = curr_list.as_ref() { - TuiDirListDetailed::new(&curr_list).draw(layout_rect[1], buf); + TuiDirListDetailed::new(&curr_list).render(layout_rect[1], buf); let rect = Rect { x: 0, y: f_size.height - 1, @@ -108,19 +108,19 @@ impl<'a> Widget for TuiView<'a> { if !self.context.message_queue.is_empty() { let text = [Text::styled(&self.context.message_queue[0], message_style)]; - Paragraph::new(text.iter()).wrap(true).draw(rect, buf); + Paragraph::new(text.iter()).wrap(true).render(rect, buf); } else if let Some(msg) = self.context.worker_msg.as_ref() { let text = [Text::styled(msg, message_style)]; - Paragraph::new(text.iter()).wrap(true).draw(rect, buf); + Paragraph::new(text.iter()).wrap(true).render(rect, buf); } else if let Some(entry) = curr_list.get_curr_ref() { - TuiFooter::new(entry).draw(rect, buf); + TuiFooter::new(entry).render(rect, buf); } } }; if let Some(curr_list) = child_list.as_ref() { - TuiDirList::new(&curr_list).draw(layout_rect[2], buf); + TuiDirList::new(&curr_list).render(layout_rect[2], buf); }; } } |