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
// 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::Expression;
use glib::translate::*;
use std::fmt;
glib::wrapper! {
/// A `GObject` property value in a [`Expression`][crate::Expression].
#[doc(alias = "GtkPropertyExpression")]
pub struct PropertyExpression(Shared<ffi::GtkPropertyExpression>);
match fn {
ref => |ptr| ffi::gtk_expression_ref(ptr as *mut ffi::GtkExpression),
unref => |ptr| ffi::gtk_expression_unref(ptr as *mut ffi::GtkExpression),
}
}
impl glib::StaticType for PropertyExpression {
fn static_type() -> glib::Type {
unsafe { from_glib(ffi::gtk_property_expression_get_type()) }
}
}
impl PropertyExpression {
/// Creates an expression that looks up a property.
///
/// The object to use is found by evaluating the `expression`,
/// or using the `this` argument when `expression` is `NULL`.
///
/// If the resulting object conforms to `this_type`, its property named
/// `property_name` will be queried. Otherwise, this expression's
/// evaluation will fail.
///
/// The given `this_type` must have a property with `property_name`.
/// ## `this_type`
/// The type to expect for the this type
/// ## `expression`
/// Expression to
/// evaluate to get the object to query or `NULL` to
/// query the `this` object
/// ## `property_name`
/// name of the property
///
/// # Returns
///
/// a new [`Expression`][crate::Expression]
#[doc(alias = "gtk_property_expression_new")]
pub fn new(
this_type: glib::types::Type,
expression: Option<impl AsRef<Expression>>,
property_name: &str,
) -> PropertyExpression {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::gtk_property_expression_new(
this_type.into_glib(),
expression
.map(|p| p.as_ref().clone().upcast())
.into_glib_ptr(),
property_name.to_glib_none().0,
))
}
}
/// Creates an expression that looks up a property.
///
/// The object to use is found by evaluating the `expression`,
/// or using the `this` argument when `expression` is `NULL`.
///
/// If the resulting object conforms to `this_type`, its
/// property specified by `pspec` will be queried.
/// Otherwise, this expression's evaluation will fail.
/// ## `expression`
/// Expression to
/// evaluate to get the object to query or `NULL` to
/// query the `this` object
/// ## `pspec`
/// the `GParamSpec` for the property to query
///
/// # Returns
///
/// a new [`Expression`][crate::Expression]
#[doc(alias = "gtk_property_expression_new_for_pspec")]
#[doc(alias = "new_for_pspec")]
pub fn for_pspec(
expression: Option<impl AsRef<Expression>>,
pspec: impl AsRef<glib::ParamSpec>,
) -> PropertyExpression {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::gtk_property_expression_new_for_pspec(
expression
.map(|p| p.as_ref().clone().upcast())
.into_glib_ptr(),
pspec.as_ref().to_glib_none().0,
))
}
}
/// Gets the expression specifying the object of
/// a property expression.
///
/// # Returns
///
/// the object expression
#[doc(alias = "gtk_property_expression_get_expression")]
#[doc(alias = "get_expression")]
pub fn expression(&self) -> Option<Expression> {
unsafe {
from_glib_none(ffi::gtk_property_expression_get_expression(
self.to_glib_none().0,
))
}
}
/// Gets the `GParamSpec` specifying the property of
/// a property expression.
///
/// # Returns
///
/// the `GParamSpec` for the property
#[doc(alias = "gtk_property_expression_get_pspec")]
#[doc(alias = "get_pspec")]
pub fn pspec(&self) -> glib::ParamSpec {
unsafe {
from_glib_none(ffi::gtk_property_expression_get_pspec(
self.to_glib_none().0,
))
}
}
}
impl fmt::Display for PropertyExpression {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("PropertyExpression")
}
}