summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-15 02:38:07 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-15 02:38:07 +0100
commitfeab96f323189ebae070a5d025531f86e436e21f (patch)
treebc15f73541151ef27e23ba1a908713b95c027d44 /examples
parente57668d6776d4354b6d3df049aee64be0dc8eda2 (diff)
downloadiced-feab96f323189ebae070a5d025531f86e436e21f.tar.gz
iced-feab96f323189ebae070a5d025531f86e436e21f.tar.bz2
iced-feab96f323189ebae070a5d025531f86e436e21f.zip
Add `push_maybe` to `Column` and `Row`
Diffstat (limited to 'examples')
-rw-r--r--examples/pane_grid/src/main.rs55
-rw-r--r--examples/qr_code/src/main.rs16
-rw-r--r--examples/screenshot/src/main.rs88
-rw-r--r--examples/toast/src/main.rs9
-rw-r--r--examples/tour/src/main.rs22
5 files changed, 95 insertions, 95 deletions
diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs
index 742dc344..39719420 100644
--- a/examples/pane_grid/src/main.rs
+++ b/examples/pane_grid/src/main.rs
@@ -276,7 +276,7 @@ fn view_content<'a>(
.on_press(message)
};
- let mut controls = column![
+ let controls = column![
button(
"Split horizontally",
Message::Split(pane_grid::Axis::Horizontal, pane),
@@ -286,15 +286,16 @@ fn view_content<'a>(
Message::Split(pane_grid::Axis::Vertical, pane),
)
]
- .spacing(5)
- .max_width(160);
-
- if total_panes > 1 && !is_pinned {
- controls = controls.push(
+ .push_maybe(if total_panes > 1 && !is_pinned {
+ Some(
button("Close", Message::Close(pane))
.style(theme::Button::Destructive),
- );
- }
+ )
+ } else {
+ None
+ })
+ .spacing(5)
+ .max_width(160);
let content = column![
text(format!("{}x{}", size.width, size.height)).size(24),
@@ -317,31 +318,31 @@ fn view_controls<'a>(
is_pinned: bool,
is_maximized: bool,
) -> Element<'a, Message> {
- let mut row = row![].spacing(5);
+ let row = row![].spacing(5).push_maybe(if total_panes > 1 {
+ let (content, message) = if is_maximized {
+ ("Restore", Message::Restore)
+ } else {
+ ("Maximize", Message::Maximize(pane))
+ };
- if total_panes > 1 {
- let toggle = {
- let (content, message) = if is_maximized {
- ("Restore", Message::Restore)
- } else {
- ("Maximize", Message::Maximize(pane))
- };
+ Some(
button(text(content).size(14))
.style(theme::Button::Secondary)
.padding(3)
- .on_press(message)
- };
-
- row = row.push(toggle);
- }
+ .on_press(message),
+ )
+ } else {
+ None
+ });
- let mut close = button(text("Close").size(14))
+ let close = button(text("Close").size(14))
.style(theme::Button::Destructive)
- .padding(3);
-
- if total_panes > 1 && !is_pinned {
- close = close.on_press(Message::Close(pane));
- }
+ .padding(3)
+ .on_press_maybe(if total_panes > 1 && !is_pinned {
+ Some(Message::Close(pane))
+ } else {
+ None
+ });
row.push(close).into()
}
diff --git a/examples/qr_code/src/main.rs b/examples/qr_code/src/main.rs
index 9f75eaf6..36f79a31 100644
--- a/examples/qr_code/src/main.rs
+++ b/examples/qr_code/src/main.rs
@@ -1,5 +1,6 @@
-use iced::widget::qr_code::{self, QRCode};
-use iced::widget::{column, container, pick_list, row, text, text_input};
+use iced::widget::{
+ column, container, pick_list, qr_code, row, text, text_input,
+};
use iced::{Alignment, Element, Length, Sandbox, Settings, Theme};
pub fn main() -> iced::Result {
@@ -65,15 +66,16 @@ impl Sandbox for QRGenerator {
.spacing(10)
.align_items(Alignment::Center);
- let mut content = column![title, input, choose_theme]
+ let content = column![title, input, choose_theme]
+ .push_maybe(
+ self.qr_code
+ .as_ref()
+ .map(|data| qr_code(data).cell_size(10)),
+ )
.width(700)
.spacing(20)
.align_items(Alignment::Center);
- if let Some(qr_code) = self.qr_code.as_ref() {
- content = content.push(QRCode::new(qr_code).cell_size(10));
- }
-
container(content)
.width(Length::Fill)
.height(Length::Fill)
diff --git a/examples/screenshot/src/main.rs b/examples/screenshot/src/main.rs
index 64aa1a7a..79749956 100644
--- a/examples/screenshot/src/main.rs
+++ b/examples/screenshot/src/main.rs
@@ -183,58 +183,60 @@ impl Application for Example {
.spacing(10)
.align_items(Alignment::Center);
- let mut crop_controls =
+ let crop_controls =
column![crop_origin_controls, crop_dimension_controls]
+ .push_maybe(
+ self.crop_error
+ .as_ref()
+ .map(|error| text(format!("Crop error! \n{error}"))),
+ )
.spacing(10)
.align_items(Alignment::Center);
- if let Some(crop_error) = &self.crop_error {
- crop_controls =
- crop_controls.push(text(format!("Crop error! \n{crop_error}")));
- }
+ let controls = {
+ let save_result =
+ self.saved_png_path.as_ref().map(
+ |png_result| match png_result {
+ Ok(path) => format!("Png saved as: {path:?}!"),
+ Err(PngError(error)) => {
+ format!("Png could not be saved due to:\n{}", error)
+ }
+ },
+ );
- let mut controls = column![
column![
- button(centered_text("Screenshot!"))
+ column![
+ button(centered_text("Screenshot!"))
+ .padding([10, 20, 10, 20])
+ .width(Length::Fill)
+ .on_press(Message::Screenshot),
+ if !self.png_saving {
+ button(centered_text("Save as png")).on_press_maybe(
+ self.screenshot.is_some().then(|| Message::Png),
+ )
+ } else {
+ button(centered_text("Saving..."))
+ .style(theme::Button::Secondary)
+ }
+ .style(theme::Button::Secondary)
.padding([10, 20, 10, 20])
.width(Length::Fill)
- .on_press(Message::Screenshot),
- if !self.png_saving {
- button(centered_text("Save as png")).on_press_maybe(
- self.screenshot.is_some().then(|| Message::Png),
- )
- } else {
- button(centered_text("Saving..."))
- .style(theme::Button::Secondary)
- }
- .style(theme::Button::Secondary)
- .padding([10, 20, 10, 20])
- .width(Length::Fill)
- ]
- .spacing(10),
- column![
- crop_controls,
- button(centered_text("Crop"))
- .on_press(Message::Crop)
- .style(theme::Button::Destructive)
- .padding([10, 20, 10, 20])
- .width(Length::Fill),
+ ]
+ .spacing(10),
+ column![
+ crop_controls,
+ button(centered_text("Crop"))
+ .on_press(Message::Crop)
+ .style(theme::Button::Destructive)
+ .padding([10, 20, 10, 20])
+ .width(Length::Fill),
+ ]
+ .spacing(10)
+ .align_items(Alignment::Center),
]
- .spacing(10)
- .align_items(Alignment::Center),
- ]
- .spacing(40);
-
- if let Some(png_result) = &self.saved_png_path {
- let msg = match png_result {
- Ok(path) => format!("Png saved as: {path:?}!"),
- Err(PngError(error)) => {
- format!("Png could not be saved due to:\n{}", error)
- }
- };
-
- controls = controls.push(text(msg));
- }
+ .push_maybe(save_result.map(text))
+ .spacing(40)
+ };
let side_content = container(controls)
.align_x(alignment::Horizontal::Center)
diff --git a/examples/toast/src/main.rs b/examples/toast/src/main.rs
index ae947acb..c1d29193 100644
--- a/examples/toast/src/main.rs
+++ b/examples/toast/src/main.rs
@@ -111,11 +111,10 @@ impl Application for App {
column![text(title).size(14), content].spacing(5)
};
- let mut add_toast = button("Add Toast");
-
- if !self.editing.body.is_empty() && !self.editing.title.is_empty() {
- add_toast = add_toast.on_press(Message::Add);
- }
+ let add_toast = button("Add Toast").on_press_maybe(
+ (!self.editing.body.is_empty() && !self.editing.title.is_empty())
+ .then_some(Message::Add),
+ );
let content = container(
column![
diff --git a/examples/tour/src/main.rs b/examples/tour/src/main.rs
index 509f46e7..588abbe8 100644
--- a/examples/tour/src/main.rs
+++ b/examples/tour/src/main.rs
@@ -56,22 +56,18 @@ impl Sandbox for Tour {
fn view(&self) -> Element<Message> {
let Tour { steps, .. } = self;
- let mut controls = row![];
-
- if steps.has_previous() {
- controls = controls.push(
+ let controls = row![]
+ .push_maybe(steps.has_previous().then(|| {
button("Back")
.on_press(Message::BackPressed)
- .style(theme::Button::Secondary),
+ .style(theme::Button::Secondary)
+ }))
+ .push(horizontal_space())
+ .push_maybe(
+ steps
+ .can_continue()
+ .then(|| button("Next").on_press(Message::NextPressed)),
);
- }
-
- controls = controls.push(horizontal_space());
-
- if steps.can_continue() {
- controls =
- controls.push(button("Next").on_press(Message::NextPressed));
- }
let content: Element<_> = column![
steps.view(self.debug).map(Message::StepMessage),