| |
GTK+ Reference Manual |
||||
---|---|---|---|---|
SelectionsSelections Функции для обработки меж-процессорного взаимодействия посредством выделения |
#include <gtk/gtk.h> GtkTargetEntry; GtkTargetList; GtkTargetPair; GtkTargetList* gtk_target_list_new (const GtkTargetEntry *targets, guint ntargets); GtkTargetList* gtk_target_list_ref (GtkTargetList *list); void gtk_target_list_unref (GtkTargetList *list); void gtk_target_list_add (GtkTargetList *list, GdkAtom target, guint flags, guint info); void gtk_target_list_add_table (GtkTargetList *list, const GtkTargetEntry *targets, guint ntargets); void gtk_target_list_add_text_targets (GtkTargetList *list, guint info); void gtk_target_list_add_image_targets (GtkTargetList *list, guint info, gboolean writable); void gtk_target_list_add_uri_targets (GtkTargetList *list, guint info); void gtk_target_list_add_rich_text_targets (GtkTargetList *list, guint info, gboolean deserializable, GtkTextBuffer *buffer); void gtk_target_list_remove (GtkTargetList *list, GdkAtom target); gboolean gtk_target_list_find (GtkTargetList *list, GdkAtom target, guint *info); void gtk_target_table_free (GtkTargetEntry *targets, gint n_targets); GtkTargetEntry* gtk_target_table_new_from_list (GtkTargetList *list, gint *n_targets); gboolean gtk_selection_owner_set (GtkWidget *widget, GdkAtom selection, guint32 time_); gboolean gtk_selection_owner_set_for_display (GdkDisplay *display, GtkWidget *widget, GdkAtom selection, guint32 time_); void gtk_selection_add_target (GtkWidget *widget, GdkAtom selection, GdkAtom target, guint info); void gtk_selection_add_targets (GtkWidget *widget, GdkAtom selection, const GtkTargetEntry *targets, guint ntargets); void gtk_selection_clear_targets (GtkWidget *widget, GdkAtom selection); gboolean gtk_selection_convert (GtkWidget *widget, GdkAtom selection, GdkAtom target, guint32 time_); void gtk_selection_data_set (GtkSelectionData *selection_data, GdkAtom type, gint format, const guchar *data, gint length); gboolean gtk_selection_data_set_text (GtkSelectionData *selection_data, const gchar *str, gint len); guchar* gtk_selection_data_get_text (GtkSelectionData *selection_data); gboolean gtk_selection_data_set_pixbuf (GtkSelectionData *selection_data, GdkPixbuf *pixbuf); GdkPixbuf* gtk_selection_data_get_pixbuf (GtkSelectionData *selection_data); gboolean gtk_selection_data_set_uris (GtkSelectionData *selection_data, gchar **uris); gchar** gtk_selection_data_get_uris (GtkSelectionData *selection_data); gboolean gtk_selection_data_get_targets (GtkSelectionData *selection_data, GdkAtom **targets, gint *n_atoms); gboolean gtk_selection_data_targets_include_image (GtkSelectionData *selection_data, gboolean writable); gboolean gtk_selection_data_targets_include_text (GtkSelectionData *selection_data); gboolean gtk_selection_data_targets_include_uri (GtkSelectionData *selection_data); gboolean gtk_selection_data_targets_include_rich_text (GtkSelectionData *selection_data, GtkTextBuffer *buffer); gboolean gtk_targets_include_image (GdkAtom *targets, gint n_targets, gboolean writable); gboolean gtk_targets_include_text (GdkAtom *targets, gint n_targets); gboolean gtk_targets_include_uri (GdkAtom *targets, gint n_targets); gboolean gtk_targets_include_rich_text (GdkAtom *targets, gint n_targets, GtkTextBuffer *buffer); void gtk_selection_remove_all (GtkWidget *widget); gboolean gtk_selection_clear (GtkWidget *widget, GdkEventSelection *event); GtkSelectionData* gtk_selection_data_copy (GtkSelectionData *data); void gtk_selection_data_free (GtkSelectionData *data);
Механизм выделения обеспечивает основу для различных типов взаимодействия между процессами. В частности, drag and drop и GtkClipboard работают через выделения. Вы будете очень редко или никогда не будете использовать большинство из функций описанных в этом разделе; GtkClipboard обеспечивает более хороший интерфейс к тем же самым функциональным возможностям.
Некоторые типовые данные определённые в этом разделе используются в GtkClipboard и drag-and-drop API's. Структура GtkTargetEntry и объекты GtkTargetList представляют списки типов данных которые поддерживаются при отправки и получении данных. Объект GtkSelectionData используется для сохранения части данных на ряду с типом данных и другой ассоциированной информацией.
typedef struct {
gchar *target;
guint flags;
guint info;
} GtkTargetEntry;
Структура GtkTargetEntry представляет единственный тип данных которым может быть снабжён виджет для выделения или поставки или получения в течении drag-and-drop процесса. Она содержит строку представляющую тип перетаскивания, поля флагов (используются только для drag and drop - смотрите GtkTargetFlags), а также целочисленный ID полученный приложением. Целочисленный ID будет позднее помещён как параметр сигнала для таких сигналов как "selection_get". Это позволит приложениям идентифицировать тип цели без расширенного сравнения строк.
typedef struct {
GList *list;
guint ref_count;
} GtkTargetList;
Структура GtkTargetList представляет рассчитанный список GtkTargetPair. Она используется для представления некоторой информации, такой как таблица GtkTargetEntry, но в эффективной форме. Эта структура должна быть обработана как не прозрачная.
typedef struct {
GdkAtom target;
guint flags;
guint info;
} GtkTargetPair;
Внутренне используемая структура обработки кода в процессе drag-and-drop и выделении.
GtkTargetList* gtk_target_list_new (const GtkTargetEntry *targets, guint ntargets);
Создаёт новый GtkTargetList из массива GtkTargetEntry.
targets : |
Указатель массива GtkTargetEntry |
ntargets : |
Число данных в targets. |
Возвращает : |
Новый GtkTargetList. |
void gtk_target_list_ref (GtkTargetList *list);
Увеличивает счёт ссылок GtkTargetList на один.
list : |
void gtk_target_list_unref (GtkTargetList *list);
Уменьшает счёт ссылок GtkTargetList на один. Если результат нулевой, то список освобождается.
list : |
void gtk_target_list_add (GtkTargetList *list, GdkAtom target, guint flags, guint info);
Присоединяет другую цель к GtkTargetList.
list : |
|
target : |
Интернированный атом представляющий цель |
flags : |
Флаги для этой цели |
info : |
ID который будет возвращён приложению |
void gtk_target_list_add_table (GtkTargetList *list, const GtkTargetEntry *targets, guint ntargets);
Добавляет таблицу GtkTargetEntry к списку целей.
list : |
|
targets : |
таблица GtkTargetEntry |
ntargets : |
Число целей в таблице |
void gtk_target_list_add_text_targets
(GtkTargetList *list,
guint info);
Добавляет текстовые цели поддерживаемые GtkSelection к списку целей. Все цели добавляются с тем же самым info.
list : |
|
info : |
ID который будет возвращён приложению |
Начиная с версии 2.6
void gtk_target_list_add_image_targets
(GtkTargetList *list,
guint info,
gboolean writable);
Добавляет целевые изображения поддерживаемые GtkSelection к списку целей. Все цели добавляются с тем же самым info.
list : |
|
info : |
ID который будет возвращён приложению |
writable : |
Добавлять ли только цели которые GTK+ знает как преобразовать в формат буфера изображения |
Начиная с версии 2.6
void gtk_target_list_add_uri_targets (GtkTargetList *list, guint info);
Добавляет URI цели поддерживаемые GtkSelection к списку целей. Все цели добавляются с тем же самым info.
list : |
|
info : |
ID который будет возвращён приложению |
Начиная с версии 2.6
void gtk_target_list_remove (GtkTargetList *list, GdkAtom target);
Удаляет цель из списка целей.
list : |
|
target : |
Интернированный атом представляющий цель |
gboolean gtk_target_list_find (GtkTargetList *list, GdkAtom target, guint *info);
Ищет полученную цель в GtkTargetList.
list : |
|
target : |
Интернированный атом представляющий цель для поиска |
info : |
Указатель расположения сохранённой приложением информации для цели |
Возвращает : |
TRUE если цель найдена, иначе FALSE |
void gtk_target_table_free (GtkTargetEntry *targets, gint n_targets);
Эта функция освобождает таблицу
целей возвращенных gtk_target_table_new_from_list()
|
массив GtkTargetEntry |
|
Количество целей в массиве |
Начиная с версии 2.10
GtkTargetEntry* gtk_target_table_new_from_list (GtkTargetList *list, gint *n_targets);
Эта функция создаёт массив
GtkTargetEntry
который содержит цели помещённые как
list
. Возвращаемая таблица должна
освобождаться с помощью gtk_target_table_free()
когда больше не нужна.
|
|
|
Место для хранения возвращаемого количества целей в таблице |
Возвращает : |
Новая таблица. |
Начиная с версии 2.10
gboolean gtk_selection_owner_set (GtkWidget *widget, GdkAtom selection, guint32 time_);
Требование монопольного использования данного выделения для специального виджета, или, если widget равен NULL, освобождение монопольного выделения.
widget : |
GtkWidget, или NULL. |
selection : |
Интернированный атом представляющий требуемое выделение |
time_ : |
Отметка времени требования выделения |
Возвращает : |
TRUE если операция выполнена |
gboolean gtk_selection_owner_set_for_display (GdkDisplay *display, GtkWidget *widget, GdkAtom selection, guint32 time_);
Требование монопольного использования данного выделения для специального виджета, или, если widget равен NULL, освобождение монопольного выделения.
display : |
Gdkdisplay в котором установлено выделение |
widget : |
Новый владелец выделения (GdkWidget), или NULL. |
selection : |
Интернированный атом представляющий требуемое выделение |
time_ : |
Отметка времени требования выделения |
Возвращает : |
TRUE если операция выполнена |
Начиная с версии 2.2
void gtk_selection_add_target (GtkWidget *widget, GdkAtom selection, GdkAtom target, guint info);
Добавляет определённую цель в список поддерживаемых целей для данного виджета и выделения.
widget : |
GtkTarget |
selection : |
выделение |
target : |
Цель для добавления. |
info : |
Целое положительное число которое будет возвращено приложению. |
void gtk_selection_add_targets (GtkWidget *widget, GdkAtom selection, const GtkTargetEntry *targets, guint ntargets);
Добавление таблицы целей в список поддерживаемых целей для данного виджета и выделения.
widget : |
|
selection : |
выделение |
targets : |
Таблица целей для добавления |
ntargets : |
Число данных в targets |
void gtk_selection_clear_targets (GtkWidget *widget, GdkAtom selection);
Удаляет все цели зарегистрированные для данного выделения виджета.
widget : |
|
selection : |
Атом представляющий выделение |
gboolean gtk_selection_convert (GtkWidget *widget, GdkAtom selection, GdkAtom target, guint32 time_);
Запрос содержимого выделения. При получении генерируется сигнал "selection_received".
widget : |
Запрашивающий виджет |
selection : |
Получаемое выделение |
target : |
Форма желаемой информации (например, STRING) |
time_ : |
Время запроса (обычно инициирование события) В непредвиденном случае вы можете использовать GDK_CURRENT_TIME |
Возвращает : |
TRUE если запрос удачен. FALSE если запрос не может быть обработан. (например, запрос для этого виджета уже был в процессе). |
void gtk_selection_data_set (GtkSelectionData *selection_data, GdkAtom type, gint format, const guchar *data, gint length);
Сохранение новых данных в объекте GtkSelectionData. Должен быть вызван только из callback-функции обработчика выделения. Сохранённые данные заканчиваются нулём (Zero-terminates).
selection_data : |
Указатель на GtkSelectionData структуру. |
type : |
Тип выделенных данных |
format : |
формат (число бит в модуле) |
data : |
Указатель на данные (будет скопирован) |
length : |
Длина данных |
gboolean gtk_selection_data_set_text (GtkSelectionData *selection_data, const gchar *str, gint len);
Устанавливает содержимое выделения в виде строки в кодировке UTF-8. Строка преобразуется в форму определённую selection_data->target.
selection_data : |
|
str : |
Строка в UTF-8 |
len : |
длина str, или -1 если str заканчивается нулём (nul-terminated). |
Возвращает : |
TRUE если выделение было удачно установлено, иначе FALSE. |
guchar* gtk_selection_data_get_text (GtkSelectionData *selection_data);
Получает содержимое выделенных данных как строку в кодировке UTF-8.
selection_data : |
|
Возвращает : |
Если выделенные данные содержат известный текстовый тип и он может быть преобразован в UTF-8, вновь размещенную строку содержащую преобразованный текст, иначе NULL. Если результат не NULL нужно освобождать с помощью g_free(). |
gboolean gtk_selection_data_set_pixbuf (GtkSelectionData *selection_data, GdkPixbuf *pixbuf);
Устанавливает содержимое выделения из GdkPixbuf. Буфер изображения (pixbuf) преобразуется в определённую форму selection_data->target.
selection_data : |
|
pixbuf : |
|
Возвращает : |
TRUE если выделение было удачно установлено, иначе FALSE. |
Начиная с версии 2.6
GdkPixbuf* gtk_selection_data_get_pixbuf (GtkSelectionData *selection_data);
Получает содержимое выделенных данных как GdkPixbuf.
selection_data : |
|
Возвращает : |
Если выделенные данные содержат допустимый тип изображения и оно может быть преобразовано в GdkPixbuf, возвращается вновь размещенный буфер изображения (pixbuf), иначе NULL. Если результат не NULL, то нужно освобождать с помощью g_object_unref(). |
Начиная с версии 2.6
gboolean gtk_selection_data_set_uris (GtkSelectionData *selection_data, gchar **uris);
Устанавливает содержимое выделения из списка URIs. Строка преобразуется в определённую форму selection_data->target.
selection_data : |
|
uris : |
NULL-заканчивающийся массив строк URIs |
Возвращает : |
TRUE если выделение было удачно установлено, иначе FALSE. |
Начиная с версии 2.6
gchar** gtk_selection_data_get_uris (GtkSelectionData *selection_data);
Получает содержимое выделенных данных как массив URIs.
selection_data : |
|
Возвращает : |
Если выделенные данные содержат список URIs, вновь размещаемый массив строк завершаемый NULL содержащий URIs, иначе NULL. Если результат не NULL, нужно освобождать с помощью g_strfreev(). |
Начиная с версии 2.6
gboolean gtk_selection_data_get_targets (GtkSelectionData *selection_data, GdkAtom **targets, gint *n_atoms);
Получает содержимое selection_data как массив целей. Это может использоваться для интерпретации результатов полученных стандартом TARGETS целей, который всегда поставляется для любого выделения.
selection_data : |
Объект GtkSelectionData |
targets : |
Размещение сохранённого массива целей. Результат сохранённый здесь должен быть освобождён с помощью g_free(). |
n_atoms : |
Размещение числа сохраняемых пунктов в targets. |
Возвращает : |
TRUE если selection_data содержит допустимый массив целей, иначе FALSE. |
gboolean gtk_selection_data_targets_include_image (GtkSelectionData *selection_data, gboolean writable);
Получает объект GtkSelectionData содержащий список целей, определяется если какие-нибудь цели в targets могут быть использованы для обеспечения GdkPixbuf.
selection_data : |
объект GtkSelectionData |
writable : |
Принимать ли только цели которые GTK+ знает как преобразовывать в формат буфера изображений (pixbuf) |
Возвращает : |
TRUE если selection_data содержит список целей и цель подходит для включения изображения, иначе FALSE. |
Начиная с версии 2.6
gboolean gtk_selection_data_targets_include_text (GtkSelectionData *selection_data);
Получает объект GtkSelectionData содержащий список целей, определяется если какая-нибудь цель в targets может быть использована для обеспечения текста.
selection_data : |
Объект GtkSelectionData |
Возвращает : |
TRUE если selection_data содержит список целей и цель подходит для включения текста, иначе FALSE. |
gboolean gtk_selection_data_targets_include_uri (GtkSelectionData *selection_data);
Полученный объект GtkSelectionData
содержит список адресов, определяет
может ли какой нибудь адрес в targets
использоваться для обеспечения списка
или URIs.
|
объект GtkSelectionData |
Возвращает : |
|
Начиная с версии 2.10
gboolean gtk_selection_data_targets_include_rich_text (GtkSelectionData *selection_data, GtkTextBuffer *buffer);
Полученный объект GtkSelectionData содержит список адресов, определяет может ли какой нибудь адрес в targets использоваться для обеспечения rich text.
|
объект GtkSelectionData |
|
|
Возвращает : |
|
Начиная с версии 2.10
gboolean gtk_targets_include_image (GdkAtom *targets, gint n_targets, gboolean writable);
Определяет может ли какой
нибудь адрес в targets
использоваться для обеспечения GdkPixbuf.
|
массив GdkAtoms |
|
длина |
|
Применяются ли только те адреса которые GTK+ знает как конвертировать в формат pixbuf |
Возвращает : |
|
Начиная с версии 2.10
gboolean gtk_targets_include_text (GdkAtom *targets, gint n_targets);
Определяет может ли какой
нибудь адрес в targets
использоваться для обеспечения текста.
|
массив GdkAtoms |
|
длина |
Возвращает : |
|
Начиная с версии 2.10
gboolean gtk_targets_include_uri (GdkAtom *targets, gint n_targets);
Определяет может ли какой
нибудь адрес в targets
использоваться для обеспечения списка
uri.
|
массив GdkAtoms |
|
длина |
Возвращает : |
|
Начиная с версии 2.10
gboolean gtk_targets_include_rich_text (GdkAtom *targets, gint n_targets, GtkTextBuffer *buffer);
Определяет если какой нибудь
адрес в targets
подходит для
обеспечения rich text.
|
массив GdkAtoms |
|
длина |
|
|
Возвращает : |
|
Начиная с версии 2.10
void gtk_selection_remove_all (GtkWidget *widget);
Удаляет все обработчики и сбрасывает монопольное использование всех выделений для виджета. Вызывается когда виджет прекратил существование. Эту функцию приложения обычно не будут вызывать.
widget : |
gboolean gtk_selection_clear (GtkWidget *widget, GdkEventSelection *event);
gtk_selection_clear устарела и не должна использоваться во вновь создаваемом коде. Вместо вызова этой функции, привязывайте ваш обработчик selection_clear_event. Вызов этой функции в любом другом контексте запрещён.
Обработчик по умолчанию для сигнала GtkWidget::selection_clear_event.
widget : |
|
event : |
событие |
Возвращает : |
TRUE если событие было обработано, иначе false |
Начиная с версии 2.2
GtkSelectionData* gtk_selection_data_copy (GtkSelectionData *data);
Создаёт копию структуры GtkSelectionData и принадлежащих ей данных.
data : |
Указатель на структуру GtkSelectionData. |
Возвращает : |
Указатель на копию data. |
void gtk_selection_data_free (GtkSelectionData *data);
Освобождает структуру GtkSelectionData возвращаемую gtk_selection_data_copy().
data : |
Указатель на структуру GtkSelectionData. |
Большая часть операций выделения происходит через сигналы для GtkWidget. В частности, если вы используете функции из этого раздела, вы можете обратить внимание на ::selection_get, ::selection_received и :selection_clear_event сигналы. |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |