Add terminal colors to ThemeColors, add _background to some color names.

This commit is contained in:
Nate Butler 2023-11-02 19:53:52 -04:00
parent 95a0827517
commit 2b0c959137
28 changed files with 224 additions and 106 deletions

View file

@ -138,10 +138,13 @@ impl<'a> Debug for ThemeColorsPrinter<'a> {
"border_transparent",
&HslaPrinter(self.0.border_transparent),
)
.field("elevated_surface", &HslaPrinter(self.0.elevated_surface))
.field("surface", &HslaPrinter(self.0.surface))
.field(
"elevated_surface",
&HslaPrinter(self.0.elevated_surface_background),
)
.field("surface", &HslaPrinter(self.0.surface_background))
.field("background", &HslaPrinter(self.0.background))
.field("element", &HslaPrinter(self.0.element))
.field("element", &HslaPrinter(self.0.element_background))
.field("element_hover", &HslaPrinter(self.0.element_hover))
.field("element_active", &HslaPrinter(self.0.element_active))
.field("element_selected", &HslaPrinter(self.0.element_selected))
@ -154,7 +157,10 @@ impl<'a> Debug for ThemeColorsPrinter<'a> {
"element_drop_target",
&HslaPrinter(self.0.element_drop_target),
)
.field("ghost_element", &HslaPrinter(self.0.ghost_element))
.field(
"ghost_element",
&HslaPrinter(self.0.ghost_element_background),
)
.field(
"ghost_element_hover",
&HslaPrinter(self.0.ghost_element_hover),
@ -181,14 +187,17 @@ impl<'a> Debug for ThemeColorsPrinter<'a> {
.field("icon_disabled", &HslaPrinter(self.0.icon_disabled))
.field("icon_placeholder", &HslaPrinter(self.0.icon_placeholder))
.field("icon_accent", &HslaPrinter(self.0.icon_accent))
.field("status_bar", &HslaPrinter(self.0.status_bar))
.field("title_bar", &HslaPrinter(self.0.title_bar))
.field("toolbar", &HslaPrinter(self.0.toolbar))
.field("tab_bar", &HslaPrinter(self.0.tab_bar))
.field("tab_inactive", &HslaPrinter(self.0.tab_inactive))
.field("tab_active", &HslaPrinter(self.0.tab_active))
.field("editor", &HslaPrinter(self.0.editor))
.field("editor_subheader", &HslaPrinter(self.0.editor_subheader))
.field("status_bar", &HslaPrinter(self.0.status_bar_background))
.field("title_bar", &HslaPrinter(self.0.title_bar_background))
.field("toolbar", &HslaPrinter(self.0.toolbar_background))
.field("tab_bar", &HslaPrinter(self.0.tab_bar_background))
.field("tab_inactive", &HslaPrinter(self.0.tab_inactive_background))
.field("tab_active", &HslaPrinter(self.0.tab_active_background))
.field("editor", &HslaPrinter(self.0.editor_background))
.field(
"editor_subheader",
&HslaPrinter(self.0.editor_subheader_background),
)
.field(
"editor_active_line",
&HslaPrinter(self.0.editor_active_line),

View file

@ -27,7 +27,24 @@ pub struct VsCodeColors {
#[serde(rename = "editor.foreground")]
text: String,
#[serde(rename = "editor.background")]
editor: String,
editor_background: String,
terminal_background: String,
terminal_ansi_bright_black: String,
terminal_ansi_bright_red: String,
terminal_ansi_bright_green: String,
terminal_ansi_bright_yellow: String,
terminal_ansi_bright_blue: String,
terminal_ansi_bright_magenta: String,
terminal_ansi_bright_cyan: String,
terminal_ansi_bright_white: String,
terminal_ansi_black: String,
terminal_ansi_red: String,
terminal_ansi_green: String,
terminal_ansi_yellow: String,
terminal_ansi_blue: String,
terminal_ansi_magenta: String,
terminal_ansi_cyan: String,
terminal_ansi_white: String,
}
fn try_parse_color(color: &str) -> Result<Hsla> {
@ -58,8 +75,41 @@ impl VsCodeThemeConverter {
let vscode_colors = &self.theme.colors;
let theme_colors_refinements = ThemeColorsRefinement {
background: Some(try_parse_color(&vscode_colors.editor)?),
background: Some(try_parse_color(&vscode_colors.editor_background)?),
text: Some(try_parse_color(&vscode_colors.text)?),
terminal_background: Some(try_parse_color(&vscode_colors.terminal_background)?),
terminal_ansi_bright_black: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_black,
)?),
terminal_ansi_bright_red: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_red,
)?),
terminal_ansi_bright_green: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_green,
)?),
terminal_ansi_bright_yellow: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_yellow,
)?),
terminal_ansi_bright_blue: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_blue,
)?),
terminal_ansi_bright_magenta: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_magenta,
)?),
terminal_ansi_bright_cyan: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_cyan,
)?),
terminal_ansi_bright_white: Some(try_parse_color(
&vscode_colors.terminal_ansi_bright_white,
)?),
terminal_ansi_black: Some(try_parse_color(&vscode_colors.terminal_ansi_black)?),
terminal_ansi_red: Some(try_parse_color(&vscode_colors.terminal_ansi_red)?),
terminal_ansi_green: Some(try_parse_color(&vscode_colors.terminal_ansi_green)?),
terminal_ansi_yellow: Some(try_parse_color(&vscode_colors.terminal_ansi_yellow)?),
terminal_ansi_blue: Some(try_parse_color(&vscode_colors.terminal_ansi_blue)?),
terminal_ansi_magenta: Some(try_parse_color(&vscode_colors.terminal_ansi_magenta)?),
terminal_ansi_cyan: Some(try_parse_color(&vscode_colors.terminal_ansi_cyan)?),
terminal_ansi_white: Some(try_parse_color(&vscode_colors.terminal_ansi_white)?),
..Default::default()
};
@ -81,22 +131,22 @@ impl VsCodeThemeConverter {
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::path::PathBuf;
// #[cfg(test)]
// mod tests {
// use super::*;
// use std::path::PathBuf;
#[test]
fn test_deserialize_theme() {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let root_dir = manifest_dir.parent().unwrap().parent().unwrap();
// #[test]
// fn test_deserialize_theme() {
// let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
// let root_dir = manifest_dir.parent().unwrap().parent().unwrap();
let mut d = root_dir.to_path_buf();
d.push("assets/themes/src/vsc/dracula/dracula.json");
// let mut d = root_dir.to_path_buf();
// d.push("assets/themes/src/vsc/dracula/dracula.json");
let data = std::fs::read_to_string(d).expect("Unable to read file");
// let data = std::fs::read_to_string(d).expect("Unable to read file");
let result: Theme = serde_json::from_str(&data).unwrap();
println!("{:#?}", result);
}
}
// let result: Theme = serde_json::from_str(&data).unwrap();
// println!("{:#?}", result);
// }
// }