diff --git a/crates/composition/src/builder.rs b/crates/composition/src/builder.rs index 572fcc9..b65cdc4 100644 --- a/crates/composition/src/builder.rs +++ b/crates/composition/src/builder.rs @@ -1,5 +1,5 @@ use crate::Result; -use crate::system::WindowingSystem; +use crate::system::App; use layer_shika_adapters::platform::slint_interpreter::{CompilationResult, Compiler}; use layer_shika_domain::errors::DomainError; use layer_shika_domain::prelude::{ @@ -194,7 +194,7 @@ impl LayerShika { self } - pub fn build(self) -> Result { + pub fn build(self) -> Result { let component_definition = self .state .compilation_result @@ -206,10 +206,15 @@ impl LayerShika { ), })?; - WindowingSystem::new( + App::new( component_definition, Some(self.state.compilation_result), self.config, ) } + + pub fn run(self) -> Result<()> { + let mut app = self.build()?; + app.run() + } } diff --git a/crates/composition/src/lib.rs b/crates/composition/src/lib.rs index eda2851..71ba8df 100644 --- a/crates/composition/src/lib.rs +++ b/crates/composition/src/lib.rs @@ -23,7 +23,7 @@ pub use layer_shika_domain::value_objects::popup_request::{ PopupAt, PopupHandle, PopupRequest, PopupSize, }; pub use slint_callbacks::{SlintCallbackContract, SlintCallbackNames}; -pub use system::{EventLoopHandle, ShellContext, WindowingSystem}; +pub use system::{App, EventLoopHandle, ShellContext}; pub mod calloop { pub use layer_shika_adapters::platform::calloop::{ @@ -41,6 +41,19 @@ pub enum Error { #[error("Domain error: {0}")] Domain(#[from] DomainError), - #[error("WindowingSystem has been dropped")] + #[error("App has been dropped")] SystemDropped, } + +pub mod prelude { + pub use crate::{ + AnchorEdges, App, EventLoopHandle, KeyboardInteractivity, Layer, LayerShika, + OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry, PopupAt, + PopupHandle, PopupPositioningMode, PopupRequest, PopupSize, PopupWindow, Result, + ShellContext, SlintCallbackContract, SlintCallbackNames, + }; + + pub use crate::calloop::{Generic, Interest, Mode, PostAction, RegistrationToken, Timer}; + + pub use crate::{slint, slint_interpreter}; +} diff --git a/crates/composition/src/system.rs b/crates/composition/src/system.rs index 64c50af..9e346b0 100644 --- a/crates/composition/src/system.rs +++ b/crates/composition/src/system.rs @@ -391,13 +391,13 @@ impl ShellContext<'_> { } } -pub struct WindowingSystem { +pub struct App { inner: Rc>, popup_command_sender: channel::Sender, callback_contract: SlintCallbackContract, } -impl WindowingSystem { +impl App { pub(crate) fn new( component_definition: ComponentDefinition, compilation_result: Option>, diff --git a/src/lib.rs b/src/lib.rs index 6379415..2b8b26a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,14 +22,11 @@ //! ```rust,no_run //! use layer_shika::prelude::*; //! -//! let system = LayerShika::from_file("ui/main.slint", Some("AppWindow"))? +//! LayerShika::from_file("ui/main.slint", Some("AppWindow"))? //! .with_height(42) //! .with_anchor(AnchorEdges::top_bar()) //! .with_exclusive_zone(42) -//! .build()?; -//! -//! let mut system = system; -//! system.run()?; +//! .run()?; //! # Ok::<(), layer_shika::Error>(()) //! ``` //! @@ -45,10 +42,10 @@ pub mod prelude; pub use layer_shika_composition::{ - AnchorEdges, Error, EventLoopHandle, KeyboardInteractivity, Layer, LayerShika, OutputGeometry, - OutputHandle, OutputInfo, OutputPolicy, OutputRegistry, PopupAt, PopupHandle, PopupPositioningMode, - PopupRequest, PopupSize, PopupWindow, Result, ShellContext, SlintCallbackContract, - SlintCallbackNames, WindowingSystem, + AnchorEdges, App, Error, EventLoopHandle, KeyboardInteractivity, Layer, LayerShika, + OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry, PopupAt, PopupHandle, + PopupPositioningMode, PopupRequest, PopupSize, PopupWindow, Result, ShellContext, + SlintCallbackContract, SlintCallbackNames, }; pub use layer_shika_composition::{slint, slint_interpreter}; diff --git a/src/prelude.rs b/src/prelude.rs index a275cdb..1eaca8b 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -10,14 +10,15 @@ // Core API types pub use crate::{ - Error, EventLoopHandle, LayerShika, PopupWindow, Result, ShellContext, SlintCallbackContract, - SlintCallbackNames, WindowingSystem, + App, Error, EventLoopHandle, LayerShika, PopupWindow, Result, ShellContext, + SlintCallbackContract, SlintCallbackNames, }; // Domain value objects pub use crate::{ AnchorEdges, KeyboardInteractivity, Layer, OutputGeometry, OutputHandle, OutputInfo, - OutputPolicy, OutputRegistry, PopupAt, PopupHandle, PopupPositioningMode, PopupRequest, PopupSize, + OutputPolicy, OutputRegistry, PopupAt, PopupHandle, PopupPositioningMode, PopupRequest, + PopupSize, }; // Event loop types