#[cfg(not(feature = "surrealism_ui"))]
use std::collections::HashMap;
use std::env;
use std::path::{Path, PathBuf};
pub use slint_build;
use slint_build::CompileError;
pub use cbsk_file;
use crate::jui_config::JuiConfig;
#[cfg(feature = "surrealism_ui")]
pub mod surrealism_ui;
pub mod jui_config;
pub fn compile(path: impl AsRef<Path>) -> Result<(), CompileError> {
compile_with_jui_config(path, JuiConfig::default())
}
pub fn compile_alias(path: impl AsRef<Path>, alias: String) -> Result<(), CompileError> {
compile_with_jui_config(path, JuiConfig::default().set_alias(alias))
}
#[cfg(feature = "surrealism_ui")]
pub fn compile_with_surrealism_ui(path: impl AsRef<Path>, surrealism: surrealism_ui::SurrealismUI) -> Result<(), CompileError> {
compile_with_jui_config(path, JuiConfig::default().set_surrealism_ui(surrealism))
}
#[cfg(feature = "surrealism_ui")]
pub fn compile_alias_with_surrealism_ui(path: impl AsRef<Path>, alias: String, surrealism: surrealism_ui::SurrealismUI) -> Result<(), CompileError> {
let jui_conf = JuiConfig::default().set_alias(alias).set_surrealism_ui(surrealism);
compile_with_jui_config(path, jui_conf)
}
pub fn compile_with_jui_config(path: impl AsRef<Path>, jui_config: JuiConfig) -> Result<(), CompileError> {
let jui_widgets = env!("JUI_WIDGETS", "JUI_WIDGETS is None");
let jui_widgets = PathBuf::from(jui_widgets);
let library_path = {
#[cfg(feature = "surrealism_ui")] {
let mut library_path = jui_config.surrealism_ui.build_library_path();
library_path.insert(jui_config.alias, jui_widgets);
library_path
}
#[cfg(not(feature = "surrealism_ui"))] HashMap::from([(jui_config.alias, jui_widgets)])
};
let config = jui_config.slint_confg.with_library_paths(library_path);
slint_build::compile_with_config(path, config)
}