workflow_egui/frame/
options.rs

1use crate::imports::*;
2
3pub struct Options<T> {
4    pub caption: String,
5    pub canvas_id: String,
6    pub modules: Option<Vec<Module<T>>>,
7    pub default_module: Option<TypeId>,
8
9    #[cfg(not(target_arch = "wasm32"))]
10    pub native_options: eframe::NativeOptions,
11    #[cfg(target_arch = "wasm32")]
12    pub web_options: eframe::WebOptions,
13}
14
15impl<T> Options<T>
16where
17    T: App,
18{
19    pub fn new(caption: String, canvas_id: String) -> Self {
20        Options {
21            caption,
22            canvas_id,
23            modules: None,
24            default_module: None,
25            #[cfg(not(target_arch = "wasm32"))]
26            native_options: Default::default(),
27            #[cfg(target_arch = "wasm32")]
28            web_options: Default::default(), // .. Default::default()
29        }
30    }
31
32    #[cfg(not(target_arch = "wasm32"))]
33    pub fn with_native_options(mut self, native_options: eframe::NativeOptions) -> Self {
34        self.native_options = native_options;
35        self
36    }
37
38    #[cfg(target_arch = "wasm32")]
39    pub fn with_web_options(mut self, web_options: eframe::WebOptions) -> Self {
40        self.web_options = web_options;
41        self
42    }
43
44    pub fn with_modules(mut self, default_module: TypeId, modules: Vec<Module<T>>) -> Self {
45        self.default_module = Some(default_module);
46        self.modules = Some(modules);
47        self
48    }
49}