Буферы обмена
Буферы обмена — Хранение данных в буферах обмена
Функции
Сигналы
Типы и значения
Иерархия объектов
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 | атом 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. В Win32 буфер обмена GDK_SELECTION_PRIMARY по существу игнорируется.)
Возможны произвольные именованные буферы обмена; если вы создаёте новые буферы обмена, вы должны префикс имени выделения символом подчеркивания (поскольку ICCCM требует, чтобы нестандартные атомы имели префикс подчеркивания) и использовать именованный пространство имён. Например, если ваше приложение называется «Foo» и имеет специальный буфер обмена, вы можете назвать его «_FOO_SPECIAL_CLIPBOARD».
Параметры
display | объект GdkDisplay для которого должен быть получен или создан буфер обмена. | |
selection | атом GdkAtom, идентифицирующий буфер обмена для использования. |
Возвращает
соответствующий объект буфера обмена. Если буфер обмена еще не существует, он будет создан. После создания объект буфера обмена является постоянным и, так как он принадлежит GTK+, его не нужно освобождать или отменять ссылку.
[transfer none]
С: 2.2
gtk_clipboard_get_display ()
GdkDisplay *
gtk_clipboard_get_display (GtkClipboard *clipboard); Возвращает связанный с clipboard объект GdkDisplay.
Параметры
clipboard | объект GtkClipboard |
С: 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 | функция, вызываемая при получении результатов (или при сбое запроса). Если запрос не удался, поле length объекта | [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 | ||
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 |
Возвращаемое значение
новая выделенная строка UTF-8, которую необходимо освободить с помощью g_free(), или NULL, если получение данных выделения завершилось неудачей. (Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в текстовую форму.).
[nullable]
gtk_clipboard_wait_for_image ()
GdkPixbuf *
gtk_clipboard_wait_for_image (GtkClipboard *clipboard); Запрашивает содержимое буфера обмена в виде изображения и преобразует результат в GdkPixbuf. Эта функция ожидает получения данных с помощью основного цикла, поэтому в ожидании могут быть обработаны события, таймауты и т. п.
Параметры
clipboard |
Возвращаемое значение
новый выделенный объект GdkPixbuf, который необходимо уничтожить с помощью g_object_unref(), или NULL, если получение данных выделения завершилось неудачей. (Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в изображение.).
[nullable][transfer full]
Since: 2.6
gtk_clipboard_wait_for_rich_text ()
guint8 * gtk_clipboard_wait_for_rich_text (GtkClipboard *clipboard,GtkTextBuffer *buffer,GdkAtom *format,gsize *length);
Запрашивает содержимое буфера обмена в формате rich text. Эта функция ожидает получения данных с помощью основного цикла, поэтому в ожидании могут быть обработаны события, таймауты и т. п.
Параметры
clipboard | ||
buffer | ||
format | место для возвращаемого формата данных. | [out] |
length | место для возвращаемой длины данных. | [out] |
Возвращаемое значение
новый выделенный двоичный блок данных, который необходимо освободить с помощью g_free(), или NULL, если получение данных выделения завершилось неудачей. (Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в текстовую форму.).
[nullable][array length=length][transfer full]
Since: 2.10
gtk_clipboard_wait_for_uris ()
gchar **
gtk_clipboard_wait_for_uris (GtkClipboard *clipboard); Запрашивает содержимое буфера обмена в виде URI. Эта функция ожидает получения данных с помощью основного цикла, поэтому в ожидании могут быть обработаны события, таймауты и т. п.
Параметры
clipboard |
Возвращаемое значение
новый выделенный NULL-завершающий массив строк, который необходимо освободить с помощью g_strfreev(), или NULL, если получение данных выделения завершилось неудачей. (Это может произойти по разным причинам, в частности, если буфер обмена был пуст или содержимое буфера обмена не удалось преобразовать в форму URI.).
[nullable][array zero-terminated=1][element-type utf8][transfer full]
Since: 2.14
gtk_clipboard_wait_is_text_available ()
gboolean
gtk_clipboard_wait_is_text_available (GtkClipboard *clipboard); Проверяет наличие доступного для вставки текста. Это делается путем запроса атома TARGETS и проверки наличия поддерживаемых целевых форматов текста. Эта функция ожидает получения данных с помощью основного цикла, поэтому в ожидании могут быть обработаны события, таймауты и т. п.
Эта функция немного быстрее, чем вызов gtk_clipboard_wait_for_text(), так как ей не нужно получать фактический текст.
Параметры
clipboard |
gtk_clipboard_wait_is_image_available ()
gboolean
gtk_clipboard_wait_is_image_available (GtkClipboard *clipboard); Проверка наличия изображения, доступного для вставки. Это делается путём запроса атома TARGETS и проверки, содержит ли он какие-либо поддерживаемые целевые типы изображений. Данная функция ожидает получения данных с помощью основного цикла, поэтому во время ожидания могут быть обработаны события, таймауты и т.д.
Эта функция немного быстрее, чем вызов gtk_clipboard_wait_for_image(), так как ей не нужно получать фактические данные изображения.
Параметры
clipboard | объект GtkClipboard |
С: 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 |
С: 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 |
С: 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, указывающий, какой целевой тип искать. |
С: 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
Типы и значения
GtkClipboard
typedef struct _GtkClipboard GtkClipboard;
Подробности сигналов
Сигнал “owner-change”
void user_function (GtkClipboard *clipboard, GdkEvent *event, gpointer user_data)
Сигнал ::owner-change генерируется, когда GTK+ получает событие, указывающее на изменение владельца выделения, связанного с clipboard.
Параметры
clipboard | GtkClipboard, на котором генерируется сигнал | |
event | событие | [тип Gdk.EventOwnerChange] |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Выполнить сначала
С: 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.20/gtk3-Clipboards.html