]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataobj.h
correct the signature of the overriden Reparent()
[wxWidgets.git] / include / wx / dataobj.h
index 958db8d70620912b24101370c141c8c969eed16a..f7923c0b6519cc1d2829b457beb3b7208d386927 100644 (file)
@@ -5,17 +5,13 @@
 // Modified by:
 // Created:     26.05.99
 // RCS-ID:      $Id$
 // Modified by:
 // Created:     26.05.99
 // RCS-ID:      $Id$
-// Copyright:   (c) wxWindows Team
+// Copyright:   (c) wxWidgets Team
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_DATAOBJ_H_BASE_
 #define _WX_DATAOBJ_H_BASE_
 
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_DATAOBJ_H_BASE_
 #define _WX_DATAOBJ_H_BASE_
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma interface "dataobjbase.h"
-#endif
-
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
@@ -59,7 +55,7 @@ public:
     typedef <integral type> NativeFormat;
 
     wxDataFormat(NativeFormat format = wxDF_INVALID);
     typedef <integral type> NativeFormat;
 
     wxDataFormat(NativeFormat format = wxDF_INVALID);
-    wxDataFormat(const wxChar *format);
+    wxDataFormat(const wxString& format);
 
     wxDataFormat& operator=(NativeFormat format);
     wxDataFormat& operator=(const wxDataFormat& format);
 
     wxDataFormat& operator=(NativeFormat format);
     wxDataFormat& operator=(const wxDataFormat& format);
@@ -71,7 +67,7 @@ public:
     NativeFormat GetType() const;
 
     wxString GetId() const;
     NativeFormat GetType() const;
 
     wxString GetId() const;
-    void SetId(const wxChar *format);
+    void SetId(const wxString& format);
 };
 
 */
 };
 
 */
@@ -80,8 +76,10 @@ public:
     #include "wx/msw/ole/dataform.h"
 #elif defined(__WXMOTIF__)
     #include "wx/motif/dataform.h"
     #include "wx/msw/ole/dataform.h"
 #elif defined(__WXMOTIF__)
     #include "wx/motif/dataform.h"
-#elif defined(__WXGTK__)
+#elif defined(__WXGTK20__)
     #include "wx/gtk/dataform.h"
     #include "wx/gtk/dataform.h"
+#elif defined(__WXGTK__)
+    #include "wx/gtk1/dataform.h"
 #elif defined(__WXX11__)
     #include "wx/x11/dataform.h"
 #elif defined(__WXMAC__)
 #elif defined(__WXX11__)
     #include "wx/x11/dataform.h"
 #elif defined(__WXMAC__)
@@ -94,7 +92,7 @@ public:
 
 // the value for default argument to some functions (corresponds to
 // wxDF_INVALID)
 
 // the value for default argument to some functions (corresponds to
 // wxDF_INVALID)
-extern WXDLLEXPORT const wxDataFormat& wxFormatInvalid;
+extern WXDLLIMPEXP_CORE const wxDataFormat& wxFormatInvalid;
 
 // ----------------------------------------------------------------------------
 // wxDataObject represents a piece of data which knows which formats it
 
 // ----------------------------------------------------------------------------
 // wxDataObject represents a piece of data which knows which formats it
@@ -116,7 +114,7 @@ extern WXDLLEXPORT const wxDataFormat& wxFormatInvalid;
 // to be supported by SetData() or GetDataHere().
 // ----------------------------------------------------------------------------
 
 // to be supported by SetData() or GetDataHere().
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDataObjectBase
+class WXDLLIMPEXP_CORE wxDataObjectBase
 {
 public:
     enum Direction
 {
 public:
     enum Direction
@@ -143,18 +141,18 @@ public:
     virtual size_t GetDataSize(const wxDataFormat& format) const = 0;
 
     // copy raw data (in the specified format) to the provided buffer, return
     virtual size_t GetDataSize(const wxDataFormat& format) const = 0;
 
     // copy raw data (in the specified format) to the provided buffer, return
-    // TRUE if data copied successfully, FALSE otherwise
+    // true if data copied successfully, false otherwise
     virtual bool GetDataHere(const wxDataFormat& format, void *buf) const = 0;
 
     // get data from the buffer of specified length (in the given format),
     virtual bool GetDataHere(const wxDataFormat& format, void *buf) const = 0;
 
     // get data from the buffer of specified length (in the given format),
-    // return TRUE if the data was read successfully, FALSE otherwise
+    // return true if the data was read successfully, false otherwise
     virtual bool SetData(const wxDataFormat& WXUNUSED(format),
                          size_t WXUNUSED(len), const void * WXUNUSED(buf))
     {
     virtual bool SetData(const wxDataFormat& WXUNUSED(format),
                          size_t WXUNUSED(len), const void * WXUNUSED(buf))
     {
-        return FALSE;
+        return false;
     }
 
     }
 
-    // returns TRUE if this format is supported
+    // returns true if this format is supported
     bool IsSupported(const wxDataFormat& format, Direction dir = Get) const;
 };
 
     bool IsSupported(const wxDataFormat& format, Direction dir = Get) const;
 };
 
@@ -168,8 +166,10 @@ public:
     #include "wx/motif/dataobj.h"
 #elif defined(__WXX11__)
     #include "wx/x11/dataobj.h"
     #include "wx/motif/dataobj.h"
 #elif defined(__WXX11__)
     #include "wx/x11/dataobj.h"
-#elif defined(__WXGTK__)
+#elif defined(__WXGTK20__)
     #include "wx/gtk/dataobj.h"
     #include "wx/gtk/dataobj.h"
+#elif defined(__WXGTK__)
+    #include "wx/gtk1/dataobj.h"
 #elif defined(__WXMAC__)
     #include "wx/mac/dataobj.h"
 #elif defined(__WXCOCOA__)
 #elif defined(__WXMAC__)
     #include "wx/mac/dataobj.h"
 #elif defined(__WXCOCOA__)
@@ -180,7 +180,7 @@ public:
 
 // ----------------------------------------------------------------------------
 // wxDataObjectSimple is a wxDataObject which only supports one format (in
 
 // ----------------------------------------------------------------------------
 // wxDataObjectSimple is a wxDataObject which only supports one format (in
-// both Get and Set directions, but you may return FALSE from GetDataHere() or
+// both Get and Set directions, but you may return false from GetDataHere() or
 // SetData() if one of them is not supported). This is the simplest possible
 // wxDataObject implementation.
 //
 // SetData() if one of them is not supported). This is the simplest possible
 // wxDataObject implementation.
 //
@@ -194,7 +194,7 @@ public:
 // Otherwise, you should use wxDataObjectComposite or wxDataObject directly.
 // ----------------------------------------------------------------------------
 
 // Otherwise, you should use wxDataObjectComposite or wxDataObject directly.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDataObjectSimple : public wxDataObject
+class WXDLLIMPEXP_CORE wxDataObjectSimple : public wxDataObject
 {
 public:
     // ctor takes the format we support, but it can also be set later with
 {
 public:
     // ctor takes the format we support, but it can also be set later with
@@ -218,11 +218,11 @@ public:
 
     // copy our data to the buffer
     virtual bool GetDataHere(void *WXUNUSED(buf)) const
 
     // copy our data to the buffer
     virtual bool GetDataHere(void *WXUNUSED(buf)) const
-        { return FALSE; }
+        { return false; }
 
     // copy data from buffer to our data
     virtual bool SetData(size_t WXUNUSED(len), const void *WXUNUSED(buf))
 
     // copy data from buffer to our data
     virtual bool SetData(size_t WXUNUSED(len), const void *WXUNUSED(buf))
-        { return FALSE; }
+        { return false; }
 
     // implement base class pure virtuals
     // ----------------------------------
 
     // implement base class pure virtuals
     // ----------------------------------
@@ -261,7 +261,7 @@ private:
 
 WX_DECLARE_EXPORTED_LIST(wxDataObjectSimple, wxSimpleDataObjectList);
 
 
 WX_DECLARE_EXPORTED_LIST(wxDataObjectSimple, wxSimpleDataObjectList);
 
-class WXDLLEXPORT wxDataObjectComposite : public wxDataObject
+class WXDLLIMPEXP_CORE wxDataObjectComposite : public wxDataObject
 {
 public:
     // ctor
 {
 public:
     // ctor
@@ -270,8 +270,14 @@ public:
 
     // add data object (it will be deleted by wxDataObjectComposite, hence it
     // must be allocated on the heap) whose format will become the preferred
 
     // add data object (it will be deleted by wxDataObjectComposite, hence it
     // must be allocated on the heap) whose format will become the preferred
-    // one if preferred == TRUE
-    void Add(wxDataObjectSimple *dataObject, bool preferred = FALSE);
+    // one if preferred == true
+    void Add(wxDataObjectSimple *dataObject, bool preferred = false);
+
+    // Report the format passed to the SetData method.  This should be the
+    // format of the data object within the composite that recieved data from
+    // the clipboard or the DnD operation.  You can use this method to find
+    // out what kind of data object was recieved.
+    wxDataFormat GetReceivedFormat() const;
 
     // implement base class pure virtuals
     // ----------------------------------
 
     // implement base class pure virtuals
     // ----------------------------------
@@ -281,10 +287,6 @@ public:
     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);
     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);
-
-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 );
 #if defined(__WXMSW__)
     virtual const void* GetSizeFromBuffer( const void* buffer, size_t* size,
                                            const wxDataFormat& format );
@@ -293,6 +295,10 @@ protected:
     virtual size_t GetBufferOffset( const wxDataFormat& format );
 #endif
 
     virtual size_t GetBufferOffset( const wxDataFormat& format );
 #endif
 
+protected:
+    // returns the pointer to the object which supports this format or NULL
+    wxDataObjectSimple *GetObject(const wxDataFormat& format) const;
+
 private:
     // the list of all (simple) data objects whose formats we support
     wxSimpleDataObjectList m_dataObjects;
 private:
     // the list of all (simple) data objects whose formats we support
     wxSimpleDataObjectList m_dataObjects;
@@ -301,6 +307,8 @@ private:
     // one is the preferred)
     size_t m_preferred;
 
     // one is the preferred)
     size_t m_preferred;
 
+    wxDataFormat m_receivedFormat;
+
     DECLARE_NO_COPY_CLASS(wxDataObjectComposite)
 };
 
     DECLARE_NO_COPY_CLASS(wxDataObjectComposite)
 };
 
@@ -316,13 +324,19 @@ private:
 // wxTextDataObject contains text data
 // ----------------------------------------------------------------------------
 
 // wxTextDataObject contains text data
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxTextDataObject : public wxDataObjectSimple
+class WXDLLIMPEXP_CORE wxTextDataObject : public wxDataObjectSimple
 {
 public:
     // ctor: you can specify the text here or in SetText(), or override
     // GetText()
     wxTextDataObject(const wxString& text = wxEmptyString)
 {
 public:
     // ctor: you can specify the text here or in SetText(), or override
     // GetText()
     wxTextDataObject(const wxString& text = wxEmptyString)
-        : wxDataObjectSimple(wxUSE_UNICODE?wxDF_UNICODETEXT:wxDF_TEXT),
+        : wxDataObjectSimple(
+#if wxUSE_UNICODE
+                             wxDF_UNICODETEXT
+#else
+                             wxDF_TEXT
+#endif
+                            ),
           m_text(text)
         {
         }
           m_text(text)
         {
         }
@@ -335,21 +349,42 @@ public:
 
     // implement base class pure virtuals
     // ----------------------------------
 
     // implement base class pure virtuals
     // ----------------------------------
+
+    // some platforms have 2 and not 1 format for text data
+#if wxUSE_UNICODE && (defined(__WXGTK20__) || defined(__WXMAC__))
+    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);
     virtual size_t GetDataSize() const;
     virtual bool GetDataHere(void *buf) const;
     virtual bool SetData(size_t len, const void *buf);
+    // Must provide overloads to avoid hiding them (and warnings about it)
+    virtual size_t GetDataSize(const wxDataFormat&) const
+    {
+        return GetDataSize();
+    }
+    virtual bool GetDataHere(const wxDataFormat&, void *buf) const
+    {
+        return GetDataHere(buf);
+    }
+    virtual bool SetData(const wxDataFormat&, size_t len, const void *buf)
+    {
+        return SetData(len, buf);
+    }
+#endif
 
 private:
     wxString m_text;
 
 
 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)); }
-
     DECLARE_NO_COPY_CLASS(wxTextDataObject)
 };
 
     DECLARE_NO_COPY_CLASS(wxTextDataObject)
 };
 
@@ -357,7 +392,7 @@ private:
 // wxBitmapDataObject contains a bitmap
 // ----------------------------------------------------------------------------
 
 // wxBitmapDataObject contains a bitmap
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxBitmapDataObjectBase : public wxDataObjectSimple
+class WXDLLIMPEXP_CORE wxBitmapDataObjectBase : public wxDataObjectSimple
 {
 public:
     // ctor: you can specify the bitmap here or in SetBitmap(), or override
 {
 public:
     // ctor: you can specify the bitmap here or in SetBitmap(), or override
@@ -385,7 +420,7 @@ protected:
 //     data from drag and drop operation.
 // ----------------------------------------------------------------------------
 
 //     data from drag and drop operation.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFileDataObjectBase : public wxDataObjectSimple
+class WXDLLIMPEXP_CORE wxFileDataObjectBase : public wxDataObjectSimple
 {
 public:
     // ctor: use AddFile() later to fill the array
 {
 public:
     // ctor: use AddFile() later to fill the array
@@ -394,20 +429,9 @@ public:
     // get a reference to our array
     const wxArrayString& GetFilenames() const { return m_filenames; }
 
     // get a reference to our array
     const wxArrayString& GetFilenames() const { return m_filenames; }
 
-    // the Get() functions do nothing for us
-    virtual size_t GetDataSize() const { return 0; }
-    virtual bool GetDataHere(void *WXUNUSED(buf)) const { return FALSE; }
-
 protected:
     wxArrayString m_filenames;
 
 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)); }
-
     DECLARE_NO_COPY_CLASS(wxFileDataObjectBase)
 };
 
     DECLARE_NO_COPY_CLASS(wxFileDataObjectBase)
 };
 
@@ -417,7 +441,7 @@ private:
 // It is understood that this data can be copied bitwise.
 // ----------------------------------------------------------------------------
 
 // It is understood that this data can be copied bitwise.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxCustomDataObject : public wxDataObjectSimple
+class WXDLLIMPEXP_CORE wxCustomDataObject : public wxDataObjectSimple
 {
 public:
     // if you don't specify the format in the ctor, you can still use
 {
 public:
     // if you don't specify the format in the ctor, you can still use
@@ -451,19 +475,24 @@ public:
     virtual size_t GetDataSize() const;
     virtual bool GetDataHere(void *buf) const;
     virtual bool SetData(size_t size, const void *buf);
     virtual size_t GetDataSize() const;
     virtual bool GetDataHere(void *buf) const;
     virtual bool SetData(size_t size, const void *buf);
+    // Must provide overloads to avoid hiding them (and warnings about it)
+    virtual size_t GetDataSize(const wxDataFormat&) const
+    {
+        return GetDataSize();
+    }
+    virtual bool GetDataHere(const wxDataFormat&, void *buf) const
+    {
+        return GetDataHere(buf);
+    }
+    virtual bool SetData(const wxDataFormat&, size_t len, const void *buf)
+    {
+        return SetData(len, buf);
+    }
 
 private:
     size_t m_size;
     void  *m_data;
 
 
 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)); }
-
     DECLARE_NO_COPY_CLASS(wxCustomDataObject)
 };
 
     DECLARE_NO_COPY_CLASS(wxCustomDataObject)
 };
 
@@ -473,11 +502,14 @@ private:
 
 #if defined(__WXMSW__)
     #include "wx/msw/ole/dataobj2.h"
 
 #if defined(__WXMSW__)
     #include "wx/msw/ole/dataobj2.h"
-
     // wxURLDataObject defined in msw/ole/dataobj2.h
     // wxURLDataObject defined in msw/ole/dataobj2.h
-#else // !__WXMSW__
+#elif defined(__WXGTK20__)
+    #include "wx/gtk/dataobj2.h"
+    // wxURLDataObject defined in msw/ole/dataobj2.h
+
+#else 
     #if defined(__WXGTK__)
     #if defined(__WXGTK__)
-        #include "wx/gtk/dataobj2.h"
+        #include "wx/gtk1/dataobj2.h"
     #elif defined(__WXX11__)
         #include "wx/x11/dataobj2.h"
     #elif defined(__WXMOTIF__)
     #elif defined(__WXX11__)
         #include "wx/x11/dataobj2.h"
     #elif defined(__WXMOTIF__)
@@ -491,13 +523,18 @@ private:
     #endif
 
     // wxURLDataObject is simply wxTextDataObject with a different name
     #endif
 
     // wxURLDataObject is simply wxTextDataObject with a different name
-    class WXDLLEXPORT wxURLDataObject : public wxTextDataObject
+    class WXDLLIMPEXP_CORE wxURLDataObject : public wxTextDataObject
     {
     public:
     {
     public:
+        wxURLDataObject(const wxString& url = wxEmptyString)
+            : wxTextDataObject(url)
+        {
+        }
+
         wxString GetURL() const { return GetText(); }
         void SetURL(const wxString& url) { SetText(url); }
     };
         wxString GetURL() const { return GetText(); }
         void SetURL(const wxString& url) { SetText(url); }
     };
-#endif // __WXMSW__/!__WXMSW__
+#endif
 
 #endif // wxUSE_DATAOBJ
 
 
 #endif // wxUSE_DATAOBJ