pub struct Window<Behavior = WidgetInstance>where
Behavior: WindowBehavior,{
pub title: Value<String>,
pub theme: Value<ThemePair>,
pub load_system_fonts: bool,
pub serif_font_family: FontFamilyList,
pub sans_serif_font_family: FontFamilyList,
pub fantasy_font_family: FontFamilyList,
pub monospace_font_family: FontFamilyList,
pub cursive_font_family: FontFamilyList,
pub fonts: FontCollection,
pub vsync: bool,
pub multisample_count: NonZeroU32,
pub resize_to_fit: Value<bool>,
/* private fields */
}
Expand description
A Cushy window that is not yet running.
Fields§
§title: Value<String>
The title to display in the title bar of the window.
theme: Value<ThemePair>
The colors to use to theme the user interface.
load_system_fonts: bool
When true, the system fonts will be loaded into the font database. This is on by default.
serif_font_family: FontFamilyList
The list of font families to try to find when a FamilyOwned::Serif
font is requested.
sans_serif_font_family: FontFamilyList
The list of font families to try to find when a
FamilyOwned::SansSerif
font is requested.
fantasy_font_family: FontFamilyList
The list of font families to try to find when a FamilyOwned::Fantasy
font is requested.
monospace_font_family: FontFamilyList
The list of font families to try to find when a
FamilyOwned::Monospace
font is requested.
cursive_font_family: FontFamilyList
The list of font families to try to find when a FamilyOwned::Cursive
font is requested.
fonts: FontCollection
A collection of fonts that this window will load.
vsync: bool
When true, Cushy will try to use “vertical sync” to try to eliminate graphical tearing that can occur if the graphics card has a new frame presented while the monitor is currently rendering another frame.
Under the hood, Cushy uses wgpu::PresentMode::AutoVsync
when true and
wgpu::PresentMode::AutoNoVsync
when false.
multisample_count: NonZeroU32
The number of samples to perform for each pixel rendered to the screen. When 1, multisampling is disabled.
resize_to_fit: Value<bool>
Resizes the window to fit the contents if true.
Implementations§
source§impl Window
impl Window
sourcepub fn for_widget<W>(widget: W) -> Selfwhere
W: MakeWidget,
pub fn for_widget<W>(widget: W) -> Selfwhere
W: MakeWidget,
Returns a new instance using widget
as its contents.
source§impl<Behavior> Window<Behavior>where
Behavior: WindowBehavior,
impl<Behavior> Window<Behavior>where
Behavior: WindowBehavior,
sourcepub fn new(context: Behavior::Context) -> Self
pub fn new(context: Behavior::Context) -> Self
Returns a new instance using context
to initialize the window upon
opening.
sourcepub const fn handle(&self) -> &WindowHandle
pub const fn handle(&self) -> &WindowHandle
Returns the handle to this window.
sourcepub fn open_centered<App>(self, app: &mut App) -> Result<WindowHandle>where
App: Application + ?Sized,
pub fn open_centered<App>(self, app: &mut App) -> Result<WindowHandle>where
App: Application + ?Sized,
Opens self
in the center of the monitor the window initially appears
on.
sourcepub fn focused(self, focused: impl IntoValue<bool>) -> Self
pub fn focused(self, focused: impl IntoValue<bool>) -> Self
Sets focused
to be the dynamic updated when this window’s focus status
is changed.
When the window is focused for user input, the dynamic will contain
true
.
The current value of focused
will inform the OS whether the window
should be activated upon opening.
sourcepub fn occluded(self, occluded: impl IntoDynamic<bool>) -> Self
pub fn occluded(self, occluded: impl IntoDynamic<bool>) -> Self
Sets occluded
to be the dynamic updated when this window’s occlusion
status is changed.
When the window is occluded (completely hidden/offscreen/minimized), the
dynamic will contain true
. If the window is at least partially
visible, this value will contain true
.
sourcepub fn fullscreen(self, fullscreen: impl IntoValue<Option<Fullscreen>>) -> Self
pub fn fullscreen(self, fullscreen: impl IntoValue<Option<Fullscreen>>) -> Self
Sets the full screen mode for this window.
sourcepub fn inner_size(self, inner_size: impl IntoDynamic<Size<UPx>>) -> Self
pub fn inner_size(self, inner_size: impl IntoDynamic<Size<UPx>>) -> Self
Sets inner_size
to be the dynamic synchronized with this window’s
inner size.
When the window is resized, the dynamic will contain its new size. When the dynamic is updated with a new value, a resize request will be made with the new inner size.
sourcepub fn outer_size(self, outer_size: impl IntoDynamic<Size<UPx>>) -> Self
pub fn outer_size(self, outer_size: impl IntoDynamic<Size<UPx>>) -> Self
Sets outer_size
to be a dynamic synchronized with this window’s size,
including decorations.
When the window is resized, the dynamic will contain its new size.
Setting this dynamic with a new value does not change the window in any
way. To resize the window, use inner_size
.
sourcepub fn outer_position(
self,
position: impl IntoValue<Point<Px>>,
automatic_layout: bool,
) -> Self
pub fn outer_position( self, position: impl IntoValue<Point<Px>>, automatic_layout: bool, ) -> Self
Sets position
to be a dynamic synchronized with this window’s outer
position.
If automatic_layout
is true, the initial value of position
will be
ignored and the window server will control the window’s initial
position.
When the window is moved, this dynamic will contain its new position. Setting this dynamic will attempt to move the window to the provided location.
sourcepub fn inner_position(self, position: impl IntoDynamic<Point<Px>>) -> Self
pub fn inner_position(self, position: impl IntoDynamic<Point<Px>>) -> Self
Sets position
to be a dynamic synchronized with this window’s inner
position.
When the window is moved, this dynamic will contain its new position.
Setting this dynamic to a new value has no effect. To move a window, use
outer_position
.
sourcepub fn resize_to_fit(self, resize_to_fit: impl IntoValue<bool>) -> Self
pub fn resize_to_fit(self, resize_to_fit: impl IntoValue<bool>) -> Self
Resizes this window to fit the contents when resize_to_fit
is true.
sourcepub fn content_protected(self, protected: impl IntoValue<bool>) -> Self
pub fn content_protected(self, protected: impl IntoValue<bool>) -> Self
Prevents the window contents from being captured by other apps.
sourcepub fn cursor_hittest(self, hittest: impl IntoValue<bool>) -> Self
pub fn cursor_hittest(self, hittest: impl IntoValue<bool>) -> Self
Controls whether the cursor should interact with this window or not.
sourcepub fn cursor_visible(self, visible: impl IntoValue<bool>) -> Self
pub fn cursor_visible(self, visible: impl IntoValue<bool>) -> Self
Sets whether the cursor is visible when above this window.
sourcepub fn cursor_position(
self,
window_position: impl IntoDynamic<Point<Px>>,
) -> Self
pub fn cursor_position( self, window_position: impl IntoDynamic<Point<Px>>, ) -> Self
A dynamic providing access to the window coordinate of the cursor, or -1, -1 if the cursor is not currently hovering the window.
In the future, this dynamic will also support setting the position of the cursor within the window.
sourcepub fn decorated(self, decorated: impl IntoValue<bool>) -> Self
pub fn decorated(self, decorated: impl IntoValue<bool>) -> Self
Controls whether window decorations are shown around this window.
Sets the enabled buttons for this window.
sourcepub fn window_level(self, window_level: impl IntoValue<WindowLevel>) -> Self
pub fn window_level(self, window_level: impl IntoValue<WindowLevel>) -> Self
Controls the level of this window.
sourcepub fn minimized(self, minimized: impl IntoDynamic<bool>) -> Self
pub fn minimized(self, minimized: impl IntoDynamic<bool>) -> Self
Provides a dynamic that is updated with the minimized status of this window.
sourcepub fn maximized(self, maximized: impl IntoDynamic<bool>) -> Self
pub fn maximized(self, maximized: impl IntoDynamic<bool>) -> Self
Provides a dynamic that is updated with the maximized status of this window.
sourcepub fn resizable(self, resizable: impl IntoValue<bool>) -> Self
pub fn resizable(self, resizable: impl IntoValue<bool>) -> Self
Controls whether the window is resizable by the user or not.
sourcepub fn resize_increments(
self,
resize_increments: impl IntoValue<Size<UPx>>,
) -> Self
pub fn resize_increments( self, resize_increments: impl IntoValue<Size<UPx>>, ) -> Self
Controls the increments in which the window can be resized.
sourcepub fn transparent(self) -> Self
pub fn transparent(self) -> Self
Sets this window to render with a transparent background.
sourcepub fn visible(self, visible: impl IntoDynamic<bool>) -> Self
pub fn visible(self, visible: impl IntoDynamic<bool>) -> Self
Controls the visibility of this window.
sourcepub fn zoom(self, zoom: impl IntoDynamic<Fraction>) -> Self
pub fn zoom(self, zoom: impl IntoDynamic<Fraction>) -> Self
Sets this window’s zoom
factor.
The zoom factor is multiplied with the DPI scaling from the window server to allow an additional scaling factor to be applied.
sourcepub fn themed_mode(self, theme_mode: impl IntoValue<ThemeMode>) -> Self
pub fn themed_mode(self, theme_mode: impl IntoValue<ThemeMode>) -> Self
Sets the ThemeMode
for this window.
If a ThemeMode
is provided, the window will be set to this theme
mode upon creation and will not be updated while the window is running.
If a Dynamic
is provided, the initial value will be ignored and the
dynamic will be updated when the window opens with the user’s current
theme mode. The dynamic will also be updated any time the user’s theme
mode changes.
Setting the Dynamic
’s value will also update the window with the new
mode until a mode change is detected, upon which the new mode will be
stored.
sourcepub fn themed(self, theme: impl IntoValue<ThemePair>) -> Self
pub fn themed(self, theme: impl IntoValue<ThemePair>) -> Self
Applies theme
to the widgets in this window.
sourcepub fn loading_font(self, font_data: Vec<u8>) -> Self
pub fn loading_font(self, font_data: Vec<u8>) -> Self
Adds font_data
to the list of fonts to load for availability when
rendering.
All font families contained in font_data
will be loaded.
sourcepub fn on_open<Function>(self, on_open: Function) -> Self
pub fn on_open<Function>(self, on_open: Function) -> Self
Invokes on_open
when this window is first opened, even if it is not
visible.
sourcepub fn on_init<Function>(self, on_init: Function) -> Self
pub fn on_init<Function>(self, on_init: Function) -> Self
Invokes on_init
before the window initialization begins.
sourcepub fn on_close<Function>(self, on_close: Function) -> Self
pub fn on_close<Function>(self, on_close: Function) -> Self
Invokes on_close
when this window is closed.
sourcepub fn on_close_requested<Function>(self, on_close_requested: Function) -> Self
pub fn on_close_requested<Function>(self, on_close_requested: Function) -> Self
Invokes on_close_requested
when the window is requested to be closed.
If the function returns true, the window is allowed to be closed, otherwise the window remains open.
sourcepub fn on_file_drop<Function>(self, on_file_drop: Function) -> Self
pub fn on_file_drop<Function>(self, on_file_drop: Function) -> Self
Invokes on_file_drop
when a file is hovered or dropped on this window.
sourcepub fn modifiers(self, modifiers: impl IntoDynamic<Modifiers>) -> Self
pub fn modifiers(self, modifiers: impl IntoDynamic<Modifiers>) -> Self
Sets modifiers
to contain the state of the keyboard modifiers when
this window has keyboard focus.
sourcepub fn app_name(self, name: impl Into<String>) -> Self
pub fn app_name(self, name: impl Into<String>) -> Self
Sets the name of the application.
WM_CLASS
on X11- application ID on wayland
- class name on windows
sourcepub fn with_shortcut<F>(
self,
key: impl Into<ShortcutKey>,
modifiers: ModifiersState,
callback: F,
) -> Self
pub fn with_shortcut<F>( self, key: impl Into<ShortcutKey>, modifiers: ModifiersState, callback: F, ) -> Self
Invokes callback
when key
is pressed while modifiers
are pressed.
Widgets have a chance to handle keyboard input before the Window.
sourcepub fn with_shortcuts(self, shortcuts: impl IntoValue<ShortcutMap>) -> Self
pub fn with_shortcuts(self, shortcuts: impl IntoValue<ShortcutMap>) -> Self
Invokes shortcuts
when keyboard input is unhandled in this window.
sourcepub fn with_repeating_shortcut<F>(
self,
key: impl Into<ShortcutKey>,
modifiers: ModifiersState,
callback: F,
) -> Self
pub fn with_repeating_shortcut<F>( self, key: impl Into<ShortcutKey>, modifiers: ModifiersState, callback: F, ) -> Self
Invokes callback
when key
is pressed while modifiers
are pressed.
If the shortcut is held, the callback will be invoked on repeat events.
Widgets have a chance to handle keyboard input before the Window.
Trait Implementations§
source§impl<Behavior> MakeWindow for Window<Behavior>where
Behavior: WindowBehavior,
impl<Behavior> MakeWindow for Window<Behavior>where
Behavior: WindowBehavior,
source§fn make_window(self) -> Window<Self::Behavior>
fn make_window(self) -> Window<Self::Behavior>
self
.source§fn open_centered<App>(self, app: &mut App) -> Result<WindowHandle>
fn open_centered<App>(self, app: &mut App) -> Result<WindowHandle>
self
in the center of the monitor the window initially appears
on.source§fn run_centered(self) -> Resultwhere
Self: Sized,
fn run_centered(self) -> Resultwhere
Self: Sized,
self
in the center of the monitor the window
initially appears on.source§fn run_centered_in(self, app: PendingApp) -> Resultwhere
Self: Sized,
fn run_centered_in(self, app: PendingApp) -> Resultwhere
Self: Sized,
app
after opening self
in the center of the monitor the window
initially appears on.Auto Trait Implementations§
impl<Behavior> Freeze for Window<Behavior>
impl<Behavior = WidgetInstance> !RefUnwindSafe for Window<Behavior>
impl<Behavior> Send for Window<Behavior>
impl<Behavior = WidgetInstance> !Sync for Window<Behavior>
impl<Behavior> Unpin for Window<Behavior>
impl<Behavior = WidgetInstance> !UnwindSafe for Window<Behavior>
Blanket Implementations§
source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.§impl<A> Cast for A
impl<A> Cast for A
source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
source§fn into_color(self) -> U
fn into_color(self) -> U
source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoReadOnly<T> for T
impl<T> IntoReadOnly<T> for T
source§fn into_read_only(self) -> ReadOnly<T>
fn into_read_only(self) -> ReadOnly<T>
self
as a ReadOnly
.source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.source§impl<T> IntoValue<T> for T
impl<T> IntoValue<T> for T
source§fn into_value(self) -> Value<T>
fn into_value(self) -> Value<T>
Value
.§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
source§impl<T> Open for Twhere
T: MakeWindow,
impl<T> Open for Twhere
T: MakeWindow,
source§fn open<App>(self, app: &mut App) -> Result<WindowHandle, EventLoopError>where
App: Application + ?Sized,
fn open<App>(self, app: &mut App) -> Result<WindowHandle, EventLoopError>where
App: Application + ?Sized,
app
.§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more