feat: basic vscode theme export support
This commit is contained in:
parent
05a9e7639f
commit
c1cfa024d6
6 changed files with 378 additions and 23 deletions
|
|
@ -1,3 +1,46 @@
|
|||
#[cfg(feature = "gtk4-output")]
|
||||
use palette::{rgb::Rgba, Srgba};
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::Theme;
|
||||
|
||||
/// Module for outputting the Cosmic gtk4 theme type as CSS
|
||||
pub mod gtk4_output;
|
||||
|
||||
pub mod vs_code;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum OutputError {
|
||||
#[error("IO Error: {0}")]
|
||||
Io(std::io::Error),
|
||||
#[error("Missing config directory")]
|
||||
MissingConfigDir,
|
||||
}
|
||||
|
||||
impl Theme {
|
||||
pub fn apply_exports(&self) -> Result<(), OutputError> {
|
||||
let gtk_res = Theme::apply_gtk(self.is_dark);
|
||||
let vs_res = self.clone().apply_vs_code();
|
||||
gtk_res?;
|
||||
vs_res?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn write_exports(&self) -> Result<(), OutputError> {
|
||||
let gtk_res = self.write_gtk4();
|
||||
gtk_res?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn reset_exports() -> Result<(), OutputError> {
|
||||
let gtk_res = Theme::reset_gtk();
|
||||
let vs_res = Theme::reset_vs_code();
|
||||
gtk_res?;
|
||||
vs_res?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_hex(c: Srgba) -> String {
|
||||
let c_u8: Rgba<palette::encoding::Srgb, u8> = c.into_format();
|
||||
format!("{:02x}{:02x}{:02x}", c_u8.red, c_u8.green, c_u8.blue)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue