summaryrefslogtreecommitdiffstats
path: root/src/canvas
diff options
context:
space:
mode:
authorClement Tsang <34804052+ClementTsang@users.noreply.github.com>2020-08-16 01:25:59 -0700
committerGitHub <noreply@github.com>2020-08-16 04:25:59 -0400
commit08e49b63c162f16cb35262cd48da324c779c1a1c (patch)
tree446d654cb60cbd0475b193b6e28900bad46c88e8 /src/canvas
parent9068108d0fe977ec6fc01dc7d8d29674a88c2f6a (diff)
refactor: Revert tui upgrade to 0.10
Reverts tui upgrade, there are some bugs and issues - namely, issues with rendering text. We can revert this commit when those bugs are dealt with (should be fine after 0.10.1, tested building from the repo).
Diffstat (limited to 'src/canvas')
-rw-r--r--src/canvas/canvas_colours.rs2
-rw-r--r--src/canvas/dialogs/dd_dialog.rs149
-rw-r--r--src/canvas/dialogs/help_dialog.rs36
-rw-r--r--src/canvas/widgets/basic_table_arrows.rs15
-rw-r--r--src/canvas/widgets/battery_display.rs128
-rw-r--r--src/canvas/widgets/cpu_basic.rs22
-rw-r--r--src/canvas/widgets/cpu_graph.rs47
-rw-r--r--src/canvas/widgets/disk_table.rs46
-rw-r--r--src/canvas/widgets/mem_basic.rs13
-rw-r--r--src/canvas/widgets/mem_graph.rs50
-rw-r--r--src/canvas/widgets/network_basic.rs26
-rw-r--r--src/canvas/widgets/network_graph.rs55
-rw-r--r--src/canvas/widgets/process_table.rs80
-rw-r--r--src/canvas/widgets/temp_table.rs30
14 files changed, 405 insertions, 294 deletions
diff --git a/src/canvas/canvas_colours.rs b/src/canvas/canvas_colours.rs
index 5d0e6584..d7724568 100644
--- a/src/canvas/canvas_colours.rs
+++ b/src/canvas/canvas_colours.rs
@@ -85,7 +85,7 @@ impl CanvasColours {
}
pub fn set_table_header_colour(&mut self, colour: &str) -> error::Result<()> {
- self.table_header_style = get_style_from_config(colour)?.add_modifier(Modifier::BOLD);
+ self.table_header_style = get_style_from_config(colour)?.modifier(Modifier::BOLD);
Ok(())
}
diff --git a/src/canvas/dialogs/dd_dialog.rs b/src/canvas/dialogs/dd_dialog.rs
index 18f89d68..8b3f342c 100644
--- a/src/canvas/dialogs/dd_dialog.rs
+++ b/src/canvas/dialogs/dd_dialog.rs
@@ -2,8 +2,7 @@ use tui::{
backend::Backend,
layout::{Alignment, Rect},
terminal::Frame,
- text::{Span, Spans, Text},
- widgets::{Block, Borders, Paragraph, Wrap},
+ widgets::{Block, Borders, Paragraph, Text},
};
use crate::{app::App, canvas::Painter};
@@ -12,61 +11,58 @@ const DD_BASE: &str = " Confirm Kill Process ── Esc to close ";
const DD_ERROR_BASE: &str = " Error ── Esc to close ";
pub trait KillDialog {
- fn get_dd_spans(&self, app_state: &App) -> Option<Text<'_>>;
+ fn get_dd_spans(&self, app_state: &App) -> Option<Vec<Text<'_>>>;
fn draw_dd_dialog<B: Backend>(
- &self, f: &mut Frame<'_, B>, dd_text: Option<Text<'_>>, app_state: &App, draw_loc: Rect,
+ &self, f: &mut Frame<'_, B>, dd_text: Option<Vec<Text<'_>>>, app_state: &App,
+ draw_loc: Rect,
) -> bool;
}
impl KillDialog for Painter {
- fn get_dd_spans(&self, app_state: &App) -> Option<Text<'_>> {
+ fn get_dd_spans(&self, app_state: &App) -> Option<Vec<Text<'_>>> {
if let Some(dd_err) = &app_state.dd_err {
- return Some(Text::from(Spans::from(format!(
- "Failure to properly kill the process - {}",
- dd_err
- ))));
+ return Some(vec![
+ Text::raw("\n"),
+ Text::raw(format!("Failure to properly kill the process - {}", dd_err)),
+ ]);
} else if let Some(to_kill_processes) = app_state.get_to_delete_processes() {
if let Some(first_pid) = to_kill_processes.1.first() {
- return Some(Text::from(vec![
- Spans::from(vec![]),
- Spans::from(vec![
- if app_state.is_grouped(app_state.current_widget.widget_id) {
- if to_kill_processes.1.len() != 1 {
- Span::from(format!(
- "Kill {} processes with the name \"{}\"?",
- to_kill_processes.1.len(),
- to_kill_processes.0
- ))
- } else {
- Span::from(format!(
- "Kill 1 process with the name \"{}\"?",
- to_kill_processes.0
- ))
- }
- } else {
- Span::from(format!(
- "Kill process \"{}\" with PID {}?",
- to_kill_processes.0, first_pid
+ return Some(vec![
+ Text::raw("\n"),
+ if app_state.is_grouped(app_state.current_widget.widget_id) {
+ if to_kill_processes.1.len() != 1 {
+ Text::raw(format!(
+ "Kill {} processes with the name \"{}\"?",
+ to_kill_processes.1.len(),
+ to_kill_processes.0
))
- },
- ]),
- Spans::from(vec![]),
- Spans::from(vec![
- if app_state.delete_dialog_state.is_on_yes {
- Span::styled("Yes", self.colours.currently_selected_text_style)
- } else {
- Span::from("Yes")
- },
- Span::from(" "),
- if app_state.delete_dialog_state.is_on_yes {
- Span::from("No")
} else {
- Span::styled("No", self.colours.currently_selected_text_style)
- },
- ]),
- Spans::from(vec![]),
- ]));
+ Text::raw(format!(
+ "Kill 1 process with the name \"{}\"?",
+ to_kill_processes.0
+ ))
+ }
+ } else {
+ Text::raw(format!(
+ "Kill process \"{}\" with PID {}?",
+ to_kill_processes.0, first_pid
+ ))
+ },
+ Text::raw("\n\n"),
+ if app_state.delete_dialog_state.is_on_yes {
+ Text::styled("Yes", self.colours.currently_selected_text_style)
+ } else {
+ Text::raw("Yes")
+ },
+ Text::raw(" "),
+ if app_state.delete_dialog_state.is_on_yes {
+ Text::raw("No")
+ } else {
+ Text::styled("No", self.colours.currently_selected_text_style)
+ },
+ Text::raw("\n"),
+ ]);
}
}
@@ -74,44 +70,63 @@ impl KillDialog for Painter {
}
fn draw_dd_dialog<B: Backend>(
- &self, f: &mut Frame<'_, B>, dd_text: Option<Text<'_>>, app_state: &App, draw_loc: Rect,
+ &self, f: &mut Frame<'_, B>, dd_text: Option<Vec<Text<'_>>>, app_state: &App,
+ draw_loc: Rect,
) -> bool {
if let Some(dd_text) = dd_text {
+ // let dd_title = if app_state.dd_err.is_some() {
+ // Text::styled(
+ // format!(
+ // " Error ─{}─ Esc to close ",
+ // "─".repeat(
+ // usize::from(draw_loc.width)
+ // .saturating_sub(DD_ERROR_BASE.chars().count() + 2)
+ // )
+ // ),
+ // self.colours.border_style,
+ // )
+ // } else {
+ // Text::styled(
+ // format!(
+ // " Confirm Kill Process ─{}─ Esc to close ",
+ // "─".repeat(
+ // usize::from(draw_loc.width).saturating_sub(DD_BASE.chars().count() + 2)
+ // )
+ // ),
+ // self.colours.border_style,
+ // )
+ // };
+
let dd_title = if app_state.dd_err.is_some() {
- Span::styled(
- format!(
- " Error ─{}─ Esc to close ",
- "─".repeat(
- usize::from(draw_loc.width)
- .saturating_sub(DD_ERROR_BASE.chars().count() + 2)
- )
- ),
- self.colours.border_style,
+ format!(
+ " Error ─{}─ Esc to close ",
+ "─".repeat(
+ usize::from(draw_loc.width)
+ .saturating_sub(DD_ERROR_BASE.chars().count() + 2)
+ )
)
} else {
- Span::styled(
- format!(
- " Confirm Kill Process ─{}─ Esc to close ",
- "─".repeat(
- usize::from(draw_loc.width).saturating_sub(DD_BASE.chars().count() + 2)
- )
- ),
- self.colours.border_style,
+ format!(
+ " Confirm Kill Process ─{}─ Esc to close ",
+ "─".repeat(
+ usize::from(draw_loc.width).saturating_sub(DD_BASE.chars().count() + 2)
+ )
)
};
f.render_widget(
- Paragraph::new(dd_text)
+ Paragraph::new(dd_text.iter())
.block(
Block::default()
- .title(dd_title)
+ .title(&dd_title)
+ .title_style(self.colours.border_style)
.style(self.colours.border_style)
.borders(Borders::ALL)
.border_style(self.colours.border_style),
)
.style(self.colours.text_style)
.alignment(Alignment::Center)
- .wrap(Wrap { trim: true }),
+ .wrap(true),
draw_loc,
);
diff --git a/src/canvas/dialogs/help_dialog.rs b/src/canvas/dialogs/help_dialog.rs
index 138622ce..8ef4d010 100644
--- a/src/canvas/dialogs/help_dialog.rs
+++ b/src/canvas/dialogs/help_dialog.rs
@@ -4,8 +4,7 @@ use tui::{
backend::Backend,
layout::{Alignment, Rect},
terminal::Frame,
- text::Span,
- widgets::{Block, Borders, Paragraph, Wrap},
+ widgets::{Block, Borders, Paragraph},
};
use crate::{app::App, canvas::Painter, constants};
@@ -22,14 +21,19 @@ impl HelpDialog for Painter {
fn draw_help_dialog<B: Backend>(
&self, f: &mut Frame<'_, B>, app_state: &mut App, draw_loc: Rect,
) {
- let help_title = Span::styled(
- format!(
- " Help ─{}─ Esc to close ",
- "─".repeat(
- usize::from(draw_loc.width).saturating_sub(HELP_BASE.chars().count() + 2)
- )
- ),
- self.colours.border_style,
+ // let help_title = Text::styled(
+ // format!(
+ // " Help ─{}─ Esc to close ",
+ // "─".repeat(
+ // usize::from(draw_loc.width).saturating_sub(HELP_BASE.chars().count() + 2)
+ // )
+ // ),
+ // self.colours.border_style,
+ // );
+
+ let help_title = format!(
+ " Help ─{}─ Esc to close ",
+ "─".repeat(usize::from(draw_loc.width).saturating_sub(HELP_BASE.chars().count() + 2))
);
if app_state.is_force_redraw {
@@ -95,24 +99,24 @@ impl HelpDialog for Painter {
}
f.render_widget(
- Paragraph::new(self.styled_help_text.clone())
+ Paragraph::new(self.styled_help_text.iter())
.block(
Block::default()
- .title(help_title)
+ .title(&help_title)
+ .title_style(self.colours.border_style)
.style(self.colours.border_style)
.borders(Borders::ALL)
.border_style(self.colours.border_style),
)
.style(self.colours.text_style)
.alignment(Alignment::Left)
- .wrap(Wrap { trim: true })
- .scroll((
+ .wrap(true)
+ .scroll(
app_state
.help_dialog_state
.scroll_state
.current_scroll_index,
- 0,
- )),
+ ),
draw_loc,
);
}
diff --git a/src/canvas/widgets/basic_table_arrows.rs b/src/canvas/widgets/basic_table_arrows.rs
index 18beab83..591f71c6 100644
--- a/src/canvas/widgets/basic_table_arrows.rs
+++ b/src/canvas/widgets/basic_table_arrows.rs
@@ -10,8 +10,7 @@ use tui::{
backend::Backend,
layout::{Constraint, Layout, Rect},
terminal::Frame,
- text::{Span, Spans},
- widgets::{Block, Paragraph},
+ widgets::{Block, Paragraph, Text},
};
pub trait BasicTableArrows {
@@ -98,12 +97,10 @@ impl BasicTableArrows for Painter {
usize::from(draw_loc.width).saturating_sub(6 + left_name.len() + right_name.len());
let arrow_text = vec![
- Spans::from(Span::from(String::default())),
- Spans::from(vec![
- Span::styled(format!("◄ {}", left_name), self.colours.text_style),
- Span::from(" ".repeat(num_spaces)),
- Span::styled(format!("{} ►", right_name), self.colours.text_style),
- ]),
+ Text::raw("\n"),
+ Text::styled(format!("◄ {}", left_name), self.colours.text_style),
+ Text::raw(" ".repeat(num_spaces)),
+ Text::styled(format!("{} ►", right_name), self.colours.text_style),
];
let margined_draw_loc = Layout::default()
@@ -112,7 +109,7 @@ impl BasicTableArrows for Painter {
.split(draw_loc);
f.render_widget(
- Paragraph::new(arrow_text).block(Block::default()),
+ Paragraph::new(arrow_text.iter()).block(Block::default()),
margined_draw_loc[0],
);
}
diff --git a/src/canvas/widgets/battery_display.rs b/src/canvas/widgets/battery_display.rs
index d716b53e..7c3b7896 100644
--- a/src/canvas/widgets/battery_display.rs
+++ b/src/canvas/widgets/battery_display.rs
@@ -8,8 +8,7 @@ use tui::{
backend::Backend,
layout::{Constraint, Rect},
terminal::Frame,
- text::{Span, Spans},
- widgets::{Block, Borders, Paragraph, Row, Table, Tabs},
+ widgets::{Block, Borders, Paragraph, Row, Table, Tabs, Text},
};
pub trait BatteryDisplayWidget {
@@ -34,25 +33,45 @@ impl BatteryDisplayWidget for Painter {
self.colours.border_style
};
+ // let title = if app_state.is_expanded {
+ // const TITLE_BASE: &str = " Battery ── Esc to go back ";
+ // Span::styled(
+ // format!(
+ // " Battery ─{}─ Esc to go back ",
+ // "─".repeat(
+ // usize::from(draw_loc.width)
+ // .saturating_sub(TITLE_BASE.chars().count() + 2)
+ // )
+ // ),
+ // border_and_title_style,
+ // )
+ // } else {
+ // Span::styled(" Battery ".to_string(), self.colours.widget_title_style)
+ // };
+
let title = if app_state.is_expanded {
const TITLE_BASE: &str = " Battery ── Esc to go back ";
- Span::styled(
- format!(
- " Battery ─{}─ Esc to go back ",
- "─".repeat(
- usize::from(draw_loc.width)
- .saturating_sub(TITLE_BASE.chars().count() + 2)
- )
- ),
- border_and_title_style,
+
+ format!(
+ " Battery ─{}─ Esc to go back ",
+ "─".repeat(
+ usize::from(draw_loc.width).saturating_sub(TITLE_BASE.chars().count() + 2)
+ )
)
} else {
- Span::styled(" Battery ".to_string(), self.colours.widget_title_style)
+ " Battery ".to_string()
+ };
+
+ let title_style = if app_state.is_expanded {
+ border_and_title_style
+ } else {
+ self.colours.widget_title_style
};
let battery_block = if draw_border {
Block::default()
- .title(title)
+ .title(&title)
+ .title_style(title_style)
.borders(Borders::ALL)
.border_style(border_and_title_style)
} else if is_on_widget {
@@ -63,22 +82,32 @@ impl BatteryDisplayWidget for Painter {
Block::default().borders(Borders::NONE)
};
- f.render_widget(
- Tabs::new(
- (app_state
- .canvas_data
- .battery_data
- .iter()
- .map(|battery| Spans::from(battery.battery_name.clone())))
- .collect::<Vec<_>>(),
- )
- .block(battery_block.clone())
- .divider(tui::symbols::line::VERTICAL)
- .style(self.colours.text_style)
- .highlight_style(self.colours.currently_selected_text_style)
- .select(battery_widget_state.currently_selected_battery_index),
- draw_loc,
- );
+ // f.render_widget(
+ // // Tabs::new(
+ // // (app_state
+ // // .canvas_data
+ // // .battery_data
+ // // .iter()
+ // // .map(|battery| Spans::from(battery.battery_name.clone())))
+ // // .collect::<Vec<_>>(),
+ // // )
+ // Tabs::default()
+ // .titles(
+ // app_state
+ // .canvas_data
+ // .battery_data
+ // .iter()
+ // .map(|battery| &battery.battery_name)
+ // .collect::<Vec<_>>()
+ // .as_ref(),
+ // )
+ // .block(battery_block)
+ // .divider(tui::symbols::line::VERTICAL)
+ // .style(self.colours.text_style)
+ // .highlight_style(self.colours.currently_selected_text_style)
+ // .select(battery_widget_state.currently_selected_battery_index),
+ // draw_loc,
+ // );
if let Some(battery_details) = app_state
.canvas_data
@@ -134,21 +163,52 @@ impl BatteryDisplayWidget for Painter {
// Draw
f.render_widget(
Table::new([""].iter(), battery_rows)
- .block(battery_block.clone())
+ .block(battery_block)
.header_style(self.colours.table_header_style)
.widths([Constraint::Percentage(50), Constraint::Percentage(50)].as_ref()),
draw_loc,
);
} else {
f.render_widget(
- Paragraph::new(Spans::from(Span::styled(
- "No data found for this battery",
- self.colours.text_style,
- )))
+ Paragraph::new(
+ [Text::styled(
+ "No data found for this battery",
+ self.colours.text_style,
+ )]
+ .iter(),
+ )
.block(battery_block),
draw_loc,
);
}
+
+ // Has to be placed AFTER for tui 0.9, place BEFORE for 0.10.
+ f.render_widget(
+ // Tabs::new(
+ // (app_state
+ // .canvas_data
+ // .battery_data
+ // .iter()
+ // .map(|battery| Spans::from(battery.battery_name.clone())))
+ // .collect::<Vec<_>>(),
+ // )
+ Tabs::default()
+ .titles(
+ app_state
+ .canvas_data
+ .battery_data
+ .iter()
+ .map(|battery| &battery.battery_name)
+ .collect::<Vec<_>>()
+ .as_ref(),
+ )
+ .block(battery_block)
+ .divider(tui::symbols::line::VERTICAL)
+ .style(self.colours.text_style)
+ .highlight_style(self.colours.currently_selected_text_style)
+ .select(battery_widget_state.currently_selected_battery_index),
+ draw_loc,
+ );
}
}
}
diff --git a/src/canvas/widgets/cpu_basic.rs b/src/canvas/widgets/cpu_basic.rs
index c8db2f33..4683a677 100644
--- a/src/canvas/widgets/cpu_basic.rs
+++ b/src/canvas/widgets/cpu_basic.rs
@@ -11,8 +11,7 @@ use tui::{
backend::Backend,
layout::{Constraint, Direction, Layout, Rect},
terminal::Frame,
- text::{Span, Spans},
- widgets::{Block, Paragraph},
+ widgets::{Block, Paragraph, Text},
};
pub trait CpuBasicWidget {
@@ -77,10 +76,10 @@ impl CpuBasicWidget for Painter {
let num_bars = calculate_basic_use_bars(use_percentage, bar_length);
format!(
- "{:3}[{}{}{:3.0}%]",
+ "{:3}[{}{}{:3.0}%]\n",
if app_state.app_config_fields.show_average_cpu {
if cpu_index == 0 {
- " AVG".to_string()
+ "AVG".to_string()
} else {
(cpu_index - 1).to_string()
}
@@ -109,11 +108,16 @@ impl CpuBasicWidget for Painter {
let end_index = min(start_index + how_many_cpus, num_cpus);
let cpu_column = (start_index..end_index)
.map(|cpu_index| {
- Spans::from(Span {
- content: (&cpu_bars[cpu_index]).into(),
- style: self.colours.cpu_colour_styles
+ // Spans::from(Span {
+ // content: (&cpu_bars[cpu_index]).into(),
+ // style: self.colours.cpu_colour_styles
+ // [cpu_index % self.colours.cpu_colour_styles.len()],
+ // })
+ Text::styled(
+ &cpu_bars[cpu_index],
+ self.colours.cpu_colour_styles
[cpu_index % self.colours.cpu_colour_styles.len()],
- })
+ )
})
.collect::<Vec<_>>();
@@ -126,7 +130,7 @@ impl CpuBasicWidget for Painter {
.split(*chunk);
f.render_widget(
- Paragraph::new(cpu_column).block(Block::default()),
+ Paragraph::new(cpu_column.iter()).block(Block::default()),
margined_loc[0],
);
}
diff --git a/src/canvas/widgets/cpu_graph.rs b/src/canvas/widgets/cpu_graph.rs
index a01b7f5f..f31eb1f2 100644
--- a/src/canvas/widgets/cpu_graph.rs
+++ b/src/canvas/widgets/cpu_graph.rs
@@ -17,7 +17,6 @@ use tui::{
layout::{Constraint, Direction, Layout, Rect},
symbols::Marker,
terminal::Frame,
- text::Span,
widgets::{Axis, Block, Borders, Chart, Dataset, Row, Table},
};
@@ -104,12 +103,17 @@ impl CpuGraphWidget for Painter {
if let Some(cpu_widget_state) = app_state.cpu_state.widget_states.get_mut(&widget_id) {
let cpu_data: &mut [ConvertedCpuData] = &mut app_state.canvas_data.cpu_data;
- let display_time_labels = vec![
- Span::styled(
- format!("{}s", cpu_widget_state.current_display_time / 1000),
- self.colours.graph_style,
- ),
- Span::styled("0s".to_string(), self.colours.graph_style),
+ // let display_time_labels = vec![
+ // Text::styled(
+ // format!("{}s", cpu_widget_state.current_display_time / 1000),
+ // self.colours.graph_style,
+ // ),
+ // Text::styled("0s".to_string(), self.colours.graph_style),
+ // ];
+
+ let display_time_labels = [
+ format!("{}s", cpu_widget_state.current_display_time / 1000),
+ "0s".to_string(),
];
let x_axis = if app_state.app_config_fields.hide_time
@@ -124,7 +128,8 @@ impl CpuGraphWidget for Painter {
Axis::default()
.bounds([-(cpu_widget_state.current_display_time as f64), 0.0])
.style(self.colours.graph_style)
- .labels(display_time_labels)
+ .labels(&display_time_labels)
+ .labels_style(self.colours.graph_style)
} else {
cpu_widget_state.autohide_timer = None;
Axis::default().bounds([-(cpu_widget_state.current_display_time as f64), 0.0])
@@ -135,17 +140,16 @@ impl CpuGraphWidget for Painter {
Axis::default()
.bounds([-(cpu_widget_state.current_display_time as f64), 0.0])
.style(self.colours.graph_style)
- .labels(display_time_labels)
+ .labels(&display_time_labels)
+ .labels_style(self.colours.graph_style)
};
// Note this is offset as otherwise the 0 value is not drawn!
let y_axis = Axis::default()
.style(self.colours.graph_style)
.bounds([-0.5, 100.5])
- .labels(vec![
- Span::styled("0%", self.colours.graph_style),
- Span::styled("100%", self.colours.graph_style),
- ]);
+ .labels_style(self.colours.graph_style)
+ .labels(&["0%", "100%"]);
let use_dot = app_state.app_config_fields.use_dot;
let show_avg_cpu = app_state.app_config_fields.show_average_cpu;
@@ -199,17 +203,26 @@ impl CpuGraphWidget for Painter {
self.colours.border_style
};
- let title = if app_state.is_expanded {
- Span::styled(" CPU ".to_string(), border_style)
+ // let title = if app_state.is_expanded {
+ // Span::styled(" CPU ".to_string(), border_style)
+ // } else {
+ // Span::styled(" CPU ".to_string(), self.colours.widget_title_style)
+ // };
+ let title = " CPU ";
+ let title_style = if app_state.is_expanded {
+ border_style
} else {
- Span::styled(" CPU ".to_string(), self.colours.widget_title_style)
+ self.colours.widget_title_style
};
f.render_widget(
- Chart::new(dataset_vector)
+ // Chart::new(dataset_vector)
+ Chart::default()
+ .datasets(&dataset_vector)
.block(
Block::default()
.title(title)
+ .title_style(title_style)
.borders(Borders::ALL)
.border_style(border_style),
)
diff --git a/src/canvas/widgets/disk_table.rs b/src/canvas/widgets/disk_table.rs
index 5b31314e..191e6b66 100644
--- a/src/canvas/widgets/disk_table.rs
+++ b/src/canvas/widgets/disk_table.rs
@@ -4,7 +4,6 @@ use tui::{
backend::Backend,
layout::{Constraint, Direction, Layout, Rect},
terminal::Frame,
- text::Span,
widgets::{Block, Borders, Row, Table},
};
@@ -77,27 +76,48 @@ impl DiskTableWidget for Painter {
(self.colours.border_style, self.colours.text_style)
};
+ // let title = if app_state.is_expanded {
+ // const TITLE_BASE: &str = " Disk ── Esc to go back ";
+ // Span::styled(
+ // format!(
+ // " Disk ─{}─ Esc to go back ",
+ // "─".repeat(
+ // usize::from(draw_loc.width)
+ // .saturating_sub(TITLE_BASE.chars().count() + 2)
+ // )
+ // ),
+ // border_and_title_style,
+ // )
+ // } else if app_state.app_config_fields.use_basic_mode {
+ // Span::from(String::new())
+ // } else {
+ // Span::styled(" Disk ".to_string(), self.colours.widget_title_style)
+ // };
+
let title = if app_state.is_expanded {
const TITLE_BASE: &str = " Disk ── Esc to go back ";
- Span::styled(
- format!(
- " Disk ─{}─ Esc to go back ",
- "─".repeat(
- usize::from(draw_loc.width)
- .saturating_sub(TITLE_BASE.chars().count() + 2)
- )
- ),
- border_and_title_style,
+ format!(
+ " Disk ─{}─ Esc to go back ",
+ "─".repeat(
+ usize::from(draw_loc.width).saturating_sub(TITLE_BASE.chars().count() + 2)
+ )
)
} else if app_state.app_config_fields.use_basic_mode {
- Span::from(String::new())
+ String::new()
+ } else {
+ " Disk ".to_string()
+ };
+
+ let title_style = if app_state.is_expanded {
+ border_and_title_style
} else {
- Span::styled(" Disk ".to_string(), self.colours.widget_title_style)
+ self.colours.widget_title_style
};
let disk_block = if draw_border {
Block::default()
- .title(title)
+ .title(&title)
+ .title_style(title_style)
.borders(Borders::ALL)
.border_style(border_and_title_style)
} else if is_on_widget {
diff --git a/src/canvas/widgets/mem_basic.rs b/src/canvas/widgets/mem_basic.rs
index 43003e86..c4498316 100644
--- a/src/canvas/widgets/mem_basic.rs
+++ b/src/canvas/widgets/mem_basic.rs
@@ -8,8 +8,7 @@ use tui::{
backend::Backend,
layout::{Constraint, Layout, Rect},
terminal::Frame,
- text::{Span, Spans},
- widgets::{Block, Paragraph},
+ widgets::{Block, Paragraph, Text},
};
pub trait MemBasicWidget {
@@ -54,7 +53,7 @@ impl MemBasicWidget for Painter {
let num_bars_ram = calculate_basic_use_bars(ram_use_percentage, bar_length);
let num_bars_swap = calculate_basic_use_bars(swap_use_percentage, bar_length);
let mem_label = format!(
- "RAM[{}{}{:3.0}%]",
+ "RAM[{}{}{:3.0}%]\n",
"|".repeat(num_bars_ram),
" ".repeat(bar_length - num_bars_ram),
ram_use_percentage.round(),
@@ -66,13 +65,13 @@ impl MemBasicWidget for Painter {
swap_use_percentage.round(),
);
- let mem_text = vec![
- Spans::from(Span::styled(mem_label, self.colours.ram_style)),
- Spans::from(Span::styled(swap_label, self.colours.swap_style)),
+ let mem_text = [
+ Text::styled(mem_label, self.colours.ram_style),
+ Text::styled(swap_label, self.colours.swap_style),
];
f.render_widget(
- Paragraph::new(mem_text).block(Block::default()),
+ Paragraph::new(mem_text.iter()).block(Block::default()),
margined_loc[0],
);
}
diff --git a/src/canvas/widgets/mem_graph.rs b/src/canvas/widgets/mem_graph.rs
index 24717dab..ba38b6bd 100644
--- a/src/canvas/widgets/mem_graph.rs
+++ b/src/canvas/widgets/mem_graph.rs