diff options
author | 2019-10-23 02:33:07 +0200 | |
---|---|---|
committer | 2019-10-23 02:33:07 +0200 | |
commit | c7ef9d0da705d8f27011fe41d2103c73aae42d2d (patch) | |
tree | bbd2baf6ac62426d278c8babef18e1cce49b3872 | |
parent | 871eb414303804233ed50d43bb9b98a7037cbd4c (diff) | |
download | iced-c7ef9d0da705d8f27011fe41d2103c73aae42d2d.tar.gz iced-c7ef9d0da705d8f27011fe41d2103c73aae42d2d.tar.bz2 iced-c7ef9d0da705d8f27011fe41d2103c73aae42d2d.zip |
Connect `iced_web` with `iced` properly
-rw-r--r-- | src/lib.rs | 36 | ||||
-rw-r--r-- | src/web.rs | 1 | ||||
-rw-r--r-- | src/winit.rs | 11 | ||||
-rw-r--r-- | web/Cargo.toml | 3 | ||||
-rw-r--r-- | web/src/lib.rs | 13 |
5 files changed, 42 insertions, 22 deletions
@@ -1,13 +1,8 @@ -pub use iced_wgpu::{Primitive, Renderer}; -pub use iced_winit::{ - button, slider, text, winit, Align, Background, Checkbox, Color, Image, - Justify, Length, Radio, Slider, Text, -}; +#[cfg_attr(target_arch = "wasm32", path = "web.rs")] +#[cfg_attr(not(target_arch = "wasm32"), path = "winit.rs")] +mod platform; -pub type Element<'a, Message> = iced_winit::Element<'a, Message, Renderer>; -pub type Row<'a, Message> = iced_winit::Row<'a, Message, Renderer>; -pub type Column<'a, Message> = iced_winit::Column<'a, Message, Renderer>; -pub type Button<'a, Message> = iced_winit::Button<'a, Message, Renderer>; +pub use platform::*; pub trait Application { type Message; @@ -20,12 +15,17 @@ pub trait Application { where Self: 'static + Sized, { - iced_winit::Application::run(Instance(self)) + #[cfg(not(target_arch = "wasm32"))] + iced_winit::Application::run(Instance(self)); + + #[cfg(target_arch = "wasm32")] + iced_web::Application::run(Instance(self)); } } struct Instance<A: Application>(A); +#[cfg(not(target_arch = "wasm32"))] impl<A> iced_winit::Application for Instance<A> where A: Application, @@ -41,3 +41,19 @@ where self.0.view() } } + +#[cfg(target_arch = "wasm32")] +impl<A> iced_web::Application for Instance<A> +where + A: Application, +{ + type Message = A::Message; + + fn update(&mut self, message: Self::Message) { + self.0.update(message); + } + + fn view(&mut self) -> Element<Self::Message> { + self.0.view() + } +} diff --git a/src/web.rs b/src/web.rs new file mode 100644 index 00000000..31f1a6fc --- /dev/null +++ b/src/web.rs @@ -0,0 +1 @@ +pub use iced_web::*; diff --git a/src/winit.rs b/src/winit.rs new file mode 100644 index 00000000..64e301f4 --- /dev/null +++ b/src/winit.rs @@ -0,0 +1,11 @@ +pub use iced_wgpu::{Primitive, Renderer}; + +pub use iced_winit::{ + button, slider, text, winit, Align, Background, Checkbox, Color, Image, + Justify, Length, Radio, Slider, Text, +}; + +pub type Element<'a, Message> = iced_winit::Element<'a, Message, Renderer>; +pub type Row<'a, Message> = iced_winit::Row<'a, Message, Renderer>; +pub type Column<'a, Message> = iced_winit::Column<'a, Message, Renderer>; +pub type Button<'a, Message> = iced_winit::Button<'a, Message, Renderer>; diff --git a/web/Cargo.toml b/web/Cargo.toml index d5a987b0..473bde17 100644 --- a/web/Cargo.toml +++ b/web/Cargo.toml @@ -17,8 +17,7 @@ maintenance = { status = "actively-developed" } [dependencies] iced_core = { version = "0.1.0-alpha", path = "../core" } dodrio = "0.1.0" -futures-preview = "=0.3.0-alpha.18" -wasm-bindgen = "0.2.50" +wasm-bindgen = "0.2.51" [dependencies.web-sys] version = "0.3.27" diff --git a/web/src/lib.rs b/web/src/lib.rs index 04848d07..559a5af0 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -1,5 +1,4 @@ use dodrio::bumpalo; -use futures::Future; use std::cell::RefCell; mod bus; @@ -8,16 +7,13 @@ pub mod widget; pub use bus::Bus; pub use element::Element; -pub use iced_core::{Align, Color, Justify, Length}; +pub use iced_core::{Align, Background, Color, Justify, Length}; pub use widget::*; pub trait Application { type Message; - fn update( - &mut self, - message: Self::Message, - ) -> Option<Box<dyn Future<Output = Self::Message>>>; + fn update(&mut self, message: Self::Message); fn view(&mut self) -> Element<Self::Message>; @@ -48,10 +44,7 @@ impl<Message> Instance<Message> { } fn update(&mut self, message: Message) { - let mut ui = self.ui.borrow_mut(); - - // TODO: Resolve futures and publish resulting messages - let _ = ui.update(message); + self.ui.borrow_mut().update(message); } } |