aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpml68 <contact@pml68.dev>2025-05-13 00:47:45 +0200
committerpml68 <contact@pml68.dev>2025-05-13 00:54:08 +0200
commit0ad1bef11d3180e569d84ab504343db7fcc5452a (patch)
treed67e52bf44723d17dfdc657be70ccbb7ee1ba71a
parentfeat: add `backdrop` method to `Dialog` (diff)
downloadiced_dialog-0ad1bef11d3180e569d84ab504343db7fcc5452a.tar.gz
feat: add example code to documentation and README
-rw-r--r--README.md67
-rw-r--r--example/src/main.rs2
-rw-r--r--src/lib.rs64
3 files changed, 129 insertions, 4 deletions
diff --git a/README.md b/README.md
index 0f1c11c..1712ee2 100644
--- a/README.md
+++ b/README.md
@@ -5,9 +5,72 @@ Custom dialog for [`iced`](https://iced.rs)
It's mostly the dialog from @frgp42's [Fluent Iced Gallery](https://github.com/frgp42/fluent_iced_gallery), but made into a "widget"
## Example
-See the [/example](/example) directory.
-You can run it like this:
+```rust
+use iced::{
+ Element, Length, Task,
+ widget::{button, center, column, text},
+};
+use iced_dialog::dialog;
+
+#[derive(Default)]
+struct State {
+ is_open: bool,
+ action_text: String,
+}
+
+#[derive(Debug, Clone)]
+enum Message {
+ OpenDialog,
+ Saved,
+ Cancelled,
+}
+
+fn main() -> iced::Result {
+ iced::run(State::update, State::view)
+}
+
+impl State {
+ fn update(&mut self, message: Message) -> Task<Message> {
+ match message {
+ Message::OpenDialog => self.is_open = true,
+ Message::Saved => {
+ self.action_text = "User saved their work".to_owned();
+ self.is_open = false;
+ }
+ Message::Cancelled => {
+ self.action_text = "User cancelled the dialog".to_owned();
+ self.is_open = false;
+ }
+ }
+ Task::none()
+ }
+
+ fn view(&self) -> Element<'_, Message> {
+ let base = center(
+ column![
+ text(&self.action_text),
+ button("Open Dialog").on_press(Message::OpenDialog)
+ ]
+ .spacing(14.0),
+ )
+ .width(Length::Fill)
+ .height(Length::Fill);
+
+ let dialog_content = text("Do you want to save?");
+
+ dialog(self.is_open, base, dialog_content)
+ .title("Save")
+ .push_button(iced_dialog::button("Save", Message::Saved))
+ .push_button(iced_dialog::button("Cancel", Message::Cancelled))
+ .width(350)
+ .height(234)
+ .into()
+ }
+}
+```
+
+You can also run the above example:
```bash
cargo run -p example
```
diff --git a/example/src/main.rs b/example/src/main.rs
index 8d2fcc3..659411d 100644
--- a/example/src/main.rs
+++ b/example/src/main.rs
@@ -1,5 +1,5 @@
use iced::{
- Element, Length, Task, color,
+ Element, Length, Task,
widget::{button, center, column, text},
};
use iced_dialog::dialog;
diff --git a/src/lib.rs b/src/lib.rs
index 0c82ebb..92acde3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,7 +1,69 @@
//! Custom dialog for `iced`
//!
//! # Example
-//! See [here](https://github.com/pml68/iced_dialog/tree/master/example)
+//! ```no_run
+//! use iced::{
+//! Element, Length, Task,
+//! widget::{button, center, column, text},
+//! };
+//! use iced_dialog::dialog;
+//!
+//! #[derive(Default)]
+//! struct State {
+//! is_open: bool,
+//! action_text: String,
+//! }
+//!
+//! #[derive(Debug, Clone)]
+//! enum Message {
+//! OpenDialog,
+//! Saved,
+//! Cancelled,
+//! }
+//!
+//! fn main() -> iced::Result {
+//! iced::run(State::update, State::view)
+//! }
+//!
+//! impl State {
+//! fn update(&mut self, message: Message) -> Task<Message> {
+//! match message {
+//! Message::OpenDialog => self.is_open = true,
+//! Message::Saved => {
+//! self.action_text = "User saved their work".to_owned();
+//! self.is_open = false;
+//! }
+//! Message::Cancelled => {
+//! self.action_text = "User cancelled the dialog".to_owned();
+//! self.is_open = false;
+//! }
+//! }
+//! Task::none()
+//! }
+//!
+//! fn view(&self) -> Element<'_, Message> {
+//! let base = center(
+//! column![
+//! text(&self.action_text),
+//! button("Open Dialog").on_press(Message::OpenDialog)
+//! ]
+//! .spacing(14.0),
+//! )
+//! .width(Length::Fill)
+//! .height(Length::Fill);
+//!
+//! let dialog_content = text("Do you want to save?");
+//!
+//! dialog(self.is_open, base, dialog_content)
+//! .title("Save")
+//! .push_button(iced_dialog::button("Save", Message::Saved))
+//! .push_button(iced_dialog::button("Cancel", Message::Cancelled))
+//! .width(350)
+//! .height(234)
+//! .into()
+//! }
+//! }
+//! ```
pub mod dialog;
pub use dialog::Dialog;
use iced_core as core;