summaryrefslogtreecommitdiffstats
path: root/src/browser_states.rs
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2019-06-06 21:29:19 +0200
committerCanop <cano.petrole@gmail.com>2019-06-06 21:29:19 +0200
commite4d6b7ad16c31654848ad76174cc508b033dfe48 (patch)
treeada1134c9fdde5f1a29d4719c743cb90ac9dde87 /src/browser_states.rs
parent78d0a9bee8410f42f199760a065ba9a12c97a64a (diff)
tree drawing now based on Display trait
This made it easier to restore the print_tree feature (printing the tree to stdout or to a file)
Diffstat (limited to 'src/browser_states.rs')
-rw-r--r--src/browser_states.rs29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/browser_states.rs b/src/browser_states.rs
index bae6ebe..2eb0b29 100644
--- a/src/browser_states.rs
+++ b/src/browser_states.rs
@@ -1,7 +1,5 @@
-//! An application state dedicated to displaying a tree.
-//! It's the first and main screen of broot.
-use std::io::{self, Cursor};
+use std::io;
use std::path::PathBuf;
use std::result::Result;
use std::time::Instant;
@@ -9,6 +7,7 @@ use std::time::Instant;
use crate::app::{AppState, AppStateCmdResult};
use crate::app_context::AppContext;
use crate::commands::{Action, Command};
+use crate::displayable_tree::DisplayableTree;
use crate::errors::TreeBuildError;
use crate::external::Launchable;
use crate::flat_tree::{LineType, Tree};
@@ -19,11 +18,11 @@ use crate::status::Status;
use crate::task_sync::TaskLifetime;
use crate::tree_build::TreeBuilder;
use crate::tree_options::{OptionBool, TreeOptions};
-use crate::tree_views::TreeView;
use crate::verbs::{VerbExecutor};
use crate::verb_store::{PrefixSearchResult};
-
+/// An application state dedicated to displaying a tree.
+/// It's the first and main screen of broot.
pub struct BrowserState {
pub tree: Tree,
pub filtered_tree: Option<Tree>,
@@ -31,6 +30,7 @@ pub struct BrowserState {
}
impl BrowserState {
+
pub fn new(
path: PathBuf,
mut options: TreeOptions,
@@ -49,6 +49,7 @@ impl BrowserState {
None => None, // interrupted
})
}
+
pub fn with_new_options(
&self,
screen: &Screen,
@@ -70,15 +71,18 @@ impl BrowserState {
tree.options.pattern.to_command(),
)
}
+
fn page_height(screen: &Screen) -> i32 {
i32::from(screen.h) - 2
}
+
pub fn displayed_tree(&self) -> &Tree {
match &self.filtered_tree {
Some(tree) => &tree,
None => &self.tree,
}
}
+
}
impl AppState for BrowserState {
@@ -265,9 +269,20 @@ impl AppState for BrowserState {
}
fn display(&mut self, screen: &mut Screen, _con: &AppContext) -> io::Result<()> {
- let mut tree_view = TreeView::from_screen(screen);
+ let dp = DisplayableTree {
+ tree: &self.displayed_tree(),
+ skin: &screen.skin,
+ area: termimad::Area {
+ left: 0,
+ top: 0,
+ width: screen.w,
+ height: screen.h-2,
+ },
+ in_app: true,
+ };
screen.goto(1, 1);
- tree_view.write_tree(&self.displayed_tree())
+ print!("{}", dp);
+ Ok(())
}
fn write_status(&self, screen: &mut Screen, cmd: &Command, con: &AppContext) -> io::Result<()> {