Выделения
Выделения — Функции для обработки межпроцессного взаимодействия через выделения
Функции
| const guchar * | gtk_selection_data_get_data_with_length () |
| GdkAtom | gtk_selection_data_get_data_type () |
| GdkDisplay * | gtk_selection_data_get_display () |
| gint | gtk_selection_data_get_format () |
| GdkAtom | gtk_selection_data_get_target () |
| gboolean | gtk_targets_include_image () |
| gboolean | gtk_targets_include_text () |
| gboolean | gtk_targets_include_uri () |
| gboolean | gtk_targets_include_rich_text () |
| void | gtk_selection_remove_all () |
| GtkSelectionData * | gtk_selection_data_copy () |
| void | gtk_selection_data_free () |
Типы и Значения
| GtkSelectionData | |
| struct | GtkTargetEntry |
| GtkTargetList | |
| struct | GtkTargetPair |
Иерархия Объектов
GBoxed ├── GtkSelectionData ╰── GtkTargetList
Включения
#include <gtk/gtk.h>
Описание
Механизм выделения предоставляет основу для различных типов взаимодействия между процессами. В частности, перетаскивание и GtkClipboard работают через выделения. Вам очень редко или никогда не придётся использовать большинство функций в этом разделе напрямую; GtkClipboard предоставляет более удобный интерфейс к тем же функциям.
Если от приложения ожидается обмен данными изображения и работа в Windows, настоятельно рекомендуется поддерживать по крайней мере целевой тип «image/bmp» для максимально широкой совместимости с приложениями сторонних разработчиков. GtkClipboard уже делает это, используя gtk_target_list_add_image_targets() и gtk_selection_data_set_pixbuf() или gtk_selection_data_get_pixbuf(), что является одной из причин, почему рекомендуется использовать GtkClipboard.
Некоторые из типов данных, определённых в этом разделе, также используются в API GtkClipboard и перетаскивания. Объекты GtkTargetEntry и GtkTargetList представляют списки типов данных, поддерживаемых при отправке или приёме данных. Объект GtkSelectionData используется для хранения блока данных вместе с типом данных и другой связанной информацией.
Функции
gtk_target_entry_new ()
GtkTargetEntry * gtk_target_entry_new (const gchar *target,guint flags,guint info);
Создаёт новый GtkTargetEntry.
Параметры
target | Строковый идентификатор целевого объекта | |
flags | Набор флагов, см. GtkTargetFlags | |
info | Идентификатор, который будет возвращён приложению |
Возвращаемое значение
указатель на новый GtkTargetEntry. Освободить с помощью gtk_target_entry_free()
gtk_target_entry_copy ()
GtkTargetEntry *
gtk_target_entry_copy (GtkTargetEntry *data); Создаёт копию GtkTargetEntry и её данных.
Параметры
data | указатель на GtkTargetEntry |
Возвращаемое значение
указатель на копию data. Освободить с помощью gtk_target_entry_free()
gtk_target_entry_free ()
void
gtk_target_entry_free (GtkTargetEntry *data); Освобождает GtkTargetEntry, возвращённый функцией gtk_target_entry_new() или gtk_target_entry_copy().
Параметры
data | указатель на GtkTargetEntry. |
gtk_target_list_new ()
GtkTargetList * gtk_target_list_new (const GtkTargetEntry *targets,guint ntargets);
Создаёт новый GtkTargetList из массива GtkTargetEntry.
Параметры
targets | Указатель на массив GtkTargetEntry. | [array length=ntargets][allow-none] |
ntargets | количество элементов в |
gtk_target_list_ref ()
GtkTargetList *
gtk_target_list_ref (GtkTargetList *list); Увеличивает счётчик ссылок GtkTargetList на единицу.
Параметры
list |
Возвращаемое значение
переданный GtkTargetList.
gtk_target_list_unref ()
void
gtk_target_list_unref (GtkTargetList *list); Уменьшает счётчик ссылок GtkTargetList на единицу. Если результат счётчика ссылок равен нулю, освобождает список.
Параметры
list |
gtk_target_list_add ()
void gtk_target_list_add (GtkTargetList *list,GdkAtom target,guint flags,guint info);
Добавляет другой целевой объект в GtkTargetList.
Параметры
list | ||
target | интернированный атом, представляющий целевой объект | |
flags | флаги для данного целевого объекта | |
info | Идентификатор, который будет возвращён приложению |
gtk_target_list_add_table ()
void gtk_target_list_add_table (GtkTargetList *list,const GtkTargetEntry *targets,guint ntargets);
Добавляет таблицу GtkTargetEntry в начало списка целевых объектов.
Параметры
list | ||
targets | таблица GtkTargetEntry. | [array length=ntargets] |
ntargets | количество целевых объектов в таблице |
gtk_target_list_add_text_targets ()
void gtk_target_list_add_text_targets (GtkTargetList *list,guint info);
Добавляет целевые объекты для текстовых данных, поддерживаемые GtkSelectionData, в список целевых объектов. Все целевые объекты добавляются с одинаковым info .
Параметры
list | ||
info | Идентификатор, который будет возвращён приложению |
С: 2.6
gtk_target_list_add_image_targets ()
void gtk_target_list_add_image_targets (GtkTargetList *list,guint info,gboolean writable);
Добавляет целевые объекты для изображений, поддерживаемые GtkSelectionData, в список целевых объектов. Все целевые объекты добавляются с одинаковым info .
Параметры
list | ||
info | Идентификатор, который будет возвращён приложению | |
writable | указывает, добавлять только целевые объекты, для которых GTK+ знает, как преобразовать pixbuf в соответствующий формат |
С: 2.6
gtk_target_list_add_uri_targets ()
void gtk_target_list_add_uri_targets (GtkTargetList *list,guint info);
Добавляет в список целей URI-цели, поддерживаемые GtkSelectionData. Все цели добавляются с одинаковым значением info.
Параметры
list | ||
info | идентификатор, который будет возвращен приложению |
С: 2.6
gtk_target_list_add_rich_text_targets ()
void gtk_target_list_add_rich_text_targets (GtkTargetList *list,guint info,gboolean deserializable,GtkTextBuffer *buffer);
Добавляет в список целей цели форматированного текста, зарегистрированные с помощью gtk_text_buffer_register_serialize_format() или gtk_text_buffer_register_deserialize_format(). Все цели добавляются с одинаковым значением info.
Параметры
list | ||
info | идентификатор, который будет возвращен приложению | |
deserializable | если | |
buffer |
С: 2.10
gtk_target_list_remove ()
void gtk_target_list_remove (GtkTargetList *list,GdkAtom target);
Удаляет цель из списка целей.
Параметры
list | ||
target | интернированный атом, представляющий цель |
gtk_target_list_find ()
gboolean gtk_target_list_find (GtkTargetList *list,GdkAtom target,guint *info);
Ищет заданную цель в GtkTargetList.
Параметры
list | ||
target | интернированный атом, представляющий цель для поиска | |
info | указатель на место для хранения информации об приложении для цели, или | [out][allow-none] |
Возвращаемое значение
TRUE если цель была найдена, иначе FALSE
gtk_target_table_free ()
void gtk_target_table_free (GtkTargetEntry *targets,gint n_targets);
Эта функция освобождает таблицу целей, возвращенную gtk_target_table_new_from_list()
Параметры
targets | массив GtkTargetEntry. | [array length=n_targets] |
n_targets | количество элементов в массиве |
С: 2.10
gtk_target_table_new_from_list ()
GtkTargetEntry * gtk_target_table_new_from_list (GtkTargetList *list,gint *n_targets);
Эта функция создаёт массив GtkTargetEntry, содержащий те же цели, что и переданный list. Возвращаемая таблица выделяется динамически и должна быть освобождена с помощью gtk_target_table_free(), когда она больше не нужна.
Параметры
list | ||
n_targets | место для возврата количества целей в таблице. | [out] |
Возвращаемое значение
новая таблица.
[array length=n_targets][transfer full]
С: 2.10
gtk_selection_owner_set ()
gboolean gtk_selection_owner_set (GtkWidget *widget,GdkAtom selection,guint32 time_);
Заявляет о праве собственности на указанный выбор для определенного виджета, или, если widget равно NULL, освобождает право собственности на выбор.
Параметры
widget | a GtkWidget, или | [allow-none] |
selection | интернированный атом, представляющий выбор, на который претендуют | |
time_ | временная метка для заявления на выбор |
Возвращаемое значение
TRUE если операция прошла успешно
gtk_selection_owner_set_for_display ()
gboolean gtk_selection_owner_set_for_display (GdkDisplay *display,GtkWidget *widget,GdkAtom selection,guint32 time_);
Заявляет о праве собственности на указанный выбор для определенного виджета, или, если widget равно NULL, освобождает право собственности на выбор.
Параметры
display | the GdkDisplay где устанавливается выбор | |
widget | новый владелец выбора (a GtkWidget), или | [allow-none] |
selection | интернированный атом, представляющий выбор, на который претендуют. | |
time_ | временная метка для заявления на выбор |
Возвращаемое значение
TRUE если операция прошла успешно
С: 2.2
gtk_selection_add_target ()
void gtk_selection_add_target (GtkWidget *widget,GdkAtom selection,GdkAtom target,guint info);
Добавляет указанный целевой тип в список поддерживаемых целевых типов для данного виджета и выбора.
Параметры
widget | виджет GtkWidget | |
selection | выбор | |
target | целевой тип для добавления. | |
info | Целое беззнаковое число, которое будет возвращено приложению. |
gtk_selection_add_targets ()
void gtk_selection_add_targets (GtkWidget *widget,GdkAtom selection,const GtkTargetEntry *targets,guint ntargets);
Добавляет таблицу целевых типов в список поддерживаемых целевых типов для данного виджета и выбора.
Параметры
widget | виджет GtkWidget | |
selection | выбор | |
targets | таблица целевых типов для добавления. | [array length=ntargets] |
ntargets | количество элементов в |
gtk_selection_clear_targets ()
void gtk_selection_clear_targets (GtkWidget *widget,GdkAtom selection);
Удаляет все зарегистрированные целевые типы для данного выбора для виджета.
Параметры
widget | виджет GtkWidget | |
selection | атом, представляющий выбор |
gtk_selection_convert ()
gboolean gtk_selection_convert (GtkWidget *widget,GdkAtom selection,GdkAtom target,guint32 time_);
Запрашивает содержимое выбора. При получении содержимого будет сгенерирован сигнал «selection-received».
Параметры
widget | Виджет, выступающий в роли запросчика | |
selection | Какой выбор получить | |
target | Формат желаемой информации (например, STRING) | |
time_ | Время запроса (обычно время срабатывания события). В экстренных случаях можно использовать GDK_CURRENT_TIME |
Возвращаемое значение
TRUE если запрос выполнен успешно. FALSE если запрос не может быть обработан (например, уже был запрос для этого виджета).
gtk_selection_data_set ()
void gtk_selection_data_set (GtkSelectionData *selection_data,GdkAtom type,gint format,const guchar *data,gint length);
Сохраняет новые данные в объект GtkSelectionData. Должен вызываться только из обработчика события выбора.
Параметры
selection_data | указатель на объект GtkSelectionData. | |
type | тип данных выбора | |
format | формат (количество бит в единице) | |
data | указатель на данные (будет скопирован). | [array length=length] |
length | длина данных |
gtk_selection_data_set_text ()
gboolean gtk_selection_data_set_text (GtkSelectionData *selection_data,const gchar *str,gint len);
Устанавливает содержимое выбора из строки UTF-8. Строка преобразуется в форму, определяемую selection_data->target.
Параметры
selection_data | объект GtkSelectionData | |
str | строка UTF-8 | |
len | длина |
Возвращаемое значение
TRUE если выбор был успешно установлен, иначе FALSE.
gtk_selection_data_get_text ()
guchar *
gtk_selection_data_get_text (const GtkSelectionData *selection_data); Получает содержимое данных выбора в виде строки UTF-8.
Параметры
selection_data | объект GtkSelectionData |
Возвращаемое значение
Если данные выбора содержали распознанный тип текста и его можно было преобразовать в UTF-8, возвращается новая строка, содержащая преобразованный текст; иначе NULL. Если результат не NULL, его необходимо освободить с помощью g_free().
[type utf8][nullable][transfer full]
gtk_selection_data_set_pixbuf ()
gboolean gtk_selection_data_set_pixbuf (GtkSelectionData *selection_data,GdkPixbuf *pixbuf);
Устанавливает содержимое выбора из GdkPixbuf. Pixbuf преобразуется в форму, определяемую selection_data->target .
Параметры
selection_data | объект GtkSelectionData | |
pixbuf | объект GdkPixbuf |
Возвращаемое значение
TRUE если выбор был успешно установлен, иначе FALSE.
С: 2.6
gtk_selection_data_get_pixbuf ()
GdkPixbuf *
gtk_selection_data_get_pixbuf (const GtkSelectionData *selection_data); Получает содержимое данных выбора как GdkPixbuf.
Параметры
selection_data | объект GtkSelectionData |
Возвращаемое значение
Если данные выбора содержали распознанный тип изображения и его можно было преобразовать в GdkPixbuf, возвращается выделенный pixbuf; иначе NULL. Если результат не NULL, его необходимо освободить с помощью g_object_unref().
[nullable][transfer full]
С: 2.6
gtk_selection_data_set_uris ()
gboolean gtk_selection_data_set_uris (GtkSelectionData *selection_data,gchar **uris);
Устанавливает содержимое выделения из списка URI. Строка преобразуется в формат, определяемый selection_data->target.
Параметры
selection_data | ||
uris | a | [array zero-terminated=1] |
Возвращаемое значение
TRUE если выделение было успешно установлено, в противном случае FALSE.
Since: 2.6
gtk_selection_data_get_uris ()
gchar **
gtk_selection_data_get_uris (const GtkSelectionData *selection_data); Получает содержимое данных выделения в виде массива URI.
Параметры
selection_data |
Возвращаемое значение
Если данные выделения содержат список URI, возвращается новый динамически выделенный NULL-завершающий массив строк, содержащих URI; в противном случае NULL. Если результат не NULL, он должен быть освобождён с помощью g_strfreev().
[array zero-terminated=1][element-type utf8][transfer full]
Since: 2.6
gtk_selection_data_get_targets ()
gboolean gtk_selection_data_get_targets (const GtkSelectionData *selection_data,GdkAtom **targets,gint *n_atoms);
Получает содержимое selection_data в виде массива целевых типов. Это можно использовать для интерпретации результатов получения стандартного целевого типа TARGETS, который всегда предоставляется для любого выделения.
Параметры
selection_data | a GtkSelectionData объект | |
targets | место для хранения массива целевых типов. Результат, сохраненный здесь, должен быть освобожден с помощью | [out][array length=n_atoms][transfer container] |
n_atoms | место для хранения количества элементов в |
Возвращаемое значение
TRUE если selection_data содержит допустимый массив целевых типов, в противном случае FALSE.
gtk_selection_data_targets_include_image ()
gboolean gtk_selection_data_targets_include_image (const GtkSelectionData *selection_data,gboolean writable);
Учитывая объект GtkSelectionData, содержащий список целевых типов, определяет, можно ли использовать какой-либо из целевых типов в targets для предоставления GdkPixbuf.
Параметры
selection_data | a GtkSelectionData объект | |
writable | указывает, следует ли принимать только целевые типы, для которых GTK+ знает, как преобразовать pixbuf в указанный формат |
Возвращаемое значение
TRUE если selection_data содержит список целевых типов и среди них присутствует подходящий для изображений целевой тип, в противном случае FALSE.
Since: 2.6
gtk_selection_data_targets_include_text ()
gboolean
gtk_selection_data_targets_include_text
(const GtkSelectionData *selection_data); Учитывая объект GtkSelectionData, содержащий список целевых типов, определяет, можно ли использовать какой-либо из целевых типов в targets для предоставления текста.
Параметры
selection_data | a GtkSelectionData объект |
Возвращаемое значение
TRUE если selection_data содержит список целевых типов и среди них присутствует подходящий для текста целевой тип, в противном случае FALSE.
gtk_selection_data_targets_include_uri ()
gboolean
gtk_selection_data_targets_include_uri
(const GtkSelectionData *selection_data); Учитывая объект GtkSelectionData, содержащий список целевых типов, определяет, можно ли использовать какой-либо из целевых типов в targets для предоставления списка URI.
Параметры
selection_data | a GtkSelectionData объект |
Возвращаемое значение
TRUE если selection_data содержит список целевых типов и среди них присутствует подходящий для списков URI целевой тип, в противном случае FALSE.
Since: 2.10
gtk_selection_data_targets_include_rich_text ()
gboolean gtk_selection_data_targets_include_rich_text (const GtkSelectionData *selection_data,GtkTextBuffer *buffer);
Учитывая объект GtkSelectionData, содержащий список целевых типов, определяет, можно ли использовать какой-либо из целевых типов в targets для предоставления форматированного текста.
Параметры
selection_data | a GtkSelectionData объект | |
buffer |
Возвращаемое значение
TRUE если selection_data содержит список целевых типов и среди них присутствует подходящий для форматированного текста целевой тип, в противном случае FALSE.
Since: 2.10
gtk_selection_data_get_selection ()
GdkAtom
gtk_selection_data_get_selection (const GtkSelectionData *selection_data); Извлекает атом выделения GdkAtom данных выделения.
Параметры
selection_data | указатель на GtkSelectionData. |
Since: 2.16
gtk_selection_data_get_data ()
const guchar *
gtk_selection_data_get_data (const GtkSelectionData *selection_data); Извлекает исходные данные выделения.
[skip]
Параметры
selection_data | указатель на GtkSelectionData. |
Возвращаемое значение
исходные данные выделения.
[array][element-type guint8]
Since: 2.14
gtk_selection_data_get_length ()
gint
gtk_selection_data_get_length (const GtkSelectionData *selection_data); Извлекает длину необработанных данных выделения.
Параметры
selection_data | указатель на GtkSelectionData. |
Возвращает
длину данных выделения.
С версии: 2.14
gtk_selection_data_get_data_with_length ()
const guchar * gtk_selection_data_get_data_with_length (const GtkSelectionData *selection_data,gint *length);
Извлекает необработанные данные выделения вместе с их длиной.
[rename-to gtk_selection_data_get_data]
Параметры
selection_data | указатель на GtkSelectionData. | |
length | место возврата для длины сегмента данных. | [out] |
Возвращает
необработанные данные выделения.
[array length=length]
С версии: 3.0
gtk_selection_data_get_data_type ()
GdkAtom
gtk_selection_data_get_data_type (const GtkSelectionData *selection_data); Извлекает тип данных выделения.
Параметры
selection_data | указатель на GtkSelectionData. |
Возвращает
тип данных выделения.
[transfer none]
С версии: 2.14
gtk_selection_data_get_display ()
GdkDisplay *
gtk_selection_data_get_display (const GtkSelectionData *selection_data); Извлекает отображение выделения.
Параметры
selection_data | указатель на GtkSelectionData. |
Возвращает
отображение выделения.
[transfer none]
С версии: 2.14
gtk_selection_data_get_format ()
gint
gtk_selection_data_get_format (const GtkSelectionData *selection_data); Извлекает формат выделения.
Параметры
selection_data | указатель на GtkSelectionData. |
Возвращает
формат выделения.
С версии: 2.14
gtk_selection_data_get_target ()
GdkAtom
gtk_selection_data_get_target (const GtkSelectionData *selection_data); Извлекает целевой объект выделения.
Параметры
selection_data | указатель на GtkSelectionData. |
Возвращает
целевой объект выделения.
[transfer none]
С версии: 2.14
gtk_targets_include_image ()
gboolean gtk_targets_include_image (GdkAtom *targets,gint n_targets,gboolean writable);
Определяет, можно ли использовать любой из целевых объектов в targets для предоставления GdkPixbuf.
Параметры
targets | массив GdkAtoms. | [array length=n_targets] |
n_targets | длина | |
writable | следует ли принимать только целевые объекты, для которых GTK+ знает, как преобразовать pixbuf в формат |
Возвращает
TRUE если targets включает подходящий целевой объект для изображений, иначе FALSE.
С версии: 2.10
gtk_targets_include_text ()
gboolean gtk_targets_include_text (GdkAtom *targets,gint n_targets);
Определяет, можно ли использовать любой из целевых объектов в targets для предоставления текста.
Параметры
targets | массив GdkAtoms. | [array length=n_targets] |
n_targets | длина |
Возвращает
TRUE если targets включает подходящий целевой объект для текста, иначе FALSE.
С версии: 2.10
gtk_targets_include_uri ()
gboolean gtk_targets_include_uri (GdkAtom *targets,gint n_targets);
Определяет, можно ли использовать любой из целевых объектов в targets для предоставления списка uri.
Параметры
targets | массив GdkAtoms. | [array length=n_targets] |
n_targets | длина |
Возвращает
TRUE если targets включает подходящий целевой объект для списков uri, иначе FALSE.
С версии: 2.10
gtk_targets_include_rich_text ()
gboolean gtk_targets_include_rich_text (GdkAtom *targets,gint n_targets,GtkTextBuffer *buffer);
Определяет, можно ли использовать любой из целевых объектов в targets для предоставления форматированного текста.
Параметры
targets | массив GdkAtoms. | [array length=n_targets] |
n_targets | длина | |
buffer |
Возвращает
TRUE если targets включает подходящий целевой объект для форматированного текста, иначе FALSE.
С версии: 2.10
gtk_selection_remove_all ()
void
gtk_selection_remove_all (GtkWidget *widget); Удаляет все обработчики и сбрасывает владение всеми выделениями для виджета. Вызывается при уничтожении виджета. Данная функция обычно не вызывается приложениями.
Параметры
widget |
gtk_selection_data_copy ()
GtkSelectionData *
gtk_selection_data_copy (const GtkSelectionData *data); Создаёт копию GtkSelectionData и его данных.
Параметры
data | указатель на GtkSelectionData. |
Возвращает
указатель на копию data .
gtk_selection_data_free ()
void
gtk_selection_data_free (GtkSelectionData *data); Освобождает GtkSelectionData, возвращённый из gtk_selection_data_copy().
Параметры
data | указатель на GtkSelectionData. |
Типы и значения
GtkSelectionData
typedef struct _GtkSelectionData GtkSelectionData;
struct GtkTargetEntry
struct GtkTargetEntry {
gchar *target;
guint flags;
guint info;
};
GtkTargetEntry представляет собой единственный тип данных, который может быть предоставлен виджетом для выделения или предоставлен или получен во время перетаскивания.
Члены
gchar * | строковое представление типа целевого объекта | |
guint | GtkTargetFlags для перетаскивания | |
guint | целое число, присвоенное приложением, которое будет передаваться в качестве параметра, например, сигналу “selection-get”. Это позволяет приложению идентифицировать тип целевого объекта без больших сравнений строк. |
GtkTargetList
typedef struct _GtkTargetList GtkTargetList;
GtkTargetList — это список со ссылочной обработкой GtkTargetPair, который следует рассматривать как непрозрачный.
struct GtkTargetPair
struct GtkTargetPair {
GdkAtom target;
guint flags;
guint info;
};
GtkTargetPair используется для представления той же информации, что и таблица GtkTargetEntry, но в эффективной форме.
Члены
GdkAtom | представление типа целевого объекта с помощью GdkAtom | |
guint | GtkTargetFlags для перетаскивания | |
guint | целое число, присвоенное приложением, которое будет передаваться в качестве параметра, например, сигналу “selection-get”. Это позволяет приложению идентифицировать тип целевого объекта без больших сравнений строк. |
См. также
GtkWidget — большая часть работы с выделениями происходит через сигналы для GtkWidget. В частности, если вы используете функции из этого раздела, вам может потребоваться обратить внимание на сигналы “selection-get”, “selection-received” и “selection-clear-event”.
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/gtk3-Selections.html