Перетаскивание
Перетаскивание — Функции для управления обработкой перетаскивания
Функции
Типы и значения
| перечисление | GtkDestDefaults |
| перечисление | GtkTargetFlags |
| перечисление | GtkDragResult |
Файлы
#include <gtk/gtk.h>
Описание
GTK+ предоставляет богатый набор функций для межпроцессного взаимодействия с помощью метафоры перетаскивания.
Помимо функций, перечисленных здесь, приложениям может потребоваться использовать некоторые средства, предоставляемые для Выборок. Кроме того, API перетаскивания использует сигналы в классе GtkWidget.
Функции
gtk_drag_dest_set ()
void gtk_drag_dest_set (GtkWidget *widget,GtkDestDefaults flags,const GtkTargetEntry *targets,gint n_targets,GdkDragAction actions);
[метод]
Параметры
widget | ||
flags | какие типы стандартного поведения перетаскивания использовать | |
targets | указатель на массив GtkTargetEntrys, указывающий типы падения, которые будет принимать эта | [allow-none][array length=n_targets] |
n_targets | количество элементов в | |
actions | маска битов возможных действий для падения на эту |
gtk_drag_dest_set_proxy ()
void gtk_drag_dest_set_proxy (GtkWidget *widget,GdkWindow *proxy_window,GdkDragProtocol protocol,gboolean use_coordinates);
[метод]
Параметры
widget | ||
proxy_window | окно, которому пересылать события перетаскивания | |
protocol | протокол перетаскивания, который принимает | |
use_coordinates | Если |
gtk_drag_dest_find_target ()
GdkAtom gtk_drag_dest_find_target (GtkWidget *widget,GdkDragContext *context,GtkTargetList *target_list);
[метод]
Параметры
widget | widget пункта назначения перетаскивания | |
context | контекст перетаскивания | |
target_list | список допустимых целевых типов, или | [allow-none] |
Возвращаемое значение
.
[transfer none]
gtk_drag_dest_get_target_list ()
GtkTargetList *
gtk_drag_dest_get_target_list (GtkWidget *widget); [метод]
Параметры
widget |
gtk_drag_dest_set_target_list ()
void gtk_drag_dest_set_target_list (GtkWidget *widget,GtkTargetList *target_list);
[метод]
gtk_drag_dest_add_text_targets ()
void
gtk_drag_dest_add_text_targets (GtkWidget *widget); [метод]
Параметры
widget | a GtkWidget, являющийся пунктом назначения перетаскивания |
С: 2.6
gtk_drag_dest_add_image_targets ()
void
gtk_drag_dest_add_image_targets (GtkWidget *widget); [метод]
Параметры
widget | a GtkWidget, являющийся пунктом назначения перетаскивания |
С: 2.6
gtk_drag_dest_add_uri_targets ()
void
gtk_drag_dest_add_uri_targets (GtkWidget *widget); [метод]
Параметры
widget | a GtkWidget, являющийся пунктом назначения перетаскивания |
С: 2.6
gtk_drag_finish ()
void gtk_drag_finish (GdkDragContext *context,gboolean success,gboolean del,guint32 time_);
[метод]
Параметры
context | контекст перетаскивания. | |
success | флаг, указывающий, был ли результат перетаскивания успешным. | |
del | флаг, указывающий, нужно ли удалить исходные данные в источнике. (Должно быть | |
time_ | временная метка из сигнала “drag-drop”. |
gtk_drag_get_data ()
void gtk_drag_get_data (GtkWidget *widget,GdkDragContext *context,GdkAtom target,guint32 time_);
[метод]
Параметры
widget | виджет, который получит сигнал “drag-data-received”. | |
context | контекст перетаскивания | |
target | целевой формат данных для извлечения. | |
time_ | временная метка для извлечения данных. Обычно это время, полученное в сигнале “drag-motion” или “drag-drop”. |
gtk_drag_get_source_widget ()
GtkWidget *
gtk_drag_get_source_widget (GdkDragContext *context); [метод]
Параметры
context | контекст перетаскивания (сторона назначения) |
Возвращает
.
[передача не требуется]
gtk_drag_highlight ()
void
gtk_drag_highlight (GtkWidget *widget); [метод]
Параметры
widget | виджет для выделения. |
gtk_drag_unhighlight ()
void
gtk_drag_unhighlight (GtkWidget *widget); [метод]
Параметры
widget | виджет, для которого нужно снять выделение. |
gtk_drag_begin ()
GdkDragContext * gtk_drag_begin (GtkWidget *widget,GtkTargetList *targets,GdkDragAction actions,gint button,GdkEvent *event);
gtk_drag_begin устарел с версии 3.10 и не должен использоваться в новом коде.
Используйте gtk_drag_begin_with_coordinates() вместо этого.
[метод]
Параметры
widget | исходный виджет. | |
targets | форматы данных, в которых источник может предоставить данные. | |
actions | Маска бит, определяющая разрешённые действия перетаскивания. | |
button | Кнопка, нажатая пользователем для начала перетаскивания. | |
event | событие, которое вызвало начало перетаскивания. |
Возвращает
.
[передача не требуется]
gtk_drag_begin_with_coordinates ()
GdkDragContext * gtk_drag_begin_with_coordinates (GtkWidget *widget,GtkTargetList *targets,GdkDragAction actions,gint button,GdkEvent *event,gint x,gint y);
[метод]
Возвращает
.
[передача не требуется]
С версии: 3.10
gtk_drag_cancel ()
void
gtk_drag_cancel (GdkDragContext *context); [метод]
Параметры
context | GdkDragContext, например, возвращаемый |
С версии: 3.16
gtk_drag_set_icon_widget ()
void gtk_drag_set_icon_widget (GdkDragContext *context,GtkWidget *widget,gint hot_x,gint hot_y);
Изменяет значок виджета на указанный виджет. GTK+ не уничтожит значок, поэтому, если вы не хотите, чтобы он сохранялся, подключитесь к сигналу «drag-end» и уничтожьте его самостоятельно.
[метод]
Параметры
context | контекст перетаскивания (должно вызываться для стороны источника перетаскивания) | |
widget | главное окно, которое использовать в качестве значка. | |
hot_x | смещение по оси X внутри | |
hot_y | смещение по оси Y внутри |
gtk_drag_set_icon_pixbuf ()
void gtk_drag_set_icon_pixbuf (GdkDragContext *context,GdkPixbuf *pixbuf,gint hot_x,gint hot_y);
Устанавливает pixbuf в качестве значка для данного перетаскивания.
[метод]
Параметры
context | контекст перетаскивания (должно вызываться для стороны источника перетаскивания) | |
pixbuf | GdkPixbuf для использования в качестве значка перетаскивания. | |
hot_x | смещение по оси X внутри | |
hot_y | смещение по оси Y внутри |
gtk_drag_set_icon_stock ()
void gtk_drag_set_icon_stock (GdkDragContext *context,const gchar *stock_id,gint hot_x,gint hot_y);
gtk_drag_set_icon_stock устарел начиная с версии 3.10 и не должен использоваться в новых кодах.
Используйте gtk_drag_set_icon_name() вместо него.
Устанавливает значок для данного перетаскивания по идентификатору стандартного значка.
[метод]
Параметры
context | контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания) | |
stock_id | идентификатор стандартного значка для использования в перетаскивании. | |
hot_x | смещение по оси X в значке для горячей точки. | |
hot_y | смещение по оси Y в значке для горячей точки. |
gtk_drag_set_icon_surface ()
void gtk_drag_set_icon_surface (GdkDragContext *context,cairo_surface_t *surface);
Устанавливает surface в качестве значка для данного перетаскивания. GTK+ сохраняет ссылки на аргументы и освободит их, когда они больше не нужны.
Для позиционирования поверхности относительно указателя мыши используйте cairo_surface_set_device_offset() для surface. Указатель мыши будет расположен в координатах (0,0) поверхности.
[метод]
Параметры
context | контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания) | |
surface | поверхность для использования в качестве значка |
gtk_drag_set_icon_name ()
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
gtk_drag_set_icon_gicon ()
void gtk_drag_set_icon_gicon (GdkDragContext *context,GIcon *icon,gint hot_x,gint hot_y);
Устанавливает значок для данного перетаскивания из заданного icon. См. документацию по gtk_drag_set_icon_name() для получения дополнительной информации об использовании значков при перетаскивании.
[метод]
Параметры
context | контекст перетаскивания (Это необходимо вызвать с контекстом для исходной стороны перетаскивания) | |
icon | a GIcon | |
hot_x | смещение по оси X горячей точки внутри значка | |
hot_y | смещение по оси Y горячей точки внутри значка |
С версии: 3.2
gtk_drag_set_icon_default ()
void
gtk_drag_set_icon_default (GdkDragContext *context); Устанавливает значок для данного перетаскивания на значок по умолчанию.
[метод]
Параметры
context | контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания) |
gtk_drag_check_threshold ()
gboolean gtk_drag_check_threshold (GtkWidget *widget,gint start_x,gint start_y,gint current_x,gint current_y);
[метод]
Параметры
widget | ||
start_x | координата X начала перетаскивания | |
start_y | координата Y начала перетаскивания | |
current_x | текущая координата X | |
current_y | текущая координата Y |
gtk_drag_source_set ()
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 | таблица поддерживаемых целей перетаскивания, может быть | [allow-none][array length=n_targets] |
n_targets | количество элементов в | |
actions | маска битов возможных действий для перетаскивания с этого виджета |
gtk_drag_source_set_icon_pixbuf ()
void gtk_drag_source_set_icon_pixbuf (GtkWidget *widget,GdkPixbuf *pixbuf);
Устанавливает значок, который будет использоваться для перетаскивания с определенного виджета из GdkPixbuf. GTK+ сохраняет ссылку на pixbuf и освободит её, когда она больше не нужна.
[метод]
gtk_drag_source_set_icon_stock ()
void gtk_drag_source_set_icon_stock (GtkWidget *widget,const gchar *stock_id);
gtk_drag_source_set_icon_stock устарело начиная с версии 3.10 и не должно использоваться в новом коде.
Используйте gtk_drag_source_set_icon_name() вместо этого.
Устанавливает значок, который будет использоваться для перетаскивания из определённого источника, в виде значка системы.
[метод]
Параметры
widget | ||
stock_id | идентификатор значка системы для использования |
gtk_drag_source_set_icon_name ()
void gtk_drag_source_set_icon_name (GtkWidget *widget,const gchar *icon_name);
Устанавливает значок, который будет использоваться для перетаскивания из определённого источника, в виде значка темы. Смотрите документацию для GtkIconTheme для получения дополнительной информации.
[метод]
Параметры
widget | ||
icon_name | имя значка для использования |
С версии: 2.8
gtk_drag_source_set_icon_gicon ()
void gtk_drag_source_set_icon_gicon (GtkWidget *widget,GIcon *icon);
Устанавливает значок, который будет использоваться для перетаскивания из определённого источника, в виде icon. Смотрите документацию для GtkIconTheme для получения дополнительной информации.
[метод]
С версии: 3.2
gtk_drag_source_unset ()
void
gtk_drag_source_unset (GtkWidget *widget); Отменяет действие gtk_drag_source_set().
[метод]
Параметры
widget |
gtk_drag_source_set_target_list ()
void gtk_drag_source_set_target_list (GtkWidget *widget,GtkTargetList *target_list);
Изменяет типы целевых объектов, предлагаемые этим виджетом для перетаскивания. Виджет сначала должен быть настроен как источник перетаскивания с помощью gtk_drag_source_set().
[метод]
Параметры
С версии: 2.4
gtk_drag_source_get_target_list ()
GtkTargetList *
gtk_drag_source_get_target_list (GtkWidget *widget); Получает список целевых объектов, которые может предоставить этот виджет для перетаскивания.
[метод]
Параметры
widget |
С версии: 2.4
gtk_drag_source_add_text_targets ()
void
gtk_drag_source_add_text_targets (GtkWidget *widget); Добавляет целевые объекты текстовых данных, поддерживаемые GtkSelectionData, в список целевых объектов источника перетаскивания. Целевые объекты добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_text_targets() и gtk_drag_source_set_target_list().
[метод]
Параметры
widget | a GtkWidget являющийся источником перетаскивания |
С версии: 2.6
gtk_drag_source_add_image_targets ()
void
gtk_drag_source_add_image_targets (GtkWidget *widget); Добавляет целевые объекты изображений для записи, поддерживаемые GtkSelectionData, в список целевых объектов источника перетаскивания. Целевые объекты добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_image_targets() и gtk_drag_source_set_target_list().
[метод]
Параметры
widget | a GtkWidget являющийся источником перетаскивания |
С версии: 2.6
gtk_drag_source_add_uri_targets ()
void
gtk_drag_source_add_uri_targets (GtkWidget *widget); Добавляет целевые объекты URI, поддерживаемые GtkSelectionData, в список целевых объектов источника перетаскивания. Целевые объекты добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_uri_targets() и gtk_drag_source_set_target_list().
[метод]
Параметры
widget | a GtkWidget являющийся источником перетаскивания |
С версии: 2.6
Типы и значения
Перечисление GtkDestDefaults
Перечисление GtkDestDefaults определяет различные типы действий, которые будут выполняться от имени пользователя для пункта назначения перетаскивания.
Элементы
GTK_DEST_DEFAULT_MOTION | Если задано для виджета, GTK+, во время перетаскивания над этим виджетом проверит, соответствует ли перетаскивание списку возможных целей и действий. GTK+ затем вызовет | |
GTK_DEST_DEFAULT_HIGHLIGHT | Если задано для виджета, GTK+ отобразит выделение на этом виджете, пока перетаскивание происходит над этим виджетом и формат перетаскивания и действие виджета приемлемы. | |
GTK_DEST_DEFAULT_DROP | Если задано для виджета, при падении GTK+ проверит, соответствует ли перетаскивание списку возможных целей и действий этого виджета. Если да, GTK+ вызовет | |
GTK_DEST_DEFAULT_ALL | Если задано, указывает, что должны быть выполнены все действия по умолчанию. |
Перечисление GtkTargetFlags
Перечисление GtkTargetFlags используется для указания ограничений на GtkTargetEntry.
Элементы
GTK_TARGET_SAME_APP | Если установлено, цель будет выбрана только для перетаскивания в пределах одного приложения. | |
GTK_TARGET_SAME_WIDGET | Если установлено, цель будет выбрана только для перетаскивания в пределах одного виджета. | |
GTK_TARGET_OTHER_APP | Если установлено, цель не будет выбрана для перетаскивания в пределах одного приложения. | |
GTK_TARGET_OTHER_WIDGET | Если установлено, цель не будет выбрана для перетаскивания внутри одного виджета. |
Перечисление GtkDragResult
Указывает причину, по которой операция перетаскивания не удалась. Значение можно получить, подключившись к сигналу “drag-failed”.
Элементы
GTK_DRAG_RESULT_SUCCESS | Операция перетаскивания прошла успешно. | |
GTK_DRAG_RESULT_NO_TARGET | Нет подходящей цели перетаскивания. | |
GTK_DRAG_RESULT_USER_CANCELLED | Пользователь отменил операцию перетаскивания. | |
GTK_DRAG_RESULT_TIMEOUT_EXPIRED | Операция перетаскивания истекла. | |
GTK_DRAG_RESULT_GRAB_BROKEN | Захват указателя или клавиатуры, используемый для операции перетаскивания, был прерван. | |
GTK_DRAG_RESULT_ERROR | Операция перетаскивания завершилась неудачей из-за неопределённой ошибки. |
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/gtk3-Drag-and-Drop.html