X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1dd989e1bf4c3667d27b3c27a9cf64a66484ee90..250b589f71b10fbb1457725897de20ea6d06a1ca:/include/wx/gtk/dataobj.h diff --git a/include/wx/gtk/dataobj.h b/include/wx/gtk/dataobj.h index 7a0d22c781..bd6783c977 100644 --- a/include/wx/gtk/dataobj.h +++ b/include/wx/gtk/dataobj.h @@ -1,253 +1,33 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.h -// Purpose: declaration of the wxDataObject class +// Name: gtk/dataobj.h +// Purpose: declaration of the wxDataObject // Author: Robert Roebling // RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling +// Copyright: (c) 1998, 1999 Vadim Zeitlin, Robert Roebling // Licence: wxWindows license /////////////////////////////////////////////////////////////////////////////// -#ifndef __GTKDATAOBJECTH__ -#define __GTKDATAOBJECTH__ +#ifndef _WX_GTK_DATAOBJ_H_ +#define _WX_GTK_DATAOBJ_H_ #ifdef __GNUG__ -#pragma interface + #pragma interface "dataobj.h" #endif -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/bitmap.h" +// ---------------------------------------------------------------------------- +// wxDataObject is the same as wxDataObjectBase under wxGTK +// ---------------------------------------------------------------------------- -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class wxDataFormat; -class wxDataBroker; -class wxDataObject; -class wxTextDataObject; -class wxBitmapDataObject; -class wxPrivateDataObject; -class wxFileDataObject; - -//------------------------------------------------------------------------- -// wxDataFormat -//------------------------------------------------------------------------- - -class wxDataFormat -{ -public: - // the clipboard formats under GDK are GdkAtoms - typedef GdkAtom NativeFormat; - - wxDataFormat(); - wxDataFormat( wxDataFormatId type ); - wxDataFormat( const wxString &id ); - wxDataFormat( const wxChar *id ); - wxDataFormat( NativeFormat format ); - - wxDataFormat& operator=(NativeFormat format) - { SetId(format); return *this; } - wxDataFormat& operator=(const wxDataFormat& format) - { SetId(format); return *this; } - - // comparison (must have both versions) - bool operator==(wxDataFormatId type) const - { return m_type == (wxDataFormatId)type; } - bool operator!=(wxDataFormatId type) const - { return m_type != (wxDataFormatId)type; } - bool operator==(NativeFormat format) const - { return m_format == (NativeFormat)format; } - bool operator!=(NativeFormat format) const - { return m_format != (NativeFormat)format; } - bool operator==(const wxDataFormat& format) const - { return m_format == format.m_format; } - bool operator!=(const wxDataFormat& format) const - { return m_format != format.m_format; } - - // explicit and implicit conversions to NativeFormat which is one of - // standard data types (implicit conversion is useful for preserving the - // compatibility with old code) - NativeFormat GetFormatId() const { return m_format; } - operator NativeFormat() const { return m_format; } - - // this only works with standard ids - void SetId( wxDataFormatId type ); - - // this only works with standard ids - void SetId( NativeFormat format ); - - // string ids are used for custom types - this SetId() must be used for - // application-specific formats - wxString GetId() const; - void SetId( const wxChar *id ); - - // implementation - wxDataFormatId GetType() const; - -private: - wxDataFormatId m_type; - NativeFormat m_format; - - void PrepareFormats(); - void SetType( wxDataFormatId type ); -}; - -//---------------------------------------------------------------------------- -// wxDataObject -//---------------------------------------------------------------------------- - -class wxDataObject : public wxObject +class wxDataObject : public wxDataObjectBase { public: wxDataObject(); - ~wxDataObject(); - - virtual wxDataFormat GetPreferredFormat() const = 0; - - // get the number of formats we support: it is understood that if we - // can accept data in some format, then we can render data in this - // format as well, but the contrary is not necessarily true. For the - // default value of the argument, all formats we support should be - // returned, but if outputOnlyToo == FALSE, then we should only return - // the formats which our SetData() understands - virtual size_t GetFormatCount(bool outputOnlyToo = TRUE) const - { return 1; } - - // return all formats in the provided array (of size GetFormatCount()) - virtual void GetAllFormats(wxDataFormat *formats, - bool outputOnlyToo = TRUE) const - { formats[0] = GetPreferredFormat(); } - - // get the (total) size of data for the given format - virtual size_t GetDataSize(const wxDataFormat& format) const = 0; - - // copy raw data (in the specified format) to provided pointer - virtual bool GetDataHere(const wxDataFormat& format, void *buf) const = 0; - - // get data from the buffer (in the given format) - virtual bool SetData(const wxDataFormat& format, const void *buf) = 0; - - // a simpler name which makes more sense for data objects supporting - // only one format - wxDataFormat GetFormat() const { return GetPreferredFormat(); } - - // old interface - // decide if we support this format (can be either standard or custom - // format) -- now uses GetAllFormats() - virtual bool IsSupportedFormat(const wxDataFormat& format) const; - -private: - DECLARE_DYNAMIC_CLASS( wxDataObject ) -}; - -//---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -//---------------------------------------------------------------------------- - -class wxTextDataObject : public wxDataObject -{ -public: - // ctors - wxTextDataObject(); - wxTextDataObject(const wxString& strText); - void Init(const wxString& strText) { m_strText = strText; } - - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_TEXT; } - virtual bool IsSupportedFormat(const wxDataFormat& format) const - { return format == wxDF_TEXT; } - - virtual size_t GetDataSize(const wxDataFormat& format) const; - virtual bool GetDataHere(const wxDataFormat& format, void *buf) const; - virtual bool SetData(const wxDataFormat& format, const void *buf); - - // additional helpers - void SetText(const wxString& strText) { m_strText = strText; } - wxString GetText() const { return m_strText; } - -private: - wxString m_strText; - -private: - DECLARE_DYNAMIC_CLASS( wxTextDataObject ) -}; - -//---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -//---------------------------------------------------------------------------- - -class wxFileDataObject : public wxDataObject -{ -public: - wxFileDataObject(); - - void AddFile( const wxString &file ); - wxString GetFiles() const; - - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_FILENAME; } - virtual bool IsSupportedFormat(const wxDataFormat& format) const - { return format == wxDF_FILENAME; } - - virtual size_t GetDataSize(const wxDataFormat& format) const; - virtual bool GetDataHere(const wxDataFormat& format, void *buf) const; - virtual bool SetData(const wxDataFormat& format, const void *buf); - -public: - wxString m_files; - -private: - DECLARE_DYNAMIC_CLASS( wxFileDataObject ) -}; - -//---------------------------------------------------------------------------- -// wxBitmapDataObject is a specialization of wxDataObject for bitmaps -//---------------------------------------------------------------------------- - -class wxBitmapDataObject : public wxDataObject -{ -public: - // ctors - wxBitmapDataObject(); - wxBitmapDataObject(const wxBitmap& bitmap); - - // destr - ~wxBitmapDataObject(); - - // set/get our bitmap - void SetBitmap(const wxBitmap& bitmap); - const wxBitmap GetBitmap() const { return m_bitmap; } - - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_BITMAP; } - virtual bool IsSupportedFormat(const wxDataFormat& format) const - { return format == wxDF_BITMAP; } - - virtual size_t GetDataSize(const wxDataFormat& format) const; - virtual bool GetDataHere(const wxDataFormat& format, void *buf) const; - - // sets PNG data - virtual bool SetData(const wxDataFormat& format, const void *buf); - - // sets PNG data - virtual void SetPngData(const void *buf, size_t size); - - void *GetData() - { return m_pngData; } +#ifdef __DARWIN__ + virtual ~wxDataObject() { } +#endif -private: - wxBitmap m_bitmap; - size_t m_pngSize; - void *m_pngData; - - void DoConvertToPng(); - -private: - DECLARE_DYNAMIC_CLASS( wxBitmapDataObject ); + virtual bool IsSupportedFormat( const wxDataFormat& format, Direction dir = Get ) const; }; -#endif - //__GTKDNDH__ +#endif // _WX_GTK_DATAOBJ_H_