Буферы обмена
Буферы обмена — Хранение данных в буфере обмена
Функции
Сигналы
| void | owner-change | Run First |
Типы и значения
Иерархия объектов
GObject
╰── GtkClipboard
Включенные файлы
#include <gtk/gtk.h>
Описание
Объект GtkClipboard представляет буфер обмена данными, общими для разных процессов или различных виджетов в одном процессе. Каждый буфер обмена идентифицируется именем, закодированным как GdkAtom. (Преобразование в строки и из строк можно выполнить с помощью gdk_atom_intern() и gdk_atom_name().) Стандартный буфер обмена соответствует атому “CLIPBOARD”; другой часто используемый буфер — “PRIMARY”, который в X обычно содержит выделенный текст.
Для поддержки нескольких форматов данных в буфере обмена механизм буфера обмена позволяет использовать обратные вызовы вместо самих данных. При установке содержимого буфера обмена можно либо предоставить данные напрямую (через функции, такие как gtk_clipboard_set_text()), либо предоставить обратный вызов, который будет вызван позже, когда данные потребуются (через gtk_clipboard_set_with_data() или gtk_clipboard_set_with_owner().) Использование обратного вызова также предотвращает создание копий данных, когда они не нужны.
gtk_clipboard_set_with_data() и gtk_clipboard_set_with_owner() довольно похожи; выбор между ними зависит в основном от удобства в конкретной ситуации. Первый наиболее полезен, когда требуется блок данных с обратными вызовами для его преобразования в различные типы данных, которые вы объявляете. Когда вызывается предоставленный вами clear_func, просто освободите блок данных. Последний более полезен, когда содержимое буфера обмена отражает внутреннее состояние GObject (например, для буфера PRIMARY, когда виджет ввода предоставляет содержимое буфера обмена, содержимое просто текст в выделенной области.) Если содержимое изменяется, виджет ввода может вызвать gtk_clipboard_set_with_owner() для обновления отметки времени владения буфером обмена, не беспокоясь о вызове clear_func.
Запрос данных из буфера обмена по своей сути является асинхронным. Если содержимое буфера обмена предоставляется в том же процессе, то будет сделан прямой вызов функции для получения данных, но если оно предоставляется другим процессом, то данные необходимо получить из другого процесса, что может занять некоторое время. Чтобы избежать блокировки пользовательского интерфейса, вызов для запроса выделения, gtk_clipboard_request_contents(), принимает обратный вызов, который будет вызван при получении содержимого (или при неудаче запроса). Если вы не хотите иметь дело с предоставлением отдельного обратного вызова, вы также можете использовать gtk_clipboard_wait_for_contents(). Это заставляет цикл GLib запускаться рекурсивно, ожидая содержимого. Это может упростить поток кода, но вы должны помнить, что другие обратные вызовы в вашей программе могут быть вызваны, пока выполняется этот рекурсивный цикл.
Наряду с функциями получения содержимого буфера обмена как произвочного блока данных, также есть функции для получения его как текста, gtk_clipboard_request_text() и gtk_clipboard_wait_for_text(). Эти функции заботятся о определении форматов, объявленных поставщиком буфера обмена, запросе буфера обмена в лучшем доступном формате и преобразовании результатов в кодировку UTF-8. (Стандартная форма представления строк в GTK+.)
Функции
GtkClipboardReceivedFunc ()
void (*GtkClipboardReceivedFunc) (GtkClipboard *clipboard,GtkSelectionData *selection_data,gpointer data);
Функция, вызываемая при получении результатов gtk_clipboard_request_contents() или при сбое запроса.
Параметры
clipboard | объект GtkClipboard | |
selection_data | объект GtkSelectionData, содержащий полученные данные. Если получение данных завершилось ошибкой, поле длины | |
data | данные | [closure] |
GtkClipboardTextReceivedFunc ()
void (*GtkClipboardTextReceivedFunc) (GtkClipboard *clipboard,const gchar *text,gpointer data);
Функция, вызываемая при получении результатов gtk_clipboard_request_text() или при сбое запроса.
Параметры
clipboard | объект GtkClipboard | |
text | полученный текст в кодировке UTF-8 или | [nullable] |
data | данные | [closure] |
GtkClipboardImageReceivedFunc ()
void (*GtkClipboardImageReceivedFunc) (GtkClipboard *clipboard,GdkPixbuf *pixbuf,gpointer data);
Функция, вызываемая при получении результатов gtk_clipboard_request_image() или при сбое запроса.
Параметры
clipboard | объект GtkClipboard | |
pixbuf | полученное изображение | |
data | данные | [closure] |
С: 2.6
GtkClipboardTargetsReceivedFunc ()
void (*GtkClipboardTargetsReceivedFunc) (GtkClipboard *clipboard,GdkAtom *atoms,gint n_atoms,gpointer data);
Функция, вызываемая при получении результатов gtk_clipboard_request_targets() или при сбое запроса.
Параметры
clipboard | объект GtkClipboard | |
atoms | поддерживаемые целевые объекты в виде массива GdkAtom, или | [nullable][array length=n_atoms] |
n_atoms | длина массива | |
data | данные | [closure] |
С: 2.4
GtkClipboardRichTextReceivedFunc ()
void (*GtkClipboardRichTextReceivedFunc) (GtkClipboard *clipboard,GdkAtom format,const guint8 *text,gsize length,gpointer data);
Функция, вызываемая при получении результатов gtk_clipboard_request_rich_text() или при сбое запроса.
Параметры
clipboard | объект GtkClipboard | |
format | Формат форматированного текста | |
text | полученный форматированный текст в кодировке UTF-8 или | [nullable][type utf8] |
length | Длина текста. | |
data | данные | [closure] |
С: 2.10
GtkClipboardURIReceivedFunc ()
void (*GtkClipboardURIReceivedFunc) (GtkClipboard *clipboard,gchar **uris,gpointer data);
Функция, вызываемая при получении результатов gtk_clipboard_request_uris() или при сбое запроса.
Параметры
clipboard | объект GtkClipboard | |
uris | полученные URI. | [array zero-terminated=1] |
data | данные | [closure] |
С: 2.14
GtkClipboardGetFunc ()
void (*GtkClipboardGetFunc) (GtkClipboard *clipboard,GtkSelectionData *selection_data,guint info,gpointer user_data_or_owner);
Функция, которая будет вызвана для предоставления содержимого выделения. Если было рекламировано несколько типов данных, запрашиваемый тип можно определить из параметра info или проверив целевое поле selection_data. Если данные можно успешно преобразовать, то они должны быть сохранены в объекте selection_data, вызвав gtk_selection_data_set() (или связанные функции, такие как gtk_selection_data_set_text()). Если данные не установлены, запрашивателю будет сообщено, что попытка получить данные не удалась.
Параметры
clipboard | буфер обмена GtkClipboard | |
selection_data | аргумент GtkSelectionData, в котором должны быть сохранены запрашиваемые данные. | |
info | поле info, соответствующее запрашиваемому целевому значению из массива GtkTargetEntry, переданного в | |
user_data_or_owner | аргумент |
GtkClipboardClearFunc ()
void (*GtkClipboardClearFunc) (GtkClipboard *clipboard,gpointer user_data_or_owner);
Функция, которая будет вызвана при изменении или очистке содержимого буфера обмена. После вызова этого параметра user_data_or_owner больше не будет использоваться.
Параметры
clipboard | буфер обмена GtkClipboard | |
user_data_or_owner | аргумент |
gtk_clipboard_get ()
GtkClipboard *
gtk_clipboard_get (GdkAtom selection); Возвращает объект буфера обмена для данного выделения. Подробности см. в gtk_clipboard_get_for_display().
Параметры
selection | a GdkAtom определяющий буфер обмена для использования |
Возвращаемое значение
соответствующий объект буфера обмена. Если буфер обмена ещё не существует, он будет создан. После создания объекта буфера обмена, он является постоянным и, так как принадлежит GTK+, его не нужно освобождать или сбрасывать ссылки.
[transfer none]
gtk_clipboard_get_for_display ()
GtkClipboard * gtk_clipboard_get_for_display (GdkDisplay *display,GdkAtom selection);
Возвращает объект буфера обмена для данного выделения. Элементы меню «Вырезать/Копировать/Вставить» и сочетания клавиш должны использовать стандартный буфер обмена, возвращаемый путём передачи GDK_SELECTION_CLIPBOARD для selection. (GDK_NONE поддерживается как синоним GDK_SELECTION_CLIPBOARD для обратной совместимости). Текущий выделенный объект или текст должен быть предоставлен в буфере обмена, идентифицированном как GDK_SELECTION_PRIMARY. Элементы меню «Вырезать/Копировать/Вставить» концептуально копируют содержимое буфера обмена GDK_SELECTION_PRIMARY в стандартный буфер обмена, т. е. они копируют выделение в то, что пользователь видит как буфер обмена.
(Передача GDK_NONE эквивалентна использованию gdk_atom_intern
("CLIPBOARD", FALSE).
См. Спецификацию буфера обмена FreeDesktop для подробного обсуждения выборов «CLIPBOARD» и «PRIMARY» в системе X window. В Win32 буфер обмена GDK_SELECTION_PRIMARY фактически игнорируется.)
Возможно иметь произвольные буферы обмена с именами; если вы изобретаете новые буферы обмена, вы должны добавлять префикс подчёркивания (поскольку ICCCM требует, чтобы атомы, отличные от стандартных, имели префикс подчёркивания), а также имя пространства имён. Например, если ваше приложение называется «Foo» и у него есть буфер обмена специального назначения, вы можете назвать его «_FOO_SPECIAL_CLIPBOARD».
Параметры
display | объект GdkDisplay для которого необходимо получить или создать буфер обмена. | |
selection | a GdkAtom определяющий буфер обмена для использования. |
Возвращаемое значение
соответствующий объект буфера обмена. Если буфер обмена ещё не существует, он будет создан. После создания объекта буфера обмена, он является постоянным и, так как принадлежит GTK+, его не нужно освобождать или сбрасывать ссылки.
[transfer none]
С: 2.2
gtk_clipboard_get_display ()
GdkDisplay *
gtk_clipboard_get_display (GtkClipboard *clipboard); Возвращает GdkDisplay ассоциированный с clipboard
Параметры
clipboard |
С: 2.2
gtk_clipboard_get_default ()
GtkClipboard *
gtk_clipboard_get_default (GdkDisplay *display); Возвращает стандартный объект буфера обмена для использования с элементами меню «Вырезать/Копировать/Вставить» и сочетаниями клавиш.
Параметры
display | объект GdkDisplay для которого необходимо получить буфер обмена. |
Возвращаемое значение
стандартный объект буфера обмена.
[transfer none]
С: 3.16
gtk_clipboard_set_with_data ()
gboolean gtk_clipboard_set_with_data (GtkClipboard *clipboard,const GtkTargetEntry *targets,guint n_targets,GtkClipboardGetFunc get_func,GtkClipboardClearFunc clear_func,gpointer user_data);
Виртуально устанавливает содержимое указанного буфера обмена, предоставив список поддерживаемых форматов данных буфера обмена и функцию для получения фактических данных при запросе.
[skip]
Параметры
clipboard | объект GtkClipboard | |
targets | массив, содержащий информацию о доступных форматах данных буфера обмена. | [array length=n_targets] |
n_targets | количество элементов в | |
get_func | функция для получения фактических данных буфера обмена. | [scope async] |
clear_func | при повторной установке содержимого буфера обмена будет вызвана эта функция, и | [scope async] |
user_data | данные пользователя, передаваемые в |
Возвращаемое значение
TRUE если установка данных буфера обмена прошла успешно. Если установка данных буфера обмена завершилась неудачей, предоставленные функции обратного вызова будут проигнорированы.
gtk_clipboard_set_with_owner ()
gboolean gtk_clipboard_set_with_owner (GtkClipboard *clipboard,const GtkTargetEntry *targets,guint n_targets,GtkClipboardGetFunc get_func,GtkClipboardClearFunc clear_func,GObject *owner);
Виртуально устанавливает содержимое указанного буфера обмена, предоставив список поддерживаемых форматов данных буфера обмена и функцию для получения фактических данных при запросе.
Различие между этой функцией и gtk_clipboard_set_with_data() заключается в том, что вместо указателя общего назначения user_data передается объект GObject.
[skip]
Параметры
clipboard | объект GtkClipboard | |
targets | массив, содержащий информацию о доступных форматах данных буфера обмена. | [array length=n_targets] |
n_targets | количество элементов в | |
get_func | функция для получения фактических данных буфера обмена. | [scope async] |
clear_func | при повторной установке содержимого буфера обмена будет вызвана эта функция, и | [scope async] |
owner | объект, «владеющий» данными. Этот объект будет передан в обратные вызовы при их вызове. |
Возвращаемое значение
TRUE если установка данных буфера обмена прошла успешно. Если установка данных буфера обмена завершилась неудачей, предоставленные функции обратного вызова будут проигнорированы.
gtk_clipboard_get_owner ()
GObject *
gtk_clipboard_get_owner (GtkClipboard *clipboard); Если обратные вызовы содержимого буфера обмена были установлены с помощью gtk_clipboard_set_with_owner(), и gtk_clipboard_set_with_data() или gtk_clipboard_clear() не были вызваны, возвращает владельца, установленного с помощью gtk_clipboard_set_with_owner().
Параметры
clipboard | объект GtkClipboard |
Возвращаемое значение
владелец буфера обмена, если таковой имеется; в противном случае NULL.
[nullable][transfer none]
gtk_clipboard_clear ()
void
gtk_clipboard_clear (GtkClipboard *clipboard); Очищает содержимое буфера обмена. Как правило, это следует делать только между вызовами gtk_clipboard_set_with_owner() или gtk_clipboard_set_with_data() и вызовом предоставленной вами clear_func. В противном случае буфер обмена может быть занят кем-то другим.
Параметры
clipboard | объект GtkClipboard |
gtk_clipboard_set_text ()
void gtk_clipboard_set_text (GtkClipboard *clipboard,const gchar *text,gint len);
Устанавливает содержимое буфера обмена на заданную строку UTF-8. GTK+ создаст копию текста и возьмет на себя ответственность за обработку запросов к тексту и преобразование текста в требуемый формат.
Параметры
clipboard | объект GtkClipboard | |
text | строка UTF-8. | |
len | длина |
gtk_clipboard_set_image ()
void gtk_clipboard_set_image (GtkClipboard *clipboard,GdkPixbuf *pixbuf);
Устанавливает содержимое буфера обмена на заданный GdkPixbuf. GTK+ возьмет на себя ответственность за обработку запросов к изображению и преобразование изображения в требуемый формат.
Параметры
clipboard | объект GtkClipboard | |
pixbuf | объект GdkPixbuf |
С: 2.6
gtk_clipboard_request_contents ()
void gtk_clipboard_request_contents (GtkClipboard *clipboard,GdkAtom target,GtkClipboardReceivedFunc callback,gpointer user_data);
Запрашивает содержимое буфера обмена в качестве указанного целевого формата. Когда результаты будут получены, будет вызван предоставленный обратный вызов.
Параметры
clipboard | объект GtkClipboard | |
target | атом, представляющий собой формат, в который владелец буфера обмена должен преобразовать выбор. | |
callback | Функция, вызываемая при получении результатов (или при сбое запроса). Если запрос не удался, значение поля | [scope async] |
user_data | данные пользователя, передаваемые в |
gtk_clipboard_request_text ()
void gtk_clipboard_request_text (GtkClipboard *clipboard,GtkClipboardTextReceivedFunc callback,gpointer user_data);
Запрашивает содержимое буфера обмена в виде текста. Когда текст позже будет получен, он будет преобразован в UTF-8 при необходимости, и будет вызван callback.
Параметр text функции callback будет содержать полученный текст, если запрос выполнен успешно, или NULL, если произошла ошибка. Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в текстовый формат.
Параметры
clipboard | объект GtkClipboard | |
callback | функция, вызываемая при получении текста или при ошибке. (Она будет вызвана всегда). | [scope async] |
user_data | данные пользователя, передаваемые в |
gtk_clipboard_request_image ()
void gtk_clipboard_request_image (GtkClipboard *clipboard,GtkClipboardImageReceivedFunc callback,gpointer user_data);
Запрашивает содержимое буфера обмена в виде изображения. Когда изображение будет позже получено, оно будет преобразовано в GdkPixbuf, и будет вызван callback.
Параметр pixbuf функции callback будет содержать полученный GdkPixbuf, если запрос выполнен успешно, или NULL, если произошла ошибка. Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в изображение.
Параметры
clipboard | объект GtkClipboard | |
callback | функция, вызываемая при получении изображения или при ошибке. (Она будет вызвана всегда). | [scope async] |
user_data | данные пользователя, передаваемые в |
С: 2.6
gtk_clipboard_request_targets ()
void gtk_clipboard_request_targets (GtkClipboard *clipboard,GtkClipboardTargetsReceivedFunc callback,gpointer user_data);
Запрашивает список поддерживаемых целевых форматов буфера обмена. Когда список будет получен, будет вызван callback.
Параметр targets функции callback будет содержать полученный список целевых форматов, если запрос выполнен успешно, или NULL, если произошла ошибка.
Параметры
clipboard | объект GtkClipboard | |
callback | функция, вызываемая при получении списка целевых форматов или при ошибке. (Она будет вызвана всегда). | [scope async] |
user_data | данные пользователя, передаваемые в |
С: 2.4
gtk_clipboard_request_rich_text ()
void gtk_clipboard_request_rich_text (GtkClipboard *clipboard,GtkTextBuffer *buffer,GtkClipboardRichTextReceivedFunc callback,gpointer user_data);
Запрашивает содержимое буфера обмена в формате форматированного текста. Когда форматированный текст будет получен, будет вызван callback.
Параметр text функции callback будет содержать полученный форматированный текст, если запрос выполнен успешно, или NULL, если произошла ошибка. Параметр length будет содержать длину результата text. Данная функция может завершиться ошибкой по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в формат форматированного текста.
Параметры
clipboard | объект GtkClipboard | |
buffer | объект GtkTextBuffer | |
callback | функция, вызываемая при получении текста или при ошибке. (Она будет вызвана всегда). | [scope async] |
user_data | данные пользователя, передаваемые в |
С: 2.10
gtk_clipboard_request_uris ()
void gtk_clipboard_request_uris (GtkClipboard *clipboard,GtkClipboardURIReceivedFunc callback,gpointer user_data);
Запрашивает содержимое буфера обмена в формате URI. Когда URI будут получены, будет вызван callback.
Параметр uris функции callback будет содержать полученный массив URI, если запрос выполнен успешно, или NULL, если произошла ошибка. Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в формат URI.
Параметры
clipboard | объект GtkClipboard | |
callback | функция, вызываемая при получении URI или при ошибке. (Она будет вызвана всегда). | [scope async] |
user_data | данные пользователя, передаваемые в |
С: 2.14
gtk_clipboard_wait_for_contents ()
GtkSelectionData * gtk_clipboard_wait_for_contents (GtkClipboard *clipboard,GdkAtom target);
Запрашивает содержимое буфера обмена, используя указанный целевой формат. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Параметры
clipboard | объект GtkClipboard | |
target | атом, представляющий формат, в который владелец буфера обмена должен преобразовать выбор. |
Возвращаемое значение
новый выделенный объект GtkSelectionData, или NULL если получение указанного целевого формата завершилось неудачей. Если не NULL, это значение необходимо освободить с помощью gtk_selection_data_free(), когда вы закончите с ним.
[nullable]
gtk_clipboard_wait_for_text ()
gchar *
gtk_clipboard_wait_for_text (GtkClipboard *clipboard); Запрашивает содержимое буфера обмена как текст и преобразует результат в UTF-8, если необходимо. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Параметры
clipboard | объект GtkClipboard |
Возвращаемое значение
новый выделенный строковый объект UTF-8, который необходимо освободить с помощью g_free(), или NULL если получение данных выбора завершилось неудачей. (Это может произойти по различным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в текстовый формат).
[nullable]
gtk_clipboard_wait_for_image ()
GdkPixbuf *
gtk_clipboard_wait_for_image (GtkClipboard *clipboard); Запрашивает содержимое буфера обмена как изображение и преобразует результат в объект GdkPixbuf. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Параметры
clipboard | объект GtkClipboard |
Возвращаемое значение
новый выделенный объект GdkPixbuf, который необходимо освободить с помощью g_object_unref(), или NULL если получение данных выбора завершилось неудачей. (Это может произойти по различным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в изображение.).
[nullable][transfer full]
С: 2.6
gtk_clipboard_wait_for_rich_text ()
guint8 * gtk_clipboard_wait_for_rich_text (GtkClipboard *clipboard,GtkTextBuffer *buffer,GdkAtom *format,gsize *length);
Запрашивает содержимое буфера обмена в формате форматированного текста. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Параметры
clipboard | объект GtkClipboard | |
buffer | объект GtkTextBuffer | |
format | место для хранения формата возвращаемых данных. | [out] |
length | место для хранения длины возвращаемых данных. | [out] |
Возвращаемое значение
новый выделенный двоичный блок данных, который необходимо освободить с помощью g_free(), или NULL если получение данных выбора завершилось неудачей. (Это может произойти по различным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в текстовый формат).
[nullable][array length=length][transfer full]
С: 2.10
gtk_clipboard_wait_for_uris ()
gchar **
gtk_clipboard_wait_for_uris (GtkClipboard *clipboard); Запрашивает содержимое буфера обмена в виде URI. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Параметры
clipboard | объект GtkClipboard |
Возвращаемое значение
новый выделенный NULL-завершающий массив строк, который необходимо освободить с помощью g_strfreev(), или NULL если получение данных выбора завершилось неудачей. (Это может произойти по различным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в формат URI).
[nullable][array zero-terminated=1][element-type utf8][transfer full]
С: 2.14
gtk_clipboard_wait_is_text_available ()
gboolean
gtk_clipboard_wait_is_text_available (GtkClipboard *clipboard); Проверка наличия текста для вставки. Это делается путем запроса атома TARGETS и проверки, содержит ли он какие-либо поддерживаемые целевые форматы текста. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Эта функция немного быстрее, чем вызов gtk_clipboard_wait_for_text(), так как ей не нужно получать фактический текст.
Параметры
clipboard | объект GtkClipboard |
Возвращаемое значение
TRUE если текст доступен, FALSE в противном случае.
gtk_clipboard_wait_is_image_available ()
gboolean
gtk_clipboard_wait_is_image_available (GtkClipboard *clipboard); Проверка наличия изображения для вставки. Это делается путем запроса атома TARGETS и проверки, содержит ли он какие-либо поддерживаемые целевые форматы изображений. Эта функция ожидает получения данных, используя основной цикл, поэтому во время ожидания могут быть обработаны события, таймауты и т. д.
Эта функция немного быстрее, чем вызов gtk_clipboard_wait_for_image(), так как ей не нужно получать фактические данные изображения.
Параметры
clipboard | объект GtkClipboard |
Возвращаемое значение
TRUE если изображение доступно, FALSE в противном случае.
С: 2.6
gtk_clipboard_wait_is_rich_text_available ()
gboolean gtk_clipboard_wait_is_rich_text_available (GtkClipboard *clipboard,GtkTextBuffer *buffer);
Проверка наличия форматированного текста, доступного для вставки. Это делается путём запроса атома TARGETS и проверки, содержит ли он какие-либо поддерживаемые форматированные целевые объекты. Данная функция ожидает получения данных, используя основной цикл, поэтому события, таймауты и т. п. могут быть обработаны во время ожидания.
Эта функция немного быстрее, чем вызов gtk_clipboard_wait_for_rich_text(), так как ей не требуется извлечение фактического текста.
Параметры
clipboard | объект GtkClipboard | |
buffer | объект GtkTextBuffer |
Возвращает
TRUE если форматированный текст доступен, FALSE в противном случае.
С: 2.10
gtk_clipboard_wait_is_uris_available ()
gboolean
gtk_clipboard_wait_is_uris_available (GtkClipboard *clipboard); Проверка наличия списка URI, доступного для вставки. Это делается путём запроса атома TARGETS и проверки, содержит ли он целевые объекты URI. Эта функция ожидает получения данных, используя основной цикл, поэтому события, таймауты и т. п. могут быть обработаны во время ожидания.
Эта функция немного быстрее, чем вызов gtk_clipboard_wait_for_uris(), так как ей не требуется извлечение фактических данных URI.
Параметры
clipboard | объект GtkClipboard |
Возвращает
TRUE если список URI доступен, FALSE в противном случае.
С: 2.14
gtk_clipboard_wait_for_targets ()
gboolean gtk_clipboard_wait_for_targets (GtkClipboard *clipboard,GdkAtom **targets,gint *n_targets);
Возвращает список целевых объектов, присутствующих в буфере обмена, или NULL если целевые объекты недоступны. Возвращаемый список необходимо освободить с помощью g_free(). Эта функция ожидает получения данных, используя основной цикл, поэтому события, таймауты и т. п. могут быть обработаны во время ожидания.
Параметры
clipboard | объект GtkClipboard | |
targets | место для хранения массива целевых объектов. Результат, сохранённый здесь, необходимо освободить с помощью | [out][array length=n_targets][transfer container] |
n_targets | место для хранения количества элементов в | [out] |
Возвращает
TRUE если целевые объекты присутствуют в буфере обмена, в противном случае FALSE.
С: 2.4
gtk_clipboard_wait_is_target_available ()
gboolean gtk_clipboard_wait_is_target_available (GtkClipboard *clipboard,GdkAtom target);
Проверяет, поддерживает ли буфер обмена вставку данных заданного типа. Эта функция может быть использована для определения, следует ли сделать элемент меню «Вставить» неактивным.
Если вам нужно проверить наличие текста в буфере обмена, используйте gtk_clipboard_wait_is_text_available().
Параметры
clipboard | объект GtkClipboard | |
target | атом GdkAtom, указывающий целевой объект для поиска. |
Возвращает
TRUE если целевой объект доступен, FALSE в противном случае.
С: 2.6
gtk_clipboard_set_can_store ()
void gtk_clipboard_set_can_store (GtkClipboard *clipboard,const GtkTargetEntry *targets,gint n_targets);
Подсказывает, что данные буфера обмена должны быть сохранены где-то при выходе приложения или при вызове gtk_clipboard_store().
Это значение сбрасывается при изменении владельца буфера обмена. Место сохранения данных буфера обмена зависит от платформы. См. gdk_display_store_clipboard() для получения дополнительной информации.
Параметры
clipboard | объект GtkClipboard | |
targets | массив, содержащий информацию о форматах, которые должны быть сохранены, или | [allow-none][array length=n_targets] |
n_targets | количество элементов в |
С: 2.6
gtk_clipboard_store ()
void
gtk_clipboard_store (GtkClipboard *clipboard); Сохраняет текущие данные буфера обмена в определённом месте, чтобы они сохранились после выхода приложения.
Параметры
clipboard | объект GtkClipboard |
С: 2.6
gtk_clipboard_get_selection ()
GdkAtom
gtk_clipboard_get_selection (GtkClipboard *clipboard); Получает селекцию, к которой относится данный буфер обмена.
Параметры
clipboard | объект GtkClipboard |
Возвращает
селекцию
С: 3.22
Типы и значения
GtkClipboard
typedef struct _GtkClipboard GtkClipboard;
Подробности сигналов
Сигнал “owner-change”
void user_function (GtkClipboard *clipboard, GdkEvent *event, gpointer user_data)
Сигнал ::owner-change генерируется, когда GTK+ получает событие, указывающее на изменение владения селекцией, связанной с clipboard.
Параметры
clipboard | объект GtkClipboard, на котором генерируется сигнал | |
event | событие | [type Gdk.EventOwnerChange] |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run First
С: 2.6
См. также
© 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-Clipboards.html