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
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files.git)
// DO NOT EDIT
use glib::object::IsA;
use glib::translate::*;
use std::fmt;
glib::wrapper! {
/// [`ShortcutTrigger`][crate::ShortcutTrigger] tracks how a [`Shortcut`][crate::Shortcut] should be activated.
///
/// To find out if a [`ShortcutTrigger`][crate::ShortcutTrigger] triggers, you can call
/// [`ShortcutTriggerExtManual::trigger()`][crate::prelude::ShortcutTriggerExtManual::trigger()] on a [`gdk::Event`][crate::gdk::Event].
///
/// `GtkShortcutTriggers` contain functions that allow easy presentation
/// to end users as well as being printed for debugging.
///
/// All `GtkShortcutTriggers` are immutable, you can only specify their
/// properties during construction. If you want to change a trigger, you
/// have to replace it with a new one.
///
/// This is an Abstract Base Class, you cannot instantiate it.
///
/// # Implements
///
/// [`ShortcutTriggerExt`][trait@crate::prelude::ShortcutTriggerExt], [`trait@glib::ObjectExt`], [`ShortcutTriggerExtManual`][trait@crate::prelude::ShortcutTriggerExtManual]
#[doc(alias = "GtkShortcutTrigger")]
pub struct ShortcutTrigger(Object<ffi::GtkShortcutTrigger, ffi::GtkShortcutTriggerClass>);
match fn {
type_ => || ffi::gtk_shortcut_trigger_get_type(),
}
}
impl ShortcutTrigger {
pub const NONE: Option<&'static ShortcutTrigger> = None;
/// Tries to parse the given string into a trigger.
///
/// On success, the parsed trigger is returned.
/// When parsing failed, [`None`] is returned.
///
/// The accepted strings are:
///
/// - `never`, for [`NeverTrigger`][crate::NeverTrigger]
/// - a string parsed by gtk_accelerator_parse(), for a [`KeyvalTrigger`][crate::KeyvalTrigger], e.g. `<Control>C`
/// - underscore, followed by a single character, for [`MnemonicTrigger`][crate::MnemonicTrigger], e.g. `_l`
/// - two valid trigger strings, separated by a `|` character, for a
/// [`AlternativeTrigger`][crate::AlternativeTrigger]: `<Control>q|<Control>w`
///
/// Note that you will have to escape the `<` and `>` characters when specifying
/// triggers in XML files, such as GtkBuilder ui files. Use `<` instead of
/// `<` and `>` instead of `>`.
/// ## `string`
/// the string to parse
///
/// # Returns
///
/// a new [`ShortcutTrigger`][crate::ShortcutTrigger]
#[doc(alias = "gtk_shortcut_trigger_parse_string")]
pub fn parse_string(string: &str) -> Option<ShortcutTrigger> {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::gtk_shortcut_trigger_parse_string(
string.to_glib_none().0,
))
}
}
}
impl fmt::Display for ShortcutTrigger {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(&ShortcutTriggerExt::to_str(self))
}
}
/// Trait containing all [`struct@ShortcutTrigger`] methods.
///
/// # Implementors
///
/// [`AlternativeTrigger`][struct@crate::AlternativeTrigger], [`KeyvalTrigger`][struct@crate::KeyvalTrigger], [`MnemonicTrigger`][struct@crate::MnemonicTrigger], [`NeverTrigger`][struct@crate::NeverTrigger], [`ShortcutTrigger`][struct@crate::ShortcutTrigger]
pub trait ShortcutTriggerExt: 'static {
/// Gets textual representation for the given trigger.
///
/// This function is returning a translated string for
/// presentation to end users for example in menu items
/// or in help texts.
///
/// The @display in use may influence the resulting string in
/// various forms, such as resolving hardware keycodes or by
/// causing display-specific modifier names.
///
/// The form of the representation may change at any time and is
/// not guaranteed to stay identical.
/// ## `display`
/// [`gdk::Display`][crate::gdk::Display] to print for
///
/// # Returns
///
/// a new string
#[doc(alias = "gtk_shortcut_trigger_to_label")]
fn to_label(&self, display: &impl IsA<gdk::Display>) -> glib::GString;
/// Prints the given trigger into a human-readable string.
///
/// This is a small wrapper around `Gtk::ShortcutTrigger::print()`
/// to help when debugging.
///
/// # Returns
///
/// a new string
#[doc(alias = "gtk_shortcut_trigger_to_string")]
#[doc(alias = "to_string")]
fn to_str(&self) -> glib::GString;
}
impl<O: IsA<ShortcutTrigger>> ShortcutTriggerExt for O {
fn to_label(&self, display: &impl IsA<gdk::Display>) -> glib::GString {
unsafe {
from_glib_full(ffi::gtk_shortcut_trigger_to_label(
self.as_ref().to_glib_none().0,
display.as_ref().to_glib_none().0,
))
}
}
fn to_str(&self) -> glib::GString {
unsafe {
from_glib_full(ffi::gtk_shortcut_trigger_to_string(
self.as_ref().to_glib_none().0,
))
}
}
}