1#[cfg(not(feature = "surrealism_ui"))]
2use std::collections::HashMap;
3use std::env;
4use std::path::{Path, PathBuf};
5pub use slint_build;
6use slint_build::CompileError;
7pub use cbsk_file;
8use crate::jui_config::JuiConfig;
9
10#[cfg(feature = "surrealism_ui")]
11pub mod surrealism_ui;
12pub mod jui_config;
13
14pub fn compile(path: impl AsRef<Path>) -> Result<(), CompileError> {
16 compile_with_jui_config(path, JuiConfig::default())
17}
18
19pub fn compile_alias(path: impl AsRef<Path>, alias: String) -> Result<(), CompileError> {
30 compile_with_jui_config(path, JuiConfig::default().set_alias(alias))
31}
32
33#[cfg(feature = "surrealism_ui")]
36pub fn compile_with_surrealism_ui(path: impl AsRef<Path>, surrealism: surrealism_ui::SurrealismUI) -> Result<(), CompileError> {
37 compile_with_jui_config(path, JuiConfig::default().set_surrealism_ui(surrealism))
38}
39
40#[cfg(feature = "surrealism_ui")]
43pub fn compile_alias_with_surrealism_ui(path: impl AsRef<Path>, alias: String, surrealism: surrealism_ui::SurrealismUI) -> Result<(), CompileError> {
44 let jui_conf = JuiConfig::default().set_alias(alias).set_surrealism_ui(surrealism);
45 compile_with_jui_config(path, jui_conf)
46}
47
48pub fn compile_with_jui_config(path: impl AsRef<Path>, jui_config: JuiConfig) -> Result<(), CompileError> {
50 let jui_widgets = env!("JUI_WIDGETS", "JUI_WIDGETS is None");
51 let jui_widgets = PathBuf::from(jui_widgets);
52
53 let library_path = {
54 #[cfg(feature = "surrealism_ui")] {
55 let mut library_path = jui_config.surrealism_ui.build_library_path();
56 library_path.insert(jui_config.alias, jui_widgets);
57 library_path
58 }
59 #[cfg(not(feature = "surrealism_ui"))] HashMap::from([(jui_config.alias, jui_widgets)])
60 };
61
62 let config = jui_config.slint_confg.with_library_paths(library_path);
63 slint_build::compile_with_config(path, config)
64}