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
// 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 crate::IMContext;
use crate::InputHints;
use crate::InputPurpose;
use glib::object::Cast;
use glib::translate::*;
use glib::StaticType;
use glib::ToValue;
use std::fmt;
glib::wrapper! {
/// [`IMContextSimple`][crate::IMContextSimple] is an input method supporting table-based input methods.
///
/// ## Compose sequences
///
/// [`IMContextSimple`][crate::IMContextSimple] reads compose sequences from the first of the
/// following files that is found: ~/.config/gtk-4.0/Compose, ~/.XCompose,
/// /usr/share/X11/locale/$locale/Compose (for locales that have a nontrivial
/// Compose file). The syntax of these files is described in the Compose(5)
/// manual page.
///
/// If none of these files is found, [`IMContextSimple`][crate::IMContextSimple] uses a built-in table
/// of compose sequences that is derived from the X11 Compose files.
///
/// Note that compose sequences typically start with the Compose_key, which is
/// often not available as a dedicated key on keyboards. Keyboard layouts may
/// map this keysym to other keys, such as the right Control key.
///
/// ## Unicode characters
///
/// [`IMContextSimple`][crate::IMContextSimple] also supports numeric entry of Unicode characters
/// by typing `<kbd>`Ctrl`</kbd>`-`<kbd>`Shift`</kbd>`-`<kbd>`u`</kbd>`, followed by a
/// hexadecimal Unicode codepoint.
///
/// For example,
///
/// Ctrl-Shift-u 1 2 3 Enter
///
/// yields U+0123 LATIN SMALL LETTER G WITH CEDILLA, i.e. ģ.
///
/// ## Dead keys
///
/// [`IMContextSimple`][crate::IMContextSimple] supports dead keys. For example, typing
///
/// dead_acute a
///
/// yields U+00E! LATIN SMALL LETTER_A WITH ACUTE, i.e. á. Note that this
/// depends on the keyboard layout including dead keys.
///
/// # Implements
///
/// [`IMContextExt`][trait@crate::prelude::IMContextExt], [`trait@glib::ObjectExt`], [`IMContextExtManual`][trait@crate::prelude::IMContextExtManual]
#[doc(alias = "GtkIMContextSimple")]
pub struct IMContextSimple(Object<ffi::GtkIMContextSimple, ffi::GtkIMContextSimpleClass>) @extends IMContext;
match fn {
type_ => || ffi::gtk_im_context_simple_get_type(),
}
}
impl IMContextSimple {
/// Creates a new [`IMContextSimple`][crate::IMContextSimple].
///
/// # Returns
///
/// a new [`IMContextSimple`][crate::IMContextSimple]
#[doc(alias = "gtk_im_context_simple_new")]
pub fn new() -> IMContextSimple {
assert_initialized_main_thread!();
unsafe { IMContext::from_glib_full(ffi::gtk_im_context_simple_new()).unsafe_cast() }
}
// rustdoc-stripper-ignore-next
/// Creates a new builder-pattern struct instance to construct [`IMContextSimple`] objects.
///
/// This method returns an instance of [`IMContextSimpleBuilder`] which can be used to create [`IMContextSimple`] objects.
pub fn builder() -> IMContextSimpleBuilder {
IMContextSimpleBuilder::default()
}
}
impl Default for IMContextSimple {
fn default() -> Self {
Self::new()
}
}
#[derive(Clone, Default)]
// rustdoc-stripper-ignore-next
/// A [builder-pattern] type to construct [`IMContextSimple`] objects.
///
/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
pub struct IMContextSimpleBuilder {
input_hints: Option<InputHints>,
input_purpose: Option<InputPurpose>,
}
impl IMContextSimpleBuilder {
// rustdoc-stripper-ignore-next
/// Create a new [`IMContextSimpleBuilder`].
pub fn new() -> Self {
Self::default()
}
// rustdoc-stripper-ignore-next
/// Build the [`IMContextSimple`].
pub fn build(self) -> IMContextSimple {
let mut properties: Vec<(&str, &dyn ToValue)> = vec![];
if let Some(ref input_hints) = self.input_hints {
properties.push(("input-hints", input_hints));
}
if let Some(ref input_purpose) = self.input_purpose {
properties.push(("input-purpose", input_purpose));
}
glib::Object::new::<IMContextSimple>(&properties)
.expect("Failed to create an instance of IMContextSimple")
}
/// Additional hints that allow input methods to fine-tune
/// their behaviour.
pub fn input_hints(mut self, input_hints: InputHints) -> Self {
self.input_hints = Some(input_hints);
self
}
/// The purpose of the text field that the `GtkIMContext is connected to.
///
/// This property can be used by on-screen keyboards and other input
/// methods to adjust their behaviour.
pub fn input_purpose(mut self, input_purpose: InputPurpose) -> Self {
self.input_purpose = Some(input_purpose);
self
}
}
pub const NONE_IM_CONTEXT_SIMPLE: Option<&IMContextSimple> = None;
impl fmt::Display for IMContextSimple {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("IMContextSimple")
}
}