added some wxMSW stuff
[wxWidgets.git] / include / wx / msw / clipbrd.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: clipbrd.h
3 // Purpose: Clipboard functionality
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 01/02/97
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef __CLIPBRDH__
13 #define __CLIPBRDH__
14
15 #ifdef __GNUG__
16 #pragma interface "clipbrd.h"
17 #endif
18
19 #include "wx/defs.h"
20 #include "wx/setup.h"
21
22 #if USE_CLIPBOARD
23
24 #include "wx/list.h"
25
26 bool WXDLLEXPORT wxOpenClipboard(void);
27 bool WXDLLEXPORT wxClipboardOpen(void);
28 bool WXDLLEXPORT wxCloseClipboard(void);
29 bool WXDLLEXPORT wxEmptyClipboard(void);
30 bool WXDLLEXPORT wxIsClipboardFormatAvailable(int dataFormat);
31 bool WXDLLEXPORT wxSetClipboardData(int dataFormat, wxObject *obj, int width = 0, int height = 0);
32 wxObject* WXDLLEXPORT wxGetClipboardData(int dataFormat, long *len = NULL);
33 int WXDLLEXPORT wxEnumClipboardFormats(int dataFormat);
34 int WXDLLEXPORT wxRegisterClipboardFormat(char *formatName);
35 bool WXDLLEXPORT wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount);
36
37 /* The following is Matthew Flatt's implementation of the MSW
38 * side of generic clipboard functionality.
39 */
40
41 /* A clipboard client holds data belonging to the clipboard.
42 For plain text, a client is not necessary. */
43 class WXDLLEXPORT wxClipboardClient : public wxObject
44 {
45 DECLARE_ABSTRACT_CLASS(wxClipboardClient)
46
47 public:
48 /* This list should be filled in with strings indicating the formats
49 this client can provide. Almost all clients will provide "TEXT".
50 Format names should be 4 characters long, so things will work
51 out on the Macintosh */
52 wxStringList formats;
53
54 /* This method is called when the client is losing the selection. */
55 virtual void BeingReplaced(void) = 0;
56
57 /* This method is called when someone wants the data this client is
58 supplying to the clipboard. "format" is a string indicating the
59 format of the data - one of the strings from the "formats"
60 list. "*size" should be filled with the size of the resulting
61 data. In the case of text, "*size" does not count the
62 NULL terminator. */
63 virtual char *GetData(char *format, long *size) = 0;
64 };
65
66 /* ONE instance of this class: */
67 class WXDLLEXPORT wxClipboard : public wxObject
68 {
69 DECLARE_DYNAMIC_CLASS(wxClipboard)
70
71 public:
72 wxClipboardClient *clipOwner;
73 char *cbString, *sentString, *receivedString;
74 void *receivedTargets;
75 long receivedLength;
76 #ifdef __XVIEW__
77 long sel_owner;
78 #endif
79
80 wxClipboard();
81 ~wxClipboard();
82
83 /* Set the clipboard data owner. "time" comes from the event record. */
84 void SetClipboardClient(wxClipboardClient *, long time);
85
86 /* Set the clipboard string; does not require a client. */
87 void SetClipboardString(char *, long time);
88
89 /* Get data from the clipboard in the format "TEXT". */
90 char *GetClipboardString(long time);
91
92 /* Get data from the clipboard */
93 char *GetClipboardData(char *format, long *length, long time);
94
95 /* Get the clipboard client directly. Will be NULL if clipboard data
96 is a string, or if some other application owns the clipboard.
97 This can be useful for shortcutting data translation, if the
98 clipboard user can check for a specific client. (This is used
99 by the wxMediaEdit class.) */
100 wxClipboardClient *GetClipboardClient(void);
101 };
102
103 /* Initialize wxTheClipboard. Can be called repeatedly */
104 void WXDLLEXPORT wxInitClipboard(void);
105
106 /* The clipboard */
107 extern wxClipboard* WXDLLEXPORT wxTheClipboard;
108
109 #endif // USE_CLIPBOARD
110 #endif
111 // __CLIPBRDH__