99 lines
2.6 KiB
Rust
99 lines
2.6 KiB
Rust
|
//! Enums used in Window construction and handling.
|
||
|
|
||
|
use crate::foundation::NSUInteger;
|
||
|
|
||
|
/// Describes window styles that can be displayed.
|
||
|
pub enum WindowStyle {
|
||
|
/// Window has no border. You generally do not want this.
|
||
|
Borderless,
|
||
|
|
||
|
/// Window supports title.
|
||
|
Titled,
|
||
|
|
||
|
/// Window is closable.
|
||
|
Closable,
|
||
|
|
||
|
/// Window can be shrunk.
|
||
|
Miniaturizable,
|
||
|
|
||
|
/// Window can be resized.
|
||
|
Resizable,
|
||
|
|
||
|
/// Window does not separate area between title and toolbar.
|
||
|
UnifiedTitleAndToolbar,
|
||
|
|
||
|
/// Window is full screen.
|
||
|
FullScreen,
|
||
|
|
||
|
/// Window does not buffer content view below title/toolbar.
|
||
|
FullSizeContentView,
|
||
|
|
||
|
/// Utility window.
|
||
|
Utility,
|
||
|
|
||
|
/// Modal window for doc.
|
||
|
DocModalWindow,
|
||
|
|
||
|
/// Non-activating panel.
|
||
|
NonActivatingPanel,
|
||
|
|
||
|
/// A HUD window.
|
||
|
HUDWindow
|
||
|
}
|
||
|
|
||
|
impl From<WindowStyle> for NSUInteger {
|
||
|
fn from(style: WindowStyle) -> Self {
|
||
|
match style {
|
||
|
WindowStyle::Borderless => 0,
|
||
|
WindowStyle::Titled => 1 << 0,
|
||
|
WindowStyle::Closable => 1 << 1,
|
||
|
WindowStyle::Miniaturizable => 1 << 2,
|
||
|
WindowStyle::Resizable => 1 << 3,
|
||
|
WindowStyle::UnifiedTitleAndToolbar => 1 << 12,
|
||
|
WindowStyle::FullScreen => 1 << 14,
|
||
|
WindowStyle::FullSizeContentView => 1 << 15,
|
||
|
WindowStyle::Utility => 1 << 4,
|
||
|
WindowStyle::DocModalWindow => 1 << 6,
|
||
|
WindowStyle::NonActivatingPanel => 1 << 7,
|
||
|
WindowStyle::HUDWindow => 1 << 13
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl From<&WindowStyle> for NSUInteger {
|
||
|
fn from(style: &WindowStyle) -> Self {
|
||
|
match style {
|
||
|
WindowStyle::Borderless => 0,
|
||
|
WindowStyle::Titled => 1 << 0,
|
||
|
WindowStyle::Closable => 1 << 1,
|
||
|
WindowStyle::Miniaturizable => 1 << 2,
|
||
|
WindowStyle::Resizable => 1 << 3,
|
||
|
WindowStyle::UnifiedTitleAndToolbar => 1 << 12,
|
||
|
WindowStyle::FullScreen => 1 << 14,
|
||
|
WindowStyle::FullSizeContentView => 1 << 15,
|
||
|
WindowStyle::Utility => 1 << 4,
|
||
|
WindowStyle::DocModalWindow => 1 << 6,
|
||
|
WindowStyle::NonActivatingPanel => 1 << 7,
|
||
|
WindowStyle::HUDWindow => 1 << 13
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// Describes whether a window shows a title or not.
|
||
|
pub enum WindowTitleVisibility {
|
||
|
/// Title is visible.
|
||
|
Visible,
|
||
|
|
||
|
/// Title is hidden.
|
||
|
Hidden
|
||
|
}
|
||
|
|
||
|
impl From<WindowTitleVisibility> for usize {
|
||
|
fn from(visibility: WindowTitleVisibility) -> usize {
|
||
|
match visibility {
|
||
|
WindowTitleVisibility::Visible => 0,
|
||
|
WindowTitleVisibility::Hidden => 1
|
||
|
}
|
||
|
}
|
||
|
}
|