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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
// 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 glib::object::IsA;
use glib::translate::*;
use std::fmt;
glib::wrapper! {
/// The ATK interface provided by UI components
/// which the user can activate/interact with.
///
/// [`Action`][crate::Action] should be implemented by instances of [`Object`][crate::Object] classes
/// with which the user can interact directly, i.e. buttons,
/// checkboxes, scrollbars, e.g. components which are not "passive"
/// providers of UI information.
///
/// Exceptions: when the user interaction is already covered by another
/// appropriate interface such as [`EditableText`][crate::EditableText] (insert/delete text,
/// etc.) or [`Value`][crate::Value] (set value) then these actions should not be
/// exposed by [`Action`][crate::Action] as well.
///
/// Though most UI interactions on components should be invocable via
/// keyboard as well as mouse, there will generally be a close mapping
/// between "mouse actions" that are possible on a component and the
/// AtkActions. Where mouse and keyboard actions are redundant in
/// effect, [`Action`][crate::Action] should expose only one action rather than
/// exposing redundant actions if possible. By convention we have been
/// using "mouse centric" terminology for [`Action`][crate::Action] names.
///
/// # Implements
///
/// [`AtkActionExt`][trait@crate::prelude::AtkActionExt]
#[doc(alias = "AtkAction")]
pub struct Action(Interface<ffi::AtkAction, ffi::AtkActionIface>);
match fn {
type_ => || ffi::atk_action_get_type(),
}
}
impl Action {
pub const NONE: Option<&'static Action> = None;
}
/// Trait containing all [`struct@Action`] methods.
///
/// # Implementors
///
/// [`Action`][struct@crate::Action], [`Hyperlink`][struct@crate::Hyperlink], [`NoOpObject`][struct@crate::NoOpObject]
pub trait AtkActionExt: 'static {
/// Perform the specified action on the object.
/// ## `i`
/// the action index corresponding to the action to be performed
///
/// # Returns
///
/// [`true`] if success, [`false`] otherwise
#[doc(alias = "atk_action_do_action")]
fn do_action(&self, i: i32) -> bool;
/// Returns a description of the specified action of the object.
/// ## `i`
/// the action index corresponding to the action to be performed
///
/// # Returns
///
/// a description string, or [`None`] if `self` does
/// not implement this interface.
#[doc(alias = "atk_action_get_description")]
#[doc(alias = "get_description")]
fn description(&self, i: i32) -> Option<glib::GString>;
/// Gets the keybinding which can be used to activate this action, if one
/// exists. The string returned should contain localized, human-readable,
/// key sequences as they would appear when displayed on screen. It must
/// be in the format "mnemonic;sequence;shortcut".
///
/// - The mnemonic key activates the object if it is presently enabled onscreen.
/// This typically corresponds to the underlined letter within the widget.
/// Example: "n" in a traditional "New..." menu item or the "a" in "Apply" for
/// a button.
/// - The sequence is the full list of keys which invoke the action even if the
/// relevant element is not currently shown on screen. For instance, for a menu
/// item the sequence is the keybindings used to open the parent menus before
/// invoking. The sequence string is colon-delimited. Example: "Alt+F:N" in a
/// traditional "New..." menu item.
/// - The shortcut, if it exists, will invoke the same action without showing
/// the component or its enclosing menus or dialogs. Example: "Ctrl+N" in a
/// traditional "New..." menu item.
///
/// Example: For a traditional "New..." menu item, the expected return value
/// would be: "N;Alt+F:N;Ctrl+N" for the English locale and "N;Alt+D:N;Strg+N"
/// for the German locale. If, hypothetically, this menu item lacked a mnemonic,
/// it would be represented by ";;Ctrl+N" and ";;Strg+N" respectively.
/// ## `i`
/// the action index corresponding to the action to be performed
///
/// # Returns
///
/// the keybinding which can be used to activate
/// this action, or [`None`] if there is no keybinding for this action.
#[doc(alias = "atk_action_get_keybinding")]
#[doc(alias = "get_keybinding")]
fn keybinding(&self, i: i32) -> Option<glib::GString>;
/// Returns the localized name of the specified action of the object.
/// ## `i`
/// the action index corresponding to the action to be performed
///
/// # Returns
///
/// a name string, or [`None`] if `self` does not
/// implement this interface.
#[doc(alias = "atk_action_get_localized_name")]
#[doc(alias = "get_localized_name")]
fn localized_name(&self, i: i32) -> Option<glib::GString>;
/// Gets the number of accessible actions available on the object.
/// If there are more than one, the first one is considered the
/// "default" action of the object.
///
/// # Returns
///
/// a the number of actions, or 0 if `self` does not
/// implement this interface.
#[doc(alias = "atk_action_get_n_actions")]
#[doc(alias = "get_n_actions")]
fn n_actions(&self) -> i32;
/// Returns a non-localized string naming the specified action of the
/// object. This name is generally not descriptive of the end result
/// of the action, but instead names the 'interaction type' which the
/// object supports. By convention, the above strings should be used to
/// represent the actions which correspond to the common point-and-click
/// interaction techniques of the same name: i.e.
/// "click", "press", "release", "drag", "drop", "popup", etc.
/// The "popup" action should be used to pop up a context menu for the
/// object, if one exists.
///
/// For technical reasons, some toolkits cannot guarantee that the
/// reported action is actually 'bound' to a nontrivial user event;
/// i.e. the result of some actions via [`do_action()`][Self::do_action()] may be
/// NIL.
/// ## `i`
/// the action index corresponding to the action to be performed
///
/// # Returns
///
/// a name string, or [`None`] if `self` does not
/// implement this interface.
#[doc(alias = "atk_action_get_name")]
#[doc(alias = "get_name")]
fn name(&self, i: i32) -> Option<glib::GString>;
/// Sets a description of the specified action of the object.
/// ## `i`
/// the action index corresponding to the action to be performed
/// ## `desc`
/// the description to be assigned to this action
///
/// # Returns
///
/// a gboolean representing if the description was successfully set;
#[doc(alias = "atk_action_set_description")]
fn set_description(&self, i: i32, desc: &str) -> bool;
}
impl<O: IsA<Action>> AtkActionExt for O {
fn do_action(&self, i: i32) -> bool {
unsafe { from_glib(ffi::atk_action_do_action(self.as_ref().to_glib_none().0, i)) }
}
fn description(&self, i: i32) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::atk_action_get_description(
self.as_ref().to_glib_none().0,
i,
))
}
}
fn keybinding(&self, i: i32) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::atk_action_get_keybinding(
self.as_ref().to_glib_none().0,
i,
))
}
}
fn localized_name(&self, i: i32) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::atk_action_get_localized_name(
self.as_ref().to_glib_none().0,
i,
))
}
}
fn n_actions(&self) -> i32 {
unsafe { ffi::atk_action_get_n_actions(self.as_ref().to_glib_none().0) }
}
fn name(&self, i: i32) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::atk_action_get_name(self.as_ref().to_glib_none().0, i)) }
}
fn set_description(&self, i: i32, desc: &str) -> bool {
unsafe {
from_glib(ffi::atk_action_set_description(
self.as_ref().to_glib_none().0,
i,
desc.to_glib_none().0,
))
}
}
}
impl fmt::Display for Action {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("Action")
}
}