use crate::appkit::window::enums::{WindowStyle, WindowToolbarStyle};
use crate::foundation::NSUInteger;
use crate::geometry::Rect;
#[derive(Debug)]
pub struct WindowConfig {
pub style: NSUInteger,
pub initial_dimensions: Rect,
pub defer: bool,
pub toolbar_style: WindowToolbarStyle
}
impl Default for WindowConfig {
fn default() -> Self {
let mut config = WindowConfig {
style: 0,
initial_dimensions: Rect::new(100., 100., 1024., 768.),
defer: true,
toolbar_style: WindowToolbarStyle::Automatic
};
config.set_styles(&[
WindowStyle::Resizable,
WindowStyle::Miniaturizable,
WindowStyle::UnifiedTitleAndToolbar,
WindowStyle::Closable,
WindowStyle::Titled,
WindowStyle::FullSizeContentView
]);
config
}
}
impl WindowConfig {
pub fn set_styles(&mut self, styles: &[WindowStyle]) {
let mut style: NSUInteger = 0;
for mask in styles {
let i: NSUInteger = mask.into();
style = style | i;
}
self.style = style;
}
pub fn set_initial_dimensions(&mut self, top: f64, left: f64, width: f64, height: f64) {
self.initial_dimensions = Rect::new(top, left, width, height);
}
pub fn set_toolbar_style(&mut self, style: WindowToolbarStyle) {
self.toolbar_style = style;
}
}