summaryrefslogtreecommitdiffstats
path: root/web/src/widget
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-09-14 20:54:50 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-09-14 20:54:50 +0200
commit27ac85a9d98474904c422a891e54888376dec00a (patch)
treee268525f5bdb3e9631ba1156aaa6b02561dd03d4 /web/src/widget
parenta97401aed2a173260a4abfdb65a77975ce6c0f01 (diff)
downloadiced-27ac85a9d98474904c422a891e54888376dec00a.tar.gz
iced-27ac85a9d98474904c422a891e54888376dec00a.tar.bz2
iced-27ac85a9d98474904c422a891e54888376dec00a.zip
Draft web runtime and widgets
Diffstat (limited to 'web/src/widget')
-rw-r--r--web/src/widget/button.rs16
-rw-r--r--web/src/widget/checkbox.rs14
-rw-r--r--web/src/widget/column.rs48
-rw-r--r--web/src/widget/image.rs11
-rw-r--r--web/src/widget/radio.rs14
-rw-r--r--web/src/widget/row.rs36
-rw-r--r--web/src/widget/slider.rs16
-rw-r--r--web/src/widget/text.rs13
8 files changed, 168 insertions, 0 deletions
diff --git a/web/src/widget/button.rs b/web/src/widget/button.rs
new file mode 100644
index 00000000..1f117d82
--- /dev/null
+++ b/web/src/widget/button.rs
@@ -0,0 +1,16 @@
+use crate::{Element, Widget};
+
+pub use iced::button::{Class, State};
+
+pub type Button<'a, Message> = iced::Button<'a, Message>;
+
+impl<'a, Message> Widget<Message> for Button<'a, Message> {}
+
+impl<'a, Message> From<Button<'a, Message>> for Element<'a, Message>
+where
+ Message: 'static,
+{
+ fn from(button: Button<'a, Message>) -> Element<'a, Message> {
+ Element::new(button)
+ }
+}
diff --git a/web/src/widget/checkbox.rs b/web/src/widget/checkbox.rs
new file mode 100644
index 00000000..a231d801
--- /dev/null
+++ b/web/src/widget/checkbox.rs
@@ -0,0 +1,14 @@
+use crate::{Color, Element, Widget};
+
+pub type Checkbox<Message> = iced::Checkbox<Color, Message>;
+
+impl<Message> Widget<Message> for Checkbox<Message> {}
+
+impl<'a, Message> From<Checkbox<Message>> for Element<'a, Message>
+where
+ Message: 'static,
+{
+ fn from(checkbox: Checkbox<Message>) -> Element<'a, Message> {
+ Element::new(checkbox)
+ }
+}
diff --git a/web/src/widget/column.rs b/web/src/widget/column.rs
new file mode 100644
index 00000000..84068ce6
--- /dev/null
+++ b/web/src/widget/column.rs
@@ -0,0 +1,48 @@
+use crate::{Align, Element, Widget};
+
+pub struct Column<'a, Message> {
+ children: Vec<Element<'a, Message>>,
+}
+
+impl<'a, Message> Column<'a, Message> {
+ pub fn new() -> Self {
+ Self {
+ children: Vec::new(),
+ }
+ }
+
+ pub fn spacing(self, _spacing: u16) -> Self {
+ self
+ }
+
+ pub fn padding(self, _padding: u16) -> Self {
+ self
+ }
+
+ pub fn max_width(self, _max_width: u16) -> Self {
+ self
+ }
+
+ pub fn align_items(self, _align: Align) -> Self {
+ self
+ }
+
+ pub fn push<E>(mut self, element: E) -> Self
+ where
+ E: Into<Element<'a, Message>>,
+ {
+ self.children.push(element.into());
+ self
+ }
+}
+
+impl<'a, Message> Widget<Message> for Column<'a, Message> {}
+
+impl<'a, Message> From<Column<'a, Message>> for Element<'a, Message>
+where
+ Message: 'static,
+{
+ fn from(column: Column<'a, Message>) -> Element<'a, Message> {
+ Element::new(column)
+ }
+}
diff --git a/web/src/widget/image.rs b/web/src/widget/image.rs
new file mode 100644
index 00000000..ac144fd8
--- /dev/null
+++ b/web/src/widget/image.rs
@@ -0,0 +1,11 @@
+use crate::{Element, Widget};
+
+pub type Image<'a> = iced::Image<&'a str>;
+
+impl<'a, Message> Widget<Message> for Image<'a> {}
+
+impl<'a, Message> From<Image<'a>> for Element<'a, Message> {
+ fn from(image: Image<'a>) -> Element<'a, Message> {
+ Element::new(image)
+ }
+}
diff --git a/web/src/widget/radio.rs b/web/src/widget/radio.rs
new file mode 100644
index 00000000..0c28b46f
--- /dev/null
+++ b/web/src/widget/radio.rs
@@ -0,0 +1,14 @@
+use crate::{Color, Element, Widget};
+
+pub type Radio<Message> = iced::Radio<Color, Message>;
+
+impl<Message> Widget<Message> for Radio<Message> {}
+
+impl<'a, Message> From<Radio<Message>> for Element<'a, Message>
+where
+ Message: 'static,
+{
+ fn from(radio: Radio<Message>) -> Element<'a, Message> {
+ Element::new(radio)
+ }
+}
diff --git a/web/src/widget/row.rs b/web/src/widget/row.rs
new file mode 100644
index 00000000..fc474ec3
--- /dev/null
+++ b/web/src/widget/row.rs
@@ -0,0 +1,36 @@
+use crate::{Element, Widget};
+
+pub struct Row<'a, Message> {
+ children: Vec<Element<'a, Message>>,
+}
+
+impl<'a, Message> Row<'a, Message> {
+ pub fn new() -> Self {
+ Self {
+ children: Vec::new(),
+ }
+ }
+
+ pub fn spacing(self, _spacing: u16) -> Self {
+ self
+ }
+
+ pub fn push<E>(mut self, element: E) -> Self
+ where
+ E: Into<Element<'a, Message>>,
+ {
+ self.children.push(element.into());
+ self
+ }
+}
+
+impl<'a, Message> Widget<Message> for Row<'a, Message> {}
+
+impl<'a, Message> From<Row<'a, Message>> for Element<'a, Message>
+where
+ Message: 'static,
+{
+ fn from(column: Row<'a, Message>) -> Element<'a, Message> {
+ Element::new(column)
+ }
+}
diff --git a/web/src/widget/slider.rs b/web/src/widget/slider.rs
new file mode 100644
index 00000000..9c83befb
--- /dev/null
+++ b/web/src/widget/slider.rs
@@ -0,0 +1,16 @@
+use crate::{Element, Widget};
+
+pub use iced::slider::State;
+
+pub type Slider<'a, Message> = iced::Slider<'a, Message>;
+
+impl<'a, Message> Widget<Message> for Slider<'a, Message> {}
+
+impl<'a, Message> From<Slider<'a, Message>> for Element<'a, Message>
+where
+ Message: 'static,
+{
+ fn from(slider: Slider<'a, Message>) -> Element<'a, Message> {
+ Element::new(slider)
+ }
+}
diff --git a/web/src/widget/text.rs b/web/src/widget/text.rs
new file mode 100644
index 00000000..0c1f75b6
--- /dev/null
+++ b/web/src/widget/text.rs
@@ -0,0 +1,13 @@
+use crate::{Color, Element, Widget};
+
+pub use iced::text::HorizontalAlignment;
+
+pub type Text = iced::Text<Color>;
+
+impl<'a, Message> Widget<Message> for Text {}
+
+impl<'a, Message> From<Text> for Element<'a, Message> {
+ fn from(text: Text) -> Element<'a, Message> {
+ Element::new(text)
+ }
+}