1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: src/common/clipcmn.cpp 3 // Purpose: common (to all ports) wxClipboard functions 4 // Author: Robert Roebling 5 // Modified by: 6 // Created: 28.06.99 7 // Copyright: (c) Robert Roebling 8 // Licence: wxWindows licence 9 ///////////////////////////////////////////////////////////////////////////// 10 11 // ============================================================================ 12 // declarations 13 // ============================================================================ 14 15 // ---------------------------------------------------------------------------- 16 // headers 17 // ---------------------------------------------------------------------------- 18 19 // For compilers that support precompilation, includes "wx.h". 20 #include "wx/wxprec.h" 21 22 #ifdef __BORLANDC__ 23 #pragma hdrstop 24 #endif 25 26 #if wxUSE_CLIPBOARD 27 28 #include "wx/clipbrd.h" 29 30 #ifndef WX_PRECOMP 31 #include "wx/dataobj.h" 32 #include "wx/module.h" 33 #endif 34 35 // --------------------------------------------------------- 36 // wxClipboardEvent 37 // --------------------------------------------------------- 38 39 IMPLEMENT_DYNAMIC_CLASS(wxClipboardEvent,wxEvent) 40 41 wxDEFINE_EVENT( wxEVT_CLIPBOARD_CHANGED, wxClipboardEvent ); 42 SupportsFormat(const wxDataFormat & format) const43bool wxClipboardEvent::SupportsFormat( const wxDataFormat &format ) const 44 { 45 #ifdef __WXGTK20__ 46 for (wxVector<wxDataFormat>::size_type n = 0; n < m_formats.size(); n++) 47 { 48 if (m_formats[n] == format) 49 return true; 50 } 51 52 return false; 53 #else 54 // All other ports just query the clipboard directly 55 // from here 56 wxClipboard* clipboard = (wxClipboard*) GetEventObject(); 57 return clipboard->IsSupported( format ); 58 #endif 59 } 60 AddFormat(const wxDataFormat & format)61void wxClipboardEvent::AddFormat(const wxDataFormat& format) 62 { 63 m_formats.push_back( format ); 64 } 65 66 // --------------------------------------------------------- 67 // wxClipboardBase 68 // --------------------------------------------------------- 69 70 static wxClipboard *gs_clipboard = NULL; 71 Get()72/*static*/ wxClipboard *wxClipboardBase::Get() 73 { 74 if ( !gs_clipboard ) 75 { 76 gs_clipboard = new wxClipboard; 77 } 78 return gs_clipboard; 79 } 80 IsSupportedAsync(wxEvtHandler * sink)81bool wxClipboardBase::IsSupportedAsync( wxEvtHandler *sink ) 82 { 83 // We just imitate an asynchronous API on most platforms. 84 // This method is overridden uner GTK. 85 wxClipboardEvent *event = new wxClipboardEvent(wxEVT_CLIPBOARD_CHANGED); 86 event->SetEventObject( this ); 87 88 sink->QueueEvent( event ); 89 90 return true; 91 } 92 93 94 // ---------------------------------------------------------------------------- 95 // wxClipboardModule: module responsible for destroying the global clipboard 96 // object 97 // ---------------------------------------------------------------------------- 98 99 class wxClipboardModule : public wxModule 100 { 101 public: OnInit()102 bool OnInit() { return true; } OnExit()103 void OnExit() { wxDELETE(gs_clipboard); } 104 105 private: 106 DECLARE_DYNAMIC_CLASS(wxClipboardModule) 107 }; 108 109 IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule, wxModule) 110 111 #endif // wxUSE_CLIPBOARD 112