mirror of
https://github.com/danog/ytop.git
synced 2024-11-30 04:29:10 +01:00
Implement ColorschemeRaw
This commit is contained in:
parent
def79e153b
commit
163dfe29c4
@ -3,6 +3,7 @@ use std::path::Path;
|
||||
use std::str::FromStr;
|
||||
|
||||
use serde::Deserialize;
|
||||
use tui::style::{Color, Style};
|
||||
|
||||
pub enum Colorschemes {
|
||||
Default,
|
||||
@ -29,33 +30,98 @@ impl FromStr for Colorschemes {
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct Colorscheme {
|
||||
fg: i64,
|
||||
bg: i64,
|
||||
pub struct ColorschemeRaw {
|
||||
pub fg: i64,
|
||||
pub bg: i64,
|
||||
|
||||
titles: i64,
|
||||
borders: i64,
|
||||
pub titles: i64,
|
||||
pub borders: i64,
|
||||
|
||||
battery_lines: Vec<i64>,
|
||||
pub battery_lines: Vec<i64>,
|
||||
|
||||
// need at least 8 entries
|
||||
cpu_lines: Vec<i64>,
|
||||
pub cpu_lines: Vec<i64>,
|
||||
|
||||
mem_main: i64,
|
||||
mem_swap: i64,
|
||||
pub mem_main: i64,
|
||||
pub mem_swap: i64,
|
||||
|
||||
net_bars: i64,
|
||||
pub net_bars: i64,
|
||||
|
||||
proc_cursor: i64,
|
||||
pub proc_cursor: i64,
|
||||
|
||||
temp_low: i64,
|
||||
temp_high: i64,
|
||||
pub temp_low: i64,
|
||||
pub temp_high: i64,
|
||||
}
|
||||
|
||||
pub fn read_colorscheme(
|
||||
pub struct Colorscheme {
|
||||
pub text: Style,
|
||||
|
||||
pub titles: Style,
|
||||
pub borders: Style,
|
||||
|
||||
pub battery_lines: Vec<Style>,
|
||||
|
||||
// need at least 8 entries
|
||||
pub cpu_lines: Vec<Style>,
|
||||
|
||||
pub mem_main: Style,
|
||||
pub mem_swap: Style,
|
||||
|
||||
pub net_bars: Style,
|
||||
|
||||
pub proc_cursor: Style,
|
||||
|
||||
pub temp_low: Style,
|
||||
pub temp_high: Style,
|
||||
}
|
||||
|
||||
impl From<ColorschemeRaw> for Colorscheme {
|
||||
fn from(raw: ColorschemeRaw) -> Self {
|
||||
Colorscheme {
|
||||
text: Style::default()
|
||||
.fg(convert_color(raw.fg))
|
||||
.bg(convert_color(raw.bg)),
|
||||
|
||||
titles: Style::default().fg(convert_color(raw.titles)),
|
||||
borders: Style::default().fg(convert_color(raw.borders)),
|
||||
|
||||
battery_lines: raw
|
||||
.battery_lines
|
||||
.into_iter()
|
||||
.map(|entry| Style::default().fg(convert_color(entry)))
|
||||
.collect(),
|
||||
|
||||
cpu_lines: raw
|
||||
.cpu_lines
|
||||
.into_iter()
|
||||
.map(|entry| Style::default().fg(convert_color(entry)))
|
||||
.collect(),
|
||||
|
||||
mem_main: Style::default().fg(convert_color(raw.mem_main)),
|
||||
mem_swap: Style::default().fg(convert_color(raw.mem_swap)),
|
||||
|
||||
net_bars: Style::default().fg(convert_color(raw.net_bars)),
|
||||
|
||||
proc_cursor: Style::default().fg(convert_color(raw.proc_cursor)),
|
||||
|
||||
temp_low: Style::default().fg(convert_color(raw.temp_low)),
|
||||
temp_high: Style::default().fg(convert_color(raw.temp_high)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn convert_color(raw: i64) -> Color {
|
||||
if raw == -1 {
|
||||
Color::Reset
|
||||
} else {
|
||||
Color::Indexed(raw as u8)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn parse_colorscheme(
|
||||
config_folder: &Path,
|
||||
colorscheme: &Colorschemes,
|
||||
) -> serde_json::Result<Colorscheme> {
|
||||
) -> serde_json::Result<ColorschemeRaw> {
|
||||
match colorscheme {
|
||||
Colorschemes::Custom(name) => serde_json::from_str(
|
||||
&fs::read_to_string(config_folder.join(name).with_extension("json")).unwrap(),
|
||||
@ -74,3 +140,12 @@ pub fn read_colorscheme(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn read_colorscheme(
|
||||
config_folder: &Path,
|
||||
colorscheme: &Colorschemes,
|
||||
) -> serde_json::Result<Colorscheme> {
|
||||
let raw_colorscheme = parse_colorscheme(config_folder, colorscheme)?;
|
||||
|
||||
Ok(Colorscheme::from(raw_colorscheme))
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
use tui::style::{Color, Style};
|
||||
use tui::widgets::{Block, Borders};
|
||||
|
||||
use crate::colorscheme::Colorscheme;
|
||||
@ -6,6 +5,7 @@ use crate::colorscheme::Colorscheme;
|
||||
pub fn new<'a>(colorscheme: &Colorscheme, title: &'a str) -> Block<'a> {
|
||||
Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_style(Style::default().fg(Color::Cyan))
|
||||
.border_style(colorscheme.borders)
|
||||
.title(title)
|
||||
.title_style(colorscheme.titles)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user