GTK+ 2.0 Tutorial

<<< Previous

Next >>>


Drag-and-drop (DND)

GTK+ имеет установки функций высокого уровня для межпроцессорных коммуникаций посредством системы drag-and-drop. GTK+ может  выполнять drag-and-drop поверх низкоуровневых  Xdnd и Motif drag-and-drop протоколов.

Краткий обзор

Приложения поддерживающие GTK+ drag-and-drop, сначала определяют и устанавливают виджеты GTK+ для drag-and-drop. Каждый виджет может быть предметом и/или местом назначения для drag-and-drop. Заметьте, что эти GTK+ виджеты должны иметь связанное с ними окно (X Window), проверьте используя GTK_WIDGET_NO_WINDOW(widget)).

Виджеты являющиеся предметом перетаскивания могут отправлять данные, позволяя пользователю перетаскивать их в другое место, а виджеты которые являются целью назначения для перетаскивания могут принимать эти данные. Drag-and-drop может ограничивать то от кого получаются данные, например то же самое приложение или любое приложение (включая себя).

Посылка и получение данных использует сигналы GTK+. Проброс элемента к виджету назначения требует и запрашиваемых данных (для виджета назначения) и посылаемых данных обработчика сигнала (для исходящего виджета). Дополнительный сигнал обработчиков используется если вы хотите знать когда начинается перетаскивание, когда заканчивается проброс завершая всю операцию (успешно или нет). 

Ваше приложение должно будет обеспечить данные для исходных виджетов когда требуется, это вовлекает, имеющий данные проброса, обработчик сигнала. Для виджета назначения они будут нуждаться в данных посылаемых обработчиком сигнала.

Итак, типичный цикл drag-and-drop выглядит так:

  1. Перетаскивание началось.

  2. Запрос данных перетаскивания (когда происходит проброс).

  3. Запрос данных проброса ( может быть на том же самом или другом приложении).

  4. Удаление перетаскиваемых данных ( если перетаскивание было перемещением).

  5. Процедура Drag-and-drop выполнена.

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


<<< Previous

Home

Next >>>

Supplying the selection

 

Properties