| |
GTK+ 2.0 Tutorial |
||
---|---|---|
Managing Selections |
Поиск выделения является асинхронным процессом, который запускается вызовом функции:
gboolean gtk_selection_convert( GtkWidget *widget, GdkAtom selection, GdkAtom target, guint32 time ); |
Это преобразует (converts) выделение в форму определённую target. Если вообще возможно, то аргумент time должен быть временем события которое вызвало выделение (selection). Это помогает событиям удостовериться в том, что пользователь их попросил. Однако, если это не доступно (например, если преобразование было вызвано "clicked" сигналом), то вы можете использовать постоянный GDK_CURRENT_TIME.
Когда хозяин выделения отвечает на запрос, вашему приложению посылается сигнал "selection_received". Обработчик для этого сигнала получает указатель на структуру GtkSelectionData, которая определена как:
struct _GtkSelectionData { GdkAtom selection; GdkAtom target; GdkAtom type; gint format; guchar *data; gint length; }; |
selection и target значения которые вы дали в вашем вызове gtk_selection_convert(). type является атомом, который идентифицирует тип данных, возвращенных владельцем выбора. Некоторые возможные значения : "STRING" - строка из символов latin-1, "ATOM" - ряд атомов, "INTEGER" - целое число, и т.д.. Большинство targets могут вернуть только один тип. format даёт длину единиц (например букв) в битах. Обычно вам не нужно заботится об этом получая данные. data - указатель на возвращенные данные, а length - возвращает длину данных в байтах. Если длина отрицательная, то произошла ошибка и выделение не может быть восстановлено. Это могло случится, если у выделения небыло приложения владельца, или запрашиваемая вами цель не поддерживается приложением. Буфер всегда гарантированно больше length на один байт; лишний байт всегда 0 (zero), таким образом нет необходимости копировать строку, только чтобы закончить её (nul-terminate them).
В следующем примере мы восстанавливаем специальную цель "TARGETS", которая является списком всех целей в которые может быть преобразовано выделение.
Managing Selections |
Supplying the selection |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |