Fixed logbox multi-lines not working properly; fixed exec command format

This commit is contained in:
veeso
2021-03-27 14:59:46 +01:00
parent 55e884889c
commit 142169ee42
3 changed files with 27 additions and 12 deletions

View File

@@ -449,7 +449,7 @@ impl FileTransferActivity {
// Reload files
self.log(
LogLevel::Info,
format!("\"{}\" output: \"{}\"", input, output).as_ref(),
format!("\"{}\": {}", input, output).as_ref(),
);
let wrkdir: PathBuf = self.local.wrkdir.clone();
self.local_scan(wrkdir.as_path());
@@ -470,7 +470,7 @@ impl FileTransferActivity {
// Reload files
self.log(
LogLevel::Info,
format!("\"{}\" output: \"{}\"", input, output).as_ref(),
format!("\"{}\": {}", input, output).as_ref(),
);
self.reload_remote_dir();
}

View File

@@ -827,7 +827,8 @@ impl FileTransferActivity {
// Make log entries
let mut table: TableBuilder = TableBuilder::default();
for (idx, record) in self.log_records.iter().enumerate() {
let record_rows = textwrap::wrap(record.msg.as_str(), (width as usize) - 38); // -35 'cause log prefix -3 cause of log line cursor
// Split rows by width NOTE: -37 'cause log prefix -3 cause of log line cursor
let record_rows = textwrap::wrap(record.msg.as_str(), (width as usize) - 40);
// Add row if not first row
if idx > 0 {
table.add_row();

View File

@@ -29,6 +29,7 @@
use super::{Canvas, Component, InputEvent, Msg, Payload, Props, PropsBuilder};
// ext
use crossterm::event::KeyCode;
use std::collections::VecDeque;
use tui::{
layout::{Corner, Rect},
style::Style,
@@ -145,7 +146,7 @@ impl Component for LogBox {
.iter()
.enumerate()
.map(|(idx, row)| {
let mut columns: Vec<Span> = row
let mut columns: VecDeque<Span> = row
.iter()
.map(|col| {
Span::styled(
@@ -157,9 +158,10 @@ impl Component for LogBox {
)
})
.collect();
let mut row: Vec<Span> = Vec::with_capacity(columns.len() + 1);
// Push green cursor if selected line
row.push(Span::styled(
// Let's convert column spans into Spans rows NOTE: -4 because first line is always made by 5 columns; but there's always 1
let mut rows: Vec<Spans> = Vec::with_capacity(columns.len() - 4);
// Get first row
let mut first_row: Vec<Span> = vec![Span::styled(
match self.states.list_index == idx {
true => "> ",
false => " ",
@@ -167,9 +169,21 @@ impl Component for LogBox {
Style::default()
.fg(self.props.foreground)
.bg(self.props.background),
));
row.append(&mut columns);
ListItem::new(Spans::from(row))
)];
for _ in 0..5 {
if let Some(col) = columns.pop_front() {
first_row.push(col);
}
}
rows.push(Spans::from(first_row));
// Fill remaining rows
let cycles: usize = columns.len();
for _ in 0..cycles {
if let Some(col) = columns.pop_front() {
rows.push(Spans::from(vec![col]));
}
}
ListItem::new(rows)
})
.collect(), // Make List item from TextSpan
};