summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-03-17 19:38:42 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-03-17 19:38:42 +0100
commitcdb18e610a72b4a025d7e1890140393adee5b087 (patch)
tree50f8c8264cdb5b2a09c440b7f598e5aa23846120 /src
parent943b6c965773748f8cacaa4fe385ac4a3bfb1e69 (diff)
downloadiced-cdb18e610a72b4a025d7e1890140393adee5b087.tar.gz
iced-cdb18e610a72b4a025d7e1890140393adee5b087.tar.bz2
iced-cdb18e610a72b4a025d7e1890140393adee5b087.zip
Move `Application` trait to `advanced` module
Diffstat (limited to 'src')
-rw-r--r--src/advanced.rs1
-rw-r--r--src/application.rs9
-rw-r--r--src/lib.rs25
-rw-r--r--src/program.rs (renamed from src/application/program.rs)42
-rw-r--r--src/settings.rs12
5 files changed, 42 insertions, 47 deletions
diff --git a/src/advanced.rs b/src/advanced.rs
index 8e026f84..306c3559 100644
--- a/src/advanced.rs
+++ b/src/advanced.rs
@@ -1,4 +1,5 @@
//! Leverage advanced concepts like custom widgets.
+pub use crate::application::Application;
pub use crate::core::clipboard::{self, Clipboard};
pub use crate::core::image;
pub use crate::core::layout::{self, Layout};
diff --git a/src/application.rs b/src/application.rs
index ba60db67..8317abcb 100644
--- a/src/application.rs
+++ b/src/application.rs
@@ -1,12 +1,8 @@
//! Build interactive cross-platform applications.
-mod program;
-
-pub use program::{program, Definition, Program, Title, Update, View};
-
use crate::shell::application;
use crate::{Command, Element, Executor, Settings, Subscription};
-pub use application::{default, Appearance, DefaultStyle};
+pub use application::{Appearance, DefaultStyle};
/// An interactive cross-platform application.
///
@@ -62,8 +58,9 @@ pub use application::{default, Appearance, DefaultStyle};
/// says "Hello, world!":
///
/// ```no_run
+/// use iced::advanced::Application;
/// use iced::executor;
-/// use iced::{Application, Command, Element, Settings, Theme};
+/// use iced::{Command, Element, Settings, Theme};
///
/// pub fn main() -> iced::Result {
/// Hello::run(Settings::default())
diff --git a/src/lib.rs b/src/lib.rs
index bc87b1a3..49447418 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -157,11 +157,11 @@
//! 1. Draw the resulting user interface.
//!
//! # Usage
-//! You can either use the [`program`] builder or implement the [`Application`]
-//! trait directly.
+//! Use [`run`] or the [`program`] builder.
//!
//! [Elm]: https://elm-lang.org/
//! [The Elm Architecture]: https://guide.elm-lang.org/architecture/
+//! [`program`]: program()
#![doc(
html_logo_url = "https://raw.githubusercontent.com/iced-rs/iced/9ab6923e943f784985e9ef9ca28b10278297225d/docs/logo.svg"
)]
@@ -185,9 +185,10 @@ pub use iced_futures::futures;
#[cfg(feature = "highlighter")]
pub use iced_highlighter as highlighter;
+mod application;
mod error;
-pub mod application;
+pub mod program;
pub mod settings;
pub mod time;
pub mod window;
@@ -315,12 +316,12 @@ pub mod widget {
mod runtime {}
}
-pub use application::Application;
pub use command::Command;
pub use error::Error;
pub use event::Event;
pub use executor::Executor;
pub use font::Font;
+pub use program::Program;
pub use renderer::Renderer;
pub use settings::Settings;
pub use subscription::Subscription;
@@ -335,9 +336,7 @@ pub type Element<
Renderer = crate::Renderer,
> = crate::core::Element<'a, Message, Theme, Renderer>;
-/// The result of running an [`Application`].
-///
-/// [`Application`]: crate::Application
+/// The result of running a [`Program`].
pub type Result = std::result::Result<(), Error>;
/// Runs a basic iced application with default [`Settings`] given its title,
@@ -345,7 +344,7 @@ pub type Result = std::result::Result<(), Error>;
///
/// This is equivalent to chaining [`program`] with [`Program::run`].
///
-/// [`Program::run`]: application::Program::run
+/// [`program`]: program()
///
/// # Example
/// ```no_run
@@ -374,17 +373,17 @@ pub type Result = std::result::Result<(), Error>;
/// }
/// ```
pub fn run<State, Message, Theme>(
- title: impl application::Title<State> + 'static,
- update: impl application::Update<State, Message> + 'static,
- view: impl for<'a> application::View<'a, State, Message, Theme> + 'static,
+ title: impl program::Title<State> + 'static,
+ update: impl program::Update<State, Message> + 'static,
+ view: impl for<'a> program::View<'a, State, Message, Theme> + 'static,
) -> Result
where
State: Default + 'static,
Message: std::fmt::Debug + Send + 'static,
- Theme: Default + application::DefaultStyle + 'static,
+ Theme: Default + program::DefaultStyle + 'static,
{
program(title, update, view).run()
}
#[doc(inline)]
-pub use application::program;
+pub use program::program;
diff --git a/src/application/program.rs b/src/program.rs
index be635431..7a366585 100644
--- a/src/application/program.rs
+++ b/src/program.rs
@@ -1,3 +1,4 @@
+//! Create and run iced applications step by step.
//!
//! # Example
//! ```no_run
@@ -29,11 +30,13 @@
//! ]
//! }
//! ```
-use crate::application::{self, Application};
+use crate::application::Application;
use crate::executor::{self, Executor};
use crate::window;
use crate::{Command, Element, Font, Result, Settings, Size, Subscription};
+pub use crate::application::{Appearance, DefaultStyle};
+
use std::borrow::Cow;
/// Creates an iced [`Program`] given its title, update, and view logic.
@@ -72,7 +75,7 @@ pub fn program<State, Message, Theme>(
where
State: 'static,
Message: Send + std::fmt::Debug,
- Theme: Default + application::DefaultStyle,
+ Theme: Default + DefaultStyle,
{
use std::marker::PhantomData;
@@ -88,7 +91,7 @@ where
for Application<State, Message, Theme, Update, View>
where
Message: Send + std::fmt::Debug,
- Theme: Default + application::DefaultStyle,
+ Theme: Default + DefaultStyle,
Update: self::Update<State, Message>,
View: for<'a> self::View<'a, State, Message, Theme>,
{
@@ -130,15 +133,12 @@ where
.title(title)
}
-/// The underlying definition and configuration of an iced [`Application`].
+/// The underlying definition and configuration of an iced application.
///
/// You can use this API to create and run iced applications
/// step by step—without coupling your logic to a trait
/// or a specific type.
///
-/// This API is meant to be a more convenient—although less
-/// powerful—alternative to the [`Application`] trait.
-///
/// You can create a [`Program`] with the [`program`] helper.
///
/// [`run`]: Program::run
@@ -229,7 +229,7 @@ impl<P: Definition> Program<P> {
self.program.theme(&self.state)
}
- fn style(&self, theme: &Self::Theme) -> application::Appearance {
+ fn style(&self, theme: &Self::Theme) -> Appearance {
self.program.style(&self.state, theme)
}
}
@@ -391,7 +391,7 @@ impl<P: Definition> Program<P> {
/// Sets the style logic of the [`Program`].
pub fn style(
self,
- f: impl Fn(&P::State, &P::Theme) -> application::Appearance,
+ f: impl Fn(&P::State, &P::Theme) -> Appearance,
) -> Program<
impl Definition<State = P::State, Message = P::Message, Theme = P::Theme>,
> {
@@ -415,7 +415,7 @@ pub trait Definition: Sized {
type Message: Send + std::fmt::Debug;
/// The theme of the program.
- type Theme: Default + application::DefaultStyle;
+ type Theme: Default + DefaultStyle;
/// The executor of the program.
type Executor: Executor;
@@ -448,12 +448,8 @@ pub trait Definition: Sized {
Self::Theme::default()
}
- fn style(
- &self,
- _state: &Self::State,
- theme: &Self::Theme,
- ) -> application::Appearance {
- application::DefaultStyle::default_style(theme)
+ fn style(&self, _state: &Self::State, theme: &Self::Theme) -> Appearance {
+ DefaultStyle::default_style(theme)
}
}
@@ -514,7 +510,7 @@ fn with_title<P: Definition>(
&self,
state: &Self::State,
theme: &Self::Theme,
- ) -> application::Appearance {
+ ) -> Appearance {
self.program.style(state, theme)
}
}
@@ -578,7 +574,7 @@ fn with_load<P: Definition>(
&self,
state: &Self::State,
theme: &Self::Theme,
- ) -> application::Appearance {
+ ) -> Appearance {
self.program.style(state, theme)
}
}
@@ -642,7 +638,7 @@ fn with_subscription<P: Definition>(
&self,
state: &Self::State,
theme: &Self::Theme,
- ) -> application::Appearance {
+ ) -> Appearance {
self.program.style(state, theme)
}
}
@@ -709,7 +705,7 @@ fn with_theme<P: Definition>(
&self,
state: &Self::State,
theme: &Self::Theme,
- ) -> application::Appearance {
+ ) -> Appearance {
self.program.style(state, theme)
}
}
@@ -719,7 +715,7 @@ fn with_theme<P: Definition>(
fn with_style<P: Definition>(
program: P,
- f: impl Fn(&P::State, &P::Theme) -> application::Appearance,
+ f: impl Fn(&P::State, &P::Theme) -> Appearance,
) -> impl Definition<State = P::State, Message = P::Message, Theme = P::Theme> {
struct WithStyle<P, F> {
program: P,
@@ -728,7 +724,7 @@ fn with_style<P: Definition>(
impl<P: Definition, F> Definition for WithStyle<P, F>
where
- F: Fn(&P::State, &P::Theme) -> application::Appearance,
+ F: Fn(&P::State, &P::Theme) -> Appearance,
{
type State = P::State;
type Message = P::Message;
@@ -739,7 +735,7 @@ fn with_style<P: Definition>(
&self,
state: &Self::State,
theme: &Self::Theme,
- ) -> application::Appearance {
+ ) -> Appearance {
(self.style)(state, theme)
}
diff --git a/src/settings.rs b/src/settings.rs
index 92204847..f7947841 100644
--- a/src/settings.rs
+++ b/src/settings.rs
@@ -4,7 +4,9 @@ use crate::{Font, Pixels};
use std::borrow::Cow;
-/// The settings of an application.
+/// The settings of an iced [`Program`].
+///
+/// [`Program`]: crate::Program
#[derive(Debug, Clone)]
pub struct Settings<Flags = ()> {
/// The identifier of the application.
@@ -18,9 +20,9 @@ pub struct Settings<Flags = ()> {
/// They will be ignored on the Web.
pub window: window::Settings,
- /// The data needed to initialize the [`Application`].
+ /// The data needed to initialize the [`Program`].
///
- /// [`Application`]: crate::Application
+ /// [`Program`]: crate::Program
pub flags: Flags,
/// The fonts to load on boot.
@@ -49,9 +51,9 @@ pub struct Settings<Flags = ()> {
}
impl<Flags> Settings<Flags> {
- /// Initialize [`Application`] settings using the given data.
+ /// Initialize [`Program`] settings using the given data.
///
- /// [`Application`]: crate::Application
+ /// [`Program`]: crate::Program
pub fn with_flags(flags: Flags) -> Self {
let default_settings = Settings::<()>::default();