]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataobj.h
Applied SetForegorund colour patch for GTK2.
[wxWidgets.git] / include / wx / dataobj.h
index 1d922a5c7279bc7309db2a54037cad9b1ca16848..085487c62f32db7d29fc2e8185687d75f8c6f499 100644 (file)
@@ -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_