X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e2896e5c8944c5f5227fa080e1b781c4a6f2600..b82186f0e7f3d3b6cf24f6ad12fda647dd9b4ec0:/include/wx/dataobj.h diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h index 572b4f12d2..923f297094 100644 --- a/include/wx/dataobj.h +++ b/include/wx/dataobj.h @@ -79,8 +79,16 @@ public: #include "wx/motif/dataform.h" #elif defined(__WXGTK__) #include "wx/gtk/dataform.h" +#elif defined(__WXMAC__) + #include "wx/mac/dataform.h" +#elif defined(__WXPM__) + #include "wx/os2/dataform.h" #endif +// the value for default argument to some functions (corresponds to +// wxDF_INVALID) +extern WXDLLEXPORT const wxDataFormat& wxFormatInvalid; + // ---------------------------------------------------------------------------- // wxDataObject represents a piece of data which knows which formats it // supports and knows how to render itself in each of them - GetDataHere(), @@ -133,11 +141,14 @@ public: // get data from the buffer of specified length (in the given format), // return TRUE if the data was read successfully, FALSE otherwise - virtual bool SetData(const wxDataFormat& format, - size_t len, const void *buf) + virtual bool SetData(const wxDataFormat& WXUNUSED(format), + size_t WXUNUSED(len), const void * WXUNUSED(buf)) { return FALSE; } + + // returns TRUE if this format is supported + bool IsSupported(const wxDataFormat& format, Direction dir = Get) const; }; // ---------------------------------------------------------------------------- @@ -150,12 +161,10 @@ public: #include "wx/motif/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(__WXPM__) - #include "wx/os2/dnd.h" + #include "wx/os2/dataobj.h" #elif defined(__WXSTUBS__) #include "wx/stubs/dnd.h" #endif @@ -181,7 +190,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 = wxDF_INVALID) + wxDataObjectSimple(const wxDataFormat& format = wxFormatInvalid) : m_format(format) { } @@ -203,17 +212,17 @@ public: { return FALSE; } // copy data from buffer to our data - virtual bool SetData(size_t len, const void *WXUNUSED(buf)) + virtual bool SetData(size_t WXUNUSED(len), const void *WXUNUSED(buf)) { return FALSE; } // implement base class pure virtuals // ---------------------------------- - virtual wxDataFormat GetPreferredFormat(Direction WXUNUSED(dir) = Get) const + virtual wxDataFormat GetPreferredFormat(wxDataObjectBase::Direction WXUNUSED(dir) = Get) const { return m_format; } - virtual size_t GetFormatCount(Direction WXUNUSED(dir) = Get) const + virtual size_t GetFormatCount(wxDataObjectBase::Direction WXUNUSED(dir) = Get) const { return 1; } virtual void GetAllFormats(wxDataFormat *formats, - Direction WXUNUSED(dir) = Get) const + wxDataObjectBase::Direction WXUNUSED(dir) = Get) const { *formats = m_format; } virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const { return GetDataSize(); } @@ -239,13 +248,13 @@ 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(); // add data object (it will be deleted by wxDataObjectComposite, hence it // must be allocated on the heap) whose format will become the preferred @@ -254,9 +263,9 @@ public: // implement base class pure virtuals // ---------------------------------- - virtual wxDataFormat GetPreferredFormat(Direction dir = Get) const; - virtual size_t GetFormatCount(Direction dir = Get) const; - virtual void GetAllFormats(wxDataFormat *formats, Direction dir = Get) const; + virtual wxDataFormat GetPreferredFormat(wxDataObjectBase::Direction dir = Get) const; + virtual size_t GetFormatCount(wxDataObjectBase::Direction dir = Get) const; + virtual void GetAllFormats(wxDataFormat *formats, wxDataObjectBase::Direction dir = Get) const; virtual size_t GetDataSize(const wxDataFormat& format) const; virtual bool GetDataHere(const wxDataFormat& format, void *buf) const; virtual bool SetData(const wxDataFormat& format, size_t len, const void *buf); @@ -264,6 +273,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 @@ -292,7 +308,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,6 +327,14 @@ public: private: wxString m_text; + + // 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)); } }; // ---------------------------------------------------------------------------- @@ -331,7 +356,7 @@ public: virtual wxBitmap GetBitmap() const { return m_bitmap; } virtual void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; } -private: +protected: wxBitmap m_bitmap; }; @@ -349,7 +374,7 @@ public: wxFileDataObjectBase() : wxDataObjectSimple(wxDF_FILENAME) { } // get a reference to our array - const wxArrayString& GetFilenames() { return m_filenames; } + const wxArrayString& GetFilenames() const { return m_filenames; } // the Get() functions do nothing for us virtual size_t GetDataSize() const { return 0; } @@ -357,6 +382,13 @@ public: protected: wxArrayString m_filenames; + +private: + // 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)); } }; // ---------------------------------------------------------------------------- @@ -370,7 +402,7 @@ class WXDLLEXPORT wxCustomDataObject : public wxDataObjectSimple public: // if you don't specify the format in the ctor, you can still use // SetFormat() later - wxCustomDataObject(const wxDataFormat& format = wxDF_INVALID); + wxCustomDataObject(const wxDataFormat& format = wxFormatInvalid); // the dtor calls Free() virtual ~wxCustomDataObject(); @@ -403,6 +435,14 @@ public: private: size_t m_size; void *m_data; + + // 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)); } }; // ---------------------------------------------------------------------------- @@ -411,10 +451,24 @@ private: #if defined(__WXMSW__) #include "wx/msw/ole/dataobj2.h" -#elif defined(__WXMOTIF__) - #include "wx/motif/dataobj2.h" -#elif defined(__WXGTK__) - #include "wx/gtk/dataobj2.h" -#endif + + // wxURLDataObject defined in msw/ole/dataobj2.h +#else // !__WXMSW__ + #if defined(__WXGTK__) + #include "wx/gtk/dataobj2.h" + #elif defined(__WXMAC__) + #include "wx/mac/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 // _WX_DATAOBJ_H_BASE_