summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-20 05:43:09 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-01-20 05:43:09 +0100
commit04086a90c9e933ebfb42de378054e1115b33529d (patch)
treef0a9e25216807f9a20d757eadf420456d16f613f /src
parent90690702e1e4abab804ec91e8ff4183824bec436 (diff)
downloadiced-04086a90c9e933ebfb42de378054e1115b33529d.tar.gz
iced-04086a90c9e933ebfb42de378054e1115b33529d.tar.bz2
iced-04086a90c9e933ebfb42de378054e1115b33529d.zip
Implement `WasmBindgen` executor and reorganize
Diffstat (limited to '')
-rw-r--r--src/element.rs9
-rw-r--r--src/executor.rs54
-rw-r--r--src/lib.rs30
-rw-r--r--src/native.rs68
-rw-r--r--src/native/executor.rs23
-rw-r--r--src/web.rs1
-rw-r--r--src/widget.rs60
7 files changed, 140 insertions, 105 deletions
diff --git a/src/element.rs b/src/element.rs
new file mode 100644
index 00000000..e5356fb6
--- /dev/null
+++ b/src/element.rs
@@ -0,0 +1,9 @@
+/// A generic widget.
+///
+/// This is an alias of an `iced_native` element with a default `Renderer`.
+#[cfg(not(target_arch = "wasm32"))]
+pub type Element<'a, Message> =
+ iced_winit::Element<'a, Message, iced_wgpu::Renderer>;
+
+#[cfg(target_arch = "wasm32")]
+pub use iced_web::Element;
diff --git a/src/executor.rs b/src/executor.rs
new file mode 100644
index 00000000..cbbd8283
--- /dev/null
+++ b/src/executor.rs
@@ -0,0 +1,54 @@
+//! Choose your preferred executor to power your application.
+pub use crate::common::{executor::Null, Executor};
+
+pub use platform::Default;
+
+#[cfg(not(target_arch = "wasm32"))]
+mod platform {
+ use iced_winit::{executor::ThreadPool, futures, Executor};
+
+ /// A default cross-platform executor.
+ ///
+ /// - On native platforms, it will use a `iced_futures::executor::ThreadPool`.
+ /// - On the Web, it will use `iced_futures::executor::WasmBindgen`.
+ #[derive(Debug)]
+ pub struct Default(ThreadPool);
+
+ impl Executor for Default {
+ fn new() -> Result<Self, futures::io::Error> {
+ Ok(Default(ThreadPool::new()?))
+ }
+
+ fn spawn(
+ &self,
+ future: impl futures::Future<Output = ()> + Send + 'static,
+ ) {
+ self.0.spawn(future);
+ }
+ }
+}
+
+#[cfg(target_arch = "wasm32")]
+mod platform {
+ use iced_web::{executor::WasmBindgen, futures, Executor};
+
+ /// A default cross-platform executor.
+ ///
+ /// - On native platforms, it will use a `iced_futures::executor::ThreadPool`.
+ /// - On the Web, it will use `iced_futures::executor::WasmBindgen`.
+ #[derive(Debug)]
+ pub struct Default(WasmBindgen);
+
+ impl Executor for Default {
+ fn new() -> Result<Self, futures::io::Error> {
+ Ok(Default(WasmBindgen::new()?))
+ }
+
+ fn spawn(
+ &self,
+ future: impl futures::Future<Output = ()> + Send + 'static,
+ ) {
+ self.0.spawn(future);
+ }
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index 18dfc098..9c9bcff5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -180,26 +180,30 @@
#![deny(unsafe_code)]
#![deny(rust_2018_idioms)]
mod application;
+mod element;
mod sandbox;
-#[cfg(not(target_arch = "wasm32"))]
-mod native;
-
-#[cfg(not(target_arch = "wasm32"))]
-pub use native::*;
-
-#[cfg(target_arch = "wasm32")]
-mod web;
-
-#[cfg(target_arch = "wasm32")]
-pub use web::*;
-
+pub mod executor;
pub mod settings;
+pub mod widget;
pub mod window;
#[doc(no_inline)]
-pub use executor::Executor;
+pub use widget::*;
pub use application::Application;
+pub use element::Element;
+pub use executor::Executor;
pub use sandbox::Sandbox;
pub use settings::Settings;
+
+#[cfg(not(target_arch = "wasm32"))]
+use iced_winit as common;
+
+#[cfg(target_arch = "wasm32")]
+use iced_web as common;
+
+pub use common::{
+ Align, Background, Color, Command, Font, HorizontalAlignment, Length,
+ Space, Subscription, Vector, VerticalAlignment,
+};
diff --git a/src/native.rs b/src/native.rs
deleted file mode 100644
index 86ccffab..00000000
--- a/src/native.rs
+++ /dev/null
@@ -1,68 +0,0 @@
-pub use iced_winit::{
- Align, Background, Color, Command, Font, HorizontalAlignment, Length,
- Space, Subscription, Vector, VerticalAlignment,
-};
-
-pub mod executor;
-
-pub mod widget {
- //! Display information and interactive controls in your application.
- //!
- //! # Re-exports
- //! For convenience, the contents of this module are available at the root
- //! module. Therefore, you can directly type:
- //!
- //! ```
- //! use iced::{button, Button};
- //! ```
- //!
- //! # Stateful widgets
- //! Some widgets need to keep track of __local state__.
- //!
- //! These widgets have their own module with a `State` type. For instance, a
- //! [`TextInput`] has some [`text_input::State`].
- //!
- //! [`TextInput`]: text_input/struct.TextInput.html
- //! [`text_input::State`]: text_input/struct.State.html
- pub use iced_wgpu::widget::*;
-
- pub mod image {
- //! Display images in your user interface.
- pub use iced_winit::image::{Handle, Image};
- }
-
- pub mod svg {
- //! Display vector graphics in your user interface.
- pub use iced_winit::svg::{Handle, Svg};
- }
-
- pub use iced_winit::Text;
-
- #[doc(no_inline)]
- pub use {
- button::Button, checkbox::Checkbox, container::Container, image::Image,
- progress_bar::ProgressBar, radio::Radio, scrollable::Scrollable,
- slider::Slider, svg::Svg, text_input::TextInput,
- };
-
- /// A container that distributes its contents vertically.
- ///
- /// This is an alias of an `iced_native` column with a default `Renderer`.
- pub type Column<'a, Message> =
- iced_winit::Column<'a, Message, iced_wgpu::Renderer>;
-
- /// A container that distributes its contents horizontally.
- ///
- /// This is an alias of an `iced_native` row with a default `Renderer`.
- pub type Row<'a, Message> =
- iced_winit::Row<'a, Message, iced_wgpu::Renderer>;
-}
-
-#[doc(no_inline)]
-pub use widget::*;
-
-/// A generic widget.
-///
-/// This is an alias of an `iced_native` element with a default `Renderer`.
-pub type Element<'a, Message> =
- iced_winit::Element<'a, Message, iced_wgpu::Renderer>;
diff --git a/src/native/executor.rs b/src/native/executor.rs
deleted file mode 100644
index 68a1d280..00000000
--- a/src/native/executor.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-//! Choose your preferred executor to power your application.
-pub use iced_winit::{executor::Null, Executor};
-use iced_winit::{executor::ThreadPool, futures};
-
-/// The default cross-platform executor.
-///
-/// - On native platforms, it will use a `ThreadPool`.
-/// - On the Web, it will use `wasm-bindgen-futures::spawn_local`.
-#[derive(Debug)]
-pub struct Default(ThreadPool);
-
-impl Executor for Default {
- fn new() -> Result<Self, futures::io::Error> {
- Ok(Default(ThreadPool::new()?))
- }
-
- fn spawn(
- &self,
- future: impl futures::Future<Output = ()> + Send + 'static,
- ) {
- self.0.spawn(future);
- }
-}
diff --git a/src/web.rs b/src/web.rs
deleted file mode 100644
index 31f1a6fc..00000000
--- a/src/web.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub use iced_web::*;
diff --git a/src/widget.rs b/src/widget.rs
new file mode 100644
index 00000000..7d3a1cef
--- /dev/null
+++ b/src/widget.rs
@@ -0,0 +1,60 @@
+//! Display information and interactive controls in your application.
+//!
+//! # Re-exports
+//! For convenience, the contents of this module are available at the root
+//! module. Therefore, you can directly type:
+//!
+//! ```
+//! use iced::{button, Button};
+//! ```
+//!
+//! # Stateful widgets
+//! Some widgets need to keep track of __local state__.
+//!
+//! These widgets have their own module with a `State` type. For instance, a
+//! [`TextInput`] has some [`text_input::State`].
+//!
+//! [`TextInput`]: text_input/struct.TextInput.html
+//! [`text_input::State`]: text_input/struct.State.html
+#[cfg(not(target_arch = "wasm32"))]
+mod platform {
+ pub use iced_wgpu::widget::*;
+
+ pub mod image {
+ //! Display images in your user interface.
+ pub use iced_winit::image::{Handle, Image};
+ }
+
+ pub mod svg {
+ //! Display vector graphics in your user interface.
+ pub use iced_winit::svg::{Handle, Svg};
+ }
+
+ pub use iced_winit::Text;
+
+ #[doc(no_inline)]
+ pub use {
+ button::Button, checkbox::Checkbox, container::Container, image::Image,
+ progress_bar::ProgressBar, radio::Radio, scrollable::Scrollable,
+ slider::Slider, svg::Svg, text_input::TextInput,
+ };
+
+ /// A container that distributes its contents vertically.
+ ///
+ /// This is an alias of an `iced_native` column with a default `Renderer`.
+ pub type Column<'a, Message> =
+ iced_winit::Column<'a, Message, iced_wgpu::Renderer>;
+
+ /// A container that distributes its contents horizontally.
+ ///
+ /// This is an alias of an `iced_native` row with a default `Renderer`.
+ pub type Row<'a, Message> =
+ iced_winit::Row<'a, Message, iced_wgpu::Renderer>;
+}
+
+#[cfg(target_arch = "wasm32")]
+mod platform {
+ pub use iced_web::widget::*;
+}
+
+pub use platform::*;