1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use crate::Action;
use glib::object::IsA;
use glib::translate::*;
use std::fmt;
glib::wrapper! {
/// The GActionMap interface is implemented by [`ActionGroup`][crate::ActionGroup]
/// implementations that operate by containing a number of
/// named [`Action`][crate::Action] instances, such as [`SimpleActionGroup`][crate::SimpleActionGroup].
///
/// One useful application of this interface is to map the
/// names of actions from various action groups to unique,
/// prefixed names (e.g. by prepending "app." or "win.").
/// This is the motivation for the 'Map' part of the interface
/// name.
///
/// # Implements
///
/// [`ActionMapExt`][trait@crate::prelude::ActionMapExt]
#[doc(alias = "GActionMap")]
pub struct ActionMap(Interface<ffi::GActionMap, ffi::GActionMapInterface>);
match fn {
type_ => || ffi::g_action_map_get_type(),
}
}
impl ActionMap {
pub const NONE: Option<&'static ActionMap> = None;
}
/// Trait containing all [`struct@ActionMap`] methods.
///
/// # Implementors
///
/// [`ActionMap`][struct@crate::ActionMap], [`Application`][struct@crate::Application], [`SimpleActionGroup`][struct@crate::SimpleActionGroup]
pub trait ActionMapExt: 'static {
/// Adds an action to the `self`.
///
/// If the action map already contains an action with the same name
/// as `action` then the old action is dropped from the action map.
///
/// The action map takes its own reference on `action`.
/// ## `action`
/// a [`Action`][crate::Action]
#[doc(alias = "g_action_map_add_action")]
fn add_action(&self, action: &impl IsA<Action>);
//#[doc(alias = "g_action_map_add_action_entries")]
//fn add_action_entries(&self, entries: /*Ignored*/&[ActionEntry], user_data: /*Unimplemented*/Option<Fundamental: Pointer>);
/// Looks up the action with the name `action_name` in `self`.
///
/// If no such action exists, returns [`None`].
/// ## `action_name`
/// the name of an action
///
/// # Returns
///
/// a [`Action`][crate::Action], or [`None`]
#[doc(alias = "g_action_map_lookup_action")]
fn lookup_action(&self, action_name: &str) -> Option<Action>;
/// Removes the named action from the action map.
///
/// If no action of this name is in the map then nothing happens.
/// ## `action_name`
/// the name of the action
#[doc(alias = "g_action_map_remove_action")]
fn remove_action(&self, action_name: &str);
}
impl<O: IsA<ActionMap>> ActionMapExt for O {
fn add_action(&self, action: &impl IsA<Action>) {
unsafe {
ffi::g_action_map_add_action(
self.as_ref().to_glib_none().0,
action.as_ref().to_glib_none().0,
);
}
}
//fn add_action_entries(&self, entries: /*Ignored*/&[ActionEntry], user_data: /*Unimplemented*/Option<Fundamental: Pointer>) {
// unsafe { TODO: call ffi:g_action_map_add_action_entries() }
//}
fn lookup_action(&self, action_name: &str) -> Option<Action> {
unsafe {
from_glib_none(ffi::g_action_map_lookup_action(
self.as_ref().to_glib_none().0,
action_name.to_glib_none().0,
))
}
}
fn remove_action(&self, action_name: &str) {
unsafe {
ffi::g_action_map_remove_action(
self.as_ref().to_glib_none().0,
action_name.to_glib_none().0,
);
}
}
}
impl fmt::Display for ActionMap {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("ActionMap")
}
}