pub trait Program: Sized {
type Message: Debug + Send;
type Theme: DefaultStyle;
type Executor: Executor;
type Renderer: Renderer + Renderer;
type Flags;
// Required methods
fn new(flags: Self::Flags) -> (Self, Task<Self::Message>);
fn title(&self, window: Id) -> String;
fn update(&mut self, message: Self::Message) -> Task<Self::Message>;
fn view(
&self,
window: Id,
) -> Element<'_, Self::Message, Self::Theme, Self::Renderer>;
fn theme(&self, window: Id) -> Self::Theme;
// Provided methods
fn style(&self, theme: &Self::Theme) -> Appearance { ... }
fn subscription(&self) -> Subscription<Self::Message> { ... }
fn scale_factor(&self, window: Id) -> f64 { ... }
fn with_program<T>(&self, f: impl Fn(&Self) -> T) -> T { ... }
}Expand description
An interactive, native, cross-platform, multi-windowed application.
This trait is the main entrypoint of multi-window Iced. Once implemented, you can run
your GUI application by simply calling run. It will run in
its own window.
A Program can execute asynchronous actions by returning a
Task in some of its methods.
When using a Program with the debug feature enabled, a debug view
can be toggled by pressing F12.
Required Associated Types§
Sourcetype Theme: DefaultStyle
type Theme: DefaultStyle
The theme used to draw the Program.
Sourcetype Executor: Executor
type Executor: Executor
The Executor that will run commands and subscriptions.
The default executor can be a good starting point!
Required Methods§
Sourcefn new(flags: Self::Flags) -> (Self, Task<Self::Message>)
fn new(flags: Self::Flags) -> (Self, Task<Self::Message>)
Initializes the Program with the flags provided to
run as part of the Settings.
Here is where you should return the initial state of your app.
Additionally, you can return a Task if you need to perform some
async action in the background on startup. This is useful if you want to
load state from a file, perform an initial HTTP request, etc.
Sourcefn title(&self, window: Id) -> String
fn title(&self, window: Id) -> String
Returns the current title of the Program.
This title can be dynamic! The runtime will automatically update the title of your application when necessary.
Provided Methods§
Sourcefn style(&self, theme: &Self::Theme) -> Appearance
fn style(&self, theme: &Self::Theme) -> Appearance
Returns the Style variation of the Theme.
Sourcefn subscription(&self) -> Subscription<Self::Message>
fn subscription(&self) -> Subscription<Self::Message>
Returns the event Subscription for the current state of the
application.
The messages produced by the Subscription will be handled by
update.
A Subscription will be kept alive as long as you keep returning it!
By default, it returns an empty subscription.
Sourcefn scale_factor(&self, window: Id) -> f64
fn scale_factor(&self, window: Id) -> f64
Returns the scale factor of the window of the Program.
It can be used to dynamically control the size of the UI at runtime (i.e. zooming).
For instance, a scale factor of 2.0 will make widgets twice as big,
while a scale factor of 0.5 will shrink them to half their size.
By default, it returns 1.0.
fn with_program<T>(&self, f: impl Fn(&Self) -> T) -> T
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.