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
// 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::{IMContext, InputHints, InputPurpose};
use glib::{prelude::*, translate::*};
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). A subset of the file syntax described in the Compose(5)
/// manual page is supported. Additionally, `include "`L`"` loads GTK’s built-in
/// table of compose sequences rather than the locale-specific one from X11.
///
/// 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`]
#[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 {
pub const NONE: Option<&'static IMContextSimple> = None;
/// 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`](crate::builders::IMContextSimpleBuilder) which can be used to create [`IMContextSimple`] objects.
pub fn builder() -> IMContextSimpleBuilder {
IMContextSimpleBuilder::new()
}
}
impl Default for IMContextSimple {
fn default() -> Self {
Self::new()
}
}
// 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
#[must_use = "The builder must be built to be used"]
pub struct IMContextSimpleBuilder {
builder: glib::object::ObjectBuilder<'static, IMContextSimple>,
}
impl IMContextSimpleBuilder {
fn new() -> Self {
Self {
builder: glib::object::Object::builder(),
}
}
/// Additional hints that allow input methods to fine-tune
/// their behaviour.
pub fn input_hints(self, input_hints: InputHints) -> Self {
Self {
builder: self.builder.property("input-hints", input_hints),
}
}
/// 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(self, input_purpose: InputPurpose) -> Self {
Self {
builder: self.builder.property("input-purpose", input_purpose),
}
}
// rustdoc-stripper-ignore-next
/// Build the [`IMContextSimple`].
#[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
pub fn build(self) -> IMContextSimple {
self.builder.build()
}
}