cushy::window

Struct Window

source
pub struct Window<Behavior = WidgetInstance>
where Behavior: WindowBehavior,
{ pub title: Value<MaybeLocalized>, 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<MaybeLocalized>

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

source

pub fn for_widget<W>(widget: W) -> Self
where W: MakeWidget,

Returns a new instance using widget as its contents.

source§

impl<Behavior> Window<Behavior>
where Behavior: WindowBehavior,

source

pub fn new(context: Behavior::Context) -> Self

Returns a new instance using context to initialize the window upon opening.

source

pub const fn handle(&self) -> &WindowHandle

Returns the handle to this window.

source

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.

source

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.

source

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.

source

pub fn fullscreen(self, fullscreen: impl IntoValue<Option<Fullscreen>>) -> Self

Sets the full screen mode for this window.

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn content_protected(self, protected: impl IntoValue<bool>) -> Self

Prevents the window contents from being captured by other apps.

source

pub fn cursor_hittest(self, hittest: impl IntoValue<bool>) -> Self

Controls whether the cursor should interact with this window or not.

source

pub fn cursor_visible(self, visible: impl IntoValue<bool>) -> Self

Sets whether the cursor is visible when above this window.

source

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.

source

pub fn decorated(self, decorated: impl IntoValue<bool>) -> Self

Controls whether window decorations are shown around this window.

source

pub fn enabled_buttons(self, buttons: impl IntoValue<WindowButtons>) -> Self

Sets the enabled buttons for this window.

source

pub fn window_level(self, window_level: impl IntoValue<WindowLevel>) -> Self

Controls the level of this window.

source

pub fn minimized(self, minimized: impl IntoDynamic<bool>) -> Self

Provides a dynamic that is updated with the minimized status of this window.

source

pub fn maximized(self, maximized: impl IntoDynamic<bool>) -> Self

Provides a dynamic that is updated with the maximized status of this window.

source

pub fn resizable(self, resizable: impl IntoValue<bool>) -> Self

Controls whether the window is resizable by the user or not.

source

pub fn resize_increments( self, resize_increments: impl IntoValue<Size<UPx>>, ) -> Self

Controls the increments in which the window can be resized.

source

pub fn transparent(self) -> Self

Sets this window to render with a transparent background.

source

pub fn visible(self, visible: impl IntoDynamic<bool>) -> Self

Controls the visibility of this window.

source

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.

source

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.

source

pub fn themed(self, theme: impl IntoValue<ThemePair>) -> Self

Applies theme to the widgets in this window.

source

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.

source

pub fn on_open<Function>(self, on_open: Function) -> Self
where Function: FnOnce(WindowHandle) + Send + 'static,

Invokes on_open when this window is first opened, even if it is not visible.

source

pub fn on_init<Function>(self, on_init: Function) -> Self
where Function: FnOnce(&Window) + Send + 'static,

Invokes on_init before the window initialization begins.

source

pub fn on_close<Function>(self, on_close: Function) -> Self
where Function: FnOnce() + Send + 'static,

Invokes on_close when this window is closed.

source

pub fn on_close_requested<Function>(self, on_close_requested: Function) -> Self
where Function: FnMut(()) -> bool + Send + 'static,

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.

source

pub fn on_file_drop<Function>(self, on_file_drop: Function) -> Self
where Function: FnMut(FileDrop) + Send + 'static,

Invokes on_file_drop when a file is hovered or dropped on this window.

source

pub fn titled(self, title: impl IntoValue<MaybeLocalized>) -> Self

Sets the window’s title.

source

pub fn icon(self, icon: impl IntoValue<Option<RgbaImage>>) -> Self

Sets the window’s icon.

source

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.

source

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
source

pub fn with_shortcut<F>( self, key: impl Into<ShortcutKey>, modifiers: ModifiersState, callback: F, ) -> Self
where F: FnMut(KeyEvent) -> EventHandling + Send + 'static,

Invokes callback when key is pressed while modifiers are pressed.

Widgets have a chance to handle keyboard input before the Window.

source

pub fn with_shortcuts(self, shortcuts: impl IntoValue<ShortcutMap>) -> Self

Invokes shortcuts when keyboard input is unhandled in this window.

source

pub fn with_repeating_shortcut<F>( self, key: impl Into<ShortcutKey>, modifiers: ModifiersState, callback: F, ) -> Self
where F: FnMut(KeyEvent) -> EventHandling + Send + 'static,

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> Default for Window<Behavior>
where Behavior: WindowBehavior, Behavior::Context: Default,

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<Behavior> MakeWindow for Window<Behavior>
where Behavior: WindowBehavior,

source§

type Behavior = Behavior

The behavior associated with this window.
source§

fn make_window(self) -> Window<Self::Behavior>

Returns a new window from self.
source§

fn open_centered<App>(self, app: &mut App) -> Result<WindowHandle>
where Self: Sized, App: Application + ?Sized,

Opens self in the center of the monitor the window initially appears on.
source§

fn run_centered(self) -> Result
where Self: Sized,

Runs self in the center of the monitor the window initially appears on.
source§

fn run_centered_in(self, app: PendingApp) -> Result
where Self: Sized,

Runs app after opening self in the center of the monitor the window initially appears on.
source§

impl<Behavior> Run for Window<Behavior>
where Behavior: WindowBehavior,

source§

fn run(self) -> Result

Runs the provided type, returning Ok(()) upon successful execution and program exit. Note that this function may not ever return on some platforms.

Auto Trait Implementations§

§

impl<Behavior> Freeze for Window<Behavior>
where <Behavior as WindowBehavior>::Context: Freeze,

§

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>
where <Behavior as WindowBehavior>::Context: Unpin,

§

impl<Behavior = WidgetInstance> !UnwindSafe for Window<Behavior>

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where 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) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
§

impl<A> Cast for A

§

fn cast<To>(self) -> To
where To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

source§

fn into_angle(self) -> U

Performs a conversion into T.
source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<T> IntoReadOnly<T> for T

source§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
source§

impl<T> IntoStimulus<T> for T

source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
source§

impl<T> IntoValue<Option<T>> for T

source§

fn into_value(self) -> Value<Option<T>>

Returns this type as a Value.
source§

impl<T> IntoValue<T> for T

source§

fn into_value(self) -> Value<T>

Returns this type as a Value.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
source§

impl<T> Open for T
where T: MakeWindow,

source§

fn open<App>(self, app: &mut App) -> Result<WindowHandle, EventLoopError>
where App: Application + ?Sized,

Opens the provided type as a window inside of app.
source§

fn run_in(self, app: PendingApp) -> Result<(), EventLoopError>

Runs the provided type inside of the pending app, returning Ok(()) upon successful execution and program exit. Note that this function may not ever return on some platforms.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

§

impl<T> WasmNotSend for T
where T: Send,