Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description

Сигналы

Signals Методы объекта и callback-функции

Краткое описание

#include <gtk/gtk.h> #define GTK_SIGNAL_OFFSET enum GtkSignalRunType; guint gtk_signal_new (const gchar *name, GtkSignalRunType signal_flags, GtkType object_type, guint function_offset, GtkSignalMarshaller marshaller, GtkType return_val, guint n_args, ...); guint gtk_signal_newv (const gchar *name, GtkSignalRunType signal_flags, GtkType object_type, guint function_offset, GtkSignalMarshaller marshaller, GtkType return_val, guint n_args, GtkType *args); #define gtk_signal_lookup (name,object_type) #define gtk_signal_name (signal_id) void gtk_signal_emit (GtkObject *object, guint signal_id, ...); void gtk_signal_emit_by_name (GtkObject *object, const gchar *name, ...); void gtk_signal_emitv (GtkObject *object, guint signal_id, GtkArg *args); void gtk_signal_emitv_by_name (GtkObject *object, const gchar *name, GtkArg *args); #define gtk_signal_emit_stop (object,signal_id) void gtk_signal_emit_stop_by_name (GtkObject *object, const gchar *name); #define gtk_signal_connect (object,name,func,func_data) #define gtk_signal_connect_after (object,name,func,func_data) #define gtk_signal_connect_object (object,name,func,slot_object) #define gtk_signal_connect_object_after (object,name,func,slot_object) gulong gtk_signal_connect_full (GtkObject *object, const gchar *name, GtkSignalFunc func, GtkCallbackMarshal unsupported, gpointer data, GtkDestroyNotify destroy_func, gint object_signal, gint after); void gtk_signal_connect_while_alive (GtkObject *object, const gchar *name, GtkSignalFunc func, gpointer func_data, GtkObject *alive_object); void gtk_signal_connect_object_while_alive (GtkObject *object, const gchar *name, GtkSignalFunc func, GtkObject *alive_object); #define gtk_signal_disconnect (object,handler_id) #define gtk_signal_disconnect_by_func (object,func,data) #define gtk_signal_disconnect_by_data (object,data) #define gtk_signal_handler_block (object,handler_id) #define gtk_signal_handler_block_by_func(object,func,data) #define gtk_signal_handler_block_by_data(object,data) #define gtk_signal_handler_unblock (object,handler_id) #define gtk_signal_handler_unblock_by_func(object,func,data) #define gtk_signal_handler_unblock_by_data(object,data) #define gtk_signal_handler_pending (object,signal_id,may_be_blocked) #define gtk_signal_handler_pending_by_func(object,signal_id,may_be_blocked,func,data) #define gtk_signal_default_marshaller

Описание

Система сигналов GTK+ просто уполномоченная система сигналов GLib. В будущем используйте напрямую GSignal API, это помогает избежать значительных проблем, где структуры GtkArg должны быть преобразованы в GValues.

Что является сигналами?

Сигналы являются методом получения сообщений когда что-нибудь происходит и настройки поведения объектов, при условии, что это нужно пользователю. Все signal однозначно идентифицируются по имени, "class_name::signal_name", где signal_name может быть чем то вроде "clicked" и class_name может быть "GtkButton". Помните, некоторые другие классы могут также определить обратный вызов "clicked", пока это не произойдёт из GtkButton.

При создании сигналам назначается уникальное положительное число - идентификатор (1 первый сигнал id- 0 используется для отметки ошибок). Каждый сигнал привязан к массиву типов, который описывает прототипы указателей функций (обработчики), которые вы можете соединять с сигналом. Наконец, каждый сигнал имеет обработчик по умолчанию, который даётся указателем функции в структуре его класса: выполняется по умолчанию всякий раз, когда произведён сигнал. (Возможно обработчик назначенный пользователем будет препятствовать обработчику по умолчанию, когда произойдёт сигнал.)

Сигналы используются всюду, но они создаются только на основании класса поэтому вы не должны вызывать gtk_signal_new(), если вы не пишите новый тип GtkObject. Тем не менее, если вы хотите создать новый сигнал для существующего типа, вы можете использовать gtk_object_class_user_signal_new() для создания сигнала который не соответствует встроенным методам класса.


Как используются сигналы?

Есть два основных действия обработки сигнала. Если вам нужно уведомление о событии, вы должны подключить указатель функции и указатель данных к сигналу; указатель данных будет помещён как последний аргумент функции (пока вы используете по умолчанию размещение функций). Вы получите подключенный id, уникальное целое значение соответствующее этому подключению.

Функции, желающие уведомить пользователя об определённых действиях, издают сигналы.


Основная терминология

signal

Метод класса, например GtkButton::clicked. Более точно уникальная пара class-branch/signal-name. Это означает, вы не можете определять обработчик сигнала для класса который происходит из GtkButton, называемый clicked, но можете совместно использовать имена сигналов если они разделены в дереве класса.

default handler

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

user-defined handler

Указатель функции и подключаемых данных к сигналу (для специфических объектов).

Реально существует два типа: те которые подключаются обычно и те которые подключаются одной из функций connect_after functions. Обработчики connect_after всегда выполняются после обработчика по умолчанию.

Многие программные библиотеки ссылаются на них как callbacks.

emission

Полный процесс издания сигнала, включая обращение всех упомянутых выше различных типов обработчиков.

signal id

Уникальное положительное (не ноль) целое используемое для идентификации сигнала. Может использоваться вместо имени в большинстве функций для небольшого усовершенствования выполнения.

connection id

Уникальное положительное (не ноль) целое число используемое для идентификации соединения с сигналом определенного пользователем обработчика. Обратите внимание, это позволяет подключать некоторые пары function-pointer/user-data дважды, поэтому нет гарантии что карты function-pointer/user-data являются уникальным идентификатором подключения (connection id).


Краткое замечание о том как они работают.

Функции транслирующие массив GtkArgs к нормальной семантике вашего C компилятора, называются Marshallers. Они идентифицированы как gtk_marshal_return_value__parameter_list(), например C функция возвращающая gboolean и берущая gint, может быть вызвана с использованием gtk_marshal_BOOL__INT(). Не все возможные комбинации return/params допустимы, конечно если вы пишите GtkObject с параметрами, вам придётся написать marshaller.

Детали

GTK_SIGNAL_OFFSET

#define GTK_SIGNAL_OFFSET                             GTK_STRUCT_OFFSET

Внимание

GTK_SIGNAL_OFFSET устарела и не должна использоваться во вновь создаваемом коде.

Используйте вместо него offsetof(), которая используется если существует.


enum GtkSignalRunType

typedef enum /*< flags >*/ { GTK_RUN_FIRST = G_SIGNAL_RUN_FIRST, GTK_RUN_LAST = G_SIGNAL_RUN_LAST, GTK_RUN_BOTH = (GTK_RUN_FIRST | GTK_RUN_LAST), GTK_RUN_NO_RECURSE = G_SIGNAL_NO_RECURSE, GTK_RUN_ACTION = G_SIGNAL_ACTION, GTK_RUN_NO_HOOKS = G_SIGNAL_NO_HOOKS } GtkSignalRunType;

Внимание

GtkSignalRunType устарело и не должно использоваться во вновь создаваемом коде.

Конфигурирует процесс издания сигналов. Контролирует может ли сигнал издаваться рекурсивно на объекте и выполняется ли метод по умолчанию после или перед определёнными пользователем обработчиками.

GTK_RUN_FIRST

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

GTK_RUN_LAST

Выполняет обработчик по умолчанию после подключённых обработчиков определённых пользователем. (Хотя обработчики зарегистрированные как "after" всегда выполняются после обработчика по умолчанию)

GTK_RUN_BOTH

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

GTK_RUN_NO_RECURSE

Препятствовать ли обработке замкнутого прерывания сигнала внутри самого себя. Попытки издать сигнал во время его выполнения приведут к пере-запускаемой эмиссии сигнала как только сделана текущая обработка.

Вы должны делать всё возможное для избежания двух обработчиков бесконечно издающих повторные сигналы, gtk_signal_n_emissions() может быть в этом полезна.

GTK_RUN_ACTION

Сигнал являющийся действием которое вы можете вызвать без какой либо специальной установки или очистки. Сигнал обрабатывается не по другому, но некоторый другой код может определить является ли сигнал соответствующим для делегирования управления пользователю. Например, привязка клавиш устанавливает только допустимые привязки сигналов ACTION для нажатия клавиш.

GTK_RUN_NO_HOOKS

Предотвращает подключение замкнутой эмиссии к сигналу.


gtk_signal_new ()

guint gtk_signal_new (const gchar *name, GtkSignalRunType signal_flags, GtkType object_type, guint function_offset, GtkSignalMarshaller marshaller, GtkType return_val, guint n_args, ...);

Внимание

gtk_signal_new устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйте g_signal_new().

Создаётся новый тип сигнала. (Это обычно делается в инициализаторе класса.)

name :

Имя события для сигнала, например "clicked".

signal_flags :

Комбинация флажков GTK_RUN определяет детали того, когда должен быть вызван обработчик по умолчанию. Вы должны по крайней мере определить GTK_RUN_FIRST или GTK_RUN_LAST.

object_type :

Тип объекта которому принадлежит сигнал. Это также устанавливает принадлежность этого типа автоматически.

function_offset :

Сколько байт указателя функций находится в структуре класса для этого типа. Используется в основном для вызова метода класса.

marshaller :

Функции перевода между массивом GtkArgs и собственным соглашением о вызовах. Обычно идентифицируются только типом аргументов которые берут: например, gtk_marshal_BOOL__STRING() описывает marshaller, который берет строку и возвращает булев значение.

return_val :

Тип возвращаемого значения, или GTK_TYPE_NONE для сигнала без возвращаемого значения.

n_args :

Число параметров которое обработчик может взять.

... :

Список GTK_TYPE_*, один для каждого параметра.

Возвращает :

Идентификатор сигнала (signal id).


gtk_signal_newv ()

guint gtk_signal_newv (const gchar *name, GtkSignalRunType signal_flags, GtkType object_type, guint function_offset, GtkSignalMarshaller marshaller, GtkType return_val, guint n_args, GtkType *args);

Внимание

gtk_signal_newv устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйте g_signal_newv().

Создает новый тип сигнала. (Это обычно делается в инициализаторе класса.)

Эта функция берет типы как массив, вместо списка после аргументов. Иначе то же самое как gtk_signal_new().

name :

Имя создаваемого сигнала.

signal_flags :

смотрите gtk_signal_new().

object_type :

Тип GtkObject с которым связывается сигнал.

function_offset :

Сколько байт указателя функций находится в структуре класса для этого типа.

marshaller :

return_val :

Тип возвращаемого значения, или GTK_TYPE_NONE если вы не хотите возвращать значение.

n_args :

Число параметров для определённых пользователем обработчиков.

args :

Массив GtkTypes, описывает прототип обратного вызова.

Возвращает :

Идентификатор сигнала.


gtk_signal_lookup()

#define     gtk_signal_lookup(name,object_type)

Внимание

gtk_signal_lookup устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйте g_signal_lookup().

Учитывая имя сигнала и тип объекта к которому он подключен, выдаёт целое число идентифицирующее сигнал. Издание сигнала по номеру несколько быстрее чем каждый раз использовать имя.

Это также различает предков данного типа.

name :

Имя сигнала, например clicked.

object_type :

Тип, которым управляет сигнал, например GTK_TYPE_BUTTON.

Возвращает :

Номер идентифицирующий сигнал, или 0 если сигнал не был найден.


gtk_signal_name()

#define     gtk_signal_name(signal_id)

Внимание

gtk_signal_name устарела и не должна использоваться во вновь создаваемом коде. Вместо неё используйте g_signal_name().

Учитывая идентификатор сигнала, определяет его имя.

Два разных сигнала могут иметь одно и тоже имя, если имеют разные типы.

signal_id :

Идентификатор сигнала.

Возвращает :

Имя сигнала, или NULL если номер сигнала не существует.


gtk_signal_emit ()

void gtk_signal_emit (GtkObject *object, guint signal_id, ...);

Внимание

gtk_signal_emit устарела и не должна использоваться во вновь создаваемом коде. Используйте g_signal_emit() вместо неё.

Издаёт сигнал. Является причиной выполнения обработчика по умолчанию и определённых пользователем.

Вот то, что делает gtk_signal_emit():

1. Вызывает обработчик по умолчанию и подключенные пользователем обработчики. Обработчик по умолчанию будет вызван первым если установлен GTK_RUN_FIRST и последним, если установлен GTK_RUN_LAST.

2. Вызываются все обработчики с установленным флагом "after".

object :

Объект издающий сигнал.

signal_id :

Идентификатор сигнала.

... :

Параметры функции, сопровождаемой указателем на тип, если определён.


gtk_signal_emit_by_name ()

void gtk_signal_emit_by_name (GtkObject *object, const gchar *name, ...);

Внимание

gtk_signal_emit_by_name устарела и не должна использоваться во вновь создаваемом коде. Используйте g_signal_emit_by_name() вместо неё.

Издаёт сигнал. Является причиной выполнения обработчика по умолчанию и определённых пользователем.

object :

Объект издающий сигнал.

name :

Имя сигнала.

... :

Параметры функции, сопровождаемой указателем на тип, если определён.


gtk_signal_emitv ()

void gtk_signal_emitv (GtkObject *object, guint signal_id, GtkArg *args);

Внимание

gtk_signal_emitv устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_emitv().

Издаёт сигнал. Является причиной выполнения обработчика по умолчанию и определённых пользователем. Это отличается от gtk_signal_emit() тем, что берёт массив GtkArgs вместо использования механизма C's varargs.

object :

Объект издающий сигнал.

signal_id :

Идентификатор сигнала.

args :

Массив GtkArgs, один для каждого параметра, сопровождаемый тем, который является указателем на возвращаемый тип.


gtk_signal_emitv_by_name ()

void gtk_signal_emitv_by_name (GtkObject *object, const gchar *name, GtkArg *args);

Внимание

gtk_signal_emitv_by_name устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_emitv() и g_signal_lookup().

Издаёт сигнал. Является причиной выполнения обработчика по умолчанию и определённых пользователем. Это отличается от gtk_signal_emit() тем, что берёт массив GtkArgs вместо использования механизма C's varargs.

object :

Объект издающий сигнал.

name :

Имя сигнала.

args :

Массив GtkArgs, один для каждого параметра, сопровождаемый тем, который является указателем на возвращаемый тип.


gtk_signal_emit_stop()

#define     gtk_signal_emit_stop(object,signal_id)

Внимание

gtk_signal_emit_stop устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_stop_emission().

Эта функция завершает текущую эмиссию сигнала.

Она препятствует выполнению метода по умолчанию, если сигнал был GTK_RUN_LAST и вы подключались к нему обычным образом (например без флага "after").

Функция напечатает предупреждение, если используется для сигнала, который не издавался.

object :

Объект, обработчики сигнала которого вы хотите остановить.

signal_id :

Идентификатор сигнала, которой возвращается g_signal_lookup().


gtk_signal_emit_stop_by_name ()

void gtk_signal_emit_stop_by_name (GtkObject *object, const gchar *name);

Внимание

gtk_signal_emit_stop_by_name устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_stop_emission_by_name().

Эта функция завершает текущую эмиссию сигнала.

То же самое, что и gtk_signal_emit_stop(), но дополнительно будет найден идентификатор сигнала для вас.

object :

Объект, обработчики сигнала которого вы хотите остановить.

name :

Имя сигнала который вы хотите остановить.


gtk_signal_connect()

#define     gtk_signal_connect(object,name,func,func_data)

Внимание

gtk_signal_connect устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect().

Прикрепляет указатель функции и пользовательские данные к сигналу для специального объекта.

GtkSignalFunction берёт GtkObject как первый параметр. Это будет тот же объект к которому вы подключаете обработчик прерываний. func_data будут помещены как последний параметр обработчика прерываний.

Все остальные равные обработчики сигнала вызываются в порядке подключения (смотрите gtk_signal_emit() о других деталях, что и в каком порядке вызывается).

Вот то, как передаётся целочисленное как пользовательские данные, когда вы просто хотите определить константу int как параметр вашей функции:

static void button_clicked_int (GtkButton* button, gpointer func_data) { g_print ("button pressed: %d\n", GPOINTER_TO_INT (func_data)); } /* Вызвав эту функцию, вы создаёте g_print выполненный выше * печатающий число помещённое как `to_print'. */ static void attach_print_signal (GtkButton* button, gint to_print) { gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (button_clicked_int), GINT_TO_POINTER (to_print)); }

object :

Объект соединённый с сигналом, например нажатая кнопка.

name :

Имя сигнала.

func :

Указатель функции для прикрепления к сигналу.

func_data :

Значение помещаемое как ваша функция (через marshaller).

Возвращает :

Идентификатор соединения.


gtk_signal_connect_after()

#define     gtk_signal_connect_after(object,name,func,func_data)

Внимание

gtk_signal_connect_after устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect_after().

Прикрепляет указатель функции и пользовательские данные к сигналу, так, чтобы этот обработчик был вызван после других обработчиков.

object :

Объект соединённый с сигналом.

name :

Имя сигнала.

func :

Указатель функции для прикрепления к сигналу.

func_data :

Значение помещаемое как ваша функция (через marshaller).

Возвращает :

Уникальный идентификатор для этого подключения: connection id.


gtk_signal_connect_object()

#define     gtk_signal_connect_object(object,name,func,slot_object)

Внимание

gtk_signal_connect_object устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect_swapped().

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

Это полезно для размещения обычной функции как обратного вызова (callback-функции). Например, если вам нужен некоторый виджет, например нажимаемая кнопка, созданный с помощью gtk_widget_show(), вы должны написать:

gtk_signal_connect_object (button, "clicked", gtk_widget_show, window);

object :

Объект издающий сигнал.

name :

Имя сигнала.

func :

Callback-функция.

slot_object :

Объект помещаемый как первый параметр в func. (хотя это эмулирует взятие объекта, вы реально можете поместить любой gpointer как slot_object .)

Возвращает :

Идентификатор подключения (connection id).


gtk_signal_connect_object_after()

#define     gtk_signal_connect_object_after(object,name,func,slot_object)

Внимание

gtk_signal_connect_object_after устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect_data(), помещая G_CONNECT_AFTER|G_CONNECT_SWAPPED как connect_flags.

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

object :

Объект ассоциированный с сигналом.

name :

Имя сигнала.

func :

Указатель функции для прикрепления к сигналу.

slot_object :

Объект помещаемый как первый параметр для func.

Возвращает :

Идентификатор соединения (connection id).


gtk_signal_connect_full ()

gulong gtk_signal_connect_full (GtkObject *object, const gchar *name, GtkSignalFunc func, GtkCallbackMarshal unsupported, gpointer data, GtkDestroyNotify destroy_func, gint object_signal, gint after);

Внимание

gtk_signal_connect_full устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect_data().

Прикрепляет указатель функции и пользовательские данные к сигналу с большим управлением.

object :

Объект издающий сигнал. Например, кнопка в сигнале нажатой кнопки.

name :

Имя сигнала.

func :

Указатель функции для прикрепления к сигналу.

unsupported :

data :

Пользовательские данные ассоциированные с функцией.

destroy_func :

Функция вызываемая когда специальный обработчик прерываний отключен.

object_signal :

Является ли объект сигналом в основном "object signal" переключает user_data и поле объекта, что полезно для вызова функций первоначально действующих на другой объект.

after :

Вызывать ли определённый пользователем обработчик после сигнала, или позволить сигналу поведение по умолчанию (то есть в зависимости от GTK_RUN_FIRST и GTK_RUN_LAST).

Возвращает :

Идентификатор соединения (the connection id).


gtk_signal_connect_while_alive ()

void gtk_signal_connect_while_alive (GtkObject *object, const gchar *name, GtkSignalFunc func, gpointer func_data, GtkObject *alive_object);

Внимание

gtk_signal_connect_while_alive устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect_object().

Прикрепляет указатель функции и другой GtkObject к сигналу.

Эта функция берёт объект, сигнал "destroy" которого должен быть заменён. Таким путём не стоит очищать обработчик сигнала когда вы закрываете объект, это слишком не эффективно.

(Вместо этого вы можете вызвать gtk_signal_disconnect_by_data(), если вы хотите явно удалить все прикрепления к объекту. Это возможно не рекомендуется так как указатель может быть перепутан с целочисленным (из-за GINT_TO_POINTER()).)

object :

Объект издающий сигнал.

name :

Имя сигнала.

func :

Указатель функции для прикрепления к сигналу.

func_data :

Указатель помещаемый в func.

alive_object :

Объект после уничтожения которого должна быть закрыта связь с обработчиком.


gtk_signal_connect_object_while_alive ()

void gtk_signal_connect_object_while_alive (GtkObject *object, const gchar *name, GtkSignalFunc func, GtkObject *alive_object);

Внимание

gtk_signal_connect_object_while_alive устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_connect_object(), помещая G_CONNECT_SWAPPED как connect_flags.

Эти подключатели сигналов для сигналов, которые относятся к объектам, поэтому их нельзя вызвать после удаления объекта.

В отличии от gtk_signal_connect_while_alive(), это меняет объект и пользовательские данные, делая подходящим для использования в функциях которые прежде всего работают с пользовательскими данными.

Действие этих функций точно такое же как gtk_signal_connect_object(), за исключением поглощения сигнала "destroy" препятствующего очищению обработчика.

object :

Объект ассоциированный с сигналом.

name :

Имя сигнала.

func :

Указатель функции для прикрепления к сигналу.

alive_object :

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


gtk_signal_disconnect()

#define     gtk_signal_disconnect(object,handler_id)

Внимание

gtk_signal_disconnect устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handler_disconnect().

Уничтожает определённое пользователем подключение обработчика.

object :

Объект которому принадлежит обработчик.

handler_id :

Идентификатор соединения (connection id).


gtk_signal_disconnect_by_func()

#define     gtk_signal_disconnect_by_func(object,func,data)

Внимание

gtk_signal_disconnect_by_func устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handlers_disconnect_by_func().

Уничтожает все подключения для специального объекта, с полученными указателем функции (function-pointer) и пользовательскими данными (user-data).

object :

Объект издающий сигнал.

func :

Указатель функции для поиска.

data :

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


gtk_signal_disconnect_by_data()

#define     gtk_signal_disconnect_by_data(object,data)

Внимание

gtk_signal_disconnect_by_data устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handlers_disconnect_matched().

Уничтожает все подключения для специального объекта, с полученными данными пользователя.

object :

Объект издающий сигнал.

data :

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


gtk_signal_handler_block()

#define     gtk_signal_handler_block(object,handler_id)

Внимание

gtk_signal_handler_block устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handler_block().

Препятствует вызову определённого пользователем обработчика. Все другие процессы сигнала выполняются как обычно, но этот специальный обработчик будет игнорирован.

object :

Объект издающий блокирующий сигнал.

handler_id :

Идентификатор соединения (connection id).


gtk_signal_handler_block_by_func()

#define     gtk_signal_handler_block_by_func(object,func,data)

Внимание

gtk_signal_handler_block_by_func устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handlers_block_by_func().

Препятствует вызову определённого пользователем обработчика, в отношении определённого пользователем обработчика указателя функций и пользовательских данных. (это может привести к многократным блокировкам обработчиков прерываний, если вы часто вызываете подключение.)

object :

Объект издающий блокирующий сигнал.

func :

Указатель функции обработчика для блокировки.

data :

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


gtk_signal_handler_block_by_data()

#define     gtk_signal_handler_block_by_data(object,data)

Внимание

gtk_signal_handler_block_by_data устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handlers_block_matched().

Препятствует вызову всех определённых пользователем обработчиков с определёнными данными пользователя.

object :

Объект издающий сигнал который мы хотим блокировать.

data :

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


gtk_signal_handler_unblock()

#define     gtk_signal_handler_unblock(object,handler_id)

Внимание

gtk_signal_handler_unblock устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handler_unblock().

Уничтожает блокировку, по идентификатору соединения. Помните, отмена блокировки не обязательно делает обработчик прерываний вызываемым, потому что если вы блокировали его дважды, вы должны его дважды разблокировать.

object :

Объект издающий сигнал и который вы хотите разблокировать.

handler_id :

Идентификатор эмиссии обработчика, который возвращает gtk_signal_connect(), и т.д..


gtk_signal_handler_unblock_by_func()

#define     gtk_signal_handler_unblock_by_func(object,func,data)

Внимание

gtk_signal_handler_unblock_by_func устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handlers_unblock_by_func().

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

object :

Объект издающий сигнал и который вы хотите разблокировать.

func :

Указатель функции для поиска.

data :

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


gtk_signal_handler_unblock_by_data()

#define     gtk_signal_handler_unblock_by_data(object,data)

Внимание

gtk_signal_handler_unblock_by_data устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_handlers_unblock_matched().

Уничтожает блокировку всех сигналов для специального объекта со специальным указателем пользовательских данных.

object :

Объект издающий сигнал и который вы хотите разблокировать.

data :

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


gtk_signal_handler_pending()

#define     gtk_signal_handler_pending(object,signal_id,may_be_blocked)

Внимание

gtk_signal_handler_pending устарела и не должна использоваться во вновь создаваемом коде. Используйте вместо неё g_signal_has_handler_pending().

Возвращает идентификатор подключения соответствующий полученному идентификатору сигнала и объекта.

Один из примеров применения этого ситуация когда трудно вычислить параметры сигнала. Конструктор класса может выбрать не издавать сигнал если нет не одного какого нибудь подключения, таким образом сохраняя оценку формирования параметров.

object :

Объект поиска для желаемого обработчика определённого пользователем.

signal_id :

Номер сигнала для поиска.

may_be_blocked :

Приемлемо ли возвратить блокированный обработчик.

Возвращает :

Идентификатор подключения, если подключение найдено. Иначе 0.


gtk_signal_handler_pending_by_func()

#define     gtk_signal_handler_pending_by_func(object,signal_id,may_be_blocked,func,data)

Внимание

gtk_signal_handler_pending_by_func устарела и не должна использоваться во вновь создаваемом коде.

Возвращает идентификатор подключения соответствующий полученному идентификатору сигнала, объекта, указателя функции и пользовательским данным.

object :

Объект поиска для желаемого обработчика.

signal_id :

Номер сигнала для поиска.

may_be_blocked :

Приемлемо ли возвратить блокированный обработчик.

func :

Указатель функции для поиска.

data :

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

Возвращает :

Идентификатор соединения, если обработчик был найден. Иначе 0.


gtk_signal_default_marshaller

#define gtk_signal_default_marshaller   g_cclosure_marshal_VOID__VOID

Внимание

gtk_signal_default_marshaller устарела и не должна использоваться во вновь создаваемом коде.

Сигнальщик (marshaller) который возвращает пустое значение (void) и не берет дополнительных параметров.

Смотрите также

GtkObject

Базовый класс для вещей издающих сигналы.

GSignal

Система сигналов GLib.