diff options
author | Sebastian Thiel <sthiel@thoughtworks.com> | 2019-06-07 09:37:36 +0530 |
---|---|---|
committer | Sebastian Thiel <sthiel@thoughtworks.com> | 2019-06-07 12:51:31 +0530 |
commit | 28d84fc18f3efc7cfd4aa1728656998e652e934b (patch) | |
tree | b23ddb1f6ab5a72e6722de27c6560e2a5e73ad9d /src/interactive/widgets/mark.rs | |
parent | 6bd6556449daae40fdabedf64866b641785787f5 (diff) |
First prettier version of mark pane
Diffstat (limited to 'src/interactive/widgets/mark.rs')
-rw-r--r-- | src/interactive/widgets/mark.rs | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs index 0fd8113..9c93a3d 100644 --- a/src/interactive/widgets/mark.rs +++ b/src/interactive/widgets/mark.rs @@ -5,6 +5,7 @@ use itertools::Itertools; use std::collections::btree_map::Entry; use std::{borrow::Borrow, collections::BTreeMap, path::PathBuf}; use termion::{event::Key, event::Key::*}; +use tui::style::Color; use tui::{ buffer::Buffer, layout::Rect, @@ -126,15 +127,39 @@ impl MarkPane { Some(selected) if idx == selected => Modifier::BOLD, _ => Modifier::empty(), }; - let name = Text::Styled( - v.path.to_string_lossy(), + let path = format!(" {}", v.path.display()); + let path_len = path.len(); + let path = Text::Styled( + path.into(), Style { fg: COLOR_MARKED_LIGHT, modifier, ..Style::default() }, ); - vec![name] + let bytes = Text::Styled( + format!( + "{:>byte_column_width$}", + format.display(v.size).to_string(), // we would have to impl alignment/padding ourselves otherwise... + byte_column_width = format.width() + ) + .into(), + Style { + fg: Color::Green, + ..Default::default() + }, + ); + let spacer = Text::Raw( + format!( + "{:-space$}", + "", + space = (area.width as usize) + .saturating_sub(path_len) + .saturating_sub(format.total_width()) + ) + .into(), + ); + vec![path, spacer, bytes] }); let props = ListProps { |