| 
 | |
|  | 
| GTK+ Reference Manual | ||||
|---|---|---|---|---|
| Drag and DropDrag and Drop Функции контролирующие drag and drop обработку | 
#include <gtk/gtk.h>
enum        GtkDestDefaults;
enum        GtkTargetFlags;
void        gtk_drag_dest_set               (GtkWidget *widget,
                                             GtkDestDefaults flags,
                                             const GtkTargetEntry *targets,
                                             gint n_targets,
                                             GdkDragAction actions);
void        gtk_drag_dest_set_proxy         (GtkWidget *widget,
                                             GdkWindow *proxy_window,
                                             GdkDragProtocol protocol,
                                             gboolean use_coordinates);
void        gtk_drag_dest_unset             (GtkWidget *widget);
GdkAtom     gtk_drag_dest_find_target       (GtkWidget *widget,
                                             GdkDragContext *context,
                                             GtkTargetList *target_list);
GtkTargetList* gtk_drag_dest_get_target_list
                                            (GtkWidget *widget);
void        gtk_drag_dest_set_target_list   (GtkWidget *widget,
                                             GtkTargetList *target_list);
void        gtk_drag_dest_add_text_targets  (GtkWidget *widget);
void        gtk_drag_dest_add_image_targets (GtkWidget *widget);
void        gtk_drag_dest_add_uri_targets   (GtkWidget *widget);
void        gtk_drag_finish                 (GdkDragContext *context,
                                             gboolean success,
                                             gboolean del,
                                             guint32 time_);
void        gtk_drag_get_data               (GtkWidget *widget,
                                             GdkDragContext *context,
                                             GdkAtom target,
                                             guint32 time_);
GtkWidget*  gtk_drag_get_source_widget      (GdkDragContext *context);
void        gtk_drag_highlight              (GtkWidget *widget);
void        gtk_drag_unhighlight            (GtkWidget *widget);
GdkDragContext* gtk_drag_begin              (GtkWidget *widget,
                                             GtkTargetList *targets,
                                             GdkDragAction actions,
                                             gint button,
                                             GdkEvent *event);
void        gtk_drag_set_icon_widget        (GdkDragContext *context,
                                             GtkWidget *widget,
                                             gint hot_x,
                                             gint hot_y);
void        gtk_drag_set_icon_pixmap        (GdkDragContext *context,
                                             GdkColormap *colormap,
                                             GdkPixmap *pixmap,
                                             GdkBitmap *mask,
                                             gint hot_x,
                                             gint hot_y);
void        gtk_drag_set_icon_pixbuf        (GdkDragContext *context,
                                             GdkPixbuf *pixbuf,
                                             gint hot_x,
                                             gint hot_y);
void        gtk_drag_set_icon_stock         (GdkDragContext *context,
                                             const gchar *stock_id,
                                             gint hot_x,
                                             gint hot_y);
void        gtk_drag_set_icon_name          (GdkDragContext *context,
                                             const gchar *icon_name,
                                             gint hot_x,
                                             gint hot_y);
void        gtk_drag_set_icon_default       (GdkDragContext *context);
void        gtk_drag_set_default_icon       (GdkColormap *colormap,
                                             GdkPixmap *pixmap,
                                             GdkBitmap *mask,
                                             gint hot_x,
                                             gint hot_y);
gboolean    gtk_drag_check_threshold        (GtkWidget *widget,
                                             gint start_x,
                                             gint start_y,
                                             gint current_x,
                                             gint current_y);
void        gtk_drag_source_set             (GtkWidget *widget,
                                             GdkModifierType start_button_mask,
                                             const GtkTargetEntry *targets,
                                             gint n_targets,
                                             GdkDragAction actions);
void        gtk_drag_source_set_icon        (GtkWidget *widget,
                                             GdkColormap *colormap,
                                             GdkPixmap *pixmap,
                                             GdkBitmap *mask);
void        gtk_drag_source_set_icon_pixbuf (GtkWidget *widget,
                                             GdkPixbuf *pixbuf);
void        gtk_drag_source_set_icon_stock  (GtkWidget *widget,
                                             const gchar *stock_id);
void        gtk_drag_source_set_icon_name   (GtkWidget *widget,
                                             const gchar *icon_name);
void        gtk_drag_source_unset           (GtkWidget *widget);
void        gtk_drag_source_set_target_list (GtkWidget *widget,
                                             GtkTargetList *target_list);
GtkTargetList* gtk_drag_source_get_target_list
                                            (GtkWidget *widget);
void        gtk_drag_source_add_text_targets
                                            (GtkWidget *widget);
void        gtk_drag_source_add_image_targets
                                            (GtkWidget *widget);
void        gtk_drag_source_add_uri_targets (GtkWidget *widget);GTK+ имеет богатый набор функций для обеспечения взаимодействия процессов методом drag-and-drop (технология перемещения объектов интерфейса, дословно означает - перетащить и бросить). GTK+ может выполнять drag-and-drop (DND) через множество протоколов. В настоящее время поддерживаются протоколы Xdnd и Motif. Также как функциями перечисленными здесь, приложения могут нуждаться в использовании некоторых средств предусмотренных Selections. Кроме того, Drag and Drop API использует сигналы класса GtkWidget.
typedef enum {
  GTK_DEST_DEFAULT_MOTION     = 1 << 0, /* отвечает на "drag_motion" */
  GTK_DEST_DEFAULT_HIGHLIGHT  = 1 << 1, /* авто-подсвечивание (auto-highlight) */
  GTK_DEST_DEFAULT_DROP       = 1 << 2, /* отвечает на "drag_drop" */
  GTK_DEST_DEFAULT_ALL        = 0x07
} GtkDestDefaults;Перечисление GtkDestDefaults определяет различные типы действий, которые будут предприняты пользователем для перетаскивания на место назначения.
| GTK_DEST_DEFAULT_MOTION | Если установлено для виджета, GTK+, в течении перетаскивания по этому виджету, будет контролировать возможный список целей и действий перетаскивания этого виджета и вызовет gdk_drag_status() для соответствующего. | 
| GTK_DEST_DEFAULT_HIGHLIGHT | Если установлено для виджета, GTK+ будет подсвечивать этот виджет в течении перетаскивания по этому виджету, пока действия и формат перетаскивания действительны. | 
| GTK_DEST_DEFAULT_DROP | Если установлено для виджета, когда произойдет доставка, GTK+ будет контролировать возможный список действий и целей для перетаскивания и вызовет gtk_drag_get_data(). В независимости, выполнена доставка или нет, GTK+ вызовет gtk_drag_finish(). Если действие было перемещением, при успешной доставке будет передано TRUE в параметр delete для gtk_drag_finish(). | 
| GTK_DEST_DEFAULT_ALL | Если установлено, определяет что все действия по умолчанию должны быть выполнены. | 
typedef enum {
  GTK_TARGET_SAME_APP = 1 << 0,    /*< nick=same-app >*/
  GTK_TARGET_SAME_WIDGET = 1 << 1  /*< nick=same-widget >*/
} GtkTargetFlags;Перечисление GtkTargetFlags используется, чтобы определить ограничения на вход в GtkTargetTable.
| GTK_TARGET_SAME_APP | Если установлено, цель будет выделена для перетаскивания в пределах одного приложения. | 
| GTK_TARGET_SAME_WIDGET | Если установлено, цель будет выделена только для перетаскивания в пределах одного виджета. | 
void        gtk_drag_dest_set               (GtkWidget *widget,
                                             GtkDestDefaults flags,
                                             const GtkTargetEntry *targets,
                                             gint n_targets,
                                             GdkDragAction actions);Устанавливает виджет как потенциальное место для доставки1 при перетаскивании2.
| widget : | |
| flags : | Флаги определяют какие действия GTK+ должен предпринять от имени виджета для доставки на тот виджет. Поля targets и actions используются только если GTK_DEST_DEFAULT_MOTION или GTK_DEST_DEFAULT_DROP получены. | 
| targets : | Указатель массива GtkTargetEntrys указывающий тип доставки допустимый для этого виджета. | 
| n_targets : | Число записей в targets. | 
| actions : | Битовая маска возможных действий для доставки в этот виджет. | 
void        gtk_drag_dest_set_proxy         (GtkWidget *widget,
                                             GdkWindow *proxy_window,
                                             GdkDragProtocol protocol,
                                             gboolean use_coordinates);Устанавливает этот виджет как вспомогательный для доставки в другие окна.
| widget : | |
| proxy_window : | Окно отправления событий перетаскивания | 
| protocol : | Протокол перетаскивания принятый proxy_window (для определения протокола используйте gdk_drag_get_protocol()) | 
| use_coordinates : | Если TRUE, отправляются координаты места назначения, потому что это встроенное суб-окно. | 
void gtk_drag_dest_unset (GtkWidget *widget);
Очищает информацию о месте перетаскивания установленную с помощью gtk_drag_dest_set(). Виджет не будет больше получать события перемещения.
| widget : | 
GdkAtom     gtk_drag_dest_find_target       (GtkWidget *widget,
                                             GdkDragContext *context,
                                             GtkTargetList *target_list);Ищет соответствие между context->targets и dest_target_list, возвращает первый соответствующий цели, иначе возвращает GDK_NONE. dest_target_list - обычно возвращаемое значение gtk_drag_dest_get_target_list(), но некоторые виджеты могут иметь различия допустимых целей для различных виджетов; на этот случай, они имеют обработчик drag_motion помещающий правильный список целей в эту функцию.
| widget : | Целевой виджет перетаскивания | 
| context : | Содержимое перетаскивания | 
| target_list : | Список допустимых для перетаскивания целей, или NULL для использования gtk_drag_dest_get_target_list (widget). | 
| Возвращает : | Первую цель, которую исходное предложение и место доставки смогут принять, или GDK_NONE | 
GtkTargetList* gtk_drag_dest_get_target_list
                                            (GtkWidget *widget);Возвращает список целей допустимых для операции drag-and-drop определённым виджетом.
| widget : | |
| Возвращает : | GtkTargetList, или NULL если не существует | 
void        gtk_drag_dest_set_target_list   (GtkWidget *widget,
                                             GtkTargetList *target_list);Устанавливает типы целей допустимые данным виджетом для операции drag-and-drop. Сначала виджет должен быть сделан местоположением для перетаскивания с помощью gtk_drag_dest_set().
| widget : | GtkWidget местоположение перетаскивания | 
| target_list : | Список доступных для перетаскивания целей, или NULL для несуществующих | 
void gtk_drag_dest_add_text_targets (GtkWidget *widget);
Добавляет поддержку текстовых целей GtkSelection в список целей местоположения для перемещения. Цели добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_text_targets() и gtk_drag_dest_set_target_list().
| widget : | GtkWidget местоположение перетаскивания | 
Начиная с версии 2.6
void gtk_drag_dest_add_image_targets (GtkWidget *widget);
Добавляет поддержку целевых изображений GtkSelection в список целей местоположения для перемещения. Цели добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_image_targets() и gtk_drag_dest_set_target_list().
| widget : | GtkWidget местоположение перетаскивания | 
Начиная с версии 2.6
void gtk_drag_dest_add_uri_targets (GtkWidget *widget);
Добавляет целевую поддержку URI GtkSelection в список целей местоположения для перемещения. Цели добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_uri_targets() и gtk_drag_dest_set_target_list().
| widget : | GtkWidget местоположение перетаскивания | 
Начиная с версии 2.6
void        gtk_drag_finish                 (GdkDragContext *context,
                                             gboolean success,
                                             gboolean del,
                                             guint32 time_);Сообщает источнику перетаскивания об окончании операции доставки, поэтому данные больше не требуются.
| context : | Содержимое перетаскивания. | 
| success : | Флаг информирующий об успешном или нет завершении доставки. | 
| del : | Флаг информирующий, должен ли источник удалять оригинальные данные. (т.е. Выполнить перемещение а не копирование) | 
| time_ : | Метка временем для сигнала "drag_data_drop". | 
void        gtk_drag_get_data               (GtkWidget *widget,
                                             GdkDragContext *context,
                                             GdkAtom target,
                                             guint32 time_);Получает данные связанные с перетаскиванием. Когда данные получены, или поиск заканчивается неудачей, GTK+ будет производить сигнал "drag_data_received". Неудачный поиск информируется отрицательной длиной поля selection_data параметра сигнала. Однако, когда вызвана gtk_drag_get_data(), потому что было установлено GTK_DEST_DEFAULT_DROP, то когда виджет не будет получать уведомления о не удавшемся броске.
| widget : | Виджет который получит сигнал "drag_data_received". | 
| context : | Содержимое перетаскивания | 
| target : | Цель (форма данных) поиска. | 
| time_ : | Временная метка для поиска данных. Это будет в основном время поиска в "drag_data_motion" или "drag_data_drop" signal. | 
GtkWidget* gtk_drag_get_source_widget (GdkDragContext *context);
Определяет исходный виджет для перетаскивания.
| context : | (сторона получателя) содержимое перетаскивания. | 
| Возвращает : | Если перетаскивание происходит в пределах одного приложения, возвращается указатель на исходный виджет. Иначе, NULL. | 
void gtk_drag_highlight (GtkWidget *widget);
Подсвечивает виджет. Прикрепляет обработчики к "expose_event" и "draw", таким образом подсветка будет продолжит отображаться, до тех пор пока не вызвана gtk_drag_unhighlight().
| widget : | Подсвечиваемый виджет | 
void gtk_drag_unhighlight (GtkWidget *widget);
Удаляет подсветку установленную gtk_drag_highlight() для виджета.
| widget : | Виджет с которого удаляется подсветка. | 
GdkDragContext* gtk_drag_begin              (GtkWidget *widget,
                                             GtkTargetList *targets,
                                             GdkDragAction actions,
                                             gint button,
                                             GdkEvent *event);Инициализирует перетаскивание на исходной стороне. Функцию нужно использовать только когда приложение запустило перетаскивание самостоятельно, и не нужно использовать когда используется gtk_drag_source_set().
| widget : | Исходный виджет. | 
| targets : | Цели (форматы данных) в которые могут передаваться исходные данные. | 
| actions : | Битовая-маска (bitmask) допустимого действия перетаскивания. | 
| button : | Кнопка нажимаемая пользователем для начала перетаскивания. | 
| event : | Событие вызвавшее начало перетаскивания. | 
| Возвращает : | Содержимое перетаскивания. | 
void        gtk_drag_set_icon_widget        (GdkDragContext *context,
                                             GtkWidget *widget,
                                             gint hot_x,
                                             gint hot_y);Изменяет значок для виджета к данному виджету. GTK+ не будет удалять значок, поэтому, если вы не хотите его сохранять, вы должны подключить сигнал "drag_end" и удалить его самостоятельно.
| context : | Содержимое перетаскивания. (должно вызываться с содержимым для исходной стороны перетаскивания) | 
| widget : | Окно верхнего уровня используемое как значок. | 
| hot_x : | Смещение X, в пределах widget , «горячей» точки. | 
| hot_y : | Смещение Y, в пределах widget , «горячей» точки. | 
void        gtk_drag_set_icon_pixmap        (GdkDragContext *context,
                                             GdkColormap *colormap,
                                             GdkPixmap *pixmap,
                                             GdkBitmap *mask,
                                             gint hot_x,
                                             gint hot_y);Устанавливает pixmap как значок для данного перетаскивания. GTK+ сохраняет справочную информацию для параметров и освобождает их когда они больше не нужны. Вообще, gtk_drag_set_icon_pixbuf() будет более удобной для использования.
| context : | Содержимое перетаскивания. (должно вызываться с содержимым для исходной стороны перетаскивания) | 
| colormap : | Карта цвета для значка | 
| pixmap : | Данные изображения для значка | 
| mask : | Маска прозрачности для значка | 
| hot_x : | Смещение X, относительно пределов pixmap , «горячей» точки. | 
| hot_y : | Смещение Y, относительно пределов pixmap , «горячей» точки. | 
void        gtk_drag_set_icon_pixbuf        (GdkDragContext *context,
                                             GdkPixbuf *pixbuf,
                                             gint hot_x,
                                             gint hot_y);Устанавливает pixbuf как значок для данного перетаскивания.
| context : | Содержимое перетаскивания. (должно вызываться с содержимым для исходной стороны перетаскивания) | 
| pixbuf : | the GdkPixbuf to use as the drag icon. | 
| hot_x : | Смещение X, относительно пределов widget , «горячей» точки. | 
| hot_y : | Смещение Y, относительно пределов widget , «горячей» точки. | 
void        gtk_drag_set_icon_stock         (GdkDragContext *context,
                                             const gchar *stock_id,
                                             gint hot_x,
                                             gint hot_y);Устанавливает значок для данного перетаскивания с исходным ID.
| context : | Содержимое перетаскивания. (должно вызываться с содержимым для исходной стороны перетаскивания) | 
| stock_id : | ID исходного значка используемого для перетаскивания. | 
| hot_x : | Смещение X, относительно пределов значка , «горячей» точки. | 
| hot_y : | Смещение Y, относительно пределов значка , «горячей» точки. | 
void        gtk_drag_set_icon_name          (GdkDragContext *context,
                                             const gchar *icon_name,
                                             gint hot_x,
                                             gint hot_y);Устанавливает значок для данного перетаскивания из именной темы значков. Смотрите документацию GtkIconTheme, для подробного изучения деталей. Отметьте, размер значка зависит от темы значков (значок загружается в символическом размере GTK_ICON_SIZE_DND), таким образом hot_x и hot_y должны использоваться осторожно.
| context : | Содержимое перетаскивания. (должно вызываться с содержимым для исходной стороны перетаскивания) | 
| icon_name : | Имя используемого значка | 
| hot_x : | смещение X горячей точки в пределах значка | 
| hot_y : | смещение Y горячей точки в пределах значка | 
Начиная с версии 2.8
void gtk_drag_set_icon_default (GdkDragContext *context);
Устанавливает значок для специального перетаскивания, значком по умолчанию.
| context : | Содержимое перетаскивания. (должно вызываться с содержимым для исходной стороны перетаскивания) | 
void        gtk_drag_set_default_icon       (GdkColormap *colormap,
                                             GdkPixmap *pixmap,
                                             GdkBitmap *mask,
                                             gint hot_x,
                                             gint hot_y);gtk_drag_set_default_icon устарела и не должна использоваться во-вновь создаваемом коде.
Изменяет значок по умолчанию для перетаскивания. GTK+ сохраняет справочную информацию для параметров и освобождает их когда они больше не нужны. Функция является устаревшей. Значок по умолчанию должен теперь изменяться через систему заготовок, изменяя заготовку pixbuf для GTK_STOCK_DND.
| colormap : | Цветовая карта для значка. | 
| pixmap : | Данные изображения для значка. | 
| mask : | Маска прозрачности для изображения. | 
| hot_x : | Смещение X, относительно пределов widget , «горячей» точки. | 
| hot_y : | Смещение Y, относительно пределов widget , «горячей» точки. | 
gboolean    gtk_drag_check_threshold        (GtkWidget *widget,
                                             gint start_x,
                                             gint start_y,
                                             gint current_x,
                                             gint current_y);Выясняет, если перемещение мышки началось в (start_x, start_y) и закончилось в (current_x, current_y) имея помещаемый GTK+ порог перетаскивания, начинается операция drag-and-drop.
| widget : | |
| start_x : | X координаты начала перемещения | 
| start_y : | Y координаты начала перемещения | 
| current_x : | Текущие X координаты | 
| current_y : | Текущие Y координаты | 
| Возвращает : | TRUE если порог перемещения помещен. | 
void        gtk_drag_source_set             (GtkWidget *widget,
                                             GdkModifierType start_button_mask,
                                             const GtkTargetEntry *targets,
                                             gint n_targets,
                                             GdkDragAction actions);Устанавливает виджет так, что GTK+ будет начинать операцию перетаскивания, когда пользователь нажимает и перемещает виджет. Виджет должен иметь окно.
| widget : | |
| start_button_mask : | Битовая маска кнопки которая может начать перетаскивание | 
| targets : | Таблица целей которые будут поддерживаться перетаскиванием | 
| n_targets : | Число пунктов в targets | 
| actions : | Битовая маска возможных действий для перетаскивания из этого виджета. | 
void        gtk_drag_source_set_icon        (GtkWidget *widget,
                                             GdkColormap *colormap,
                                             GdkPixmap *pixmap,
                                             GdkBitmap *mask);Устанавливает значок, который будет использоваться для перетаскивания из специального виджета pixmap/mask. GTK+ сохраняет справочную информацию для аргументов и освобождает когда она больше не нужна. Используйте вместо этого gtk_drag_source_set_icon_pixbuf().
| widget : | |
| colormap : | Цветовая карта значка | 
| pixmap : | Данные изображения для значка | 
| mask : | Прозрачная маска для изображения. | 
void        gtk_drag_source_set_icon_pixbuf (GtkWidget *widget,
                                             GdkPixbuf *pixbuf);Устанавливает значок, который будет использоваться для перетаскивания из специального виджета GdkPixbuf. GTK+ сохраняет справочную информацию для pixbuf и освобождает когда она больше не нужна
| widget : | |
| pixbuf : | GdkPixbuf для значка перетаскивания | 
void        gtk_drag_source_set_icon_stock  (GtkWidget *widget,
                                             const gchar *stock_id);Устанавливает значок, который будет использоваться для перетаскивания, специальной исходной заготовки.
| widget : | |
| stock_id : | ID заготовленного для использования значка | 
void        gtk_drag_source_set_icon_name   (GtkWidget *widget,
                                             const gchar *icon_name);Устанавливает значок, который будет использоваться для перетаскивания, специальной исходной темой значков. Смотрите документацию для GtkIconTheme.
| widget : | |
| icon_name : | Имя используемого значка | 
Начиная с версии 2.8
void gtk_drag_source_unset (GtkWidget *widget);
Отменяет действия gtk_drag_source_set().
| widget : | 
void        gtk_drag_source_set_target_list (GtkWidget *widget,
                                             GtkTargetList *target_list);Изменяет типовую цель которую этот виджет предлагает для drag-and-drop. Сначала виджет должен быть сделан источником перетаскивания при помощи gtk_drag_source_set().
| widget : | GtkWidget это источник перетаскивания | 
| target_list : | Список доступных для перетаскивания целей, или NULL если недоступны | 
Начиная с версии 2.4
GtkTargetList* gtk_drag_source_get_target_list
                                            (GtkWidget *widget);Получает список целей, которые виджет может предоставить для drag-and-drop.
| widget : | |
| Возвращает : | GtkTargetList, или NULL если не существует | 
Начиная с версии 2.4
void        gtk_drag_source_add_text_targets
                                            (GtkWidget *widget);Добавляет текстовую цель, поддерживаемый GtkSelection список целей источника перемещения. Цели добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_text_targets() и gtk_drag_source_set_target_list().
| widget : | GtkWidget это источник перемещения | 
Начиная с версии 2.6
void        gtk_drag_source_add_image_targets
                                            (GtkWidget *widget);Добавляет перезаписываемые цели изображения, поддерживаемые GtkSelection в списке целей источника перемещения. Цели добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_image_targets() и gtk_drag_source_set_target_list().
| widget : | GtkWidget это источник перемещения | 
Начиная с версии 2.6
void gtk_drag_source_add_uri_targets (GtkWidget *widget);
Добавляет URI целей , поддерживаемые GtkSelection в списке целей источника перемещения. Цели добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_uri_targets() и gtk_drag_source_set_target_list().
| widget : | GtkWidget это источник перемещения | 
Начиная с версии 2.6
1Доставка действие завершающее операцию drag-and-drop.
2Перетаскивание составное действие операции перемещения drag-and-drop.
| Закладки на сайте Проследить за страницей | Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |