pub struct Shell<Data: AppData, G: GraphicalShell, T: Theme<G::Shared>> { /* private fields */ }Expand description
The KAS shell
The “shell” is the layer over widgets, windows, events and graphics.
Constructing with Shell::new or Shell::new_custom
reads configuration (depending on passed options or environment variables)
and initialises the font database. Note that this database is a global
singleton and some widgets and other library code may expect fonts to have
been initialised first.
Implementations§
source§impl<Data: AppData, G, T> Shell<Data, G, T>where
G: GraphicalShell + Default,
T: Theme<G::Shared> + 'static,
T::Window: Window,
impl<Data: AppData, G, T> Shell<Data, G, T>where G: GraphicalShell + Default, T: Theme<G::Shared> + 'static, T::Window: Window,
sourcepub fn new(data: Data, theme: T) -> Result<Self>
pub fn new(data: Data, theme: T) -> Result<Self>
Construct a new instance with default options.
All user interfaces are expected to provide data: Data: widget data
shared across all windows. If not required this may be ().
Environment variables may affect option selection; see documentation
of Options::from_env. KAS config is provided by
Options::read_config.
source§impl<Data: AppData, G: GraphicalShell, T> Shell<Data, G, T>where
T: Theme<G::Shared> + 'static,
T::Window: Window,
impl<Data: AppData, G: GraphicalShell, T> Shell<Data, G, T>where T: Theme<G::Shared> + 'static, T::Window: Window,
sourcepub fn new_custom(
data: Data,
graphical_shell: impl Into<G>,
theme: T,
options: Options
) -> Result<Self>
pub fn new_custom( data: Data, graphical_shell: impl Into<G>, theme: T, options: Options ) -> Result<Self>
Construct an instance with custom options
The Options parameter allows direct specification of shell options;
usually, these are provided by Options::from_env.
KAS config is provided by Options::read_config and theme is
configured through Options::init_theme_config.
sourcepub fn new_custom_config(
data: Data,
graphical_shell: impl Into<G>,
theme: T,
options: Options,
config: Rc<RefCell<Config>>
) -> Result<Self>
pub fn new_custom_config( data: Data, graphical_shell: impl Into<G>, theme: T, options: Options, config: Rc<RefCell<Config>> ) -> Result<Self>
Construct an instance with custom options and config
This is like Shell::new_custom, but allows KAS config to be
specified directly, instead of loading via Options::read_config.
Unlike other the constructors, this method does not configure the theme.
The user should call Options::init_theme_config before this method.
Access shared draw state
sourcepub fn add(&mut self, window: Window<Data>) -> WindowId
pub fn add(&mut self, window: Window<Data>) -> WindowId
Assume ownership of and display a window
sourcepub fn with(self, window: Window<Data>) -> Self
pub fn with(self, window: Window<Data>) -> Self
Assume ownership of and display a window, inline
sourcepub fn create_proxy(&self) -> Proxy
pub fn create_proxy(&self) -> Proxy
Create a proxy which can be used to update the UI from another thread
Trait Implementations§
Auto Trait Implementations§
impl<Data, G, T> !RefUnwindSafe for Shell<Data, G, T>
impl<Data, G, T> !Send for Shell<Data, G, T>
impl<Data, G, T> !Sync for Shell<Data, G, T>
impl<Data, G, T> Unpin for Shell<Data, G, T>where Data: Unpin, T: Unpin, <G as GraphicalShell>::Shared: Unpin, <G as GraphicalShell>::Surface: Unpin, <T as Theme<<G as GraphicalShell>::Shared>>::Window: Unpin,
impl<Data, G, T> !UnwindSafe for Shell<Data, G, T>
Blanket Implementations§
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<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
impl<S, T> CastApprox<T> for Swhere T: ConvApprox<S>,
source§fn try_cast_approx(self) -> Result<T, Error>
fn try_cast_approx(self) -> Result<T, Error>
source§fn cast_approx(self) -> T
fn cast_approx(self) -> T
source§impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
impl<S, T> CastFloat<T> for Swhere T: ConvFloat<S>,
source§fn cast_trunc(self) -> T
fn cast_trunc(self) -> T
source§fn cast_nearest(self) -> T
fn cast_nearest(self) -> T
source§fn cast_floor(self) -> T
fn cast_floor(self) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
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, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
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.