summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-25 14:17:13 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-25 14:17:13 +0100
commitd70021fa68b556e20638f29e2e303f6d156afdb6 (patch)
treeddc0f00151b1ec71610e60045812493153788632 /src
parente72b5ceeb8c6461a34e85909a48debf46505d00a (diff)
downloadiced-d70021fa68b556e20638f29e2e303f6d156afdb6.tar.gz
iced-d70021fa68b556e20638f29e2e303f6d156afdb6.tar.bz2
iced-d70021fa68b556e20638f29e2e303f6d156afdb6.zip
Allow `Application` configuration with `Settings`
Diffstat (limited to 'src')
-rw-r--r--src/application.rs10
-rw-r--r--src/lib.rs3
-rw-r--r--src/sandbox.rs10
-rw-r--r--src/settings.rs43
4 files changed, 56 insertions, 10 deletions
diff --git a/src/application.rs b/src/application.rs
index f6d3fb90..a4d20e68 100644
--- a/src/application.rs
+++ b/src/application.rs
@@ -1,4 +1,4 @@
-use crate::{Command, Element};
+use crate::{Command, Element, Settings};
/// An interactive cross-platform application.
///
@@ -19,10 +19,10 @@ use crate::{Command, Element};
/// before](index.html#overview). We just need to fill in the gaps:
///
/// ```no_run
-/// use iced::{button, Application, Button, Column, Command, Element, Text};
+/// use iced::{button, Application, Button, Column, Command, Element, Settings, Text};
///
/// pub fn main() {
-/// Counter::run()
+/// Counter::run(Settings::default())
/// }
///
/// #[derive(Default)]
@@ -132,12 +132,12 @@ pub trait Application: Sized {
/// It should probably be that last thing you call in your `main` function.
///
/// [`Application`]: trait.Application.html
- fn run()
+ fn run(settings: Settings)
where
Self: 'static,
{
#[cfg(not(target_arch = "wasm32"))]
- <Instance<Self> as iced_winit::Application>::run();
+ <Instance<Self> as iced_winit::Application>::run(settings.into());
#[cfg(target_arch = "wasm32")]
<Instance<Self> as iced_web::Application>::run();
diff --git a/src/lib.rs b/src/lib.rs
index 1d79269b..cb491821 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -185,6 +185,9 @@ mod application;
mod platform;
mod sandbox;
+pub mod settings;
+
pub use application::Application;
pub use platform::*;
pub use sandbox::Sandbox;
+pub use settings::Settings;
diff --git a/src/sandbox.rs b/src/sandbox.rs
index 60e3be14..acf7f5e0 100644
--- a/src/sandbox.rs
+++ b/src/sandbox.rs
@@ -1,4 +1,4 @@
-use crate::{Application, Command, Element};
+use crate::{Application, Command, Element, Settings};
/// A sandboxed [`Application`].
///
@@ -19,10 +19,10 @@ use crate::{Application, Command, Element};
/// to remove the use of [`Command`]:
///
/// ```no_run
-/// use iced::{button, Button, Column, Element, Sandbox, Text};
+/// use iced::{button, Button, Column, Element, Sandbox, Settings, Text};
///
/// pub fn main() {
-/// Counter::run()
+/// Counter::run(Settings::default())
/// }
///
/// #[derive(Default)]
@@ -121,11 +121,11 @@ pub trait Sandbox {
/// It should probably be that last thing you call in your `main` function.
///
/// [`Sandbox`]: trait.Sandbox.html
- fn run()
+ fn run(settings: Settings)
where
Self: 'static + Sized,
{
- <Self as Application>::run()
+ <Self as Application>::run(settings)
}
}
diff --git a/src/settings.rs b/src/settings.rs
new file mode 100644
index 00000000..2556c51b
--- /dev/null
+++ b/src/settings.rs
@@ -0,0 +1,43 @@
+//! Configure your application.
+
+/// The settings of an application.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
+pub struct Settings {
+ /// The [`Window`] settings.
+ ///
+ /// They will be ignored on the Web.
+ ///
+ /// [`Window`]: struct.Window.html
+ pub window: Window,
+}
+
+/// The window settings of an application.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct Window {
+ /// The size of the window.
+ pub size: (u32, u32),
+
+ /// Whether the window should be resizable or not.
+ pub resizable: bool,
+}
+
+impl Default for Window {
+ fn default() -> Window {
+ Window {
+ size: (1024, 768),
+ resizable: true,
+ }
+ }
+}
+
+#[cfg(not(target_arch = "wasm32"))]
+impl From<Settings> for iced_winit::Settings {
+ fn from(settings: Settings) -> iced_winit::Settings {
+ iced_winit::Settings {
+ window: iced_winit::settings::Window {
+ size: settings.window.size,
+ resizable: settings.window.resizable,
+ },
+ }
+ }
+}