summaryrefslogtreecommitdiffstats
path: root/examples/checkbox
diff options
context:
space:
mode:
authorLibravatar Casper Storm <casper.storm@lich.io>2023-02-16 14:13:04 +0100
committerLibravatar Casper Storm <casper.storm@lich.io>2023-02-16 14:13:04 +0100
commit4fb0be179359097db4aaf6d88dff1367201727dd (patch)
tree00cd3cf510973b22137ca34ff237c307460503c7 /examples/checkbox
parent0cb72f69716adc82ad85a0ee7120edb6e653b0c0 (diff)
downloadiced-4fb0be179359097db4aaf6d88dff1367201727dd.tar.gz
iced-4fb0be179359097db4aaf6d88dff1367201727dd.tar.bz2
iced-4fb0be179359097db4aaf6d88dff1367201727dd.zip
Added the ability to change checkbox icon
Diffstat (limited to 'examples/checkbox')
-rw-r--r--examples/checkbox/Cargo.toml9
-rw-r--r--examples/checkbox/README.md12
-rw-r--r--examples/checkbox/fonts/icons.ttfbin0 -> 1272 bytes
-rw-r--r--examples/checkbox/src/main.rs63
4 files changed, 84 insertions, 0 deletions
diff --git a/examples/checkbox/Cargo.toml b/examples/checkbox/Cargo.toml
new file mode 100644
index 00000000..dde8f910
--- /dev/null
+++ b/examples/checkbox/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "checkbox"
+version = "0.1.0"
+authors = ["Casper Rogild Storm<casper@rogildstorm.com>"]
+edition = "2021"
+publish = false
+
+[dependencies]
+iced = { path = "../.." }
diff --git a/examples/checkbox/README.md b/examples/checkbox/README.md
new file mode 100644
index 00000000..b7f85684
--- /dev/null
+++ b/examples/checkbox/README.md
@@ -0,0 +1,12 @@
+## Checkbox
+
+A box that can be checked.
+
+The __[`main`]__ file contains all the code of the example.
+
+You can run it with `cargo run`:
+```
+cargo run --package pick_list
+```
+
+[`main`]: src/main.rs
diff --git a/examples/checkbox/fonts/icons.ttf b/examples/checkbox/fonts/icons.ttf
new file mode 100644
index 00000000..a2046844
--- /dev/null
+++ b/examples/checkbox/fonts/icons.ttf
Binary files differ
diff --git a/examples/checkbox/src/main.rs b/examples/checkbox/src/main.rs
new file mode 100644
index 00000000..09950bb8
--- /dev/null
+++ b/examples/checkbox/src/main.rs
@@ -0,0 +1,63 @@
+use iced::widget::{checkbox, column, container};
+use iced::{Element, Font, Length, Sandbox, Settings};
+
+const ICON_FONT: Font = Font::External {
+ name: "Icons",
+ bytes: include_bytes!("../fonts/icons.ttf"),
+};
+
+pub fn main() -> iced::Result {
+ Example::run(Settings::default())
+}
+
+#[derive(Default)]
+struct Example {
+ default_checkbox: bool,
+ custom_checkbox: bool,
+}
+
+#[derive(Debug, Clone, Copy)]
+enum Message {
+ DefaultChecked(bool),
+ CustomChecked(bool),
+}
+
+impl Sandbox for Example {
+ type Message = Message;
+
+ fn new() -> Self {
+ Default::default()
+ }
+
+ fn title(&self) -> String {
+ String::from("Checkbox - Iced")
+ }
+
+ fn update(&mut self, message: Message) {
+ match message {
+ Message::DefaultChecked(value) => self.default_checkbox = value,
+ Message::CustomChecked(value) => self.custom_checkbox = value,
+ }
+ }
+
+ fn view(&self) -> Element<Message> {
+ let default_checkbox =
+ checkbox("Default", self.default_checkbox, Message::DefaultChecked);
+ let custom_checkbox =
+ checkbox("Custom", self.custom_checkbox, Message::CustomChecked)
+ .icon(checkbox::Icon {
+ font: ICON_FONT,
+ code_point: '\u{e901}',
+ size: None,
+ });
+
+ let content = column![default_checkbox, custom_checkbox].spacing(22);
+
+ container(content)
+ .width(Length::Fill)
+ .height(Length::Fill)
+ .center_x()
+ .center_y()
+ .into()
+ }
+}