GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

gtktreednd.h 5.13 KB
Newer Older
Havoc Pennington's avatar
Havoc Pennington committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/* gtktreednd.h
 * Copyright (C) 2001  Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

20 21 22 23
#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
#error "Only <gtk/gtk.h> can be included directly."
#endif

Havoc Pennington's avatar
Havoc Pennington committed
24 25 26 27 28 29
#ifndef __GTK_TREE_DND_H__
#define __GTK_TREE_DND_H__

#include <gtk/gtktreemodel.h>
#include <gtk/gtkdnd.h>

Matthias Clasen's avatar
Matthias Clasen committed
30
G_BEGIN_DECLS
Havoc Pennington's avatar
Havoc Pennington committed
31 32 33 34

#define GTK_TYPE_TREE_DRAG_SOURCE            (gtk_tree_drag_source_get_type ())
#define GTK_TREE_DRAG_SOURCE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_DRAG_SOURCE, GtkTreeDragSource))
#define GTK_IS_TREE_DRAG_SOURCE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_DRAG_SOURCE))
35
#define GTK_TREE_DRAG_SOURCE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_TREE_DRAG_SOURCE, GtkTreeDragSourceIface))
Havoc Pennington's avatar
Havoc Pennington committed
36 37 38 39 40 41 42 43 44 45

typedef struct _GtkTreeDragSource      GtkTreeDragSource; /* Dummy typedef */
typedef struct _GtkTreeDragSourceIface GtkTreeDragSourceIface;

struct _GtkTreeDragSourceIface
{
  GTypeInterface g_iface;

  /* VTable - not signals */

46 47 48
  gboolean     (* row_draggable)        (GtkTreeDragSource   *drag_source,
                                         GtkTreePath         *path);

49
  gboolean     (* drag_data_get)        (GtkTreeDragSource   *drag_source,
Havoc Pennington's avatar
Havoc Pennington committed
50 51 52
                                         GtkTreePath         *path,
                                         GtkSelectionData    *selection_data);

53
  gboolean     (* drag_data_delete)     (GtkTreeDragSource *drag_source,
Havoc Pennington's avatar
Havoc Pennington committed
54 55 56 57 58
                                         GtkTreePath       *path);
};

GType           gtk_tree_drag_source_get_type   (void) G_GNUC_CONST;

59 60 61 62
/* Returns whether the given row can be dragged */
gboolean gtk_tree_drag_source_row_draggable    (GtkTreeDragSource *drag_source,
                                                GtkTreePath       *path);

Havoc Pennington's avatar
Havoc Pennington committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76
/* Deletes the given row, or returns FALSE if it can't */
gboolean gtk_tree_drag_source_drag_data_delete (GtkTreeDragSource *drag_source,
                                                GtkTreePath       *path);

/* Fills in selection_data with type selection_data->target based on
 * the row denoted by path, returns TRUE if it does anything
 */
gboolean gtk_tree_drag_source_drag_data_get    (GtkTreeDragSource *drag_source,
                                                GtkTreePath       *path,
                                                GtkSelectionData  *selection_data);

#define GTK_TYPE_TREE_DRAG_DEST            (gtk_tree_drag_dest_get_type ())
#define GTK_TREE_DRAG_DEST(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_DRAG_DEST, GtkTreeDragDest))
#define GTK_IS_TREE_DRAG_DEST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_DRAG_DEST))
77
#define GTK_TREE_DRAG_DEST_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_TREE_DRAG_DEST, GtkTreeDragDestIface))
Havoc Pennington's avatar
Havoc Pennington committed
78 79 80 81 82 83 84 85 86 87

typedef struct _GtkTreeDragDest      GtkTreeDragDest; /* Dummy typedef */
typedef struct _GtkTreeDragDestIface GtkTreeDragDestIface;

struct _GtkTreeDragDestIface
{
  GTypeInterface g_iface;

  /* VTable - not signals */

88
  gboolean     (* drag_data_received) (GtkTreeDragDest   *drag_dest,
Havoc Pennington's avatar
Havoc Pennington committed
89 90 91
                                       GtkTreePath       *dest,
                                       GtkSelectionData  *selection_data);

92
  gboolean     (* row_drop_possible)  (GtkTreeDragDest   *drag_dest,
93 94
                                       GtkTreePath       *dest_path,
				       GtkSelectionData  *selection_data);
Havoc Pennington's avatar
Havoc Pennington committed
95 96 97 98 99 100 101
};

GType           gtk_tree_drag_dest_get_type   (void) G_GNUC_CONST;

/* Inserts a row before dest which contains data in selection_data,
 * or returns FALSE if it can't
 */
102 103 104 105
gboolean gtk_tree_drag_dest_drag_data_received (GtkTreeDragDest   *drag_dest,
						GtkTreePath       *dest,
						GtkSelectionData  *selection_data);

Havoc Pennington's avatar
Havoc Pennington committed
106

107
/* Returns TRUE if we can drop before path; path may not exist. */
108
gboolean gtk_tree_drag_dest_row_drop_possible  (GtkTreeDragDest   *drag_dest,
109 110
						GtkTreePath       *dest_path,
						GtkSelectionData  *selection_data);
111

112

Havoc Pennington's avatar
Havoc Pennington committed
113 114 115
/* The selection data would normally have target type GTK_TREE_MODEL_ROW in this
 * case. If the target is wrong these functions return FALSE.
 */
116 117 118 119 120 121 122
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);

Matthias Clasen's avatar
Matthias Clasen committed
123
G_END_DECLS
Havoc Pennington's avatar
Havoc Pennington committed
124 125

#endif /* __GTK_TREE_DND_H__ */