X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b0a6c154dec4a98e0a232196fd2b9ad1b02b6199..174b10af3488cc926c5f0336db457f125a506f51:/include/wx/dataobj.h diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h index 1d922a5c72..085487c62f 100644 --- a/include/wx/dataobj.h +++ b/include/wx/dataobj.h @@ -6,24 +6,27 @@ // Created: 26.05.99 // RCS-ID: $Id$ // Copyright: (c) wxWindows Team -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_DATAOBJ_H_BASE_ #define _WX_DATAOBJ_H_BASE_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "dataobjbase.h" #endif // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- - #include "wx/defs.h" + +#if wxUSE_DATAOBJ + #include "wx/string.h" #include "wx/bitmap.h" #include "wx/list.h" +#include "wx/arrstr.h" // ============================================================================ /* @@ -79,13 +82,19 @@ public: #include "wx/motif/dataform.h" #elif defined(__WXGTK__) #include "wx/gtk/dataform.h" +#elif defined(__WXX11__) + #include "wx/x11/dataform.h" +#elif defined(__WXMAC__) + #include "wx/mac/dataform.h" +#elif defined(__WXCOCOA__) + #include "wx/cocoa/dataform.h" #elif defined(__WXPM__) #include "wx/os2/dataform.h" #endif // the value for default argument to some functions (corresponds to // wxDF_INVALID) -extern const wxDataFormat& wxFormatInvalid; +extern WXDLLEXPORT const wxDataFormat& wxFormatInvalid; // ---------------------------------------------------------------------------- // wxDataObject represents a piece of data which knows which formats it @@ -144,6 +153,9 @@ public: { return FALSE; } + + // returns TRUE if this format is supported + bool IsSupported(const wxDataFormat& format, Direction dir = Get) const; }; // ---------------------------------------------------------------------------- @@ -154,16 +166,16 @@ public: #include "wx/msw/ole/dataobj.h" #elif defined(__WXMOTIF__) #include "wx/motif/dataobj.h" +#elif defined(__WXX11__) + #include "wx/x11/dataobj.h" #elif defined(__WXGTK__) #include "wx/gtk/dataobj.h" -#elif defined(__WXQT__) - #include "wx/qt/dnd.h" #elif defined(__WXMAC__) - #include "wx/mac/dnd.h" + #include "wx/mac/dataobj.h" +#elif defined(__WXCOCOA__) + #include "wx/cocoa/dataobj.h" #elif defined(__WXPM__) #include "wx/os2/dataobj.h" -#elif defined(__WXSTUBS__) - #include "wx/stubs/dnd.h" #endif // ---------------------------------------------------------------------------- @@ -187,7 +199,7 @@ class WXDLLEXPORT wxDataObjectSimple : public wxDataObject public: // ctor takes the format we support, but it can also be set later with // SetFormat() - wxDataObjectSimple(const wxDataFormat& format = wxDataFormat(wxDF_INVALID)) + wxDataObjectSimple(const wxDataFormat& format = wxFormatInvalid) : m_format(format) { } @@ -233,6 +245,8 @@ public: private: // the one and only format we support wxDataFormat m_format; + + DECLARE_NO_COPY_CLASS(wxDataObjectSimple) }; // ---------------------------------------------------------------------------- @@ -245,13 +259,14 @@ private: // wxDataObject directly. // ---------------------------------------------------------------------------- -WX_DECLARE_LIST(wxDataObjectSimple, wxSimpleDataObjectList); +WX_DECLARE_EXPORTED_LIST(wxDataObjectSimple, wxSimpleDataObjectList); class WXDLLEXPORT wxDataObjectComposite : public wxDataObject { public: // ctor - wxDataObjectComposite() { m_preferred = 0; } + wxDataObjectComposite(); + virtual ~wxDataObjectComposite(); // add data object (it will be deleted by wxDataObjectComposite, hence it // must be allocated on the heap) whose format will become the preferred @@ -270,6 +285,13 @@ public: protected: // returns the pointer to the object which supports this format or NULL wxDataObjectSimple *GetObject(const wxDataFormat& format) const; +#if defined(__WXMSW__) + virtual const void* GetSizeFromBuffer( const void* buffer, size_t* size, + const wxDataFormat& format ); + virtual void* SetSizeInBuffer( void* buffer, size_t size, + const wxDataFormat& format ); + virtual size_t GetBufferOffset( const wxDataFormat& format ); +#endif private: // the list of all (simple) data objects whose formats we support @@ -278,6 +300,8 @@ private: // the index of the preferred one (0 initially, so by default the first // one is the preferred) size_t m_preferred; + + DECLARE_NO_COPY_CLASS(wxDataObjectComposite) }; // ============================================================================ @@ -298,7 +322,8 @@ public: // ctor: you can specify the text here or in SetText(), or override // GetText() wxTextDataObject(const wxString& text = wxEmptyString) - : wxDataObjectSimple(wxDF_TEXT), m_text(text) + : wxDataObjectSimple(wxUSE_UNICODE?wxDF_UNICODETEXT:wxDF_TEXT), + m_text(text) { } @@ -310,22 +335,36 @@ public: // implement base class pure virtuals // ---------------------------------- + +#if wxUSE_UNICODE && defined(__WXGTK20__) + virtual size_t GetFormatCount(Direction WXUNUSED(dir) = Get) const { return 2; } + virtual void GetAllFormats(wxDataFormat *formats, + wxDataObjectBase::Direction WXUNUSED(dir) = Get) const; + + virtual size_t GetDataSize() const { return GetDataSize(GetPreferredFormat()); } + virtual bool GetDataHere(void *buf) const { return GetDataHere(GetPreferredFormat(), buf); } + virtual bool SetData(size_t len, const void *buf) { return SetData(GetPreferredFormat(), len, buf); } + + size_t GetDataSize(const wxDataFormat& format) const; + bool GetDataHere(const wxDataFormat& format, void *pBuf) const; + bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf); +#else virtual size_t GetDataSize() const; virtual bool GetDataHere(void *buf) const; virtual bool SetData(size_t len, const void *buf); + size_t GetDataSize(const wxDataFormat& format) const + { return(wxDataObjectSimple::GetDataSize(format)); } + bool GetDataHere(const wxDataFormat& format, void *pBuf) const + { return(wxDataObjectSimple::GetDataHere(format, pBuf)); } + bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf) + { return(wxDataObjectSimple::SetData(format, nLen, pBuf)); } +#endif + private: wxString m_text; - -#if defined(__VISAGECPP__) - // Virtual function hiding supression - size_t GetDataSize(const wxDataFormat& rFormat) const - { return(wxDataObjectSimple::GetDataSize(rFormat)); } - bool GetDataHere(const wxDataFormat& WXUNUSED(rFormat), void *pBuf) const - { return(GetDataHere(pBuf)); } - bool SetData(const wxDataFormat& rFormat, size_t nLen, const void* pBuf) - { return(wxDataObjectSimple::SetData(rFormat, nLen, pBuf)); } -#endif + + DECLARE_NO_COPY_CLASS(wxTextDataObject) }; // ---------------------------------------------------------------------------- @@ -349,6 +388,8 @@ public: protected: wxBitmap m_bitmap; + + DECLARE_NO_COPY_CLASS(wxBitmapDataObjectBase) }; // ---------------------------------------------------------------------------- @@ -374,14 +415,14 @@ public: protected: wxArrayString m_filenames; -#if defined(__VISAGECPP__) private: // Virtual function hiding supression - size_t GetDataSize(const wxDataFormat& rFormat) const - { return(wxDataObjectSimple::GetDataSize(rFormat)); } - bool GetDataHere(const wxDataFormat& WXUNUSED(rformat), void* pBuf) const - { return(GetDataHere(pBuf)); } -#endif + size_t GetDataSize(const wxDataFormat& format) const + { return(wxDataObjectSimple::GetDataSize(format)); } + bool GetDataHere(const wxDataFormat& format, void* pBuf) const + { return(wxDataObjectSimple::GetDataHere(format, pBuf)); } + + DECLARE_NO_COPY_CLASS(wxFileDataObjectBase) }; // ---------------------------------------------------------------------------- @@ -429,15 +470,15 @@ private: size_t m_size; void *m_data; -#if defined(__VISAGECPP__) - // Virtual function hiding supression - size_t GetDataSize(const wxDataFormat& rFormat) const - { return(wxDataObjectSimple::GetDataSize(rFormat)); } - bool GetDataHere(const wxDataFormat& rFormat, void* pBuf) const - { return(wxDataObjectSimple::GetDataHere(rFormat, pBuf)); } - bool SetData(const wxDataFormat& rFormat, size_t nLen, const void* pBuf) - { return(wxDataObjectSimple::SetData(rFormat, nLen, pBuf)); } -#endif + // virtual function hiding supression + size_t GetDataSize(const wxDataFormat& format) const + { return(wxDataObjectSimple::GetDataSize(format)); } + bool GetDataHere(const wxDataFormat& format, void* pBuf) const + { return(wxDataObjectSimple::GetDataHere(format, pBuf)); } + bool SetData(const wxDataFormat& format, size_t nLen, const void* pBuf) + { return(wxDataObjectSimple::SetData(format, nLen, pBuf)); } + + DECLARE_NO_COPY_CLASS(wxCustomDataObject) }; // ---------------------------------------------------------------------------- @@ -446,12 +487,32 @@ private: #if defined(__WXMSW__) #include "wx/msw/ole/dataobj2.h" -#elif defined(__WXMOTIF__) - // #include "wx/motif/dataobj2.h" -- not yet -#elif defined(__WXGTK__) - #include "wx/gtk/dataobj2.h" -#elif defined(__WXPM__) - #include "wx/os2/dataobj2.h" -#endif + + // wxURLDataObject defined in msw/ole/dataobj2.h +#else // !__WXMSW__ + #if defined(__WXGTK__) + #include "wx/gtk/dataobj2.h" + #elif defined(__WXX11__) + #include "wx/x11/dataobj2.h" + #elif defined(__WXMOTIF__) + #include "wx/motif/dataobj2.h" + #elif defined(__WXMAC__) + #include "wx/mac/dataobj2.h" + #elif defined(__WXCOCOA__) + #include "wx/cocoa/dataobj2.h" + #elif defined(__WXPM__) + #include "wx/os2/dataobj2.h" + #endif + + // wxURLDataObject is simply wxTextDataObject with a different name + class WXDLLEXPORT wxURLDataObject : public wxTextDataObject + { + public: + wxString GetURL() const { return GetText(); } + void SetURL(const wxString& url) { SetText(url); } + }; +#endif // __WXMSW__/!__WXMSW__ + +#endif // wxUSE_DATAOBJ #endif // _WX_DATAOBJ_H_BASE_