Struct cosmic::widget::segmented_button::Model
source · pub struct Model<SelectionMode: Default> { /* private fields */ }
Expand description
The model held by the application, containing the unique IDs and data of each inserted item.
Implementations§
source§impl Model<SingleSelect>
impl Model<SingleSelect>
sourcepub fn active_data<Data: 'static>(&self) -> Option<&Data>
pub fn active_data<Data: 'static>(&self) -> Option<&Data>
Get an immutable reference to the data associated with the active item.
sourcepub fn active_data_mut<Data: 'static>(&mut self) -> Option<&mut Data>
pub fn active_data_mut<Data: 'static>(&mut self) -> Option<&mut Data>
Get a mutable reference to the data associated with the active item.
sourcepub fn deactivate(&mut self)
pub fn deactivate(&mut self)
Deactivates the active item.
source§impl Model<MultiSelect>
impl Model<MultiSelect>
source§impl<SelectionMode: Default> Model<SelectionMode>where
Self: Selectable,
impl<SelectionMode: Default> Model<SelectionMode>where
Self: Selectable,
sourcepub fn activate_position(&mut self, position: u16) -> bool
pub fn activate_position(&mut self, position: u16) -> bool
Activates the item at the given position, returning true if it was activated.
sourcepub fn builder() -> ModelBuilder<SelectionMode>
pub fn builder() -> ModelBuilder<SelectionMode>
Creates a builder for initializing a model.
let model = segmented_button::Model::builder()
.insert(|b| b.text("Item A").activate())
.insert(|b| b.text("Item B"))
.insert(|b| b.text("Item C"))
.build();
sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Removes all items from the model.
Any IDs held elsewhere by the application will no longer be usable with the map.
The generation is incremented on removal, so the stale IDs will return None
for
any attempt to get values from the map.
model.clear();
sourcepub fn closable_set(&mut self, id: Entity, closable: bool)
pub fn closable_set(&mut self, id: Entity, closable: bool)
Shows or hides the item’s close button.
sourcepub fn contains_item(&self, id: Entity) -> bool
pub fn contains_item(&self, id: Entity) -> bool
Check if an item exists in the map.
if model.contains_item(id) {
println!("ID is still valid");
}
sourcepub fn data<Data: 'static>(&self, id: Entity) -> Option<&Data>
pub fn data<Data: 'static>(&self, id: Entity) -> Option<&Data>
Get an immutable reference to data associated with an item.
if let Some(data) = model.data::<String>(id) {
println!("found string on {:?}: {}", id, data);
}
sourcepub fn data_mut<Data: 'static>(&mut self, id: Entity) -> Option<&mut Data>
pub fn data_mut<Data: 'static>(&mut self, id: Entity) -> Option<&mut Data>
Get a mutable reference to data associated with an item.
sourcepub fn data_set<Data: 'static>(&mut self, id: Entity, data: Data)
pub fn data_set<Data: 'static>(&mut self, id: Entity, data: Data)
Associates data with the item.
There may only be one data component per Rust type.
model.data_set::<String>(id, String::from("custom string"));
sourcepub fn data_remove<Data: 'static>(&mut self, id: Entity)
pub fn data_remove<Data: 'static>(&mut self, id: Entity)
Removes a specific data type from the item.
model.data.remove::<String>(id);
pub fn divider_above(&self, id: Entity) -> Option<bool>
pub fn divider_above_set( &mut self, id: Entity, divider_above: bool, ) -> Option<bool>
pub fn divider_above_remove(&mut self, id: Entity) -> Option<bool>
sourcepub fn enable(&mut self, id: Entity, enable: bool)
pub fn enable(&mut self, id: Entity, enable: bool)
Enable or disable an item.
model.enable(id, true);
sourcepub fn entity_at(&mut self, position: u16) -> Option<Entity>
pub fn entity_at(&mut self, position: u16) -> Option<Entity>
Get the item that is located at a given position.
sourcepub fn icon(&self, id: Entity) -> Option<&Icon>
pub fn icon(&self, id: Entity) -> Option<&Icon>
Immutable reference to the icon associated with the item.
if let Some(icon) = model.icon(id) {
println!("has icon: {:?}", icon);
}
sourcepub fn icon_set(&mut self, id: Entity, icon: Icon) -> Option<Icon>
pub fn icon_set(&mut self, id: Entity, icon: Icon) -> Option<Icon>
Sets a new icon for an item.
if let Some(old_icon) = model.icon_set(IconSource::from("new-icon")) {
println!("previously had icon: {:?}", old_icon);
}
sourcepub fn icon_remove(&mut self, id: Entity) -> Option<Icon>
pub fn icon_remove(&mut self, id: Entity) -> Option<Icon>
Removes the icon from an item.
if let Some(old_icon) = model.icon_remove(id) {
println!("previously had icon: {:?}", old_icon);
}
sourcepub fn insert(&mut self) -> EntityMut<'_, SelectionMode>
pub fn insert(&mut self) -> EntityMut<'_, SelectionMode>
Inserts a new item in the model.
let id = model.insert().text("Item A").icon("custom-icon").id();
sourcepub fn is_closable(&self, id: Entity) -> bool
pub fn is_closable(&self, id: Entity) -> bool
Whether the item should contain a close button.
sourcepub fn is_enabled(&self, id: Entity) -> bool
pub fn is_enabled(&self, id: Entity) -> bool
Check if the item is enabled.
if model.is_enabled(id) {
if let Some(text) = model.text(id) {
println!("{text} is enabled");
}
}
sourcepub fn iter(&self) -> impl Iterator<Item = Entity> + '_
pub fn iter(&self) -> impl Iterator<Item = Entity> + '_
Iterates across items in the model in the order that they are displayed.
pub fn indent(&self, id: Entity) -> Option<u16>
pub fn indent_set(&mut self, id: Entity, indent: u16) -> Option<u16>
pub fn indent_remove(&mut self, id: Entity) -> Option<u16>
sourcepub fn position(&self, id: Entity) -> Option<u16>
pub fn position(&self, id: Entity) -> Option<u16>
The position of the item in the model.
if let Some(position) = model.position(id) {
println!("found item at {}", position);
}
sourcepub fn position_set(&mut self, id: Entity, position: u16) -> Option<usize>
pub fn position_set(&mut self, id: Entity, position: u16) -> Option<usize>
Change the position of an item in the model.
if let Some(new_position) = model.position_set(id, 0) {
println!("placed item at {}", new_position);
}
sourcepub fn position_swap(&mut self, first: Entity, second: Entity) -> bool
pub fn position_swap(&mut self, first: Entity, second: Entity) -> bool
Swap the position of two items in the model.
Returns false if the swap cannot be performed.
if model.position_swap(first_id, second_id) {
println!("positions swapped");
}
sourcepub fn remove(&mut self, id: Entity)
pub fn remove(&mut self, id: Entity)
Removes an item from the model.
The generation of the slot for the ID will be incremented, so this ID will no
longer be usable with the map. Subsequent attempts to get values from the map
with this ID will return None
and failed to assign values.
sourcepub fn text(&self, id: Entity) -> Option<&str>
pub fn text(&self, id: Entity) -> Option<&str>
Immutable reference to the text assigned to the item.
if let Some(text) = model.text(id) {
println!("{:?} has text {text}", id);
}
Trait Implementations§
source§impl Selectable for Model<MultiSelect>
impl Selectable for Model<MultiSelect>
Auto Trait Implementations§
impl<SelectionMode> Freeze for Model<SelectionMode>where
SelectionMode: Freeze,
impl<SelectionMode> !RefUnwindSafe for Model<SelectionMode>
impl<SelectionMode> !Send for Model<SelectionMode>
impl<SelectionMode> !Sync for Model<SelectionMode>
impl<SelectionMode> Unpin for Model<SelectionMode>where
SelectionMode: Unpin,
impl<SelectionMode> !UnwindSafe for Model<SelectionMode>
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, Res> Apply<Res> for Twhere
T: ?Sized,
impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
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.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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
.source§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
.source§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.source§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.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§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> 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> 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