X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9f5737d7937ba8feadea8d6c38b3f8a86bd57a1c..d8efd2198ff050ca5a5726bcad0f42692fe872df:/interface/wx/dataobj.h diff --git a/interface/wx/dataobj.h b/interface/wx/dataobj.h index 3ac50c970c..346d553bfa 100644 --- a/interface/wx/dataobj.h +++ b/interface/wx/dataobj.h @@ -80,7 +80,7 @@ public: object by pickling it first. @endWxPythonOnly */ - virtual void SetData(size_t size, const void data); + virtual bool SetData(size_t size, const void* data); /** Like SetData(), but doesn't copy the data - instead the object takes @@ -190,7 +190,7 @@ public: required and the data should be returned from the method as a string. @endWxPythonOnly */ - virtual bool GetDataHere(void buf) const; + virtual bool GetDataHere(void* buf) const; /** Gets the size of our data. Must be implemented in the derived class if @@ -214,7 +214,7 @@ public: string parameter rather than the two shown here. @endWxPythonOnly */ - virtual bool SetData(size_t len, const void buf); + virtual bool SetData(size_t len, const void* buf); /** Sets the supported format. @@ -275,6 +275,152 @@ public: +/** + @class wxURLDataObject + + wxURLDataObject is a wxDataObject containing an URL and can be used e.g. + when you need to put an URL on or retrieve it from the clipboard: + + @code + wxTheClipboard->SetData(new wxURLDataObject(url)); + @endcode + + @note This class is derived from wxDataObjectComposite on Windows rather + than wxTextDataObject on all other platforms. + + @library{wxcore} + @category{dnd} + + @see @ref overview_dnd, wxDataObject +*/ +class wxURLDataObject: public wxTextDataObject +{ +public: + /** + Constructor, may be used to initialize the URL. If @a url is empty, + SetURL() can be used later. + */ + wxURLDataObject(const wxString& url = wxEmptyString); + + /** + Returns the URL stored by this object, as a string. + */ + wxString GetURL() const; + + /** + Sets the URL stored by this object. + */ + void SetURL(const wxString& url); +}; + + +/** + @class wxTextDataObject + + wxTextDataObject is a specialization of wxDataObject for text data. It can + be used without change to paste data into the wxClipboard or a + wxDropSource. A user may wish to derive a new class from this class for + providing text on-demand in order to minimize memory consumption when + offering data in several formats, such as plain text and RTF because by + default the text is stored in a string in this class, but it might as well + be generated when requested. For this, GetTextLength() and GetText() will + have to be overridden. + + Note that if you already have the text inside a string, you will not + achieve any efficiency gain by overriding these functions because copying + wxStrings is already a very efficient operation (data is not actually + copied because wxStrings are reference counted). + + @beginWxPythonOnly + If you wish to create a derived wxTextDataObject class in wxPython you + should derive the class from wxPyTextDataObject in order to get + Python-aware capabilities for the various virtual methods. + @endWxPythonOnly + + @library{wxcore} + @category{dnd} + + @see @ref overview_dnd, wxDataObject, wxDataObjectSimple, wxFileDataObject, + wxBitmapDataObject +*/ +class wxTextDataObject : public wxDataObjectSimple +{ +public: + /** + Constructor, may be used to initialise the text (otherwise SetText() + should be used later). + */ + wxTextDataObject(const wxString& text = wxEmptyString); + + /** + Returns the text associated with the data object. You may wish to + override this method when offering data on-demand, but this is not + required by wxWidgets' internals. Use this method to get data in text + form from the wxClipboard. + */ + virtual wxString GetText() const; + + /** + Returns the data size. By default, returns the size of the text data + set in the constructor or using SetText(). This can be overridden to + provide text size data on-demand. It is recommended to return the text + length plus 1 for a trailing zero, but this is not strictly required. + */ + virtual size_t GetTextLength() const; + + /** + Sets the text associated with the data object. This method is called + when the data object receives the data and, by default, copies the text + into the member variable. If you want to process the text on the fly + you may wish to override this function. + */ + virtual void SetText(const wxString& strText); +}; + + + +/** + @class wxFileDataObject + + wxFileDataObject is a specialization of wxDataObject for file names. The + program works with it just as if it were a list of absolute file names, but + internally it uses the same format as Explorer and other compatible + programs under Windows or GNOME/KDE filemanager under Unix which makes it + possible to receive files from them using this class. + + @warning Under all non-Windows platforms this class is currently + "input-only", i.e. you can receive the files from another + application, but copying (or dragging) file(s) from a wxWidgets + application is not currently supported. PS: GTK2 should work as + well. + + @library{wxcore} + @category{dnd} + + @see wxDataObject, wxDataObjectSimple, wxTextDataObject, + wxBitmapDataObject, wxDataObject +*/ +class wxFileDataObject : public wxDataObjectSimple +{ +public: + /** + Constructor. + */ + wxFileDataObject(); + + /** + Adds a file to the file list represented by this data object (Windows only). + */ + void AddFile(const wxString& file); + + /** + Returns the array of file names. + */ + const wxArrayString& GetFilenames() const; +}; + + + /** @class wxDataFormat @@ -342,7 +488,7 @@ public: Constructs a data format object for a custom format identified by its name @a format. */ - wxDataFormat(const wxChar format); + wxDataFormat(const wxString& format); /** Returns the name of a custom format (this function will fail for a @@ -358,7 +504,7 @@ public: /** Sets the format to be the custom format identified by the given name. */ - void SetId(const wxChar format); + void SetId(const wxString& format); /** Sets the format to the given value, which should be one of wxDF_XXX @@ -369,52 +515,12 @@ public: /** Returns @true if the formats are different. */ - bool operator !=(const wxDataFormat& format) const; + bool operator !=(wxDataFormatId format) const; /** Returns @true if the formats are equal. */ - bool operator ==(const wxDataFormat& format) const; -}; - - - -/** - @class wxURLDataObject - - wxURLDataObject is a wxDataObject containing an URL and can be used e.g. - when you need to put an URL on or retrieve it from the clipboard: - - @code - wxTheClipboard->SetData(new wxURLDataObject(url)); - @endcode - - @note This class is derived from wxDataObjectComposite on Windows rather - than wxTextDataObject on all other platforms. - - @library{wxcore} - @category{dnd} - - @see @ref overview_dnd, wxDataObject -*/ -class wxURLDataObject: public wxTextDataObject -{ -public: - /** - Constructor, may be used to initialize the URL. If @a url is empty, - SetURL() can be used later. - */ - wxURLDataObject(const wxString& url = wxEmptyString); - - /** - Returns the URL stored by this object, as a string. - */ - wxString GetURL() const; - - /** - Sets the URL stored by this object. - */ - void SetURL(const wxString& url); + bool operator ==(wxDataFormatId format) const; }; @@ -441,6 +547,7 @@ public: { Get = 0x01, // format is supported by GetDataHere() Set = 0x02 // format is supported by SetData() + Both = 0x03 // format is supported by both (unused currently) }; @endcode @@ -535,6 +642,14 @@ public: class wxDataObject { public: + enum Direction + { + /** Format is supported by GetDataHere() */ + Get = 0x01, + /** Format is supported by SetData() */ + Set = 0x02, + }; + /** Constructor. */ @@ -551,7 +666,7 @@ public: in it. */ virtual void GetAllFormats(wxDataFormat* formats, - Direction dir = Get) const; + Direction dir = Get) const = 0; /** The method will write the data of the format @a format in the buffer @@ -583,115 +698,11 @@ public: @return @true on success, @false on failure. */ - virtual bool SetData(const wxDataFormat& format, size_t len, - const void* buf); -}; - - - -/** - @class wxTextDataObject - - wxTextDataObject is a specialization of wxDataObject for text data. It can - be used without change to paste data into the wxClipboard or a - wxDropSource. A user may wish to derive a new class from this class for - providing text on-demand in order to minimize memory consumption when - offering data in several formats, such as plain text and RTF because by - default the text is stored in a string in this class, but it might as well - be generated when requested. For this, GetTextLength() and GetText() will - have to be overridden. - - Note that if you already have the text inside a string, you will not - achieve any efficiency gain by overriding these functions because copying - wxStrings is already a very efficient operation (data is not actually - copied because wxStrings are reference counted). - - @beginWxPythonOnly - If you wish to create a derived wxTextDataObject class in wxPython you - should derive the class from wxPyTextDataObject in order to get - Python-aware capabilities for the various virtual methods. - @endWxPythonOnly - - @library{wxcore} - @category{dnd} - - @see @ref overview_dnd, wxDataObject, wxDataObjectSimple, wxFileDataObject, - wxBitmapDataObject -*/ -class wxTextDataObject : public wxDataObjectSimple -{ -public: - /** - Constructor, may be used to initialise the text (otherwise SetText() - should be used later). - */ - wxTextDataObject(const wxString& text = wxEmptyString); + virtual bool SetData(const wxDataFormat& format, size_t len, const void* buf); /** - Returns the text associated with the data object. You may wish to - override this method when offering data on-demand, but this is not - required by wxWidgets' internals. Use this method to get data in text - form from the wxClipboard. + Returns true if this format is supported. */ - virtual wxString GetText() const; - - /** - Returns the data size. By default, returns the size of the text data - set in the constructor or using SetText(). This can be overridden to - provide text size data on-demand. It is recommended to return the text - length plus 1 for a trailing zero, but this is not strictly required. - */ - virtual size_t GetTextLength() const; - - /** - Sets the text associated with the data object. This method is called - when the data object receives the data and, by default, copies the text - into the member variable. If you want to process the text on the fly - you may wish to override this function. - */ - virtual void SetText(const wxString& strText); -}; - - - -/** - @class wxFileDataObject - - wxFileDataObject is a specialization of wxDataObject for file names. The - program works with it just as if it were a list of absolute file names, but - internally it uses the same format as Explorer and other compatible - programs under Windows or GNOME/KDE filemanager under Unix which makes it - possible to receive files from them using this class. - - @warning Under all non-Windows platforms this class is currently - "input-only", i.e. you can receive the files from another - application, but copying (or dragging) file(s) from a wxWidgets - application is not currently supported. PS: GTK2 should work as - well. - - @library{wxcore} - @category{dnd} - - @see wxDataObject, wxDataObjectSimple, wxTextDataObject, - wxBitmapDataObject, wxDataObject -*/ -class wxFileDataObject : public wxDataObjectSimple -{ -public: - /** - Constructor. - */ - wxFileDataObject(); - - /** - Adds a file to the file list represented by this data object (Windows - only). - */ - void AddFile(const wxString& file); - - /** - Returns the array of file names. - */ - const wxArrayString& GetFilenames() const; + bool IsSupported(const wxDataFormat& format, Direction dir = Get) const; };