Allow Application configuration with Settings
This commit is contained in:
parent
e72b5ceeb8
commit
d70021fa68
9 changed files with 98 additions and 19 deletions
|
|
@ -3,7 +3,7 @@ use crate::{
|
|||
input::{keyboard, mouse},
|
||||
renderer::{Target, Windowed},
|
||||
Cache, Command, Container, Debug, Element, Event, Length, MouseCursor,
|
||||
UserInterface,
|
||||
Settings, UserInterface,
|
||||
};
|
||||
|
||||
/// An interactive, native cross-platform application.
|
||||
|
|
@ -72,7 +72,7 @@ pub trait Application: Sized {
|
|||
/// It should probably be that last thing you call in your `main` function.
|
||||
///
|
||||
/// [`Application`]: trait.Application.html
|
||||
fn run()
|
||||
fn run(settings: Settings)
|
||||
where
|
||||
Self: 'static,
|
||||
{
|
||||
|
|
@ -96,13 +96,15 @@ pub trait Application: Sized {
|
|||
|
||||
let mut title = application.title();
|
||||
|
||||
// TODO: Ask for window settings and configure this properly
|
||||
let (width, height) = settings.window.size;
|
||||
|
||||
let window = WindowBuilder::new()
|
||||
.with_title(&title)
|
||||
.with_inner_size(winit::dpi::LogicalSize {
|
||||
width: 1280.0,
|
||||
height: 1024.0,
|
||||
width: f64::from(width),
|
||||
height: f64::from(height),
|
||||
})
|
||||
.with_resizable(settings.window.resizable)
|
||||
.build(&event_loop)
|
||||
.expect("Open window");
|
||||
|
||||
|
|
|
|||
|
|
@ -26,10 +26,12 @@ pub use iced_native::*;
|
|||
pub use winit;
|
||||
|
||||
pub mod conversion;
|
||||
pub mod settings;
|
||||
|
||||
mod application;
|
||||
|
||||
pub use application::Application;
|
||||
pub use settings::Settings;
|
||||
|
||||
// We disable debug capabilities on release builds unless the `debug` feature
|
||||
// is explicitly enabled.
|
||||
|
|
|
|||
29
winit/src/settings.rs
Normal file
29
winit/src/settings.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
//! Configure your application.
|
||||
|
||||
/// The settings of an application.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
|
||||
pub struct Settings {
|
||||
/// The [`Window`] settings
|
||||
///
|
||||
/// [`Window`]: struct.Window.html
|
||||
pub window: Window,
|
||||
}
|
||||
|
||||
/// The window settings of an application.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub struct Window {
|
||||
/// The size of the window.
|
||||
pub size: (u32, u32),
|
||||
|
||||
/// Whether the window should be resizable or not.
|
||||
pub resizable: bool,
|
||||
}
|
||||
|
||||
impl Default for Window {
|
||||
fn default() -> Window {
|
||||
Window {
|
||||
size: (1024, 768),
|
||||
resizable: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue