summaryrefslogtreecommitdiffstats
path: root/src/joshuto/command/parent_directory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/joshuto/command/parent_directory.rs')
-rw-r--r--src/joshuto/command/parent_directory.rs58
1 files changed, 31 insertions, 27 deletions
diff --git a/src/joshuto/command/parent_directory.rs b/src/joshuto/command/parent_directory.rs
index c11eac7..912394f 100644
--- a/src/joshuto/command/parent_directory.rs
+++ b/src/joshuto/command/parent_directory.rs
@@ -6,8 +6,9 @@ use std;
use std::fmt;
use joshuto;
-use joshuto::ui;
use joshuto::command;
+use joshuto::preview;
+use joshuto::ui;
#[derive(Clone, Debug)]
pub struct ParentDirectory;
@@ -15,35 +16,19 @@ pub struct ParentDirectory;
impl ParentDirectory {
pub fn new() -> Self { ParentDirectory }
pub fn command() -> &'static str { "parent_directory" }
-}
-
-impl command::JoshutoCommand for ParentDirectory {}
-impl std::fmt::Display for ParentDirectory {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result
+ pub fn parent_directory(context: &mut joshuto::JoshutoContext) -> bool
{
- f.write_str(Self::command())
- }
-}
-
-impl command::Runnable for ParentDirectory {
- fn execute(&self, context: &mut joshuto::JoshutoContext)
- {
-
let curr_tab = &mut context.tabs[context.tab_index];
-
if curr_tab.curr_path.pop() == false {
- return;
+ return false;
}
match std::env::set_current_dir(&curr_tab.curr_path) {
Ok(_) => {
{
- let dir_list = curr_tab.preview_list.take();
- curr_tab.history.put_back(dir_list);
-
let curr_list = curr_tab.curr_list.take();
- curr_tab.preview_list = curr_list;
+ curr_tab.history.put_back(curr_list);
let parent_list = curr_tab.parent_list.take();
curr_tab.curr_list = parent_list;
@@ -65,22 +50,41 @@ impl command::Runnable for ParentDirectory {
},
}
- ui::redraw_view(&context.theme_t, &context.views.left_win,
- curr_tab.parent_list.as_ref());
- ui::redraw_view_detailed(&context.theme_t, &context.views.mid_win,
- curr_tab.curr_list.as_ref());
- ui::redraw_view(&context.theme_t, &context.views.right_win,
- curr_tab.preview_list.as_ref());
+ ui::redraw_view(&context.config_t, &context.theme_t,
+ &context.views.left_win, curr_tab.parent_list.as_mut());
+ ui::redraw_view_detailed(&context.config_t, &context.theme_t,
+ &context.views.mid_win, curr_tab.curr_list.as_mut());
ui::redraw_status(&context.theme_t, &context.views,
curr_tab.curr_list.as_ref(),
&curr_tab.curr_path,
&context.username, &context.hostname);
+ return true;
},
Err(e) => {
ui::wprint_err(&context.views.bot_win, e.to_string().as_str());
+ return false;
},
};
- ncurses::doupdate();
+
+ }
+}
+
+impl command::JoshutoCommand for ParentDirectory {}
+
+impl std::fmt::Display for ParentDirectory {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result
+ {
+ f.write_str(Self::command())
+ }
+}
+
+impl command::Runnable for ParentDirectory {
+ fn execute(&self, context: &mut joshuto::JoshutoContext)
+ {
+ if Self::parent_directory(context) {
+ preview::preview_file(context);
+ ncurses::doupdate();
+ }
}
}