краткое описание#include <gtk/gtk.h> gtktreedragsource; gtktreedragsourceiface; gboolean gtk_tree_drag_source_drag_data_delete (gtktreedragsource *drag_source, gtktreepath *path); gboolean gtk_tree_drag_source_drag_data_get (gtktreedragsource *drag_source, gtktreepath *path, gtkselectiondata *selection_data); gboolean gtk_tree_drag_source_row_draggable (gtktreedragsource *drag_source, gtktreepath *path); gtktreedragdest; gtktreedragdestiface; gboolean gtk_tree_drag_dest_drag_data_received (gtktreedragdest *drag_dest, gtktreepath *dest, gtkselectiondata *selection_data); gboolean gtk_tree_drag_dest_row_drop_possible (gtktreedragdest *drag_dest, gtktreepath *dest_path, gtkselectiondata *selection_data); gboolean gtk_tree_set_row_drag_data (gtkselectiondata *selection_data, gtktreemodel *tree_model, gtktreepath *path); gboolean gtk_tree_get_row_drag_data (gtkselectiondata *selection_data, gtktreemodel **tree_model, gtktreepath **path); иерархия объектовginterface +----gtktreedragsource ginterface +----gtktreedragdest известные реализацииgtktreedragsource реализован gtktreemodelsort, gtktreestore, gtkliststore и gtktreemodelfilter. gtktreedragdest реализован gtktreestore и gtkliststore. описаниеgtk+ поддерживает drag-and-drop в деревьях просмотра с помощью низкоуровневых и высокоуровневых api. api низкого уровня содержит gtk+ dnd api,
расширенный некоторыми сервисными
функциями treeview: с другой стороны, если вы создаёте высокоуровневый api, то весь обсчет строк выполняется за вас, так же как открытие при наведении (hover-to-open) и автоматическое прокручивание (auto-scroll), но ваши модели должны реализовывать интерфейсы gtktreedragsource и gtktreedragdest. деталиgtktreedragsourcetypedef struct _gtktreedragsource gtktreedragsource; gtktreedragsourceifacetypedef struct {
gtypeinterface g_iface;
/* vtable - not signals */
gboolean (* row_draggable) (gtktreedragsource *drag_source,
gtktreepath *path);
gboolean (* drag_data_get) (gtktreedragsource *drag_source,
gtktreepath *path,
gtkselectiondata *selection_data);
gboolean (* drag_data_delete) (gtktreedragsource *drag_source,
gtktreepath *path);
} gtktreedragsourceiface;
gtk_tree_drag_source_drag_data_delete ()gboolean gtk_tree_drag_source_drag_data_delete (gtktreedragsource *drag_source, gtktreepath *path);
запрашивает gtktreedragsource
для удаления строки из
gtk_tree_drag_source_drag_data_get ()gboolean gtk_tree_drag_source_drag_data_get (gtktreedragsource *drag_source, gtktreepath *path, gtkselectiondata *selection_data);
запрашивает gtktreedragsource
для заполнения в
gtk_tree_drag_source_row_draggable ()gboolean gtk_tree_drag_source_row_draggable (gtktreedragsource *drag_source, gtktreepath *path); запрашивает gtktreedragsource может ли определенная строка быть источником dnd операции. если источник не реализует этот интерфейс, строка это предполагаемый объект перемещения.
gtktreedragdesttypedef struct _gtktreedragdest gtktreedragdest; gtktreedragdestifacetypedef struct {
gtypeinterface g_iface;
/* vtable - not signals */
gboolean (* drag_data_received) (gtktreedragdest *drag_dest,
gtktreepath *dest,
gtkselectiondata *selection_data);
gboolean (* row_drop_possible) (gtktreedragdest *drag_dest,
gtktreepath *dest_path,
gtkselectiondata *selection_data);
} gtktreedragdestiface;
gtk_tree_drag_dest_drag_data_received ()gboolean gtk_tree_drag_dest_drag_data_received (gtktreedragdest *drag_dest, gtktreepath *dest, gtkselectiondata *selection_data);
запрашивает gtktreedragdest
для вставки строки перед
gtk_tree_drag_dest_row_drop_possible ()gboolean gtk_tree_drag_dest_row_drop_possible (gtktreedragdest *drag_dest, gtktreepath *dest_path, gtkselectiondata *selection_data);
определяет возможность перетаскивания
перед данным
gtk_tree_set_row_drag_data ()gboolean gtk_tree_set_row_drag_data (gtkselectiondata *selection_data, gtktreemodel *tree_model, gtktreepath *path);
устанавливает выделение данных целевого
типа
gtk_tree_get_row_drag_data ()gboolean gtk_tree_get_row_drag_data (gtkselectiondata *selection_data, gtktreemodel **tree_model, gtktreepath **path);
определяет
|