Spec-Zone.ru › GTK 4.0

GtkExpression

GtkExpression — Выражения для значений

Функции

void (*GtkExpressionNotify) ()
GtkExpression * gtk_expression_ref ()
void gtk_expression_unref ()
GType gtk_expression_get_value_type ()
gboolean gtk_expression_is_static ()
gboolean gtk_expression_evaluate ()
GtkExpressionWatch * gtk_expression_watch ()
GtkExpressionWatch * gtk_expression_bind ()
GtkExpressionWatch * gtk_expression_watch_ref ()
void gtk_expression_watch_unref ()
gboolean gtk_expression_watch_evaluate ()
void gtk_expression_watch_unwatch ()
GtkExpression * gtk_property_expression_new ()
GtkExpression * gtk_property_expression_new_for_pspec ()
GtkExpression * gtk_property_expression_get_expression ()
GParamSpec * gtk_property_expression_get_pspec ()
GtkExpression * gtk_constant_expression_new ()
GtkExpression * gtk_constant_expression_new_for_value ()
const GValue * gtk_constant_expression_get_value ()
GtkExpression * gtk_object_expression_new ()
GObject * gtk_object_expression_get_object ()
GtkExpression * gtk_closure_expression_new ()
GtkExpression * gtk_cclosure_expression_new ()
#define GTK_VALUE_HOLDS_EXPRESSION()
void gtk_value_set_expression ()
void gtk_value_take_expression ()
GtkExpression * gtk_value_get_expression ()
GtkExpression * gtk_value_dup_expression ()
GParamSpec * gtk_param_spec_expression ()

Типы и значения

GtkExpression
GtkExpressionWatch
GtkParamSpecExpression

Иерархия объектов

    GtkExpression

Файлы заголовков

#include <gtk/gtk.h>

Описание

GtkExpression предоставляет способ описания ссылок на значения.

Важным аспектом выражений является то, что значение может быть получено из источника, находящегося на несколько шагов дальше. Например, выражение может описывать «значение свойства A объекта object1, которое само по себе является значением свойства объекта object2». И object1 может даже ещё не существовать на момент создания выражения. Это контрастирует с привязками свойств GObject, которые могут создавать только прямые связи между свойствами двух объектов, которые должны оба существовать в течение всего срока действия привязки.

Для получения значения, на которое в данный момент ссылается выражение, необходимо его «оценить». Оценка всегда происходит в контексте текущего объекта, называемого this (это отражает поведение объектно-ориентированных языков), который может или не может повлиять на результат оценки. Для оценки выражения используйте gtk_expression_evaluate().

Существуют различные методы определения выражений, начиная от простых констант с помощью gtk_constant_expression_new(), до поиска свойств в GObject (даже рекурсивно) с помощью gtk_property_expression_new() или предоставления пользовательских функций для преобразования и комбинирования выражений с помощью gtk_closure_expression_new().

Вот пример сложного выражения:

при оценке, где this является GtkListItem, оно получит свойство «item» от GtkListItem, а затем получит свойство «name» от получившегося объекта (который предполагается типа GTK_TYPE_COLOR).

Более краткое описание этого:

Вероятнее всего, вы столкнетесь с выражениями в контексте моделей списков и виджетов списков, использующих их. Например, GtkDropDown оценивает GtkExpression для получения строк из элементов в своей модели, которые затем могут быть использованы для сопоставления с содержимым поля поиска. GtkStringFilter использует GtkExpression по аналогичным причинам.

По умолчанию выражения не отслеживают изменения, и оценка представляет собой лишь моментальное состояние в данный момент времени. Для получения информации о изменениях, выражение необходимо «наблюдать» с помощью GtkExpressionWatch, что вызовет обратный вызов всякий раз, когда значение выражения может измениться. gtk_expression_watch() начинает наблюдать за выражением, а gtk_expression_watch_unwatch() останавливает.

Наблюдения могут быть созданы для автоматического обновления свойства объекта, аналогично механизму GBinding GObject, с помощью gtk_expression_bind().

GtkExpression в свойствах GObject

Для использования GtkExpression как свойства GObject, необходимо использовать gtk_param_spec_expression() при создании GParamSpec для установки в класс GObject, который определяется; например:

При реализации виртуальных функций GObjectClass.set_property() и GObjectClass.get_property() необходимо использовать gtk_value_get_expression() для извлечения сохранённого GtkExpression из контейнера GValue и gtk_value_set_expression() для сохранения GtkExpression в GValue; например:

GtkExpression в файлах .ui

GtkBuilder поддерживает создание выражений. Этот синтаксис может быть использован там, где нужен объект GtkExpression, как в тэге <property> для свойства выражения или в тэге <binding> для привязки свойства к выражению.

Для создания выражения свойства используйте элемент <lookup>. Он может иметь атрибут type для указания типа объекта и атрибут name для указания свойства для поиска. Содержимое <lookup> может быть элементом, определяющим выражение для использования объекта, или строкой, определяющей имя используемого объекта.

Пример:

Для создания константного выражения используйте элемент <constant>. Если указан атрибут type, содержимое элемента интерпретируется как значение данного типа. В противном случае предполагается, что это объект.

Пример:

Для создания выражения замыкания используйте элемент <closure>. Атрибуты type и function указывают функцию для использования в замыкании, содержимое элемента содержит выражения для параметров.

Пример:

color_expr = gtk_property_expression_new (GTK_TYPE_LIST_ITEM,
                                          NULL, "item");
expression = gtk_property_expression_new (GTK_TYPE_COLOR,
                                          color_expr, "name");

Функции

GtkExpressionNotify ()

void
(*GtkExpressionNotify) (gpointer user_data);

Обратный вызов, вызываемый gtk_expression_watch(), когда значение выражения изменяется.

Параметры

user_data

данные, переданные в gtk_expression_watch()

gtk_expression_ref ()

GtkExpression *
gtk_expression_ref (GtkExpression *self);

Получает ссылку на заданный GtkExpression.

Параметры

self

a GtkExpression.

[allow-none]

Возвращает

GtkExpression с дополнительной ссылкой.

[transfer none]

gtk_expression_unref ()

void
gtk_expression_unref (GtkExpression *self);

Освобождает ссылку на заданный GtkExpression.

Если ссылка была последней, ресурсы, связанные с self, освобождаются.

Параметры

self

a GtkExpression.

[allow-none]

gtk_expression_get_value_type ()

GType
gtk_expression_get_value_type (GtkExpression *self);

Получает GType, к которому вычисляется это выражение. Этот тип является постоянным и не изменится на протяжении всего жизненного цикла этого выражения.

Параметры

self

a GtkExpression

Возвращает

Тип, возвращаемый gtk_expression_evaluate()

gtk_expression_is_static ()

gboolean
gtk_expression_is_static (GtkExpression *self);

Проверяет, является ли выражение статическим.

Статическое выражение никогда не изменит свой результат при вызове gtk_expression_evaluate() с теми же аргументами.

Это означает, что вызов gtk_expression_watch() не нужен, так как он никогда не вызовет уведомление.

Параметры

self

a GtkExpression

Возвращает

TRUE , если выражение статическое

gtk_expression_evaluate ()

gboolean
gtk_expression_evaluate (GtkExpression *self,
                         gpointer this_,
                         GValue *value);

Вычисляет заданное выражение и при успехе сохраняет результат в value . Тип GType value будет типом, указанным в gtk_expression_get_value_type().

Возможны ситуации, когда выражение не может быть вычислено — например, когда выражение ссылается на объекты, которые были уничтожены или установлены в состояние NULL. В этом случае value останется пустым, и будет возвращено FALSE.

Параметры

self

a GtkExpression

this_

аргумент this для вычисления.

[transfer none][type GObject][nullable]

value

пустой GValue

Возвращает

TRUE , если выражение можно вычислить

gtk_expression_watch ()

GtkExpressionWatch *
gtk_expression_watch (GtkExpression *self,
                      gpointer this_,
                      GtkExpressionNotify notify,
                      gpointer user_data,
                      GDestroyNotify user_destroy);

Устанавливает наблюдение за заданным expression, которое вызывает функцию notify всякий раз, когда вычисление self может измениться.

GTK не гарантирует, что вычисление действительно изменилось, когда вызывается notify, но гарантирует обратное: когда оно действительно изменилось, вызов notify будет произведен.

Параметры

self

a GtkExpression

this_

аргумент this для наблюдения.

[transfer none][type GObject][nullable]

notify

обратный вызов для вызова, когда выражение изменяется.

[closure user_data]

user_data

данные пользователя для передачи в обратный вызов notify

user_destroy

разрушение для обратного вызова user_data

Возвращает

Новое установленное наблюдение. Обратите внимание, что единственная ссылка, удерживаемая за наблюдение, будет освобождена при снятии наблюдения, что может произойти автоматически, а не только через gtk_expression_watch_unwatch(). Вы должны вызвать gtk_expression_watch_ref(), если хотите сохранить наблюдение.

[transfer none]

gtk_expression_bind ()

GtkExpressionWatch *
gtk_expression_bind (GtkExpression *self,
                     gpointer target,
                     const char *property,
                     gpointer this_);

Связывает свойство target с именем property объекта self.

Значение, вычисляемое выражением self, устанавливается с помощью g_object_set() объекта target. Эта операция повторяется всякий раз, когда изменяется self, для обеспечения синхронизации свойства объекта с self.

Если вычисление self завершится неудачно, свойство target, property, не будет обновлено. Для предотвращения этого можно использовать резервное выражение.

Обратите внимание, что эта функция принимает во владение self. Если вам нужно сохранить его, необходимо gtk_expression_ref() его заранее.

Параметры

self

объект GtkExpression.

[transfer full]

target

целевой объект для привязки.

[transfer none][type GObject]

property

имя свойства объекта target для привязки.

this_

аргумент this для вычисления self.

[transfer none][type GObject][nullable]

Возвращаемое значение

объект GtkExpressionWatch.

[transfer none]

gtk_expression_watch_ref ()

GtkExpressionWatch *
gtk_expression_watch_ref (GtkExpressionWatch *watch);

Получает ссылку на заданный GtkExpressionWatch.

Параметры

watch

объект GtkExpressionWatch.

[allow-none]

Возвращаемое значение

объект GtkExpression с дополнительной ссылкой.

[transfer none]

gtk_expression_watch_unref ()

void
gtk_expression_watch_unref (GtkExpressionWatch *watch);

Освобождает ссылку на заданный GtkExpressionWatch.

Если эта ссылка была последней, ресурсы, связанные с self, освобождаются.

Параметры

watch

объект GtkExpressionWatch.

[allow-none]

gtk_expression_watch_evaluate ()

gboolean
gtk_expression_watch_evaluate (GtkExpressionWatch *watch,
                               GValue *value);

Вычисляет наблюдаемое выражение и в случае успеха сохраняет результат в value.

Это эквивалентно вызову gtk_expression_evaluate() с выражением и указателем this, первоначально используемыми для создания watch.

Параметры

watch

объект GtkExpressionWatch

value

пустой GValue для установки

Возвращаемое значение

TRUE в случае успешного вычисления и установки value

gtk_expression_watch_unwatch ()

void
gtk_expression_watch_unwatch (GtkExpressionWatch *watch);

Прекращает наблюдение за выражением, установленным с помощью gtk_expression_watch().

Параметры

watch

наблюдаемое выражение для освобождения.

[transfer none]

gtk_property_expression_new ()

GtkExpression *
gtk_property_expression_new (GType this_type,
                             GtkExpression *expression,
                             const char *property_name);

Создаёт выражение, которое ищет свойство через заданный expression или аргумент this, когда expression равно NULL.

Если полученный объект соответствует this_type, будет запрошено свойство с именем property_name. В противном случае вычисление выражения завершится неудачей.

Указанный this_type должен иметь свойство с типом property_name.

Параметры

this_type

Ожидаемый тип.

expression

Выражение для получения объекта для запроса или NULL, чтобы запросить объект this.

[nullable][transfer full]

property_name

имя свойства.

Возвращаемое значение

новый объект GtkExpression

gtk_property_expression_new_for_pspec ()

GtkExpression *
gtk_property_expression_new_for_pspec (GtkExpression *expression,
                                       GParamSpec *pspec);

Создаёт выражение, которое ищет свойство через заданный expression или аргумент this, когда expression равно NULL.

Если полученный объект соответствует this_type, будет запрошено свойство, указанное с помощью pspec. В противном случае вычисление выражения завершится неудачей.

Параметры

expression

Выражение для получения объекта для запроса или NULL, чтобы запросить объект this.

[nullable][transfer full]

pspec

объект GParamSpec для запроса свойства.

Возвращаемое значение

новый объект GtkExpression

gtk_property_expression_get_expression ()

GtkExpression *
gtk_property_expression_get_expression
                               (GtkExpression *expression);

Получает выражение, определяющее объект выражения свойства.

Параметры

expression

свойство GtkExpression.

[type GtkPropertyExpression]

Возвращает

выражение объекта.

[transfer none]

gtk_property_expression_get_pspec ()

GParamSpec *
gtk_property_expression_get_pspec (GtkExpression *expression);

Получает GParamSpec, определяющий свойство выражения свойства.

Параметры

expression

свойство GtkExpression.

[type GtkPropertyExpression]

Возвращает

значение GParamSpec.

[transfer none]

gtk_constant_expression_new ()

GtkExpression *
gtk_constant_expression_new (GType value_type,
                             ...);

Создаёт GtkExpression, который вычисляет объект, заданный аргументами.

Параметры

value_type

Тип объекта

...

аргументы для создания объекта

Возвращает

новый GtkExpression

gtk_constant_expression_new_for_value ()

GtkExpression *
gtk_constant_expression_new_for_value (const GValue *value);

Создаёт выражение, которое всегда вычисляет заданный value .

Параметры

value

значение GValue

Возвращает

новый GtkExpression

gtk_constant_expression_get_value ()

const GValue *
gtk_constant_expression_get_value (GtkExpression *expression);

Получает значение, к которому вычисляется константное выражение.

Параметры

expression

постоянное GtkExpression.

[type GtkConstantExpression]

Возвращает

значение.

[transfer none]

gtk_object_expression_new ()

GtkExpression *
gtk_object_expression_new (GObject *object);

Создаёт выражение, вычисляющее заданный object со слабой ссылкой. После удаления object вычисление завершится ошибкой. Это выражение предназначено для разрыва циклов ссылок.

Если вы хотите сохранить ссылку на object , используйте gtk_constant_expression_new().

Параметры

object

объект для отслеживания.

[transfer none]

Возвращает

новый GtkExpression

gtk_object_expression_get_object ()

GObject *
gtk_object_expression_get_object (GtkExpression *expression);

Получает объект, к которому вычисляется выражение.

Параметры

expression

объектное GtkExpression.

[type GtkObjectExpression]

Возвращает

объект или NULL.

[transfer none][nullable]

gtk_closure-expression-new ()

GtkExpression *
gtk_closure_expression_new (GType value_type,
                            GClosure *closure,
                            guint n_params,
                            GtkExpression **params);

Создаёт GtkExpression, который вызывает closure при вычислении. closure вызывается с объектом this и результатами вычисления params выражений.

Параметры

value_type

тип значения, вычисляемого этим выражением

closure

замыкание для вызова при вычислении этого выражения. Если замыкание плавающее, оно принимается

n_params

количество параметров, необходимых для вычисления closure

params

выражения для каждого параметра.

[nullable][array length=n_params][transfer full]

Возвращает

новый GtkExpression

gtk_cclosure_expression_new ()

GtkExpression *
gtk_cclosure_expression_new (GType value_type,
                             GClosureMarshal marshal,
                             guint n_params,
                             GtkExpression **params,
                             GCallback callback_func,
                             gpointer user_data,
                             GClosureNotify user_destroy);

Эта функция является вариантом gtk_closure_expression_new(), которая создаёт GClosure вызвав g_cclosure_new() с заданными callback_func, user_data и user_destroy.

Параметры

value_type

тип значения, к которому относится это выражение

marshal

маршаллинг, используемый для создания замыкания.

[scope call][nullable]

n_params

количество параметров, необходимых для оценки closure

params

выражения для каждого параметра.

[array length=n_params][transfer full]

callback_func

обратный вызов, используемый для создания замыкания.

[scope notified][closure user_data][destroy user_destroy]

user_data

пользовательские данные, используемые для создания замыкания.

[nullable]

user_destroy

уведомление об уничтожении для user_data.

[nullable]

Возвращаемое значение

новый GtkExpression

GTK_VALUE_HOLDS_EXPRESSION()

#define GTK_VALUE_HOLDS_EXPRESSION(value)       (G_VALUE_HOLDS ((value), GTK_TYPE_EXPRESSION))

Возвращает TRUE если value была инициализирована с помощью GTK_TYPE_EXPRESSION.

Параметры

value

a GValue

gtk_value_set_expression ()

void
gtk_value_set_expression (GValue *value,
                          GtkExpression *expression);

Сохраняет заданный GtkExpression в value.

Значение GValue получит ссылку на expression.

Параметры

value

a GValue инициализированный типом GTK_TYPE_EXPRESSION

expression

a GtkExpression

gtk_value_take_expression ()

void
gtk_value_take_expression (GValue *value,
                           GtkExpression *expression);

Сохраняет заданный GtkExpression в value.

Эта функция передает владение expression в GValue.

Параметры

value

a GValue инициализированный типом GTK_TYPE_EXPRESSION

expression

a GtkExpression.

[transfer full][nullable]

gtk_value_get_expression ()

GtkExpression *
gtk_value_get_expression (const GValue *value);

Возвращает GtkExpression, хранящийся в заданном value.

Параметры

value

a GValue инициализированный типом GTK_TYPE_EXPRESSION

Возвращаемое значение

a GtkExpression.

[transfer none][nullable]

gtk_value_dup_expression ()

GtkExpression *
gtk_value_dup_expression (const GValue *value);

Возвращает GtkExpression, хранящийся в заданном value, и получает на него ссылку.

Параметры

value

a GValue инициализированный типом GTK_TYPE_EXPRESSION

Возвращаемое значение

a GtkExpression.

[transfer full][nullable]

gtk_param_spec_expression ()

GParamSpec *
gtk_param_spec_expression (const char *name,
                           const char *nick,
                           const char *blurb,
                           GParamFlags flags);

Создаёт новый экземпляр GParamSpec для свойства, содержащего GtkExpression.

См. g_param_spec_internal() для получения подробной информации о строках свойства.

Параметры

name

каноническое имя свойства

nick

читаемое пользователем имя свойства

blurb

читаемое пользователем описание свойства

flags

флаги свойства

Возвращаемое значение

новый созданный объект спецификации свойства.

[transfer full]

Типы и Значения

GtkExpression

typedef struct _GtkExpression GtkExpression;

Структура GtkExpression содержит только приватные данные.

GtkExpressionWatch

typedef struct _GtkExpressionWatch GtkExpressionWatch;

GtkParamSpecExpression

typedef struct {
} GtkParamSpecExpression;

A GParamSpec для свойств, содержащих GtkExpression.

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkExpression.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API