From 76698ff2b5753e637b14533650c0d28e681be3c5 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 1 Sep 2021 19:21:49 +0700 Subject: Make `Command` implementations platform-specific This allows us to introduce a platform-specific `Action` to both `iced_native` and `iced_web` and remove the `Clipboard` from `Application::update` to maintain purity. Additionally, this should let us implement further actions to let users query and modify the shell environment (e.g. window, clipboard, and more!) --- native/src/clipboard.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'native/src/clipboard.rs') diff --git a/native/src/clipboard.rs b/native/src/clipboard.rs index 081b4004..62dfc130 100644 --- a/native/src/clipboard.rs +++ b/native/src/clipboard.rs @@ -21,3 +21,20 @@ impl Clipboard for Null { fn write(&mut self, _contents: String) {} } + +pub enum Action { + Read(Box) -> T>), + Write(Box T>), +} + +impl Action { + pub fn map(self, f: impl Fn(T) -> A + 'static + Send + Sync) -> Action + where + T: 'static, + { + match self { + Self::Read(o) => Action::Read(Box::new(move |s| f(o(s)))), + Self::Write(o) => Action::Write(Box::new(move |s| f(o(s)))), + } + } +} -- cgit From c9711ff48fa1ad16365bc7eb37fa7153143bcee6 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 2 Sep 2021 13:46:01 +0700 Subject: Handle `clipboard::Action` in `iced_winit` shell --- native/src/clipboard.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'native/src/clipboard.rs') diff --git a/native/src/clipboard.rs b/native/src/clipboard.rs index 62dfc130..4d59d960 100644 --- a/native/src/clipboard.rs +++ b/native/src/clipboard.rs @@ -24,7 +24,7 @@ impl Clipboard for Null { pub enum Action { Read(Box) -> T>), - Write(Box T>), + Write(String), } impl Action { @@ -34,7 +34,7 @@ impl Action { { match self { Self::Read(o) => Action::Read(Box::new(move |s| f(o(s)))), - Self::Write(o) => Action::Write(Box::new(move |s| f(o(s)))), + Self::Write(content) => Action::Write(content), } } } -- cgit From 2c630809d403f7fa87c3230be031299e5fb3af17 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 13 Sep 2021 11:20:54 +0700 Subject: Write missing docs and `Debug` implementations for `native` --- native/src/clipboard.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'native/src/clipboard.rs') diff --git a/native/src/clipboard.rs b/native/src/clipboard.rs index 4d59d960..60703c31 100644 --- a/native/src/clipboard.rs +++ b/native/src/clipboard.rs @@ -1,4 +1,5 @@ //! Access the clipboard. +use std::fmt; /// A buffer for short-term storage and transfer within and between /// applications. @@ -22,12 +23,19 @@ impl Clipboard for Null { fn write(&mut self, _contents: String) {} } +/// A clipboard action to be performed by some [`Command`]. +/// +/// [`Command`]: crate::Command pub enum Action { + /// Read the clipboard and produce `T` with the result. Read(Box) -> T>), + + /// Write the given contents to the clipboard. Write(String), } impl Action { + /// Maps the output of a clipboard [`Action`] using the provided closure. pub fn map(self, f: impl Fn(T) -> A + 'static + Send + Sync) -> Action where T: 'static, @@ -38,3 +46,12 @@ impl Action { } } } + +impl fmt::Debug for Action { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Read(_) => write!(f, "Action::Read"), + Self::Write(_) => write!(f, "Action::Write"), + } + } +} -- cgit