jui/
lib.rs

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
14/// Compile the .slint file and generate rust code for it.
15pub fn compile(path: impl AsRef<Path>) -> Result<(), CompileError> {
16    compile_with_jui_config(path, JuiConfig::default())
17}
18
19/// Compile the .slint file and generate rust code for it.<br />
20/// add an alias for jui<br />
21/// ### for example alial="hello"
22/// ```slint
23/// import { Button } from "@hello/button.slint";
24/// ```
25/// ### for example allial="jui"
26/// ```slint
27/// import { Button } from "@jui/button.slint";
28/// ```
29pub 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/// Compile the .slint file and generate rust code for it.<br />
34/// custom surrealism_ui config
35#[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/// Compile the .slint file and generate rust code for it.<br />
41/// custom surrealism_ui config and add an alias for jui
42#[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
48/// Compile the .slint file and generate rust code with custom jui config
49pub 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}