summaryrefslogtreecommitdiffstats
path: root/src/file_browser.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-02-22 01:46:02 +0100
committerrabite <rabite@posteo.de>2019-02-22 01:46:02 +0100
commita6c147442c508631df3b862a8d9b3d618ccfb339 (patch)
tree1655d1365c3b6af99f27222c32379d63272a7790 /src/file_browser.rs
parent6c305d3d617c40e86283d558a13687878cfb80f3 (diff)
turbo cd back (minibuffer broken though)
Diffstat (limited to 'src/file_browser.rs')
-rw-r--r--src/file_browser.rs69
1 files changed, 34 insertions, 35 deletions
diff --git a/src/file_browser.rs b/src/file_browser.rs
index 2d89ea4..910305e 100644
--- a/src/file_browser.rs
+++ b/src/file_browser.rs
@@ -149,17 +149,8 @@ impl FileBrowser {
self.columns.pop_widget();
// Make sure there's a directory on the left unless it's /
- if self.left_widget().is_err() {
- let file = self.selected_file()?.clone();
- if let Some(grand_parent) = file.grand_parent() {
- let mut left_view = WillBeWidget::new(Box::new(move |_| {
- let mut view
- = ListView::new(Files::new_from_path(&grand_parent)?);
- Ok(view)
- }));
- self.columns.prepend_widget(left_view);
- }
- }
+ self.fix_left()?;
+
self.columns.refresh();
Ok(())
}
@@ -177,6 +168,21 @@ impl FileBrowser {
Ok(())
}
+ pub fn fix_left(&mut self) -> HResult<()> {
+ if self.left_widget().is_err() {
+ let file = self.selected_file()?.clone();
+ if let Some(grand_parent) = file.grand_parent() {
+ let mut left_view = WillBeWidget::new(Box::new(move |_| {
+ let mut view
+ = ListView::new(Files::new_from_path(&grand_parent)?);
+ Ok(view)
+ }));
+ self.columns.prepend_widget(left_view);
+ }
+ }
+ Ok(())
+ }
+
pub fn cwd(&self) -> HResult<File> {
let widget = self.columns.get_main_widget()?.widget()?;
let cwd = (*widget.lock()?).as_ref()?.content.directory.clone();
@@ -222,31 +228,24 @@ impl FileBrowser {
self.columns.get_main_widget_mut().unwrap().animate_slide_up();
}
- pub fn turbo_cd(&mut self) {
+ pub fn turbo_cd(&mut self) -> HResult<()> {
let dir = self.minibuffer("cd: ");
- // match dir {
- // Some(dir) => {
- // Files::new_from_path(&std::path::PathBuf::from(&dir)).and_then(|files| {
- // let cwd = files.directory.clone();
- // self.columns.widgets.widgets.clear();
- // self.columns.push_widget(ListView::new(files));
-
- // std::env::set_current_dir(&cwd.path).unwrap();
-
- // if let Some(grand_parent) = cwd.path.parent() {
- // let left_view =
- // ListView::new(Files::new_from_path(&grand_parent).unwrap());
- // self.columns.prepend_widget(left_view);
- // }
- // self.fix_selection();
- // self.update_preview();
- // self.refresh();
- // self.columns.refresh();
- // Ok(())
- // }).ok();
- // } None => {}
- // }
+ match dir {
+ Some(dir) => {
+ self.columns.widgets.widgets.clear();
+ let cwd = File::new_from_path(&std::path::PathBuf::from(&dir))?;
+ self.cwd = cwd;
+ let middle = WillBeWidget::new(Box::new(move |_| {
+ let files = Files::new_from_path(&std::path::PathBuf::from(&dir))?;
+ let listview = ListView::new(files);
+ Ok(listview)
+ }));
+ self.columns.push_widget(middle);
+ },
+ None => {}
+ }
+ Ok(())
}
}
@@ -316,7 +315,7 @@ impl Widget for FileBrowser {
fn on_key(&mut self, key: Key) {
match key {
- Key::Char('/') => self.turbo_cd(),
+ Key::Char('/') => { self.turbo_cd(); },
Key::Char('Q') => { self.quit_with_dir(); },
Key::Right | Key::Char('f') => { self.enter_dir(); },
Key::Left | Key::Char('b') => { self.go_back(); },