Spec-Zone.ru › GTK 3.22

Буферы обмена

Буферы обмена — Хранение данных в буферах обмена

Функции

void (*GtkClipboardReceivedFunc) ()
void (*GtkClipboardTextReceivedFunc) ()
void (*GtkClipboardImageReceivedFunc) ()
void (*GtkClipboardTargetsReceivedFunc) ()
void (*GtkClipboardRichTextReceivedFunc) ()
void (*GtkClipboardURIReceivedFunc) ()
void (*GtkClipboardGetFunc) ()
void (*GtkClipboardClearFunc) ()
GtkClipboard * gtk_clipboard_get ()
GtkClipboard * gtk_clipboard_get_for_display ()
GdkDisplay * gtk_clipboard_get_display ()
GtkClipboard * gtk_clipboard_get_default ()
gboolean gtk_clipboard_set_with_data ()
gboolean gtk_clipboard_set_with_owner ()
GObject * gtk_clipboard_get_owner ()
void gtk_clipboard_clear ()
void gtk_clipboard_set_text ()
void gtk_clipboard_set_image ()
void gtk_clipboard_request_contents ()
void gtk_clipboard_request_text ()
void gtk_clipboard_request_image ()
void gtk_clipboard_request_targets ()
void gtk_clipboard_request_rich_text ()
void gtk_clipboard_request_uris ()
GtkSelectionData * gtk_clipboard_wait_for_contents ()
gchar * gtk_clipboard_wait_for_text ()
GdkPixbuf * gtk_clipboard_wait_for_image ()
guint8 * gtk_clipboard_wait_for_rich_text ()
gchar ** gtk_clipboard_wait_for_uris ()
gboolean gtk_clipboard_wait_is_text_available ()
gboolean gtk_clipboard_wait_is_image_available ()
gboolean gtk_clipboard_wait_is_rich_text_available ()
gboolean gtk_clipboard_wait_is_uris_available ()
gboolean gtk_clipboard_wait_for_targets ()
gboolean gtk_clipboard_wait_is_target_available ()
void gtk_clipboard_set_can_store ()
void gtk_clipboard_store ()
GdkAtom gtk_clipboard_get_selection ()

Сигналы

void owner-change Выполняется первым

Типы и значения

GtkClipboard

Иерархия объектов

    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, содержащий полученные данные. Если получение данных завершилось ошибкой, то поле длины selection_data будет отрицательным.

data

значение user_data, переданное в gtk_clipboard_request_contents().

[closure]

GtkClipboardTextReceivedFunc ()

void
(*GtkClipboardTextReceivedFunc) (GtkClipboard *clipboard,
                                 const gchar *text,
                                 gpointer data);

Функция, вызываемая при получении результатов gtk_clipboard_request_text(), или при ошибке запроса.

Параметры

clipboard

объект GtkClipboard

text

полученный текст, закодированный в UTF-8, или NULL в случае ошибки получения данных.

[nullable]

data

значение user_data, переданное в gtk_clipboard_request_text().

[closure]

GtkClipboardImageReceivedFunc ()

void
(*GtkClipboardImageReceivedFunc) (GtkClipboard *clipboard,
                                  GdkPixbuf *pixbuf,
                                  gpointer data);

Функция, вызываемая при получении результатов gtk_clipboard_request_image(), или при ошибке запроса.

Параметры

clipboard

объект GtkClipboard

pixbuf

полученный образ

data

значение user_data, переданное в gtk_clipboard_request_image().

[closure]

С: 2.6

GtkClipboardTargetsReceivedFunc ()

void
(*GtkClipboardTargetsReceivedFunc) (GtkClipboard *clipboard,
                                    GdkAtom *atoms,
                                    gint n_atoms,
                                    gpointer data);

Функция, вызываемая при получении результатов gtk_clipboard_request_targets(), или при ошибке запроса.

Параметры

clipboard

объект GtkClipboard

atoms

поддерживаемые целевые атомы, массив GdkAtom, или NULL в случае ошибки.

[nullable][array length=n_atoms]

n_atoms

длина массива atoms.

data

значение user_data, переданное в gtk_clipboard_request_targets().

[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, или NULL в случае ошибки получения данных.

[nullable][type utf8]

length

Длина текста.

data

значение user_data, переданное в gtk_clipboard_request_rich_text().

[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

значение user_data, переданное в gtk_clipboard_request_uris().

[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, переданного в gtk_clipboard_set_with_data() или gtk_clipboard_set_with_owner().

user_data_or_owner

аргумент user_data, переданный в gtk_clipboard_set_with_data(), или аргумент owner, переданный в gtk_clipboard_set_with_owner()

GtkClipboardClearFunc ()

void
(*GtkClipboardClearFunc) (GtkClipboard *clipboard,
                          gpointer user_data_or_owner);

Функция, которая будет вызвана при изменении или очистке содержимого буфера обмена. После этого вызова аргумент user_data_or_owner больше не будет использоваться.

Параметры

clipboard

объект GtkClipboard

user_data_or_owner

аргумент user_data, переданный в gtk_clipboard_set_with_data(), или аргумент owner, переданный в gtk_clipboard_set_with_owner()

gtk_clipboard_get ()

GtkClipboard *
gtk_clipboard_get (GdkAtom selection);

Возвращает

.

[transfer none]

gtk_clipboard_get_for_display ()

GtkClipboard *
gtk_clipboard_get_for_display (GdkDisplay *display,
                               GdkAtom selection);

Возвращает

.

[transfer none]

С версии: 2.2

gtk_clipboard_get_display ()

GdkDisplay *
gtk_clipboard_get_display (GtkClipboard *clipboard);

Возвращает

.

[transfer none]

С версии: 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]

Параметры

targets

.

[array length=n_targets]

get_func

.

[scope async]

clear_func

.

[scope async]

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);

[skip]

Параметры

targets

.

[array length=n_targets]

get_func

.

[scope async]

clear_func

.

[scope async]

gtk_clipboard_get_owner ()

GObject *
gtk_clipboard_get_owner (GtkClipboard *clipboard);

Возвращает

.

[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

длина text в байтах, или -1, в этом случае длина будет определена с помощью strlen().

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);

Параметры

callback

.

[scope async]

gtk_clipboard_request_text ()

void
gtk_clipboard_request_text (GtkClipboard *clipboard,
                            GtkClipboardTextReceivedFunc callback,
                            gpointer user_data);

Параметры

callback

.

[scope async]

gtk_clipboard_request_image ()

void
gtk_clipboard_request_image (GtkClipboard *clipboard,
                             GtkClipboardImageReceivedFunc callback,
                             gpointer user_data);

Параметры

callback

.

[scope async]

С: 2.6

gtk_clipboard_request_targets ()

void
gtk_clipboard_request_targets (GtkClipboard *clipboard,
                               GtkClipboardTargetsReceivedFunc callback,
                               gpointer user_data);

Параметры

callback

.

[scope async]

С: 2.4

gtk_clipboard_request_rich_text ()

void
gtk_clipboard_request_rich_text (GtkClipboard *clipboard,
                                 GtkTextBuffer *buffer,
                                 GtkClipboardRichTextReceivedFunc callback,
                                 gpointer user_data);

Параметры

callback

.

[scope async]

С: 2.10

gtk_clipboard_request_uris ()

void
gtk_clipboard_request_uris (GtkClipboard *clipboard,
                            GtkClipboardURIReceivedFunc callback,
                            gpointer user_data);

Параметры

callback

.

[scope async]

С: 2.14

gtk_clipboard_wait_for_contents ()

GtkSelectionData *
gtk_clipboard_wait_for_contents (GtkClipboard *clipboard,
                                 GdkAtom target);

Возвращаемое значение

.

[nullable]

gtk_clipboard_wait_for_text ()

gchar *
gtk_clipboard_wait_for_text (GtkClipboard *clipboard);

Возвращаемое значение

.

[nullable]

gtk_clipboard_wait_for_image ()

GdkPixbuf *
gtk_clipboard_wait_for_image (GtkClipboard *clipboard);

Возвращаемое значение

.

[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);

Параметры

format

.

[out]

length

.

[out]

Возвращаемое значение

.

[nullable]

С: 2.10

gtk_clipboard_wait_for_uris ()

gchar **
gtk_clipboard_wait_for_uris (GtkClipboard *clipboard);

Возвращаемое значение

.

[nullable][array zero-terminated=1]

С: 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

a GtkClipboard

Возвращаемое значение

TRUE, если список URI доступен, FALSE в противном случае.

С версии: 2.14

gtk_clipboard_wait_for_targets ()

gboolean
gtk_clipboard_wait_for_targets (GtkClipboard *clipboard,
                                GdkAtom **targets,
                                gint *n_targets);

Параметры

targets

.

[out][array length=n_targets]

n_targets

.

[out]

С версии: 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

a GtkClipboard

target

A GdkAtom указывающий целевой тип данных.

Возвращаемое значение

TRUE, если целевой тип доступен, FALSE в противном случае.

С версии: 2.6

gtk_clipboard_set_can_store ()

void
gtk_clipboard_set_can_store (GtkClipboard *clipboard,
                             const GtkTargetEntry *targets,
                             gint n_targets);

Параметры

targets

.

[allow-none][array length=n_targets]

С версии: 2.6

gtk_clipboard_store ()

void
gtk_clipboard_store (GtkClipboard *clipboard);

Сохраняет текущие данные буфера обмена где-то, чтобы они сохранились после выхода приложения.

Параметры

clipboard

a GtkClipboard

С версии: 2.6

gtk_clipboard_get_selection ()

GdkAtom
gtk_clipboard_get_selection (GtkClipboard *clipboard);

Получает выбор, к которому относится этот буфер обмена.

Параметры

clipboard

a GtkClipboard

Возвращаемое значение

Выбранное значение

С версии: 3.22

Типы и значения

GtkClipboard

typedef struct _GtkClipboard GtkClipboard;

Подробности сигналов

Сигнал “owner-change”

void
user_function (GtkClipboard *clipboard,
               GdkEvent     *event,
               gpointer      user_data)

Параметры

event

.

[type GdkEventOwnerChange]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Run First

С версии: 2.6

См. также

GtkSelectionData

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.22/gtk3-Clipboards.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API