summaryrefslogtreecommitdiffstats
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
parent06b9a79c02717463ed360077a837534b362784b3 (diff)
update to tui-rs 0.9
-rw-r--r--src/commands/delete_files.rs2
-rw-r--r--src/commands/new_directory.rs4
-rw-r--r--src/commands/open_file.rs8
-rw-r--r--src/commands/reload_dir.rs2
-rw-r--r--src/commands/rename_file.rs2
-rw-r--r--src/commands/sort.rs6
-rw-r--r--src/commands/tab_operations.rs6
-rw-r--r--src/config/keymap.rs98
-rw-r--r--src/config/mimetype.rs2
-rw-r--r--src/history.rs2
-rw-r--r--src/run.rs10
-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
-rw-r--r--src/util/format.rs2
22 files changed, 118 insertions, 123 deletions
diff --git a/src/commands/delete_files.rs b/src/commands/delete_files.rs
index c70cee7..4f1c19a 100644
--- a/src/commands/delete_files.rs
+++ b/src/commands/delete_files.rs
@@ -95,7 +95,7 @@ impl JoshutoRunnable for DeleteFiles {
let options = &context.config_t.sort_option;
let curr_path = context.tabs[context.curr_tab_index].curr_path.clone();
for tab in context.tabs.iter_mut() {
- tab.history.reload(&curr_path, options);
+ tab.history.reload(&curr_path, options)?;
}
LoadChild::load_child(context)?;
Ok(())
diff --git a/src/commands/new_directory.rs b/src/commands/new_directory.rs
index ce27bc9..5152374 100644
--- a/src/commands/new_directory.rs
+++ b/src/commands/new_directory.rs
@@ -1,6 +1,6 @@
use std::path;
-use crate::commands::{JoshutoCommand, JoshutoRunnable, ReloadDirList};
+use crate::commands::{JoshutoCommand, JoshutoRunnable};
use crate::context::JoshutoContext;
use crate::error::JoshutoResult;
use crate::history::DirectoryHistory;
@@ -38,7 +38,7 @@ impl JoshutoRunnable for NewDirectory {
let options = &context.config_t.sort_option;
let curr_path = context.tabs[context.curr_tab_index].curr_path.clone();
for tab in context.tabs.iter_mut() {
- tab.history.reload(&curr_path, options);
+ tab.history.reload(&curr_path, options)?;
}
LoadChild::load_child(context)?;
diff --git a/src/commands/open_file.rs b/src/commands/open_file.rs
index dc2bb13..ca07a11 100644
--- a/src/commands/open_file.rs
+++ b/src/commands/open_file.rs
@@ -1,10 +1,10 @@
-use std::path::{Path, PathBuf};
+use std::path::Path;
use crate::commands::{ChangeDirectory, JoshutoCommand, JoshutoRunnable};
use crate::config::mimetype::JoshutoMimetypeEntry;
use crate::context::JoshutoContext;
use crate::error::{JoshutoError, JoshutoErrorKind, JoshutoResult};
-use crate::fs::{JoshutoDirEntry, JoshutoMetadata};
+use crate::fs::JoshutoDirEntry;
use crate::ui::widgets::{TuiMenu, TuiTextField};
use crate::ui::TuiBackend;
use crate::util::load_child::LoadChild;
@@ -134,12 +134,12 @@ impl OpenFileWith {
.map(|(i, e)| format!(" {} | {}", i, e))
.collect();
let menu_options_str: Vec<&str> = menu_options.iter().map(|e| e.as_str()).collect();
- let mut menu_widget = TuiMenu::new(&menu_options_str);
+ let menu_widget = TuiMenu::new(&menu_options_str);
let mut textfield = TuiTextField::default()
.prompt(":")
.prefix(PROMPT)
- .menu(&mut menu_widget);
+ .menu(menu_widget);
textfield.get_input(backend, &context)
};
let entry_paths: Vec<&Path> = entries.iter().map(|e| e.file_path().as_path()).collect();
diff --git a/src/commands/reload_dir.rs b/src/commands/reload_dir.rs
index 30aa386..0f37eec 100644
--- a/src/commands/reload_dir.rs
+++ b/src/commands/reload_dir.rs
@@ -65,7 +65,7 @@ impl std::fmt::Display for ReloadDirList {
}
impl JoshutoRunnable for ReloadDirList {
- fn execute(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> {
+ fn execute(&self, context: &mut JoshutoContext, _: &mut TuiBackend) -> JoshutoResult<()> {
Self::reload(context.curr_tab_index, context)?;
LoadChild::load_child(context)?;
Ok(())
diff --git a/src/commands/rename_file.rs b/src/commands/rename_file.rs
index a36c86c..f8bb5c6 100644
--- a/src/commands/rename_file.rs
+++ b/src/commands/rename_file.rs
@@ -48,7 +48,7 @@ impl std::fmt::Display for RenameFile {
}
impl JoshutoRunnable for RenameFile {
- fn execute(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> {
+ fn execute(&self, context: &mut JoshutoContext, _: &mut TuiBackend) -> JoshutoResult<()> {
let mut path: Option<path::PathBuf> = None;
if let Some(curr_list) = context.curr_tab_ref().curr_list_ref() {
diff --git a/src/commands/sort.rs b/src/commands/sort.rs
index bbb90c2..7209cb4 100644
--- a/src/commands/sort.rs
+++ b/src/commands/sort.rs
@@ -1,5 +1,3 @@
-use std::path;
-
use crate::commands::{JoshutoCommand, JoshutoRunnable, ReloadDirList};
use crate::context::JoshutoContext;
use crate::error::JoshutoResult;
@@ -9,8 +7,6 @@ use crate::ui::TuiBackend;
use crate::util::load_child::LoadChild;
use crate::util::sort::SortType;
-use crate::HOME_DIR;
-
#[derive(Clone, Debug)]
pub struct Sort {
sort_method: SortType,
@@ -34,7 +30,7 @@ impl std::fmt::Display for Sort {
}
impl JoshutoRunnable for Sort {
- fn execute(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> {
+ fn execute(&self, context: &mut JoshutoContext, _: &mut TuiBackend) -> JoshutoResult<()> {
context.config_t.sort_option.sort_method = self.sort_method;
for tab in context.tabs.iter_mut() {
tab.history.depreciate_all_entries();
diff --git a/src/commands/tab_operations.rs b/src/commands/tab_operations.rs
index 52c03ef..bc3ed9a 100644
--- a/src/commands/tab_operations.rs
+++ b/src/commands/tab_operations.rs
@@ -20,7 +20,7 @@ impl NewTab {
"new_tab"
}
- pub fn new_tab(context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> {
+ pub fn new_tab(context: &mut JoshutoContext) -> JoshutoResult<()> {
/* start the new tab in $HOME or root */
let curr_path = match HOME_DIR.as_ref() {
Some(s) => s.clone(),
@@ -45,8 +45,8 @@ impl std::fmt::Display for NewTab {
}
impl JoshutoRunnable for NewTab {
- fn execute(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) -> JoshutoResult<()> {
- Self::new_tab(context, backend)
+ fn execute(&self, context: &mut JoshutoContext, _: &mut TuiBackend) -> JoshutoResult<()> {
+ Self::new_tab(context)
}
}
diff --git a/src/config/keymap.rs b/src/config/keymap.rs
index c1199e8..608b12c 100644
--- a/src/config/keymap.rs
+++ b/src/config/keymap.rs
@@ -33,173 +33,181 @@ impl JoshutoCommandMapping {
map: HashMap::new(),
}
}
-}
-impl std::default::Default for JoshutoCommandMapping {
- fn default() -> Self {
- let mut m = Self {
- map: HashMap::new(),
- };
+ pub fn default_res(&mut self) -> Result<(), String> {
+ let mut m = self;
let cmd = Box::new(commands::CursorMoveUp::new(1));
let keys = [Key::Up];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CursorMoveDown::new(1));
let keys = [Key::Down];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::ParentDirectory::new());
let keys = [Key::Left];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::OpenFile::new());
let keys = [Key::Right];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::OpenFile::new());
let keys = [Key::Char('\n')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CursorMoveHome::new());
let keys = [Key::Home];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CursorMoveEnd::new());
let keys = [Key::End];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CursorMovePageUp::new());
let keys = [Key::PageUp];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CursorMovePageDown::new());
let keys = [Key::PageDown];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
// vim keys
let cmd = Box::new(commands::CursorMoveUp::new(1));
let keys = [Key::Char('k')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CursorMoveDown::new(1));
let keys = [Key::Char('j')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::ParentDirectory::new());
let keys = [Key::Char('h')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::OpenFile::new());
let keys = [Key::Char('l')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::NewTab::new());
let keys = [Key::Char('T')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::NewTab::new());
let keys = [Key::Ctrl('t')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::NewTab::new());
let keys = [Key::Char('W')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::NewTab::new());
let keys = [Key::Ctrl('w')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CloseTab::new());
let keys = [Key::Char('q')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::ForceQuit::new());
let keys = [Key::Char('Q')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::ReloadDirList::new());
let keys = [Key::Char('R')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::ToggleHiddenFiles::new());
let keys = [Key::Char('z'), Key::Char('h')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::TabSwitch::new(1));
let keys = [Key::Char('\t')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::TabSwitch::new(-1));
let keys = [Key::BackTab];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::OpenFileWith::new());
let keys = [Key::Char('r')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CutFiles::new());
let keys = [Key::Char('d'), Key::Char('d')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CopyFiles::new());
let keys = [Key::Char('y'), Key::Char('y')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::PasteFiles::new(Options::default()));
let keys = [Key::Char('p'), Key::Char('p')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::DeleteFiles::new());
let keys = [Key::Delete];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::DeleteFiles::new());
let keys = [Key::Char('D'), Key::Char('d')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::RenameFileAppend::new());
let keys = [Key::Char('a')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::RenameFilePrepend::new());
let keys = [Key::Char('A')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CommandLine::new(
"search ".to_string(),
"".to_string(),
));
let keys = [Key::Char('/')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::SearchNext::new());
let keys = [Key::Char('n')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::SearchPrev::new());
let keys = [Key::Char('N')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::BulkRename::new());
let keys = [Key::Char('b'), Key::Char('b')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::SetMode::new());
let keys = [Key::Char('=')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CommandLine::new("".to_string(), "".to_string()));
let keys = [Key::Char(';')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CommandLine::new(
"mkdir ".to_string(),
"".to_string(),
));
let keys = [Key::Char('m'), Key::Char('k')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
let cmd = Box::new(commands::CommandLine::new(
"rename ".to_string(),
"".to_string(),
));
let keys = [Key::Char('c'), Key::Char('w')];
- insert_keycommand(&mut m, cmd, &keys);
+ insert_keycommand(&mut m, cmd, &keys)?;
+
+ Ok(())
+ }
+}
+
+impl std::default::Default for JoshutoCommandMapping {
+ fn default() -> Self {
+ let mut m = Self {
+ map: HashMap::new(),
+ };
+
+ let _ = m.default_res();
m
}
diff --git a/src/config/mimetype.rs b/src/config/mimetype.rs
index ce542ff..f8b163f 100644
--- a/src/config/mimetype.rs
+++ b/src/config/mimetype.rs
@@ -2,7 +2,7 @@ use serde_derive::Deserialize;
use std::collections::HashMap;
use std::fmt;
use std::io::Read;
-use std::path::{Path, PathBuf};
+use std::path::Path;
use std::process;
use super::{parse_config_file, ConfigStructure};
diff --git a/src/history.rs b/src/history.rs
index f4a0391..edb1a95 100644
--- a/src/history.rs
+++ b/src/history.rs
@@ -106,7 +106,7 @@ impl DirectoryHistory for JoshutoHistory {
let dirlist = entry.get_mut();
dirlist.reload_contents(sort_option)?;
}
- Entry::Vacant(entry) => {}
+ _ => {}
}
Ok(())
}
diff --git a/src/run.rs b/src/run.rs
index fc0abf9..e96e135 100644
--- a/src/run.rs
+++ b/src/run.rs
@@ -1,4 +1,4 @@
-use crate::commands::{CommandKeybind, JoshutoRunnable};
+use crate::commands::CommandKeybind;
use crate::config::{JoshutoCommandMapping, JoshutoConfig};
use crate::context::JoshutoContext;
use crate::history::DirectoryHistory;
@@ -25,8 +25,8 @@ pub fn run(config_t: JoshutoConfig, keymap_t: JoshutoCommandMapping) -> std::io:
LoadChild::load_child(&mut context)?;
// render our view
- let mut view = TuiView::new(&context);
- backend.render(&mut view);
+ let view = TuiView::new(&context);
+ backend.render(view);
}
let mut io_observer = None;
@@ -115,8 +115,8 @@ pub fn run(config_t: JoshutoConfig, keymap_t: JoshutoCommandMapping) -> std::io:
context.events.flush();
}
}
- let mut view = TuiView::new(&context);
- backend.render(&mut view);
+ let view = TuiView::new(&context);
+ backend.render(view);
}
Ok(())
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