| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        dataobj.h
 
- // Purpose:     interface of wx*DataObject
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxDataFormat
 
-     A wxDataFormat is an encapsulation of a platform-specific format handle
 
-     which is used by the system for the clipboard and drag and drop operations.
 
-     The applications are usually only interested in, for example, pasting data
 
-     from the clipboard only if the data is in a format the program understands
 
-     and a data format is something which uniquely identifies this format.
 
-     On the system level, a data format is usually just a number (@c CLIPFORMAT
 
-     under Windows or @c Atom under X11, for example) and the standard formats
 
-     are, indeed, just numbers which can be implicitly converted to wxDataFormat.
 
-     The standard formats are:
 
-     @beginDefList
 
-     @itemdef{wxDF_INVALID,
 
-              An invalid format - used as default argument for functions taking
 
-              a wxDataFormat argument sometimes.}
 
-     @itemdef{wxDF_TEXT,
 
-              Text format (wxString).}
 
-     @itemdef{wxDF_BITMAP,
 
-              A bitmap (wxBitmap).}
 
-     @itemdef{wxDF_METAFILE,
 
-              A metafile (wxMetafile, Windows only).}
 
-     @itemdef{wxDF_FILENAME,
 
-              A list of filenames.}
 
-     @itemdef{wxDF_HTML,
 
-              An HTML string. This is currently only valid on Mac and MSW.}
 
-     @endDefList
 
-     As mentioned above, these standard formats may be passed to any function
 
-     taking wxDataFormat argument because wxDataFormat has an implicit
 
-     conversion from them (or, to be precise from the type
 
-     @c wxDataFormat::NativeFormat which is the type used by the underlying
 
-     platform for data formats).
 
-     Aside the standard formats, the application may also use custom formats
 
-     which are identified by their names (strings) and not numeric identifiers.
 
-     Although internally custom format must be created (or @e registered) first,
 
-     you shouldn't care about it because it is done automatically the first time
 
-     the wxDataFormat object corresponding to a given format name is created.
 
-     The only implication of this is that you should avoid having global
 
-     wxDataFormat objects with non-default constructor because their
 
-     constructors are executed before the program has time to perform all
 
-     necessary initialisations and so an attempt to do clipboard format
 
-     registration at this time will usually lead to a crash!
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, @ref page_samples_dnd, wxDataObject
 
- */
 
- class wxDataFormat
 
- {
 
- public:
 
-     /**
 
-         Constructs a data format object for one of the standard data formats or
 
-         an empty data object (use SetType() or SetId() later in this case).
 
-         @beginWxPerlOnly
 
-         In wxPerl use Wx::Bitmap->newNative(format).
 
-         @endWxPerlOnly
 
-     */
 
-     wxDataFormat(wxDataFormatId format = wxDF_INVALID);
 
-     /**
 
-         Constructs a data format object for a custom format identified by its
 
-         name @a format.
 
-         @beginWxPerlOnly
 
-         In wxPerl use Wx::Bitmap->newUser(format).
 
-         @endWxPerlOnly
 
-     */
 
-     wxDataFormat(const wxString& format);
 
-     /**
 
-         Returns the name of a custom format (this function will fail for a
 
-         standard format).
 
-     */
 
-     wxString GetId() const;
 
-     /**
 
-         Returns the platform-specific number identifying the format.
 
-     */
 
-     wxDataFormatId GetType() const;
 
-     /**
 
-         Sets the format to be the custom format identified by the given name.
 
-     */
 
-     void SetId(const wxString& format);
 
-     /**
 
-         Sets the format to the given value, which should be one of wxDF_XXX
 
-         constants.
 
-     */
 
-     void SetType(wxDataFormatId type);
 
-     /**
 
-         Returns @true if the formats are different.
 
-     */
 
-     bool operator !=(const wxDataFormat& format) const;
 
-     /**
 
-         Returns @true if the formats are different.
 
-     */
 
-     bool operator !=(wxDataFormatId format) const;
 
-     /**
 
-         Returns @true if the formats are equal.
 
-     */
 
-     bool operator ==(const wxDataFormat& format) const;
 
-     /**
 
-         Returns @true if the formats are equal.
 
-     */
 
-     bool operator ==(wxDataFormatId format) const;
 
- };
 
- const wxDataFormat wxFormatInvalid;
 
- /**
 
-     @class wxDataObject
 
-     A wxDataObject represents data that can be copied to or from the clipboard,
 
-     or dragged and dropped. The important thing about wxDataObject is that this
 
-     is a 'smart' piece of data unlike 'dumb' data containers such as memory
 
-     buffers or files. Being 'smart' here means that the data object itself
 
-     should know what data formats it supports and how to render itself in each
 
-     of its supported formats.
 
-     A supported format, incidentally, is exactly the format in which the data
 
-     can be requested from a data object or from which the data object may be
 
-     set. In the general case, an object may support different formats on
 
-     'input' and 'output', i.e. it may be able to render itself in a given
 
-     format but not be created from data on this format or vice versa.
 
-     wxDataObject defines the wxDataObject::Direction enumeration type which
 
-     distinguishes between them.
 
-     See wxDataFormat documentation for more about formats.
 
-     Not surprisingly, being 'smart' comes at a price of added complexity. This
 
-     is reasonable for the situations when you really need to support multiple
 
-     formats, but may be annoying if you only want to do something simple like
 
-     cut and paste text.
 
-     To provide a solution for both cases, wxWidgets has two predefined classes
 
-     which derive from wxDataObject: wxDataObjectSimple and
 
-     wxDataObjectComposite. wxDataObjectSimple is the simplest wxDataObject
 
-     possible and only holds data in a single format (such as HTML or text) and
 
-     wxDataObjectComposite is the simplest way to implement a wxDataObject that
 
-     does support multiple formats because it achieves this by simply holding
 
-     several wxDataObjectSimple objects.
 
-     So, you have several solutions when you need a wxDataObject class (and you
 
-     need one as soon as you want to transfer data via the clipboard or drag and
 
-     drop):
 
-     -# Use one of the built-in classes.
 
-         - You may use wxTextDataObject, wxBitmapDataObject wxFileDataObject,
 
-           wxURLDataObject in the simplest cases when you only need to support
 
-           one format and your data is either text, bitmap or list of files.
 
-     -# Use wxDataObjectSimple
 
-         - Deriving from wxDataObjectSimple is the simplest solution for custom
 
-           data - you will only support one format and so probably won't be able
 
-           to communicate with other programs, but data transfer will work in
 
-           your program (or between different instances of it).
 
-     -# Use wxDataObjectComposite
 
-         - This is a simple but powerful solution which allows you to support
 
-           any number of formats (either standard or custom if you combine it
 
-           with the previous solution).
 
-     -# Use wxDataObject directly
 
-         - This is the solution for maximum flexibility and efficiency, but it
 
-           is also the most difficult to implement.
 
-     Please note that the easiest way to use drag and drop and the clipboard
 
-     with multiple formats is by using wxDataObjectComposite, but it is not the
 
-     most efficient one as each wxDataObjectSimple would contain the whole data
 
-     in its respective formats. Now imagine that you want to paste 200 pages of
 
-     text in your proprietary format, as well as Word, RTF, HTML, Unicode and
 
-     plain text to the clipboard and even today's computers are in trouble. For
 
-     this case, you will have to derive from wxDataObject directly and make it
 
-     enumerate its formats and provide the data in the requested format on
 
-     demand.
 
-     Note that neither the GTK+ data transfer mechanisms for clipboard and drag
 
-     and drop, nor OLE data transfer, @e copies any data until another application
 
-     actually requests the data. This is in contrast to the 'feel' offered to
 
-     the user of a program who would normally think that the data resides in the
 
-     clipboard after having pressed 'Copy' - in reality it is only declared to
 
-     be @e available.
 
-     You may also derive your own data object classes from wxCustomDataObject
 
-     for user-defined types. The format of user-defined data is given as a
 
-     mime-type string literal, such as "application/word" or "image/png". These
 
-     strings are used as they are under Unix (so far only GTK+) to identify a
 
-     format and are translated into their Windows equivalent under Win32 (using
 
-     the OLE IDataObject for data exchange to and from the clipboard and for
 
-     drag and drop). Note that the format string translation under Windows is
 
-     not yet finished.
 
-     Each class derived directly from wxDataObject must override and implement
 
-     all of its functions which are pure virtual in the base class. The data
 
-     objects which only render their data or only set it (i.e. work in only one
 
-     direction), should return 0 from GetFormatCount().
 
-     @beginWxPerlOnly
 
-     This class is not currently usable from wxPerl; you may use
 
-     Wx::PlDataObjectSimple instead.
 
-     @endWxPerlOnly
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, @ref page_samples_dnd, wxFileDataObject,
 
-          wxTextDataObject, wxBitmapDataObject, wxCustomDataObject,
 
-          wxDropTarget, wxDropSource, wxTextDropTarget, wxFileDropTarget
 
- */
 
- class wxDataObject
 
- {
 
- public:
 
-     enum Direction
 
-     {
 
-         /** Format is supported by GetDataHere() */
 
-         Get  = 0x01,
 
-         /** Format is supported by SetData() */
 
-         Set  = 0x02,
 
-         /**
 
-             Format is supported by both GetDataHere() and SetData()
 
-             (unused currently)
 
-          */
 
-         Both = 0x03
 
-     };
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxDataObject();
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxDataObject();
 
-     /**
 
-         Copies all formats supported in the given direction @a dir to the array
 
-         pointed to by @a formats.
 
-         There must be enough space for GetFormatCount(dir) formats in it.
 
-         @beginWxPerlOnly
 
-         In wxPerl this method only takes the @a dir parameter.  In scalar
 
-         context it returns the first format in the list, in list
 
-         context it returns a list containing all the supported
 
-         formats.
 
-         @endWxPerlOnly
 
-     */
 
-     virtual void GetAllFormats(wxDataFormat* formats,
 
-                                Direction dir = Get) const = 0;
 
-     /**
 
-         The method will write the data of the format @a format to the buffer
 
-         @a buf.  In other words, copy the data from this object in the given
 
-         format to the supplied buffer. Returns @true on success, @false on
 
-         failure.
 
-     */
 
-     virtual bool GetDataHere(const wxDataFormat& format, void* buf) const = 0;
 
-     /**
 
-         Returns the data size of the given format @a format.
 
-     */
 
-     virtual size_t GetDataSize(const wxDataFormat& format) const = 0;
 
-     /**
 
-         Returns the number of available formats for rendering or setting the
 
-         data.
 
-     */
 
-     virtual size_t GetFormatCount(Direction dir = Get) const = 0;
 
-     /**
 
-         Returns the preferred format for either rendering the data (if @a dir
 
-         is @c Get, its default value) or for setting it. Usually this will be
 
-         the native format of the wxDataObject.
 
-     */
 
-     virtual wxDataFormat GetPreferredFormat(Direction dir = Get) const = 0;
 
-     /**
 
-         Set the data in the format @a format of the length @a len provided in
 
-         the buffer @a buf.  In other words, copy length bytes of data from the
 
-         buffer to this data object.
 
-         @param format
 
-             The format for which to set the data.
 
-         @param len
 
-             The size of data in bytes.
 
-         @param buf
 
-             Non-@NULL pointer to the data.
 
-         @return
 
-             @true on success, @false on failure.
 
-     */
 
-     virtual bool SetData(const wxDataFormat& format, size_t len, const void* buf);
 
-     /**
 
-        Returns true if this format is supported.
 
-     */
 
-     bool IsSupported(const wxDataFormat& format, Direction dir = Get) const;
 
- };
 
- /**
 
-     @class wxCustomDataObject
 
-     wxCustomDataObject is a specialization of wxDataObjectSimple for some
 
-     application-specific data in arbitrary (either custom or one of the
 
-     standard ones). The only restriction is that it is supposed that this data
 
-     can be copied bitwise (i.e. with @c memcpy()), so it would be a bad idea to
 
-     make it contain a C++ object (though C struct is fine).
 
-     By default, wxCustomDataObject stores the data inside in a buffer. To put
 
-     the data into the buffer you may use either SetData() or TakeData()
 
-     depending on whether you want the object to make a copy of data or not.
 
-     This class may be used as is, but if you don't want store the data inside
 
-     the object but provide it on demand instead, you should override GetSize(),
 
-     GetData() and SetData() (or may be only the first two or only the last one
 
-     if you only allow reading/writing the data).
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see wxDataObject
 
- */
 
- class wxCustomDataObject : public wxDataObjectSimple
 
- {
 
- public:
 
-     /**
 
-         The constructor accepts a @a format argument which specifies the
 
-         (single) format supported by this object. If it isn't set here,
 
-         wxDataObjectSimple::SetFormat() should be used.
 
-     */
 
-     wxCustomDataObject(const wxDataFormat& format = wxFormatInvalid);
 
-     /**
 
-         The destructor will free the data held by the object. Notice that
 
-         although it calls the virtual Free() function, the base class version
 
-         will always be called (C++ doesn't allow calling virtual functions from
 
-         constructors or destructors), so if you override Free(), you should
 
-         override the destructor in your class as well (which would probably
 
-         just call the derived class' version of Free()).
 
-     */
 
-     virtual ~wxCustomDataObject();
 
-     /**
 
-         This function is called to allocate @a size bytes of memory from
 
-         SetData(). The default version just uses the operator new.
 
-     */
 
-     virtual void* Alloc(size_t size);
 
-     /**
 
-         This function is called when the data is freed, you may override it to
 
-         anything you want (or may be nothing at all). The default version calls
 
-         operator delete[] on the data.
 
-     */
 
-     virtual void Free();
 
-     /**
 
-         Returns a pointer to the data.
 
-     */
 
-     virtual void* GetData() const;
 
-     /**
 
-         Returns the data size in bytes.
 
-     */
 
-     virtual size_t GetSize() const;
 
-     /**
 
-         Set the data. The data object will make an internal copy.
 
-     */
 
-     virtual bool SetData(size_t size, const void* data);
 
-     /**
 
-         Like SetData(), but doesn't copy the data - instead the object takes
 
-         ownership of the pointer.
 
-     */
 
-     void TakeData(size_t size, void* data);
 
- };
 
- /**
 
-     @class wxDataObjectComposite
 
-     wxDataObjectComposite is the simplest wxDataObject derivation which may be
 
-     used to support multiple formats. It contains several wxDataObjectSimple
 
-     objects and supports any format supported by at least one of them. Only one
 
-     of these data objects is @e preferred (the first one if not explicitly
 
-     changed by using the second parameter of Add()) and its format determines
 
-     the preferred format of the composite data object as well.
 
-     See wxDataObject documentation for the reasons why you might prefer to use
 
-     wxDataObject directly instead of wxDataObjectComposite for efficiency
 
-     reasons.
 
-     This example shows how a composite data object capable of storing either
 
-     bitmaps or file names (presumably of bitmap files) can be initialized and
 
-     used:
 
-     @code
 
-     MyDropTarget::MyDropTarget()
 
-     {
 
-         wxDataObjectComposite* dataobj = new wxDataObjectComposite();
 
-         dataobj->Add(new wxBitmapDataObject(), true);
 
-         dataobj->Add(new wxFileDataObject());
 
-         SetDataObject(dataobj);
 
-     }
 
-     wxDragResult MyDropTarget::OnData(wxCoord x, wxCoord y,
 
-                                       wxDragResult defaultDragResult)
 
-     {
 
-         wxDragResult dragResult = wxDropTarget::OnData(x, y, defaultDragResult);
 
-         if ( dragResult == defaultDragResult )
 
-         {
 
-             wxDataObjectComposite *
 
-                 dataobjComp = static_cast<wxDataObjectComposite *>(GetDataObject());
 
-             wxDataFormat format = dataObjects->GetReceivedFormat();
 
-             wxDataObject *dataobj = dataobjComp->GetObject(format);
 
-             switch ( format.GetType() )
 
-             {
 
-                 case wxDF_BITMAP:
 
-                     {
 
-                         wxBitmapDataObject *
 
-                             dataobjBitmap = static_cast<wxBitmapDataObject *>(dataobj);
 
-                         ... use dataobj->GetBitmap() ...
 
-                     }
 
-                     break;
 
-                 case wxDF_FILENAME:
 
-                     {
 
-                         wxFileDataObject *
 
-                             dataobjFile = static_cast<wxFileDataObject *>(dataobj);
 
-                         ... use dataobj->GetFilenames() ...
 
-                     }
 
-                     break;
 
-                 default:
 
-                     wxFAIL_MSG( "unexpected data object format" );
 
-             }
 
-         }
 
-         return dragResult;
 
-     }
 
-     @endcode
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, wxDataObject, wxDataObjectSimple, wxFileDataObject,
 
-          wxTextDataObject, wxBitmapDataObject
 
- */
 
- class wxDataObjectComposite : public wxDataObject
 
- {
 
- public:
 
-     /**
 
-         The default constructor.
 
-     */
 
-     wxDataObjectComposite();
 
-     /**
 
-         Adds the @a dataObject to the list of supported objects and it becomes
 
-         the preferred object if @a preferred is @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 received data from
 
-         the clipboard or the DnD operation.  You can use this method to find
 
-         out what kind of data object was received.
 
-     */
 
-     wxDataFormat GetReceivedFormat() const;
 
-     /**
 
-         Returns the pointer to the object which supports the passed format for
 
-         the specified direction.
 
-         @NULL is returned if the specified @a format is not supported for this
 
-         direction @a dir. The returned pointer is owned by wxDataObjectComposite
 
-         itself and shouldn't be deleted by caller.
 
-         @since 2.9.1
 
-     */
 
-     wxDataObjectSimple *GetObject(const wxDataFormat& format,
 
-                                   wxDataObject::Direction dir = wxDataObject::Get) const;
 
- };
 
- /**
 
-     @class wxDataObjectSimple
 
-     This is the simplest possible implementation of the wxDataObject class.
 
-     The data object of (a class derived from) this class only supports
 
-     <strong>one format</strong>, so the number of virtual functions to
 
-     be implemented is reduced.
 
-     Notice that this is still an abstract base class and cannot be used
 
-     directly, it must be derived. The objects supporting rendering the data
 
-     must override GetDataSize() and GetDataHere() while the objects which may
 
-     be set must override SetData(). Of course, the objects supporting both
 
-     operations must override all three methods.
 
-     @beginWxPerlOnly
 
-     In wxPerl, you need to derive your data object class from
 
-     Wx::PlDataObjectSimple.
 
-     @endWxPerlOnly
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, @ref page_samples_dnd, wxFileDataObject,
 
-          wxTextDataObject, wxBitmapDataObject
 
- */
 
- class wxDataObjectSimple : public wxDataObject
 
- {
 
- public:
 
-     /**
 
-         Constructor accepts the supported format (none by default) which may
 
-         also be set later with SetFormat().
 
-     */
 
-     wxDataObjectSimple(const wxDataFormat& format = wxFormatInvalid);
 
-     /**
 
-         Copy the data to the buffer, return @true on success.
 
-         Must be implemented in the derived class if the object supports rendering
 
-         its data.
 
-     */
 
-     virtual bool GetDataHere(void* buf) const;
 
-     /**
 
-         Gets the size of our data. Must be implemented in the derived class if
 
-         the object supports rendering its data.
 
-     */
 
-     virtual size_t GetDataSize() const;
 
-     /**
 
-         Returns the (one and only one) format supported by this object.
 
-         It is assumed that the format is supported in both directions.
 
-     */
 
-     const wxDataFormat& GetFormat() const;
 
-     /**
 
-         Copy the data from the buffer, return @true on success.
 
-         Must be implemented in the derived class if the object supports setting
 
-         its data.
 
-     */
 
-     virtual bool SetData(size_t len, const void* buf);
 
-     /**
 
-         Sets the supported format.
 
-     */
 
-     void SetFormat(const wxDataFormat& format);
 
- };
 
- /**
 
-     @class wxBitmapDataObject
 
-     wxBitmapDataObject is a specialization of wxDataObject for bitmap 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 a bitmap on-demand in order to minimize memory consumption when
 
-     offering data in several formats, such as a bitmap and GIF.
 
-     This class may be used as is, but GetBitmap() may be overridden to increase
 
-     efficiency.
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see @ref overview_dnd, wxDataObject, wxDataObjectSimple, wxFileDataObject,
 
-          wxTextDataObject, wxDataObject
 
- */
 
- class wxBitmapDataObject : public wxDataObjectSimple
 
- {
 
- public:
 
-     /**
 
-         Constructor, optionally passing a bitmap (otherwise use SetBitmap()
 
-         later).
 
-     */
 
-     wxBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap);
 
-     /**
 
-         Returns the bitmap 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 bitmap
 
-         form from the wxClipboard.
 
-     */
 
-     virtual wxBitmap GetBitmap() const;
 
-     /**
 
-         Sets the bitmap associated with the data object. This method is called
 
-         when the data object receives data. Usually there will be no reason to
 
-         override this function.
 
-     */
 
-     virtual void SetBitmap(const wxBitmap& bitmap);
 
- };
 
- /**
 
-     @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 wxDataObjectSimple 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).
 
-     @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;
 
-     /**
 
-         Returns 2 under wxMac and wxGTK, where text data coming from the
 
-         clipboard may be provided as ANSI (@c wxDF_TEXT) or as Unicode text
 
-         (@c wxDF_UNICODETEXT, but only when @c wxUSE_UNICODE==1).
 
-         Returns 1 under other platforms (e.g. wxMSW) or when building in ANSI mode
 
-         (@c wxUSE_UNICODE==0).
 
-     */
 
-     virtual size_t GetFormatCount(wxDataObject::Direction dir = wxDataObject::Get) const;
 
-     /**
 
-         Returns the preferred format supported by this object.
 
-         This is @c wxDF_TEXT or @c wxDF_UNICODETEXT depending on the platform
 
-         and from the build mode (i.e. from @c wxUSE_UNICODE).
 
-     */
 
-     const wxDataFormat& GetFormat() const;
 
-     /**
 
-         Returns all the formats supported by wxTextDataObject.
 
-         Under wxMac and wxGTK they are @c wxDF_TEXT and @c wxDF_UNICODETEXT,
 
-         under other ports returns only one of the two, depending on the build mode.
 
-     */
 
-     virtual void GetAllFormats(wxDataFormat* formats,
 
-                                wxDataObject::Direction dir = wxDataObject::Get) 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 wxHTMLDataObject
 
-     wxHTMLDataObject is used for working with HTML-formatted text.
 
-     
 
-     @library{wxcore}
 
-     @category{dnd}
 
-     @see wxDataObject, wxDataObjectSimple
 
- */
 
- class wxHTMLDataObject : public wxDataObjectSimple
 
- {
 
- public:
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxHTMLDataObject(const wxString& html = wxEmptyString);
 
-     /**
 
-         Returns the HTML string.
 
-     */
 
-     virtual wxString GetHTML() const;
 
-     
 
-     /**
 
-         Sets the HTML string.
 
-     */
 
-     virtual void SetHTML(const wxString& html);
 
- };
 
 
  |