From 5077f1dc6a6aca5ab84dd89296fb70489393cf57 Mon Sep 17 00:00:00 2001 From: hatoo Date: Sat, 30 Nov 2019 21:32:46 +0900 Subject: Add platform specific settings --- src/settings/mod.rs | 63 +++++++++++++++++++++++++++++++++++++++++++++ src/settings/not_windows.rs | 14 ++++++++++ src/settings/windows.rs | 21 +++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 src/settings/mod.rs create mode 100644 src/settings/not_windows.rs create mode 100644 src/settings/windows.rs (limited to 'src/settings') diff --git a/src/settings/mod.rs b/src/settings/mod.rs new file mode 100644 index 00000000..d64cfa13 --- /dev/null +++ b/src/settings/mod.rs @@ -0,0 +1,63 @@ +//! Configure your application. + +#[cfg(target_os = "windows")] +#[path = "windows.rs"] +pub mod platform; + +#[cfg(not(target_os = "windows"))] +#[path = "not_windows.rs"] +pub mod platform; + +pub use platform::PlatformSpecific; + +/// 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, + + /// Whether the window should have a border, a title bar, etc. + pub decorations: bool, + + /// Platform specific Setting. + pub platform_specific: PlatformSpecific, +} + +impl Default for Window { + fn default() -> Window { + Window { + size: (1024, 768), + resizable: true, + decorations: true, + platform_specific: Default::default(), + } + } +} + +#[cfg(not(target_arch = "wasm32"))] +impl From 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, + decorations: settings.window.decorations, + platform_specific: settings.window.platform_specific.into(), + }, + } + } +} diff --git a/src/settings/not_windows.rs b/src/settings/not_windows.rs new file mode 100644 index 00000000..1ae14c7f --- /dev/null +++ b/src/settings/not_windows.rs @@ -0,0 +1,14 @@ +#![cfg(not(target_os = "windows"))] +//! Platform specific settings for not Windows. + +/// The platform specific window settings of an application. +#[cfg(not(target_os = "windows"))] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub struct PlatformSpecific {} + +#[cfg(not(target_os = "windows"))] +impl From for iced_winit::settings::PlatformSpecific { + fn from(_: PlatformSpecific) -> iced_winit::settings::PlatformSpecific { + iced_winit::settings::PlatformSpecific {} + } +} diff --git a/src/settings/windows.rs b/src/settings/windows.rs new file mode 100644 index 00000000..0372111f --- /dev/null +++ b/src/settings/windows.rs @@ -0,0 +1,21 @@ +#![cfg(target_os = "windows")] +//! Platform specific settings for Windows. + +/// The platform specific window settings of an application. +#[cfg(target_os = "windows")] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub struct PlatformSpecific { + /// Parent Window + pub parent: Option, +} + +#[cfg(target_os = "windows")] +impl From for iced_winit::settings::PlatformSpecific { + fn from( + platform_specific: PlatformSpecific, + ) -> iced_winit::settings::PlatformSpecific { + iced_winit::settings::PlatformSpecific { + parent: platform_specific.parent, + } + } +} -- cgit