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