]>
Commit | Line | Data |
---|---|---|
1 | ///////////////////////////////////////////////////////////////////////////// | |
2 | // Name: wx/gtk/clipboard.h | |
3 | // Purpose: wxClipboard for wxGTK | |
4 | // Author: Robert Roebling, Vadim Zeitlin | |
5 | // Id: $Id$ | |
6 | // Copyright: (c) 1998 Robert Roebling | |
7 | // (c) 2007 Vadim Zeitlin | |
8 | // Licence: wxWindows licence | |
9 | ///////////////////////////////////////////////////////////////////////////// | |
10 | ||
11 | #ifndef _WX_GTK_CLIPBOARD_H_ | |
12 | #define _WX_GTK_CLIPBOARD_H_ | |
13 | ||
14 | // ---------------------------------------------------------------------------- | |
15 | // wxClipboard | |
16 | // ---------------------------------------------------------------------------- | |
17 | ||
18 | class WXDLLIMPEXP_CORE wxClipboard : public wxClipboardBase | |
19 | { | |
20 | public: | |
21 | // there are several clipboards in X11 (and in GDK) | |
22 | enum Kind | |
23 | { | |
24 | Primary, | |
25 | Clipboard | |
26 | }; | |
27 | ||
28 | wxClipboard(); | |
29 | virtual ~wxClipboard(); | |
30 | ||
31 | // open the clipboard before SetData() and GetData() | |
32 | virtual bool Open(); | |
33 | ||
34 | // close the clipboard after SetData() and GetData() | |
35 | virtual void Close(); | |
36 | ||
37 | // query whether the clipboard is opened | |
38 | virtual bool IsOpened() const; | |
39 | ||
40 | // set the clipboard data. all other formats will be deleted. | |
41 | virtual bool SetData( wxDataObject *data ); | |
42 | ||
43 | // add to the clipboard data. | |
44 | virtual bool AddData( wxDataObject *data ); | |
45 | ||
46 | // ask if data in correct format is available | |
47 | virtual bool IsSupported( const wxDataFormat& format ); | |
48 | ||
49 | // fill data with data on the clipboard (if available) | |
50 | virtual bool GetData( wxDataObject& data ); | |
51 | ||
52 | // clears wxTheClipboard and the system's clipboard if possible | |
53 | virtual void Clear(); | |
54 | ||
55 | ||
56 | ||
57 | // implementation from now on | |
58 | // -------------------------- | |
59 | ||
60 | // get our clipboard item (depending on m_usePrimary value) | |
61 | GdkAtom GTKGetClipboardAtom() const; | |
62 | ||
63 | // get the data object currently being used | |
64 | wxDataObject *GTKGetDataObject() { return Data(); } | |
65 | ||
66 | // clear the data for the given clipboard kind | |
67 | void GTKClearData(Kind kind); | |
68 | ||
69 | // called when selection data is received | |
70 | void GTKOnSelectionReceived(const GtkSelectionData& sel); | |
71 | ||
72 | // called when available target information is received | |
73 | bool GTKOnTargetReceived(const wxDataFormat& format); | |
74 | ||
75 | private: | |
76 | // the data object for the specific selection | |
77 | wxDataObject *& Data(Kind kind) | |
78 | { | |
79 | return kind == Primary ? m_dataPrimary : m_dataClipboard; | |
80 | } | |
81 | ||
82 | // the data object we're currently using | |
83 | wxDataObject *& Data() | |
84 | { | |
85 | return Data(m_usePrimary ? Primary : Clipboard); | |
86 | } | |
87 | ||
88 | ||
89 | // set or unset selection ownership | |
90 | bool SetSelectionOwner(bool set = true); | |
91 | ||
92 | // add atom to the list of supported targets | |
93 | void AddSupportedTarget(GdkAtom atom); | |
94 | ||
95 | // check if the given format is supported | |
96 | bool DoIsSupported(const wxDataFormat& format); | |
97 | ||
98 | ||
99 | // both of these pointers can be non-NULL simultaneously but we only use | |
100 | // one of them at any moment depending on m_usePrimary value, use Data() | |
101 | // (from inside) or GTKGetDataObject() (from outside) accessors | |
102 | wxDataObject *m_dataPrimary, | |
103 | *m_dataClipboard; | |
104 | ||
105 | // this is used to temporarily hold the object passed to our GetData() so | |
106 | // that GTK callbacks could access it | |
107 | wxDataObject *m_receivedData; | |
108 | ||
109 | // used to pass information about the format we need from DoIsSupported() | |
110 | // to GTKOnTargetReceived() | |
111 | GdkAtom m_targetRequested; | |
112 | ||
113 | GtkWidget *m_clipboardWidget; // for getting and offering data | |
114 | GtkWidget *m_targetsWidget; // for getting list of supported formats | |
115 | ||
116 | bool m_open; | |
117 | bool m_formatSupported; | |
118 | ||
119 | ||
120 | DECLARE_DYNAMIC_CLASS(wxClipboard) | |
121 | }; | |
122 | ||
123 | #endif // _WX_GTK_CLIPBOARD_H_ |