summaryrefslogtreecommitdiffstats
path: root/examples/pure/game_of_life
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-14 01:47:55 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-05-14 01:56:32 +0200
commit664251f3f5c7b76f69a97683af1468094bba887f (patch)
treef43a495036ed117ce5dbb479c62652d872a6d273 /examples/pure/game_of_life
parent5de337f214530faab1d5fe47784afd7006c3f7f0 (diff)
downloadiced-664251f3f5c7b76f69a97683af1468094bba887f.tar.gz
iced-664251f3f5c7b76f69a97683af1468094bba887f.tar.bz2
iced-664251f3f5c7b76f69a97683af1468094bba887f.zip
Draft first-class `Theme` support
RFC: https://github.com/iced-rs/rfcs/pull/6
Diffstat (limited to 'examples/pure/game_of_life')
-rw-r--r--examples/pure/game_of_life/src/main.rs17
-rw-r--r--examples/pure/game_of_life/src/style.rs69
2 files changed, 14 insertions, 72 deletions
diff --git a/examples/pure/game_of_life/src/main.rs b/examples/pure/game_of_life/src/main.rs
index a3164701..a3e46888 100644
--- a/examples/pure/game_of_life/src/main.rs
+++ b/examples/pure/game_of_life/src/main.rs
@@ -9,6 +9,7 @@ use iced::pure::{
button, checkbox, column, container, pick_list, row, slider, text,
};
use iced::pure::{Application, Element};
+use iced::theme::{self, Theme};
use iced::time;
use iced::window;
use iced::{Alignment, Color, Command, Length, Settings, Subscription};
@@ -52,6 +53,7 @@ enum Message {
impl Application for GameOfLife {
type Message = Message;
+ type Theme = Theme;
type Executor = executor::Default;
type Flags = ();
@@ -168,10 +170,13 @@ fn view_controls<'a>(
.spacing(10)
.push(
button(if is_playing { "Pause" } else { "Play" })
- .on_press(Message::TogglePlayback)
- .style(style::Button),
+ .on_press(Message::TogglePlayback),
)
- .push(button("Next").on_press(Message::Next).style(style::Button));
+ .push(
+ button("Next")
+ .on_press(Message::Next)
+ .style(theme::Button::Secondary),
+ );
let speed_controls = row()
.width(Length::Fill)
@@ -201,7 +206,11 @@ fn view_controls<'a>(
.text_size(16)
.style(style::PickList),
)
- .push(button("Clear").on_press(Message::Clear).style(style::Clear))
+ .push(
+ button("Clear")
+ .on_press(Message::Clear)
+ .style(theme::Button::Destructive),
+ )
.into()
}
diff --git a/examples/pure/game_of_life/src/style.rs b/examples/pure/game_of_life/src/style.rs
index 1a64cf4a..dbd70c26 100644
--- a/examples/pure/game_of_life/src/style.rs
+++ b/examples/pure/game_of_life/src/style.rs
@@ -1,4 +1,4 @@
-use iced::{button, container, pick_list, slider, Background, Color};
+use iced::{container, pick_list, slider, Color};
const ACTIVE: Color = Color::from_rgb(
0x72 as f32 / 255.0,
@@ -6,12 +6,6 @@ const ACTIVE: Color = Color::from_rgb(
0xDA as f32 / 255.0,
);
-const DESTRUCTIVE: Color = Color::from_rgb(
- 0xC0 as f32 / 255.0,
- 0x47 as f32 / 255.0,
- 0x47 as f32 / 255.0,
-);
-
const HOVERED: Color = Color::from_rgb(
0x67 as f32 / 255.0,
0x7B as f32 / 255.0,
@@ -35,67 +29,6 @@ impl container::StyleSheet for Container {
}
}
-pub struct Button;
-
-impl button::StyleSheet for Button {
- fn active(&self) -> button::Style {
- button::Style {
- background: Some(Background::Color(ACTIVE)),
- border_radius: 3.0,
- text_color: Color::WHITE,
- ..button::Style::default()
- }
- }
-
- fn hovered(&self) -> button::Style {
- button::Style {
- background: Some(Background::Color(HOVERED)),
- text_color: Color::WHITE,
- ..self.active()
- }
- }
-
- fn pressed(&self) -> button::Style {
- button::Style {
- border_width: 1.0,
- border_color: Color::WHITE,
- ..self.hovered()
- }
- }
-}
-
-pub struct Clear;
-
-impl button::StyleSheet for Clear {
- fn active(&self) -> button::Style {
- button::Style {
- background: Some(Background::Color(DESTRUCTIVE)),
- border_radius: 3.0,
- text_color: Color::WHITE,
- ..button::Style::default()
- }
- }
-
- fn hovered(&self) -> button::Style {
- button::Style {
- background: Some(Background::Color(Color {
- a: 0.5,
- ..DESTRUCTIVE
- })),
- text_color: Color::WHITE,
- ..self.active()
- }
- }
-
- fn pressed(&self) -> button::Style {
- button::Style {
- border_width: 1.0,
- border_color: Color::WHITE,
- ..self.hovered()
- }
- }
-}
-
pub struct Slider;
impl slider::StyleSheet for Slider {