| |
|
GTK+ 2.0 Tutorial |
||
|---|---|---|
|
Управление выделениями (Managing Selections) |
||
Замещать выделение немного сложнее. Вы должны зарегистрировать обработчики которые будут вызваны по требованию выделения. Для каждой пары selection/target делается вызов:
void gtk_selection_add_target (GtkWidget *widget,
GdkAtom selection,
GdkAtom target,
guint info);
|
виджет selection и target идентифицируют запросы, которыми этот обработчик будет управлять. Когда получен сигнал о выделении, производится сигнал "selection_get". info может использоваться как нумератор, чтобы идентифицировать определенную цель в пределах функции обратного вызова.
Функция обратного вызова имеет сигнатуру:
void "selection_get" (GtkWidget *widget,
GtkSelectionData *selection_data,
guint info,
guint time);
|
GtkSelectionData - то же самое как выше, но на сей раз, мы ответственны за то, чем заполнить поля type, format, data и length. ( Фактически важна здесь область формата - сервер X использует это, чтобы выяснить, должны ли данные меняться байтом или нет. Обычно это будет 8 - то есть символ - или 32 - то есть целое число.) Это выполняется вызовом функции:
void gtk_selection_data_set( GtkSelectionData *selection_data,
GdkAtom type,
gint format,
guchar *data,
gint length );
|
Эта функция заботится о надлежащем создании копии данных, так что вам ненужно заботиться об этом. (Вы не должны в ручную заполнять структуру GtkSelectionData.)
При запросе пользователя, требуется монопольное использование выделения, вызовом:
gboolean gtk_selection_owner_set( GtkWidget *widget,
GdkAtom selection,
guint32 time );
|
Если другое приложение будет требовать монопольного использования выделения, то вы получите "selection_clear_event".
Как пример замещения выделения, следующая программа добавляет функциональные возможности выделения к выключателю. Когда кнопка выключателя вдавлена, программа требует первичного выделения. Поддерживаются только цели "STRING" (кроме определенных целей как "TARGETS" подаваемые непосредственно GTK). Когда цель этого требует, возвращается строка представления времени.
|
Retrieving the selection |
Drag-and-drop (DND) |
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |