]> git.saurik.com Git - wxWidgets.git/blame - include/wx/msw/clipbrd.h
wxClipboard now serves the primary selection as well
[wxWidgets.git] / include / wx / msw / clipbrd.h
CommitLineData
2bda0e17
KB
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$
bbcdf8bc
JS
8// Copyright: (c) Julian Smart
9// Licence: wxWindows licence
2bda0e17
KB
10/////////////////////////////////////////////////////////////////////////////
11
bbcdf8bc
JS
12#ifndef _WX_CLIPBRD_H_
13#define _WX_CLIPBRD_H_
2bda0e17
KB
14
15#ifdef __GNUG__
16#pragma interface "clipbrd.h"
17#endif
18
19#include "wx/defs.h"
20#include "wx/setup.h"
21
47d67540 22#if wxUSE_CLIPBOARD
2bda0e17
KB
23
24#include "wx/list.h"
25
184b5d99
JS
26WXDLLEXPORT bool wxOpenClipboard(void);
27WXDLLEXPORT bool wxClipboardOpen(void);
28WXDLLEXPORT bool wxCloseClipboard(void);
29WXDLLEXPORT bool wxEmptyClipboard(void);
30WXDLLEXPORT bool wxIsClipboardFormatAvailable(int dataFormat);
31WXDLLEXPORT bool wxSetClipboardData(int dataFormat, wxObject *obj, int width = 0, int height = 0);
32WXDLLEXPORT wxObject* wxGetClipboardData(int dataFormat, long *len = NULL);
33WXDLLEXPORT int wxEnumClipboardFormats(int dataFormat);
34WXDLLEXPORT int wxRegisterClipboardFormat(char *formatName);
35WXDLLEXPORT bool wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount);
2bda0e17
KB
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. */
43class 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: */
67class 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 */
184b5d99 104WXDLLEXPORT void wxInitClipboard(void);
2bda0e17
KB
105
106/* The clipboard */
b823f5a1 107WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard;
2bda0e17 108
47d67540 109#endif // wxUSE_CLIPBOARD
2bda0e17 110#endif
bbcdf8bc 111 // _WX_CLIPBRD_H_