summaryrefslogtreecommitdiffstats
path: root/core/src/widget.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-09-14 19:16:06 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-09-14 19:16:06 +0200
commita97401aed2a173260a4abfdb65a77975ce6c0f01 (patch)
treeca85ba2e078ddfeee8e74abd4eaae7c25b031cb2 /core/src/widget.rs
parent8b8f7563ad33dafeadf6238e377748cdec17d67a (diff)
downloadiced-a97401aed2a173260a4abfdb65a77975ce6c0f01.tar.gz
iced-a97401aed2a173260a4abfdb65a77975ce6c0f01.tar.bz2
iced-a97401aed2a173260a4abfdb65a77975ce6c0f01.zip
Rethink workspace structure
Diffstat (limited to 'core/src/widget.rs')
-rw-r--r--core/src/widget.rs114
1 files changed, 0 insertions, 114 deletions
diff --git a/core/src/widget.rs b/core/src/widget.rs
deleted file mode 100644
index 30606934..00000000
--- a/core/src/widget.rs
+++ /dev/null
@@ -1,114 +0,0 @@
-//! Use the built-in widgets or create your own.
-//!
-//! # Built-in widgets
-//! Every built-in drawable widget has its own module with a `Renderer` trait
-//! that must be implemented by a [renderer] before being able to use it as
-//! a [`Widget`].
-//!
-//! # Custom widgets
-//! If you want to implement a custom widget, you simply need to implement the
-//! [`Widget`] trait. You can use the API of the built-in widgets as a guide or
-//! source of inspiration.
-//!
-//! # Re-exports
-//! For convenience, the contents of this module are available at the root
-//! module. Therefore, you can directly type:
-//!
-//! ```
-//! use iced::{button, Button, Widget};
-//! ```
-//!
-//! [`Widget`]: trait.Widget.html
-//! [renderer]: ../renderer/index.html
-mod column;
-mod row;
-
-pub mod button;
-pub mod checkbox;
-pub mod image;
-//pub mod progress_bar;
-pub mod radio;
-pub mod slider;
-pub mod text;
-
-pub use button::Button;
-pub use checkbox::Checkbox;
-pub use column::Column;
-pub use image::Image;
-//pub use progress_bar::ProgressBar;
-pub use radio::Radio;
-pub use row::Row;
-pub use slider::Slider;
-pub use text::Text;
-
-use crate::{Event, Hasher, Layout, MouseCursor, Node, Point};
-
-/// A component that displays information and allows interaction.
-///
-/// If you want to build your own widgets, you will need to implement this
-/// trait.
-///
-/// [`Widget`]: trait.Widget.html
-/// [`Element`]: ../struct.Element.html
-pub trait Widget<Message, Renderer>: std::fmt::Debug {
- /// Returns the [`Node`] of the [`Widget`].
- ///
- /// This [`Node`] is used by the runtime to compute the [`Layout`] of the
- /// user interface.
- ///
- /// [`Node`]: ../struct.Node.html
- /// [`Widget`]: trait.Widget.html
- /// [`Layout`]: ../struct.Layout.html
- fn node(&self, renderer: &Renderer) -> Node;
-
- /// Draws the [`Widget`] using the associated `Renderer`.
- ///
- /// It must return the [`MouseCursor`] state for the [`Widget`].
- ///
- /// [`Widget`]: trait.Widget.html
- /// [`MouseCursor`]: ../enum.MouseCursor.html
- fn draw(
- &self,
- renderer: &mut Renderer,
- layout: Layout<'_>,
- cursor_position: Point,
- ) -> MouseCursor;
-
- /// Computes the _layout_ hash of the [`Widget`].
- ///
- /// The produced hash is used by the runtime to decide if the [`Layout`]
- /// needs to be recomputed between frames. Therefore, to ensure maximum
- /// efficiency, the hash should only be affected by the properties of the
- /// [`Widget`] that can affect layouting.
- ///
- /// For example, the [`Text`] widget does not hash its color property, as
- /// its value cannot affect the overall [`Layout`] of the user interface.
- ///
- /// [`Widget`]: trait.Widget.html
- /// [`Layout`]: ../struct.Layout.html
- /// [`Text`]: text/struct.Text.html
- fn hash_layout(&self, state: &mut Hasher);
-
- /// Processes a runtime [`Event`].
- ///
- /// It receives:
- /// * an [`Event`] describing user interaction
- /// * the computed [`Layout`] of the [`Widget`]
- /// * the current cursor position
- /// * a mutable `Message` list, allowing the [`Widget`] to produce
- /// new messages based on user interaction.
- ///
- /// By default, it does nothing.
- ///
- /// [`Event`]: ../enum.Event.html
- /// [`Widget`]: trait.Widget.html
- /// [`Layout`]: ../struct.Layout.html
- fn on_event(
- &mut self,
- _event: Event,
- _layout: Layout<'_>,
- _cursor_position: Point,
- _messages: &mut Vec<Message>,
- ) {
- }
-}