From 7cea7371150e6de28032827519936008592f112d Mon Sep 17 00:00:00 2001
From: Héctor Ramón Jiménez <hector0193@gmail.com>
Date: Mon, 20 Jan 2020 06:27:01 +0100
Subject: Package examples and remove `dev-dependencies`

---
 examples/events/Cargo.toml  | 10 ++++++
 examples/events/src/main.rs | 86 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 96 insertions(+)
 create mode 100644 examples/events/Cargo.toml
 create mode 100644 examples/events/src/main.rs

(limited to 'examples/events')

diff --git a/examples/events/Cargo.toml b/examples/events/Cargo.toml
new file mode 100644
index 00000000..f883075f
--- /dev/null
+++ b/examples/events/Cargo.toml
@@ -0,0 +1,10 @@
+[package]
+name = "events"
+version = "0.1.0"
+authors = ["Héctor Ramón Jiménez <hector0193@gmail.com>"]
+edition = "2018"
+publish = false
+
+[dependencies]
+iced = { path = "../.." }
+iced_native = { path = "../../native" }
diff --git a/examples/events/src/main.rs b/examples/events/src/main.rs
new file mode 100644
index 00000000..0c9dca05
--- /dev/null
+++ b/examples/events/src/main.rs
@@ -0,0 +1,86 @@
+use iced::{
+    executor, Align, Application, Checkbox, Column, Command, Container,
+    Element, Length, Settings, Subscription, Text,
+};
+
+pub fn main() {
+    Events::run(Settings::default())
+}
+
+#[derive(Debug, Default)]
+struct Events {
+    last: Vec<iced_native::Event>,
+    enabled: bool,
+}
+
+#[derive(Debug, Clone)]
+enum Message {
+    EventOccurred(iced_native::Event),
+    Toggled(bool),
+}
+
+impl Application for Events {
+    type Executor = executor::Default;
+    type Message = Message;
+
+    fn new() -> (Events, Command<Message>) {
+        (Events::default(), Command::none())
+    }
+
+    fn title(&self) -> String {
+        String::from("Events - Iced")
+    }
+
+    fn update(&mut self, message: Message) -> Command<Message> {
+        match message {
+            Message::EventOccurred(event) => {
+                self.last.push(event);
+
+                if self.last.len() > 5 {
+                    let _ = self.last.remove(0);
+                }
+            }
+            Message::Toggled(enabled) => {
+                self.enabled = enabled;
+            }
+        };
+
+        Command::none()
+    }
+
+    fn subscription(&self) -> Subscription<Message> {
+        if self.enabled {
+            iced_native::subscription::events().map(Message::EventOccurred)
+        } else {
+            Subscription::none()
+        }
+    }
+
+    fn view(&mut self) -> Element<Message> {
+        let events = self.last.iter().fold(
+            Column::new().spacing(10),
+            |column, event| {
+                column.push(Text::new(format!("{:?}", event)).size(40))
+            },
+        );
+
+        let toggle = Checkbox::new(
+            self.enabled,
+            "Listen to runtime events",
+            Message::Toggled,
+        );
+
+        let content = Column::new()
+            .align_items(Align::Center)
+            .spacing(20)
+            .push(events)
+            .push(toggle);
+
+        Container::new(content)
+            .width(Length::Fill)
+            .height(Length::Fill)
+            .center_x()
+            .center_y()
+            .into()
+    }
+}
-- 
cgit