mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Draw explorers
This commit is contained in:
@@ -28,8 +28,6 @@ use std::path::{Path, PathBuf};
|
|||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
// Metadata ext
|
// Metadata ext
|
||||||
#[cfg(any(unix, macos, linux))]
|
#[cfg(any(unix, macos, linux))]
|
||||||
extern crate users;
|
|
||||||
#[cfg(any(unix, macos, linux))]
|
|
||||||
use std::os::unix::fs::MetadataExt;
|
use std::os::unix::fs::MetadataExt;
|
||||||
|
|
||||||
// Locals
|
// Locals
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ use tui::{
|
|||||||
style::{Color, Modifier, Style},
|
style::{Color, Modifier, Style},
|
||||||
terminal::Frame,
|
terminal::Frame,
|
||||||
text::{Span, Spans, Text},
|
text::{Span, Spans, Text},
|
||||||
widgets::{Block, Borders, List, ListItem, Paragraph, Tabs},
|
widgets::{Block, Borders, List, ListItem, ListState, Paragraph, Tabs},
|
||||||
};
|
};
|
||||||
use unicode_width::UnicodeWidthStr;
|
use unicode_width::UnicodeWidthStr;
|
||||||
|
|
||||||
@@ -1470,6 +1470,11 @@ impl FileTransferActivity {
|
|||||||
let mut ctx: Context = self.context.take().unwrap();
|
let mut ctx: Context = self.context.take().unwrap();
|
||||||
let _ = ctx.terminal.draw(|f| {
|
let _ = ctx.terminal.draw(|f| {
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
|
|
||||||
|
// Set log state
|
||||||
|
let mut log_state: ListState = ListState::default();
|
||||||
|
log_state.select(Some(self.log_index));
|
||||||
|
// f.render_stateful_widget(LOG_LIST, CHUNK, &mut log_state);
|
||||||
});
|
});
|
||||||
self.context = Some(ctx);
|
self.context = Some(ctx);
|
||||||
}
|
}
|
||||||
@@ -1482,6 +1487,50 @@ impl FileTransferActivity {
|
|||||||
.style(Style::default().fg(Color::LightYellow).add_modifier(Modifier::BOLD))
|
.style(Style::default().fg(Color::LightYellow).add_modifier(Modifier::BOLD))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// ### draw_local_explorer
|
||||||
|
///
|
||||||
|
/// Draw local explorer list
|
||||||
|
fn draw_local_explorer(&self) -> List {
|
||||||
|
let files: Vec<ListItem> = self
|
||||||
|
.local
|
||||||
|
.files
|
||||||
|
.iter()
|
||||||
|
.map(|entry: &FsEntry| ListItem::new(Span::from(format!("{}", entry))))
|
||||||
|
.collect();
|
||||||
|
List::new(files)
|
||||||
|
.block(Block::default().borders(Borders::ALL).title("Localhost"))
|
||||||
|
.start_corner(Corner::BottomLeft)
|
||||||
|
.highlight_style(
|
||||||
|
Style::default()
|
||||||
|
.fg(Color::LightYellow)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// ### draw_remote_explorer
|
||||||
|
///
|
||||||
|
/// Draw remote explorer list
|
||||||
|
fn draw_remote_explorer(&self) -> List {
|
||||||
|
let files: Vec<ListItem> = self
|
||||||
|
.remote
|
||||||
|
.files
|
||||||
|
.iter()
|
||||||
|
.map(|entry: &FsEntry| ListItem::new(Span::from(format!("{}", entry))))
|
||||||
|
.collect();
|
||||||
|
List::new(files)
|
||||||
|
.block(
|
||||||
|
Block::default()
|
||||||
|
.borders(Borders::ALL)
|
||||||
|
.title(self.params.address.clone()),
|
||||||
|
)
|
||||||
|
.start_corner(Corner::BottomLeft)
|
||||||
|
.highlight_style(
|
||||||
|
Style::default()
|
||||||
|
.fg(Color::LightYellow)
|
||||||
|
.add_modifier(Modifier::BOLD),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
/// ### draw_log_list
|
/// ### draw_log_list
|
||||||
///
|
///
|
||||||
/// Draw log list
|
/// Draw log list
|
||||||
@@ -1495,7 +1544,8 @@ impl FileTransferActivity {
|
|||||||
LogLevel::Warn => Style::default().fg(Color::Yellow),
|
LogLevel::Warn => Style::default().fg(Color::Yellow),
|
||||||
LogLevel::Info => Style::default().fg(Color::Green),
|
LogLevel::Info => Style::default().fg(Color::Green),
|
||||||
};
|
};
|
||||||
let header = Spans::from(vec![
|
let log = Spans::from(vec![
|
||||||
|
Span::from(format!("{}", record.time.format("%Y-%m-%dT%H:%M:%S%Z"))),
|
||||||
Span::raw("["),
|
Span::raw("["),
|
||||||
Span::styled(
|
Span::styled(
|
||||||
format!(
|
format!(
|
||||||
@@ -1508,16 +1558,16 @@ impl FileTransferActivity {
|
|||||||
),
|
),
|
||||||
s,
|
s,
|
||||||
),
|
),
|
||||||
Span::raw("] "),
|
Span::raw("]: "),
|
||||||
Span::from(format!("{}", record.time.format("%Y-%m-%dT%H:%M:%S%Z"))),
|
Span::from(record.msg.clone()),
|
||||||
]);
|
]);
|
||||||
let log = Spans::from(vec![Span::from(record.msg.clone())]);
|
ListItem::new(log)
|
||||||
ListItem::new(vec![header, log])
|
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
List::new(events)
|
List::new(events)
|
||||||
.block(Block::default().borders(Borders::ALL).title("Log"))
|
.block(Block::default().borders(Borders::ALL).title("Log"))
|
||||||
.start_corner(Corner::BottomLeft)
|
.start_corner(Corner::BottomLeft)
|
||||||
|
.highlight_style(Style::default().add_modifier(Modifier::BOLD))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ### draw_footer
|
/// ### draw_footer
|
||||||
|
|||||||
Reference in New Issue
Block a user