51 lines
1.4 KiB
Rust
51 lines
1.4 KiB
Rust
/// `MenuAction` is a trait that represents an action in a menu.
|
|
///
|
|
/// It is used to define the behavior of menu items when they are activated.
|
|
/// Each menu item can have a unique action associated with it.
|
|
///
|
|
/// This trait is generic over a type `Message` which is the type of message
|
|
/// that will be produced when the action is triggered.
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// use cosmic::widget::menu::action::MenuAction;
|
|
/// use cosmic::widget::segmented_button::Entity;
|
|
///
|
|
/// #[derive(Clone, Copy, Eq, PartialEq)]
|
|
/// enum MyMessage {
|
|
/// Open,
|
|
/// Save,
|
|
/// Quit,
|
|
/// }
|
|
///
|
|
/// #[derive(Clone, Copy, Eq, PartialEq)]
|
|
/// enum MyAction {
|
|
/// Open,
|
|
/// Save,
|
|
/// Quit,
|
|
/// }
|
|
///
|
|
/// impl MenuAction for MyAction {
|
|
/// type Message = MyMessage;
|
|
///
|
|
/// fn message(&self) -> Self::Message {
|
|
/// match self {
|
|
/// MyAction::Open => MyMessage::Open,
|
|
/// MyAction::Save => MyMessage::Save,
|
|
/// MyAction::Quit => MyMessage::Quit,
|
|
/// }
|
|
/// }
|
|
/// }
|
|
/// ```
|
|
pub trait MenuAction: Clone + Copy + Eq + PartialEq {
|
|
/// The type of message that will be produced when the action is triggered.
|
|
type Message;
|
|
|
|
/// Returns a message of type `Self::Message` when the action is triggered.
|
|
///
|
|
/// # Returns
|
|
///
|
|
/// * `Self::Message` - The message that is produced when the action is triggered.
|
|
fn message(&self) -> Self::Message;
|
|
}
|