summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2020-02-16 16:40:20 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2020-02-16 16:40:20 -0500
commit88da91c0f97dcb40e7e4cab54941af92a46d2e1a (patch)
treed5e7fa33842c19b32bfc834e531e2b942813e985 /src/ui
parent98d0ce7e70f9febf804cda7473f5e9f7f180fe91 (diff)
remove more code
- remove curr_list field from tab - fixes many commands not working
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/tui_backend.rs33
-rw-r--r--src/ui/widgets/tui_dirlist.rs15
2 files changed, 41 insertions, 7 deletions
diff --git a/src/ui/tui_backend.rs b/src/ui/tui_backend.rs
index fa923a2..2a0c53e 100644
--- a/src/ui/tui_backend.rs
+++ b/src/ui/tui_backend.rs
@@ -8,13 +8,14 @@ use termion::raw::{IntoRawMode, RawTerminal};
use termion::screen::AlternateScreen;
use tui::backend::TermionBackend;
use tui::layout::{Constraint, Direction, Layout, Rect};
-use tui::style::{Color, Style};
+use tui::style::{Color, Modifier, Style};
use tui::widgets::{Block, Borders, List, Paragraph, SelectableList, Text, Widget};
use unicode_width::UnicodeWidthStr;
use super::widgets::TuiDirList;
use crate::context::JoshutoContext;
-// use crate::fs::JoshutoDirList;
+
+use crate::{HOSTNAME, USERNAME};
pub struct TuiBackend {
pub terminal: tui::Terminal<TermionBackend<AlternateScreen<RawTerminal<std::io::Stdout>>>>,
@@ -63,6 +64,34 @@ impl TuiBackend {
.constraints(constraints.as_ref())
.split(f_size);
+ {
+ let username_style = Style::default()
+ .fg(Color::LightGreen)
+ .modifier(Modifier::BOLD);
+
+ let path_style = Style::default()
+ .fg(Color::LightBlue)
+ .modifier(Modifier::BOLD);
+
+ let curr_path_str = curr_tab.curr_path.to_string_lossy();
+
+ let text = [
+ Text::styled(format!("{}@{} ", *USERNAME, *HOSTNAME), username_style),
+ Text::styled(curr_path_str, path_style),
+ ];
+
+ let top_rect = Rect {
+ x: 0,
+ y: 0,
+ width: f_size.width,
+ height: 1,
+ };
+
+ Paragraph::new(text.iter())
+ .wrap(true)
+ .render(&mut frame, top_rect);
+ }
+
if let Some(curr_list) = parent_list.as_ref() {
TuiDirList::new(&curr_list).render(&mut frame, layout_rect[0]);
};
diff --git a/src/ui/widgets/tui_dirlist.rs b/src/ui/widgets/tui_dirlist.rs
index 83891b4..cda2da9 100644
--- a/src/ui/widgets/tui_dirlist.rs
+++ b/src/ui/widgets/tui_dirlist.rs
@@ -103,20 +103,25 @@ impl<'a> Widget for TuiDirList<'a> {
}
let curr_index = self.dirlist.index.unwrap();
+ let skip_dist = curr_index / area.height as usize * area.height as usize;
+
+ let screen_index = if skip_dist > 0 {
+ curr_index % skip_dist
+ } else {
+ curr_index
+ };
for (i, entry) in self
.dirlist
.contents
.iter()
+ .skip(skip_dist)
.enumerate()
.take(area.height as usize)
{
- let fg = entry.get_fg_color();
- let bg = entry.get_bg_color();
let name = entry.file_name();
+ let mut style = entry.get_style();
- let mut style = Style::default().fg(fg).bg(bg);
-
- if i == curr_index {
+ if i == screen_index {
style = style.modifier(Modifier::REVERSED);
}
buf.set_stringn(x, y + i as u16, name, area.width as usize, style);