| 1 | /* GTK - The GIMP Toolkit | 
| 2 |  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald | 
| 3 |  * | 
| 4 |  * This library is free software; you can redistribute it and/or | 
| 5 |  * modify it under the terms of the GNU Lesser General Public | 
| 6 |  * License as published by the Free Software Foundation; either | 
| 7 |  * version 2 of the License, or (at your option) any later version. | 
| 8 |  * | 
| 9 |  * This library is distributed in the hope that it will be useful, | 
| 10 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
| 12 |  * Lesser General Public License for more details. | 
| 13 |  * | 
| 14 |  * You should have received a copy of the GNU Lesser General Public | 
| 15 |  * License along with this library. If not, see <http://www.gnu.org/licenses/>. | 
| 16 |  */ | 
| 17 |  | 
| 18 | /* | 
| 19 |  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS | 
| 20 |  * file for a list of people on the GTK+ Team.  See the ChangeLog | 
| 21 |  * files for a list of changes.  These files are distributed with | 
| 22 |  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. | 
| 23 |  */ | 
| 24 |  | 
| 25 | #ifndef __GTK_SELECTION_H__ | 
| 26 | #define __GTK_SELECTION_H__ | 
| 27 |  | 
| 28 | #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) | 
| 29 | #error "Only <gtk/gtk.h> can be included directly." | 
| 30 | #endif | 
| 31 |  | 
| 32 | #include <gtk/gtkwidget.h> | 
| 33 | #include <gtk/gtktextiter.h> | 
| 34 |  | 
| 35 | G_BEGIN_DECLS | 
| 36 |  | 
| 37 | typedef struct _GtkTargetPair GtkTargetPair; | 
| 38 |  | 
| 39 | /** | 
| 40 |  * GtkTargetPair: | 
| 41 |  * @target: #GdkAtom representation of the target type | 
| 42 |  * @flags: #GtkTargetFlags for DND | 
| 43 |  * @info: an application-assigned integer ID which will | 
| 44 |  *     get passed as a parameter to e.g the #GtkWidget::selection-get | 
| 45 |  *     signal. It allows the application to identify the target | 
| 46 |  *     type without extensive string compares. | 
| 47 |  * | 
| 48 |  * A #GtkTargetPair is used to represent the same | 
| 49 |  * information as a table of #GtkTargetEntry, but in | 
| 50 |  * an efficient form. | 
| 51 |  */ | 
| 52 | struct _GtkTargetPair | 
| 53 | { | 
| 54 |   GdkAtom   target; | 
| 55 |   guint     flags; | 
| 56 |   guint     info; | 
| 57 | }; | 
| 58 |  | 
| 59 | /** | 
| 60 |  * GtkTargetList: | 
| 61 |  * | 
| 62 |  * A #GtkTargetList-struct is a reference counted list | 
| 63 |  * of #GtkTargetPair and should be treated as | 
| 64 |  * opaque. | 
| 65 |  */ | 
| 66 | typedef struct _GtkTargetList  GtkTargetList; | 
| 67 | typedef struct _GtkTargetEntry GtkTargetEntry; | 
| 68 |  | 
| 69 | #define GTK_TYPE_SELECTION_DATA (gtk_selection_data_get_type ()) | 
| 70 | #define GTK_TYPE_TARGET_LIST    (gtk_target_list_get_type ()) | 
| 71 |  | 
| 72 | /** | 
| 73 |  * GtkTargetFlags: | 
| 74 |  * @GTK_TARGET_SAME_APP: If this is set, the target will only be selected | 
| 75 |  *   for drags within a single application. | 
| 76 |  * @GTK_TARGET_SAME_WIDGET: If this is set, the target will only be selected | 
| 77 |  *   for drags within a single widget. | 
| 78 |  * @GTK_TARGET_OTHER_APP: If this is set, the target will not be selected | 
| 79 |  *   for drags within a single application. | 
| 80 |  * @GTK_TARGET_OTHER_WIDGET: If this is set, the target will not be selected | 
| 81 |  *   for drags withing a single widget. | 
| 82 |  * | 
| 83 |  * The #GtkTargetFlags enumeration is used to specify | 
| 84 |  * constraints on a #GtkTargetEntry. | 
| 85 |  */ | 
| 86 | typedef enum { | 
| 87 |   GTK_TARGET_SAME_APP = 1 << 0,    /*< nick=same-app >*/ | 
| 88 |   GTK_TARGET_SAME_WIDGET = 1 << 1, /*< nick=same-widget >*/ | 
| 89 |   GTK_TARGET_OTHER_APP = 1 << 2,   /*< nick=other-app >*/ | 
| 90 |   GTK_TARGET_OTHER_WIDGET = 1 << 3 /*< nick=other-widget >*/ | 
| 91 | } GtkTargetFlags; | 
| 92 |  | 
| 93 | /** | 
| 94 |  * GtkTargetEntry: | 
| 95 |  * @target: a string representation of the target type | 
| 96 |  * @flags: #GtkTargetFlags for DND | 
| 97 |  * @info: an application-assigned integer ID which will | 
| 98 |  *     get passed as a parameter to e.g the #GtkWidget::selection-get | 
| 99 |  *     signal. It allows the application to identify the target | 
| 100 |  *     type without extensive string compares. | 
| 101 |  * | 
| 102 |  * A #GtkTargetEntry represents a single type of | 
| 103 |  * data than can be supplied for by a widget for a selection | 
| 104 |  * or for supplied or received during drag-and-drop. | 
| 105 |  */ | 
| 106 | struct _GtkTargetEntry | 
| 107 | { | 
| 108 |   gchar *target; | 
| 109 |   guint  flags; | 
| 110 |   guint  info; | 
| 111 | }; | 
| 112 |  | 
| 113 | GDK_AVAILABLE_IN_ALL | 
| 114 | GType          gtk_target_list_get_type  (void) G_GNUC_CONST; | 
| 115 | GDK_AVAILABLE_IN_ALL | 
| 116 | GtkTargetList *gtk_target_list_new       (const GtkTargetEntry *targets, | 
| 117 |                                           guint                 ntargets); | 
| 118 | GDK_AVAILABLE_IN_ALL | 
| 119 | GtkTargetList *gtk_target_list_ref       (GtkTargetList  *list); | 
| 120 | GDK_AVAILABLE_IN_ALL | 
| 121 | void           gtk_target_list_unref     (GtkTargetList  *list); | 
| 122 | GDK_AVAILABLE_IN_ALL | 
| 123 | void           gtk_target_list_add       (GtkTargetList  *list, | 
| 124 |                                           GdkAtom         target, | 
| 125 |                                           guint           flags, | 
| 126 |                                           guint           info); | 
| 127 | GDK_AVAILABLE_IN_ALL | 
| 128 | void           gtk_target_list_add_text_targets      (GtkTargetList  *list, | 
| 129 |                                                       guint           info); | 
| 130 | GDK_AVAILABLE_IN_ALL | 
| 131 | void           gtk_target_list_add_rich_text_targets (GtkTargetList  *list, | 
| 132 |                                                       guint           info, | 
| 133 |                                                       gboolean        deserializable, | 
| 134 |                                                       GtkTextBuffer  *buffer); | 
| 135 | GDK_AVAILABLE_IN_ALL | 
| 136 | void           gtk_target_list_add_image_targets     (GtkTargetList  *list, | 
| 137 |                                                       guint           info, | 
| 138 |                                                       gboolean        writable); | 
| 139 | GDK_AVAILABLE_IN_ALL | 
| 140 | void           gtk_target_list_add_uri_targets       (GtkTargetList  *list, | 
| 141 |                                                       guint           info); | 
| 142 | GDK_AVAILABLE_IN_ALL | 
| 143 | void           gtk_target_list_add_table (GtkTargetList        *list, | 
| 144 |                                           const GtkTargetEntry *targets, | 
| 145 |                                           guint                 ntargets); | 
| 146 | GDK_AVAILABLE_IN_ALL | 
| 147 | void           gtk_target_list_remove    (GtkTargetList  *list, | 
| 148 |                                           GdkAtom         target); | 
| 149 | GDK_AVAILABLE_IN_ALL | 
| 150 | gboolean       gtk_target_list_find      (GtkTargetList  *list, | 
| 151 |                                           GdkAtom         target, | 
| 152 |                                           guint          *info); | 
| 153 |  | 
| 154 | GDK_AVAILABLE_IN_ALL | 
| 155 | GtkTargetEntry * gtk_target_table_new_from_list (GtkTargetList  *list, | 
| 156 |                                                  gint           *n_targets); | 
| 157 | GDK_AVAILABLE_IN_ALL | 
| 158 | void             gtk_target_table_free          (GtkTargetEntry *targets, | 
| 159 |                                                  gint            n_targets); | 
| 160 |  | 
| 161 | GDK_AVAILABLE_IN_ALL | 
| 162 | gboolean gtk_selection_owner_set             (GtkWidget  *widget, | 
| 163 |                                               GdkAtom     selection, | 
| 164 |                                               guint32     time_); | 
| 165 | GDK_AVAILABLE_IN_ALL | 
| 166 | gboolean gtk_selection_owner_set_for_display (GdkDisplay *display, | 
| 167 |                                               GtkWidget  *widget, | 
| 168 |                                               GdkAtom     selection, | 
| 169 |                                               guint32     time_); | 
| 170 |  | 
| 171 | GDK_AVAILABLE_IN_ALL | 
| 172 | void     gtk_selection_add_target    (GtkWidget            *widget, | 
| 173 |                                       GdkAtom               selection, | 
| 174 |                                       GdkAtom               target, | 
| 175 |                                       guint                 info); | 
| 176 | GDK_AVAILABLE_IN_ALL | 
| 177 | void     gtk_selection_add_targets   (GtkWidget            *widget, | 
| 178 |                                       GdkAtom               selection, | 
| 179 |                                       const GtkTargetEntry *targets, | 
| 180 |                                       guint                 ntargets); | 
| 181 | GDK_AVAILABLE_IN_ALL | 
| 182 | void     gtk_selection_clear_targets (GtkWidget            *widget, | 
| 183 |                                       GdkAtom               selection); | 
| 184 | GDK_AVAILABLE_IN_ALL | 
| 185 | gboolean gtk_selection_convert       (GtkWidget            *widget, | 
| 186 |                                       GdkAtom               selection, | 
| 187 |                                       GdkAtom               target, | 
| 188 |                                       guint32               time_); | 
| 189 | GDK_AVAILABLE_IN_ALL | 
| 190 | void     gtk_selection_remove_all    (GtkWidget             *widget); | 
| 191 |  | 
| 192 | GDK_AVAILABLE_IN_ALL | 
| 193 | GdkAtom       gtk_selection_data_get_selection (const GtkSelectionData *selection_data); | 
| 194 | GDK_AVAILABLE_IN_ALL | 
| 195 | GdkAtom       gtk_selection_data_get_target    (const GtkSelectionData *selection_data); | 
| 196 | GDK_AVAILABLE_IN_ALL | 
| 197 | GdkAtom       gtk_selection_data_get_data_type (const GtkSelectionData *selection_data); | 
| 198 | GDK_AVAILABLE_IN_ALL | 
| 199 | gint          gtk_selection_data_get_format    (const GtkSelectionData *selection_data); | 
| 200 | GDK_AVAILABLE_IN_ALL | 
| 201 | const guchar *gtk_selection_data_get_data      (const GtkSelectionData *selection_data); | 
| 202 | GDK_AVAILABLE_IN_ALL | 
| 203 | gint          gtk_selection_data_get_length    (const GtkSelectionData *selection_data); | 
| 204 | GDK_AVAILABLE_IN_ALL | 
| 205 | const guchar *gtk_selection_data_get_data_with_length | 
| 206 |                                                (const GtkSelectionData *selection_data, | 
| 207 |                                                 gint                   *length); | 
| 208 |  | 
| 209 | GDK_AVAILABLE_IN_ALL | 
| 210 | GdkDisplay   *gtk_selection_data_get_display   (const GtkSelectionData *selection_data); | 
| 211 |  | 
| 212 | GDK_AVAILABLE_IN_ALL | 
| 213 | void     gtk_selection_data_set      (GtkSelectionData     *selection_data, | 
| 214 |                                       GdkAtom               type, | 
| 215 |                                       gint                  format, | 
| 216 |                                       const guchar         *data, | 
| 217 |                                       gint                  length); | 
| 218 | GDK_AVAILABLE_IN_ALL | 
| 219 | gboolean gtk_selection_data_set_text (GtkSelectionData     *selection_data, | 
| 220 |                                       const gchar          *str, | 
| 221 |                                       gint                  len); | 
| 222 | GDK_AVAILABLE_IN_ALL | 
| 223 | guchar * gtk_selection_data_get_text (const GtkSelectionData     *selection_data); | 
| 224 | GDK_AVAILABLE_IN_ALL | 
| 225 | gboolean gtk_selection_data_set_pixbuf   (GtkSelectionData  *selection_data, | 
| 226 |                                           GdkPixbuf         *pixbuf); | 
| 227 | GDK_AVAILABLE_IN_ALL | 
| 228 | GdkPixbuf *gtk_selection_data_get_pixbuf (const GtkSelectionData  *selection_data); | 
| 229 | GDK_AVAILABLE_IN_ALL | 
| 230 | gboolean gtk_selection_data_set_uris (GtkSelectionData     *selection_data, | 
| 231 |                                       gchar               **uris); | 
| 232 | GDK_AVAILABLE_IN_ALL | 
| 233 | gchar  **gtk_selection_data_get_uris (const GtkSelectionData     *selection_data); | 
| 234 |  | 
| 235 | GDK_AVAILABLE_IN_ALL | 
| 236 | gboolean gtk_selection_data_get_targets          (const GtkSelectionData  *selection_data, | 
| 237 |                                                   GdkAtom          **targets, | 
| 238 |                                                   gint              *n_atoms); | 
| 239 | GDK_AVAILABLE_IN_ALL | 
| 240 | gboolean gtk_selection_data_targets_include_text (const GtkSelectionData  *selection_data); | 
| 241 | GDK_AVAILABLE_IN_ALL | 
| 242 | gboolean gtk_selection_data_targets_include_rich_text (const GtkSelectionData *selection_data, | 
| 243 |                                                        GtkTextBuffer    *buffer); | 
| 244 | GDK_AVAILABLE_IN_ALL | 
| 245 | gboolean gtk_selection_data_targets_include_image (const GtkSelectionData  *selection_data, | 
| 246 |                                                    gboolean           writable); | 
| 247 | GDK_AVAILABLE_IN_ALL | 
| 248 | gboolean gtk_selection_data_targets_include_uri  (const GtkSelectionData  *selection_data); | 
| 249 | GDK_AVAILABLE_IN_ALL | 
| 250 | gboolean gtk_targets_include_text                (GdkAtom       *targets, | 
| 251 |                                                   gint           n_targets); | 
| 252 | GDK_AVAILABLE_IN_ALL | 
| 253 | gboolean gtk_targets_include_rich_text           (GdkAtom       *targets, | 
| 254 |                                                   gint           n_targets, | 
| 255 |                                                   GtkTextBuffer *buffer); | 
| 256 | GDK_AVAILABLE_IN_ALL | 
| 257 | gboolean gtk_targets_include_image               (GdkAtom       *targets, | 
| 258 |                                                   gint           n_targets, | 
| 259 |                                                   gboolean       writable); | 
| 260 | GDK_AVAILABLE_IN_ALL | 
| 261 | gboolean gtk_targets_include_uri                 (GdkAtom       *targets, | 
| 262 |                                                   gint           n_targets); | 
| 263 |  | 
| 264 |  | 
| 265 | GDK_AVAILABLE_IN_ALL | 
| 266 | GType             gtk_selection_data_get_type (void) G_GNUC_CONST; | 
| 267 | GDK_AVAILABLE_IN_ALL | 
| 268 | GtkSelectionData *gtk_selection_data_copy     (const GtkSelectionData *data); | 
| 269 | GDK_AVAILABLE_IN_ALL | 
| 270 | void              gtk_selection_data_free     (GtkSelectionData *data); | 
| 271 |  | 
| 272 | GDK_AVAILABLE_IN_ALL | 
| 273 | GType             gtk_target_entry_get_type    (void) G_GNUC_CONST; | 
| 274 | GDK_AVAILABLE_IN_ALL | 
| 275 | GtkTargetEntry   *gtk_target_entry_new        (const gchar    *target, | 
| 276 |                                                guint           flags, | 
| 277 |                                                guint           info); | 
| 278 | GDK_AVAILABLE_IN_ALL | 
| 279 | GtkTargetEntry   *gtk_target_entry_copy       (GtkTargetEntry *data); | 
| 280 | GDK_AVAILABLE_IN_ALL | 
| 281 | void              gtk_target_entry_free       (GtkTargetEntry *data); | 
| 282 |  | 
| 283 | G_END_DECLS | 
| 284 |  | 
| 285 | #endif /* __GTK_SELECTION_H__ */ | 
| 286 |  |