summaryrefslogtreecommitdiff
path: root/gtk/gtkclipboard.h
blob: dee672fa5562fe440fb2b8990c102627e6fcb2b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* GTK - The GIMP Toolkit
 * Copyright (C) 2000 Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser 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.
 *
 * Global clipboard abstraction. 
 */

#ifndef __GTK_CLIPBOARD_H__
#define __GTK_CLIPBOARD_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include <gtk/gtkselection.h>

#define GTK_TYPE_CLIPBOARD            (gtk_clipboard_get_type ())
#define GTK_CLIPBOARD(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CLIPBOARD, GtkClipboard))
#define GTK_IS_CLIPBOARD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CLIPBOARD))

typedef void (* GtkClipboardReceivedFunc)        (GtkClipboard     *clipboard,
					          GtkSelectionData *selection_data,
					          gpointer          data);
typedef void (* GtkClipboardTextReceivedFunc)    (GtkClipboard     *clipboard,
					          const gchar      *text,
					          gpointer          data);
typedef void (* GtkClipboardImageReceivedFunc)   (GtkClipboard     *clipboard,
						  GdkPixbuf        *pixbuf,
						  gpointer          data);
typedef void (* GtkClipboardTargetsReceivedFunc) (GtkClipboard     *clipboard,
					          GdkAtom          *atoms,
						  gint              n_atoms,
					          gpointer          data);

/* Should these functions have GtkClipboard *clipboard as the first argument?
 * right now for ClearFunc, you may have trouble determining _which_ clipboard
 * was cleared, if you reuse your ClearFunc for multiple clipboards.
 */
typedef void (* GtkClipboardGetFunc)          (GtkClipboard     *clipboard,
					       GtkSelectionData *selection_data,
					       guint             info,
					       gpointer          user_data_or_owner);
typedef void (* GtkClipboardClearFunc)        (GtkClipboard     *clipboard,
					       gpointer          user_data_or_owner);

GType         gtk_clipboard_get_type (void) G_GNUC_CONST;

GtkClipboard *gtk_clipboard_get_for_display (GdkDisplay   *display,
					     GdkAtom       selection);
#ifndef GDK_MULTIHEAD_SAFE
GtkClipboard *gtk_clipboard_get             (GdkAtom       selection);
#endif

GdkDisplay   *gtk_clipboard_get_display     (GtkClipboard *clipboard);


gboolean gtk_clipboard_set_with_data  (GtkClipboard          *clipboard,
				       const GtkTargetEntry  *targets,
				       guint                  n_targets,
				       GtkClipboardGetFunc    get_func,
				       GtkClipboardClearFunc  clear_func,
				       gpointer               user_data);
gboolean gtk_clipboard_set_with_owner (GtkClipboard          *clipboard,
				       const GtkTargetEntry  *targets,
				       guint                  n_targets,
				       GtkClipboardGetFunc    get_func,
				       GtkClipboardClearFunc  clear_func,
				       GObject               *owner);
GObject *gtk_clipboard_get_owner      (GtkClipboard          *clipboard);
void     gtk_clipboard_clear          (GtkClipboard          *clipboard);
void     gtk_clipboard_set_text       (GtkClipboard          *clipboard,
				       const gchar           *text,
				       gint                   len);
void     gtk_clipboard_set_image      (GtkClipboard          *clipboard,
				       GdkPixbuf             *pixbuf);

void gtk_clipboard_request_contents (GtkClipboard                    *clipboard,
				     GdkAtom                          target,
				     GtkClipboardReceivedFunc         callback,
				     gpointer                         user_data);
void gtk_clipboard_request_text     (GtkClipboard                    *clipboard,
				     GtkClipboardTextReceivedFunc     callback,
				     gpointer                         user_data);
void gtk_clipboard_request_image    (GtkClipboard                    *clipboard,
				     GtkClipboardImageReceivedFunc    callback,
				     gpointer                         user_data);
void gtk_clipboard_request_targets  (GtkClipboard                    *clipboard,
				     GtkClipboardTargetsReceivedFunc  callback,
				     gpointer                         user_data);

GtkSelectionData *gtk_clipboard_wait_for_contents (GtkClipboard  *clipboard,
						   GdkAtom        target);
gchar *           gtk_clipboard_wait_for_text     (GtkClipboard  *clipboard);
GdkPixbuf *       gtk_clipboard_wait_for_image    (GtkClipboard  *clipboard);
gboolean          gtk_clipboard_wait_for_targets  (GtkClipboard  *clipboard,
						   GdkAtom      **targets,
						   gint          *n_targets);

gboolean gtk_clipboard_wait_is_text_available   (GtkClipboard *clipboard);
gboolean gtk_clipboard_wait_is_image_available  (GtkClipboard *clipboard);
gboolean gtk_clipboard_wait_is_target_available (GtkClipboard *clipboard,
						 GdkAtom       target);


void gtk_clipboard_set_can_store (GtkClipboard         *clipboard,
				  const GtkTargetEntry *targets,
				  gint                  n_targets);

void gtk_clipboard_store         (GtkClipboard   *clipboard);
  
/* private */
void     _gtk_clipboard_handle_event    (GdkEventOwnerChange *event);

void     _gtk_clipboard_store_all       (void);
  
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __GTK_CLIPBOARD_H__ */