summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2020-04-18 19:10:57 -0400
committerJiayi Zhao <jeff.no.zhao@gmail.com>2020-04-18 19:10:57 -0400
commit3fa40b654a96df76f445da7da3a35bce69730ca8 (patch)
treefa80a7c2b8d622f3adcd5bbb1585ab99d0bccebd /src/ui
parent06b9a79c02717463ed360077a837534b362784b3 (diff)
update to tui-rs 0.9
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/tui_backend.rs4
-rw-r--r--src/ui/widgets/tui_dirlist.rs2
-rw-r--r--src/ui/widgets/tui_dirlist_detailed.rs2
-rw-r--r--src/ui/widgets/tui_footer.rs6
-rw-r--r--src/ui/widgets/tui_menu.rs16
-rw-r--r--src/ui/widgets/tui_prompt.rs11
-rw-r--r--src/ui/widgets/tui_tab.rs4
-rw-r--r--src/ui/widgets/tui_textfield.rs26
-rw-r--r--src/ui/widgets/tui_topbar.rs4
-rw-r--r--src/ui/widgets/tui_view.rs22
10 files changed, 44 insertions, 53 deletions
diff --git a/src/ui/tui_backend.rs b/src/ui/tui_backend.rs
index 28103a3..7ab348d 100644
--- a/src/ui/tui_backend.rs
+++ b/src/ui/tui_backend.rs
@@ -26,13 +26,13 @@ impl TuiBackend {
})
}
- pub fn render<W>(&mut self, widget: &mut W)
+ pub fn render<W>(&mut self, widget: W)
where
W: Widget,
{
self.terminal_mut().draw(|mut frame| {
let rect = frame.size();
- widget.render(&mut frame, rect);
+ frame.render_widget(widget, rect);
});
}
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);
};
}
}