wxDataObejct and related changes (won't compile right now)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -1,21 +1,128 @@
 | 
				
			|||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        wx/clipbrd.h
 | 
				
			||||||
 | 
					// Purpose:     wxClipboad class and clipboard functions
 | 
				
			||||||
 | 
					// Author:      Vadim Zeitlin
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19.10.99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) wxWindows Team
 | 
				
			||||||
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _WX_CLIPBRD_H_BASE_
 | 
					#ifndef _WX_CLIPBRD_H_BASE_
 | 
				
			||||||
#define _WX_CLIPBRD_H_BASE_
 | 
					#define _WX_CLIPBRD_H_BASE_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/defs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/object.h"
 | 
				
			||||||
 | 
					#include "wx/wxchar.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDataFormat;
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDataObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxClipboard represents the system clipboard. Normally, you should use
 | 
				
			||||||
 | 
					// wxTheClipboard which is a global pointer to the (unique) clipboard.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Clipboard can be used to copy data to/paste data from. It works together
 | 
				
			||||||
 | 
					// with wxDataObject.
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxClipboardBase : public wxObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // open the clipboard before Add/SetData() and GetData()
 | 
				
			||||||
 | 
					    virtual bool Open();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // close the clipboard after Add/SetData() and GetData()
 | 
				
			||||||
 | 
					    virtual void Close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // add to the clipboard data
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    // NB: the clipboard owns the pointer and will delete it, so data must be
 | 
				
			||||||
 | 
					    //     allocated on the heap
 | 
				
			||||||
 | 
					    virtual bool AddData( wxDataObject *data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // set the clipboard data, this is the same as Clear() followed by
 | 
				
			||||||
 | 
					    // AddData()
 | 
				
			||||||
 | 
					    virtual bool SetData( wxDataObject *data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ask if data in correct format is available
 | 
				
			||||||
 | 
					    virtual bool IsSupported( const wxDataFormat& format );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // fill data with data on the clipboard (if available)
 | 
				
			||||||
 | 
					    virtual bool GetData( wxDataObject& data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // clears wxTheClipboard and the system's clipboard if possible
 | 
				
			||||||
 | 
					    virtual void Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // flushes the clipboard: this means that the data which is currently on
 | 
				
			||||||
 | 
					    // clipboard will stay available even after the application exits (possibly
 | 
				
			||||||
 | 
					    // eating memory), otherwise the clipboard will be emptied on exit
 | 
				
			||||||
 | 
					    virtual bool Flush() { return FALSE; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // X11 has two clipboards which get selected by this call. Empty on MSW.
 | 
				
			||||||
 | 
					    virtual void UsePrimarySelection( bool WXUNUSED(primary) = FALSE ) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef WXWIN_COMPATIBILITY_2
 | 
				
			||||||
 | 
					    // deprecated version
 | 
				
			||||||
 | 
					    bool GetData(wxDataObject *data)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        wxCHECK_MSG(data, FALSE, wxT("NULL pointer in wxClipboard"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return GetData(*data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif // WXWIN_COMPATIBILITY_2
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// include platform-specific class declaration
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__WXMSW__)
 | 
					#if defined(__WXMSW__)
 | 
				
			||||||
#include "wx/msw/clipbrd.h"
 | 
					    #include "wx/msw/clipbrd.h"
 | 
				
			||||||
#elif defined(__WXMOTIF__)
 | 
					#elif defined(__WXMOTIF__)
 | 
				
			||||||
#include "wx/motif/clipbrd.h"
 | 
					    #include "wx/motif/clipbrd.h"
 | 
				
			||||||
#elif defined(__WXGTK__)
 | 
					#elif defined(__WXGTK__)
 | 
				
			||||||
#include "wx/gtk/clipbrd.h"
 | 
					    #include "wx/gtk/clipbrd.h"
 | 
				
			||||||
#elif defined(__WXQT__)
 | 
					#elif defined(__WXQT__)
 | 
				
			||||||
#include "wx/gtk/clipbrd.h"
 | 
					    #include "wx/gtk/clipbrd.h"
 | 
				
			||||||
#elif defined(__WXMAC__)
 | 
					#elif defined(__WXMAC__)
 | 
				
			||||||
#include "wx/mac/clipbrd.h"
 | 
					    #include "wx/mac/clipbrd.h"
 | 
				
			||||||
#elif defined(__WXPM__)
 | 
					#elif defined(__WXPM__)
 | 
				
			||||||
#include "wx/os2/clipbrd.h"
 | 
					    #include "wx/os2/clipbrd.h"
 | 
				
			||||||
#elif defined(__WXSTUBS__)
 | 
					#elif defined(__WXSTUBS__)
 | 
				
			||||||
#include "wx/stubs/clipbrd.h"
 | 
					    #include "wx/stubs/clipbrd.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
    // _WX_CLIPBRD_H_BASE_
 | 
					// globals
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// The global clipboard object
 | 
				
			||||||
 | 
					WXDLLEXPORT_DATA(extern wxClipboard *) wxTheClipboard;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxClipboardModule: module responsible for initializing the global clipboard
 | 
				
			||||||
 | 
					// object
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// NB: IMPLEMENT_DYNAMIC_CLASS() for it is in common/appcmn.cpp
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxClipboardModule : public wxModule
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    bool OnInit()
 | 
				
			||||||
 | 
					        { wxTheClipboard = new wxClipboard; }
 | 
				
			||||||
 | 
					    void OnExit()
 | 
				
			||||||
 | 
					        { delete wxTheClipboard; wxTheClipboard = (wxClipboard *)NULL; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    DECLARE_DYNAMIC_CLASS(wxClipboardModule)
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_CLIPBRD_H_BASE_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Name:        dataobj.h
 | 
					// Name:        wx/dataobj.h
 | 
				
			||||||
// Purpose:     common data object classes
 | 
					// Purpose:     common data object classes
 | 
				
			||||||
// Author:      Robert Roebling, Vadim Zeitlin
 | 
					// Author:      Vadim Zeitlin, Robert Roebling
 | 
				
			||||||
// Modified by:
 | 
					// Modified by:
 | 
				
			||||||
// Created:     26.05.99
 | 
					// Created:     26.05.99
 | 
				
			||||||
// RCS-ID:      $Id$
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
@@ -12,6 +12,135 @@
 | 
				
			|||||||
#ifndef _WX_DATAOBJ_H_BASE_
 | 
					#ifndef _WX_DATAOBJ_H_BASE_
 | 
				
			||||||
#define _WX_DATAOBJ_H_BASE_
 | 
					#define _WX_DATAOBJ_H_BASE_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __GNUG__
 | 
				
			||||||
 | 
					    #pragma interface "dataobjbase.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// headers
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/defs.h"
 | 
				
			||||||
 | 
					#include "wx/string.h"
 | 
				
			||||||
 | 
					#include "wx/bitmap.h"
 | 
				
			||||||
 | 
					#include "wx/list.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					   Generic data transfer related classes. The class hierarchy is as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                - wxDataObject-
 | 
				
			||||||
 | 
					                               /               \
 | 
				
			||||||
 | 
					                              /                 \
 | 
				
			||||||
 | 
					            wxDataObjectSimple                  wxDataObjectComposite
 | 
				
			||||||
 | 
					           /           |      \
 | 
				
			||||||
 | 
					          /            |       \
 | 
				
			||||||
 | 
					   wxTextDataObject    |     wxBitmapDataObject
 | 
				
			||||||
 | 
					                       |
 | 
				
			||||||
 | 
					               wxCustomDataObject
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDataFormat class is declared in platform-specific headers: it represents
 | 
				
			||||||
 | 
					// a format for data which may be either one of the standard ones (text,
 | 
				
			||||||
 | 
					// bitmap, ...) or a custom one which is then identified by a unique string.
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* the class interface looks like this (pseudo code):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDataFormat
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    typedef <integral type> NativeFormat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxDataFormat(NativeFormat format = wxDF_INVALID);
 | 
				
			||||||
 | 
					    wxDataFormat(const wxChar *format);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxDataFormat& operator=(NativeFormat format);
 | 
				
			||||||
 | 
					    wxDataFormat& operator=(const wxDataFormat& format);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool operator==(NativeFormat format) const;
 | 
				
			||||||
 | 
					    bool operator!=(NativeFormat format) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void SetType(NativeFormat format);
 | 
				
			||||||
 | 
					    NativeFormat GetType() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxString GetId() const;
 | 
				
			||||||
 | 
					    void SetId(const wxChar *format);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__WXMSW__)
 | 
				
			||||||
 | 
					    #include "wx/msw/ole/dataform.h"
 | 
				
			||||||
 | 
					#elif defined(__WXMOTIF__)
 | 
				
			||||||
 | 
					    #include "wx/motif/dataform.h"
 | 
				
			||||||
 | 
					#elif defined(__WXGTK__)
 | 
				
			||||||
 | 
					    #include "wx/gtk/dataform.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDataObject represents a piece of data which knows which formats it
 | 
				
			||||||
 | 
					// supports and knows how to render itself in each of them - GetDataHere(),
 | 
				
			||||||
 | 
					// and how to restore data from the buffer (SetData()).
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Although this class may be used directly (i.e. custom classes may be
 | 
				
			||||||
 | 
					// derived from it), in many cases it might be simpler to use either
 | 
				
			||||||
 | 
					// wxDataObjectSimple or wxDataObjectComposite classes.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// A data object may be "read only", i.e. support only GetData() functions or
 | 
				
			||||||
 | 
					// "read-write", i.e. support both GetData() and SetData() (in principle, it
 | 
				
			||||||
 | 
					// might be "write only" too, but this is rare). Moreover, it doesn't have to
 | 
				
			||||||
 | 
					// support the same formats in Get() and Set() directions: for example, a data
 | 
				
			||||||
 | 
					// object containing JPEG image might accept BMPs in GetData() because JPEG
 | 
				
			||||||
 | 
					// image may be easily transformed into BMP but not in SetData(). Accordingly,
 | 
				
			||||||
 | 
					// all methods dealing with formats take an additional "direction" argument
 | 
				
			||||||
 | 
					// which is either SET or GET and which tells the function if the format needs
 | 
				
			||||||
 | 
					// to be supported by SetData() or GetDataHere().
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDataObjectBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    enum Direction
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Get  = 0x01,    // format is supported by GetDataHere()
 | 
				
			||||||
 | 
					        Set  = 0x02,    // format is supported by SetData()
 | 
				
			||||||
 | 
					        Both = 0x03     // format is supported by both (unused currently)
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // this class is polymorphic, hence it needs a virtual dtor
 | 
				
			||||||
 | 
					    virtual ~wxDataObjectBase();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // get the best suited format for rendering our data
 | 
				
			||||||
 | 
					    virtual wxDataFormat GetPreferredFormat(Direction dir = Get) const = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // get the number of formats we support
 | 
				
			||||||
 | 
					    virtual size_t GetFormatCount(Direction dir = Get) const = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // return all formats in the provided array (of size GetFormatCount())
 | 
				
			||||||
 | 
					    virtual void GetAllFormats(wxDataFormat *formats,
 | 
				
			||||||
 | 
					                               Direction dir = Get) const = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 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 the provided buffer, return
 | 
				
			||||||
 | 
					    // 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),
 | 
				
			||||||
 | 
					    // return TRUE if the data was read successfully, FALSE otherwise
 | 
				
			||||||
 | 
					    virtual bool SetData(const wxDataFormat& format,
 | 
				
			||||||
 | 
					                         size_t len, const void *buf) = 0;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// include the platform-specific declarations of wxDataObject
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__WXMSW__)
 | 
					#if defined(__WXMSW__)
 | 
				
			||||||
    #include "wx/msw/ole/dataobj.h"
 | 
					    #include "wx/msw/ole/dataobj.h"
 | 
				
			||||||
#elif defined(__WXMOTIF__)
 | 
					#elif defined(__WXMOTIF__)
 | 
				
			||||||
@@ -28,71 +157,267 @@
 | 
				
			|||||||
    #include "wx/stubs/dnd.h"
 | 
					    #include "wx/stubs/dnd.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ---------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// wxPrivateDataObject is a specialization of wxDataObject for app specific
 | 
					// wxDataObjectSimple is a wxDataObject which only supports one format (in
 | 
				
			||||||
// data (of some given kind, derive directly from wxDataObject if you wish to
 | 
					// both Get and Set directions, but you may return FALSE from GetDataHere() or
 | 
				
			||||||
// efficiently support multiple formats)
 | 
					// SetData() if one of them is not supported). This is the simplest possible
 | 
				
			||||||
// ---------------------------------------------------------------------------
 | 
					// wxDataObject implementation.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This is still an "abstract base class" (although it doesn't have any pure
 | 
				
			||||||
 | 
					// virtual functions), to use it you should derive from it and implement
 | 
				
			||||||
 | 
					// GetDataSize(), GetDataHere() and SetData() functions because the base class
 | 
				
			||||||
 | 
					// versions don't do anything - they just return "not implemented".
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This class should be used when you provide data in only one format (no
 | 
				
			||||||
 | 
					// conversion to/from other formats), either a standard or a custom one.
 | 
				
			||||||
 | 
					// Otherwise, you should use wxDataObjectComposite or wxDataObject directly.
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WXDLLEXPORT wxPrivateDataObject : public wxDataObject
 | 
					class WXDLLEXPORT wxDataObjectSimple : public wxDataObject
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#if defined(__WXGTK__) || defined(__WXMOTIF__)
 | 
					 | 
				
			||||||
    DECLARE_CLASS( wxPrivateDataObject )
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    wxPrivateDataObject();
 | 
					    // ctor takes the format we support, but it can also be set later with
 | 
				
			||||||
    virtual ~wxPrivateDataObject() { Free(); }
 | 
					    // SetFormat()
 | 
				
			||||||
 | 
					    wxDataObjectSimple(const wxDataFormat& format = wxDF_INVALID)
 | 
				
			||||||
 | 
					        : m_format(format)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // get the format object - it is used to decide whether we support the
 | 
					    // get/set the format we support
 | 
				
			||||||
    // given output format or not
 | 
					    const wxDataFormat& GetFormat() const { return m_format; }
 | 
				
			||||||
    wxDataFormat& GetFormat() { return m_format; }
 | 
					    void SetFormat(const wxDataFormat& format) { m_format = format; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // set data. will make copy of the data
 | 
					    // virtual functions to override in derived class (the base class versions
 | 
				
			||||||
    void SetData( const void *data, size_t size );
 | 
					    // just return "not implemented")
 | 
				
			||||||
 | 
					    // -----------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // returns pointer to data
 | 
					    // get the size of our data
 | 
				
			||||||
    void *GetData() const { return m_data; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // get the size of the data
 | 
					 | 
				
			||||||
    virtual size_t GetSize() const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // copy data to the given buffer
 | 
					 | 
				
			||||||
    virtual void WriteData( void *dest ) const;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // these functions are provided for wxGTK compatibility, their usage is
 | 
					 | 
				
			||||||
    // deprecated - use GetFormat().SetId() instead
 | 
					 | 
				
			||||||
    void SetId( const wxString& id ) { m_format.SetId(id); }
 | 
					 | 
				
			||||||
    wxString GetId() const { return m_format.GetId(); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // implement the base class pure virtuals
 | 
					 | 
				
			||||||
    virtual wxDataFormat GetPreferredFormat() const
 | 
					 | 
				
			||||||
        { return m_format; }
 | 
					 | 
				
			||||||
    virtual bool IsSupportedFormat(wxDataFormat format) const
 | 
					 | 
				
			||||||
        { return m_format == format; }
 | 
					 | 
				
			||||||
    virtual size_t GetDataSize() const
 | 
					    virtual size_t GetDataSize() const
 | 
				
			||||||
        { return m_size; }
 | 
					        { return 0; }
 | 
				
			||||||
    virtual void GetDataHere(void *dest) const
 | 
					 | 
				
			||||||
        { WriteData(dest); }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // the function which really copies the data - called by WriteData() above
 | 
					    // copy our data to the buffer
 | 
				
			||||||
    // and uses GetSize() to get the size of the data
 | 
					    virtual bool GetDataHere(void *WXUNUSED(buf)) const
 | 
				
			||||||
    void WriteData( const void *data, void *dest ) const;
 | 
					        { return FALSE; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // copy data from buffer to our data
 | 
				
			||||||
 | 
					    virtual bool SetData(size_t len, const void *WXUNUSED(buf))
 | 
				
			||||||
 | 
					        { return FALSE; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
 | 
					    // ----------------------------------
 | 
				
			||||||
 | 
					    virtual wxDataFormat GetPreferredFormat(Direction WXUNUSED(dir) = Get) const
 | 
				
			||||||
 | 
					        { return m_format; }
 | 
				
			||||||
 | 
					    virtual size_t GetFormatCount(Direction WXUNUSED(dir) = Get) const
 | 
				
			||||||
 | 
					        { return 1; }
 | 
				
			||||||
 | 
					    virtual void GetAllFormats(wxDataFormat *formats,
 | 
				
			||||||
 | 
					                               Direction WXUNUSED(dir) = Get) const
 | 
				
			||||||
 | 
					        { *formats = m_format; }
 | 
				
			||||||
 | 
					    virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const
 | 
				
			||||||
 | 
					        { return GetDataSize(); }
 | 
				
			||||||
 | 
					    virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format),
 | 
				
			||||||
 | 
					                             void *buf) const
 | 
				
			||||||
 | 
					        { return GetDataHere(buf); }
 | 
				
			||||||
 | 
					    virtual bool SetData(const wxDataFormat& WXUNUSED(format),
 | 
				
			||||||
 | 
					                         size_t len, const void *buf)
 | 
				
			||||||
 | 
					        { return SetData(len, buf); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    // free the data
 | 
					    // the one and only format we support
 | 
				
			||||||
    void Free();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // the data
 | 
					 | 
				
			||||||
    size_t     m_size;
 | 
					 | 
				
			||||||
    void      *m_data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !defined(__WXMOTIF__)
 | 
					 | 
				
			||||||
    // the data format
 | 
					 | 
				
			||||||
    wxDataFormat m_format;
 | 
					    wxDataFormat m_format;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDataObjectComposite is the simplest way to implement wxDataObject
 | 
				
			||||||
 | 
					// supporting multiple formats. It contains several wxDataObjectSimple and
 | 
				
			||||||
 | 
					// supports all formats supported by any of them.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This class shouldn't be (normally) derived from, but may be used directly.
 | 
				
			||||||
 | 
					// If you need more flexibility than what it provides, you should probably use
 | 
				
			||||||
 | 
					// wxDataObject directly.
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WX_DECLARE_LIST(wxDataObjectSimple, wxSimpleDataObjectList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDataObjectComposite : public wxDataObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // ctor
 | 
				
			||||||
 | 
					    wxDataObjectComposite() { m_preferred = 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
 | 
					    // ----------------------------------
 | 
				
			||||||
 | 
					    virtual wxDataFormat GetPreferredFormat(Direction dir = Get) const;
 | 
				
			||||||
 | 
					    virtual size_t GetFormatCount(Direction dir = Get) const;
 | 
				
			||||||
 | 
					    virtual void GetAllFormats(wxDataFormat *formats, Direction dir = Get) const;
 | 
				
			||||||
 | 
					    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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    // the list of all (simple) data objects whose formats we support
 | 
				
			||||||
 | 
					    wxSimpleDataObjectList m_dataObjects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // the index of the preferred one (0 initially, so by default the first
 | 
				
			||||||
 | 
					    // one is the preferred)
 | 
				
			||||||
 | 
					    size_t m_preferred;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					// Standard implementations of wxDataObjectSimple which can be used directly
 | 
				
			||||||
 | 
					// (i.e. without having to derive from them) for standard data type transfers.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Note that although all of them can work with provided data, you can also
 | 
				
			||||||
 | 
					// override their virtual GetXXX() functions to only provide data on demand.
 | 
				
			||||||
 | 
					// ============================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxTextDataObject contains text data
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxTextDataObject : public wxDataObjectSimple
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					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)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // virtual functions which you may override if you want to provide text on
 | 
				
			||||||
 | 
					    // demand only - otherwise, the trivial default versions will be used
 | 
				
			||||||
 | 
					    virtual size_t GetTextLength() const { return m_text.Len() + 1; }
 | 
				
			||||||
 | 
					    virtual wxString GetText() const { return m_text; }
 | 
				
			||||||
 | 
					    virtual void SetText(const wxString& text) { m_text = text; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
 | 
					    // ----------------------------------
 | 
				
			||||||
 | 
					    virtual size_t GetDataSize() const;
 | 
				
			||||||
 | 
					    virtual bool GetDataHere(void *buf) const;
 | 
				
			||||||
 | 
					    virtual bool SetData(size_t len, const void *buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    wxString m_text;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxBitmapDataObject contains a bitmap
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxBitmapDataObjectBase : public wxDataObjectSimple
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // ctor: you can specify the bitmap here or in SetBitmap(), or override
 | 
				
			||||||
 | 
					    // GetBitmap()
 | 
				
			||||||
 | 
					    wxBitmapDataObjectBase(const wxBitmap& bitmap = wxNullBitmap)
 | 
				
			||||||
 | 
					        : wxDataObjectSimple(wxDF_BITMAP), m_bitmap(bitmap)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // virtual functions which you may override if you want to provide data on
 | 
				
			||||||
 | 
					    // demand only - otherwise, the trivial default versions will be used
 | 
				
			||||||
 | 
					    virtual wxBitmap GetBitmap() const { return m_bitmap; }
 | 
				
			||||||
 | 
					    virtual void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    wxBitmap m_bitmap;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxFileDataObject contains a list of filenames
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxFileDataObjectBase : public wxDataObjectSimple
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // ctor: you can specify the bitmap here or in SetBitmap(), or override
 | 
				
			||||||
 | 
					    // GetBitmap()
 | 
				
			||||||
 | 
					    wxFileDataObjectBase() : wxDataObjectSimple(wxDF_FILENAME) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // get a reference to our array - you may modify it (i.e. add/remove
 | 
				
			||||||
 | 
					    // filenames to it then)
 | 
				
			||||||
 | 
					    wxArrayString& GetFilenames() { return m_filenames; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // a helper function
 | 
				
			||||||
 | 
					    void AddFile(const wxString& filename) { m_filenames.Add(filename); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // virtual functions which you may override if you want to provide data on
 | 
				
			||||||
 | 
					    // demand only - otherwise, the trivial default versions will be used.
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    // they work with a NUL-separated string of filenames, the base class
 | 
				
			||||||
 | 
					    // versions concatenate/extract filenames from this string
 | 
				
			||||||
 | 
					    virtual wxString GetFilenames() const;
 | 
				
			||||||
 | 
					    virtual void SetFilenames(const wxChar* filenames);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    wxArrayString m_filenames;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxCustomDataObject contains arbitrary untyped user data.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// It is understood that this data can be copied bitwise.
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxCustomDataObject : public wxDataObjectSimple
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // if you don't specify the format in the ctor, you can still use
 | 
				
			||||||
 | 
					    // SetFormat() later
 | 
				
			||||||
 | 
					    wxCustomDataObject(const wxDataFormat& format = wxDF_INVALID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // the dtor calls Free()
 | 
				
			||||||
 | 
					    virtual ~wxCustomDataObject();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // you can call SetData() to set m_data: it will make a copy of the data
 | 
				
			||||||
 | 
					    // you pass - or you can use TakeData() which won't copy anything, but
 | 
				
			||||||
 | 
					    // will take ownership of data (i.e. will call Free() on it later)
 | 
				
			||||||
 | 
					    void TakeData(size_t size, void *data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // this function is called to allocate "size" bytes of memory from
 | 
				
			||||||
 | 
					    // SetData(). The default version uses 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 m_data
 | 
				
			||||||
 | 
					    virtual void Free();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // get data: you may override these functions if you wish to provide data
 | 
				
			||||||
 | 
					    // only when it's requested
 | 
				
			||||||
 | 
					    virtual size_t GetSize() const { return m_size; }
 | 
				
			||||||
 | 
					    virtual void *GetData() const { return m_data; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implement base class pure virtuals
 | 
				
			||||||
 | 
					    // ----------------------------------
 | 
				
			||||||
 | 
					    virtual size_t GetDataSize() const;
 | 
				
			||||||
 | 
					    virtual bool GetDataHere(void *buf) const;
 | 
				
			||||||
 | 
					    virtual bool SetData(size_t size, const void *buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    size_t m_size;
 | 
				
			||||||
 | 
					    void  *m_data;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// include platform-specific declarations of wxXXXBase classes
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__WXMSW__)
 | 
				
			||||||
 | 
					    #include "wx/msw/ole/dataobj2.h"
 | 
				
			||||||
 | 
					#elif defined(__WXMOTIF__)
 | 
				
			||||||
 | 
					    #include "wx/motif/dataobj2.h"
 | 
				
			||||||
 | 
					#elif defined(__WXGTK__)
 | 
				
			||||||
 | 
					    #include "wx/gtk/dataobj2.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    // _WX_DATAOBJ_H_BASE_
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_DATAOBJ_H_BASE_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1244,6 +1244,7 @@ typedef enum
 | 
				
			|||||||
#define    wxTOOL_RIGHT       4
 | 
					#define    wxTOOL_RIGHT       4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// tyhe ids of standard data formats
 | 
				
			||||||
enum wxDataFormatId
 | 
					enum wxDataFormatId
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  wxDF_INVALID =          0,
 | 
					  wxDF_INVALID =          0,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										135
									
								
								include/wx/dnd.h
									
									
									
									
									
								
							
							
						
						
									
										135
									
								
								include/wx/dnd.h
									
									
									
									
									
								
							@@ -1,23 +1,136 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        wx/dnd.h
 | 
				
			||||||
 | 
					// Purpose:     Drag and drop classes declarations
 | 
				
			||||||
 | 
					// Author:      Vadim Zeitlin, Robert Roebling
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     26.05.99
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) wxWindows Team
 | 
				
			||||||
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef _WX_DND_H_BASE_
 | 
					#ifndef _WX_DND_H_BASE_
 | 
				
			||||||
#define _WX_DND_H_BASE_
 | 
					#define _WX_DND_H_BASE_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__WXMSW__)
 | 
					#include "wx/defs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if wxUSE_DRAG_AND_DROP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/dataobj.h"
 | 
					#include "wx/dataobj.h"
 | 
				
			||||||
#include "wx/msw/ole/dropsrc.h"
 | 
					
 | 
				
			||||||
#include "wx/msw/ole/droptgt.h"
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// constants
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// result of wxDropSource::DoDragDrop() call
 | 
				
			||||||
 | 
					enum wxDragResult
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    wxDragError,    // error prevented the d&d operation from completing
 | 
				
			||||||
 | 
					    wxDragNone,     // drag target didn't accept the data
 | 
				
			||||||
 | 
					    wxDragCopy,     // the data was successfully copied
 | 
				
			||||||
 | 
					    wxDragMove,     // the data was successfully moved (MSW only)
 | 
				
			||||||
 | 
					    wxDragCancel    // the operation was cancelled by user (not an error)
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDropSource is the object you need to create (and call DoDragDrop on it)
 | 
				
			||||||
 | 
					// to initiate a drag-and-drop operation
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDropSourceBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    wxDropSourceBase() { m_data = (wxDataObject *)NULL; }
 | 
				
			||||||
 | 
					    virtual ~wxDropSourceBase() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // set the data which is transfered by drag and drop
 | 
				
			||||||
 | 
					    void SetData(wxDataObject& data) { delete m_data; m_data = &data; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // start drag action, see enum wxDragResult for return value description
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
 | 
					    // if bAllowMove is TRUE, data can be moved, if not - only copied
 | 
				
			||||||
 | 
					    virtual wxDragResult DoDragDrop( bool bAllowMove = FALSE );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // override to give feedback depending on the current operation result
 | 
				
			||||||
 | 
					    // "effect"
 | 
				
			||||||
 | 
					    virtual bool GiveFeedback( wxDragResult WXUNUSED(effect),
 | 
				
			||||||
 | 
					                               bool WXUNUSED(bScrolling) )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return TRUE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    wxDataObject *m_data;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDropTarget should be associated with a window if it wants to be able to
 | 
				
			||||||
 | 
					// receive data via drag and drop
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDropTargetBase
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // ctor takes a pointer to heap-allocated wxDataObject which will be owned
 | 
				
			||||||
 | 
					    // by wxDropTarget and deleted by it automatically. If you don't give it
 | 
				
			||||||
 | 
					    // here, you can use SetDataObject() later.
 | 
				
			||||||
 | 
					    wxDropTargetBase(wxDataObject *dataObject = NULL)
 | 
				
			||||||
 | 
					        { m_dataObject = dataObject; }
 | 
				
			||||||
 | 
					    // dtor deletes our data object
 | 
				
			||||||
 | 
					    virtual ~wxDropTargetBase()
 | 
				
			||||||
 | 
					        { delete m_dataObject; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // get/set the associated wxDataObject
 | 
				
			||||||
 | 
					    wxDataObject *GetDataObject() const
 | 
				
			||||||
 | 
					        { return m_dataObject; }
 | 
				
			||||||
 | 
					    void SetDataObject(wxDataObject *dataObject)
 | 
				
			||||||
 | 
					        { delete m_dataObject; m_dataObject = dataObject; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // called when mouse enters/leaves the window: might be used to give
 | 
				
			||||||
 | 
					    // some visual feedback to the user
 | 
				
			||||||
 | 
					    virtual void OnEnter() { }
 | 
				
			||||||
 | 
					    virtual void OnLeave() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // this function is called when data is dropped at position (x, y) - if it
 | 
				
			||||||
 | 
					    // returns TRUE, OnData() will be called immediately afterwards which will
 | 
				
			||||||
 | 
					    // allow to retrieve the data dropped.
 | 
				
			||||||
 | 
					    virtual bool OnDrop(wxCoord x, wxCoord y) = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // called after OnDrop() returns TRUE: you will usually just call
 | 
				
			||||||
 | 
					    // GetData() from here and, probably, also refresh something to update the
 | 
				
			||||||
 | 
					    // new data
 | 
				
			||||||
 | 
					    virtual bool OnData() = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // may be called *only* from inside OnData() and will fill m_dataObject
 | 
				
			||||||
 | 
					    // with the data from the drop source if it returns TRUE
 | 
				
			||||||
 | 
					    virtual bool GetData() = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    wxDataObject *m_dataObject;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// include platform dependent class declarations
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(__WXMSW__)
 | 
				
			||||||
 | 
					    #include "wx/dataobj.h"
 | 
				
			||||||
 | 
					    #include "wx/msw/ole/dropsrc.h"
 | 
				
			||||||
 | 
					    #include "wx/msw/ole/droptgt.h"
 | 
				
			||||||
#elif defined(__WXMOTIF__)
 | 
					#elif defined(__WXMOTIF__)
 | 
				
			||||||
#include "wx/motif/dnd.h"
 | 
					    #include "wx/motif/dnd.h"
 | 
				
			||||||
#elif defined(__WXGTK__)
 | 
					#elif defined(__WXGTK__)
 | 
				
			||||||
#include "wx/gtk/dnd.h"
 | 
					    #include "wx/gtk/dnd.h"
 | 
				
			||||||
#elif defined(__WXQT__)
 | 
					#elif defined(__WXQT__)
 | 
				
			||||||
#include "wx/qt/dnd.h"
 | 
					    #include "wx/qt/dnd.h"
 | 
				
			||||||
#elif defined(__WXMAC__)
 | 
					#elif defined(__WXMAC__)
 | 
				
			||||||
#include "wx/mac/dnd.h"
 | 
					    #include "wx/mac/dnd.h"
 | 
				
			||||||
#elif defined(__WXPM__)
 | 
					#elif defined(__WXPM__)
 | 
				
			||||||
#include "wx/os2/dnd.h"
 | 
					    #include "wx/os2/dnd.h"
 | 
				
			||||||
#elif defined(__WXSTUBS__)
 | 
					#elif defined(__WXSTUBS__)
 | 
				
			||||||
#include "wx/stubs/dnd.h"
 | 
					    #include "wx/stubs/dnd.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif // wxUSE_DRAG_AND_DROP
 | 
				
			||||||
    // _WX_DND_H_BASE_
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_DND_H_BASE_
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,6 @@
 | 
				
			|||||||
#pragma interface
 | 
					#pragma interface
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/defs.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if wxUSE_CLIPBOARD
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/object.h"
 | 
					#include "wx/object.h"
 | 
				
			||||||
@@ -25,24 +23,11 @@
 | 
				
			|||||||
#include "wx/control.h"
 | 
					#include "wx/control.h"
 | 
				
			||||||
#include "wx/module.h"
 | 
					#include "wx/module.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// classes
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxClipboard;
 | 
					 | 
				
			||||||
class wxClipboardModule;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// global data
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern wxClipboard* wxTheClipboard;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboard
 | 
					// wxClipboard
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class wxClipboard : public wxObject
 | 
					class wxClipboard : public wxClipboardBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    wxClipboard();
 | 
					    wxClipboard();
 | 
				
			||||||
@@ -61,22 +46,20 @@ public:
 | 
				
			|||||||
    virtual bool AddData( wxDataObject *data );
 | 
					    virtual bool AddData( wxDataObject *data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ask if data in correct format is available
 | 
					    // ask if data in correct format is available
 | 
				
			||||||
    virtual bool IsSupported( wxDataFormat format );
 | 
					    virtual bool IsSupported( const wxDataFormat& format );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // fill data with data on the clipboard (if available)
 | 
					    // fill data with data on the clipboard (if available)
 | 
				
			||||||
    virtual bool GetData( wxDataObject *data );
 | 
					    virtual bool GetData( wxDataObject& data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // clears wxTheClipboard and the system's clipboard if possible
 | 
					    // clears wxTheClipboard and the system's clipboard if possible
 | 
				
			||||||
    virtual void Clear();
 | 
					    virtual void Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // flushes the clipboard: not available under GTK
 | 
					    // If primary == TRUE, use primary selection in all further ops,
 | 
				
			||||||
    virtual bool Flush() { return FALSE; }
 | 
					    // primary == FALSE resets it.
 | 
				
			||||||
 | 
					    virtual void UsePrimarySelection(bool primary = TRUE)
 | 
				
			||||||
 | 
					        { m_usePrimary = primary; }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /// If primary == TRUE, use primary selection in all further ops,
 | 
					    // implementation from now on
 | 
				
			||||||
    /// primary=FALSE resets it.
 | 
					 | 
				
			||||||
    inline void UsePrimarySelection(bool primary = TRUE) { m_usePrimary = primary; }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
  // implementation
 | 
					 | 
				
			||||||
    bool              m_open;
 | 
					    bool              m_open;
 | 
				
			||||||
    bool              m_ownsClipboard;
 | 
					    bool              m_ownsClipboard;
 | 
				
			||||||
    bool              m_ownsPrimarySelection;
 | 
					    bool              m_ownsPrimarySelection;
 | 
				
			||||||
@@ -95,23 +78,7 @@ private:
 | 
				
			|||||||
    DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
					    DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxClipboardModule: public wxModule
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    wxClipboardModule() {}
 | 
					 | 
				
			||||||
    bool OnInit();
 | 
					 | 
				
			||||||
    void OnExit();
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS(wxClipboardModule)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
   // wxUSE_CLIPBOARD
 | 
					   // wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										60
									
								
								include/wx/gtk/dataform.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								include/wx/gtk/dataform.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        gtk/dataform.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of the wxDataFormat class
 | 
				
			||||||
 | 
					// Author:      Vadim Zeitlin
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19.10.99 (extracted from gtk/dataobj.h)
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 | 
				
			||||||
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_GTK_DATAFORM_H
 | 
				
			||||||
 | 
					#define _WX_GTK_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // comparison (must have both versions)
 | 
				
			||||||
 | 
					    bool operator==(NativeFormat format) const
 | 
				
			||||||
 | 
					        { return m_format == (NativeFormat)format; }
 | 
				
			||||||
 | 
					    bool operator!=(NativeFormat format) const
 | 
				
			||||||
 | 
					        { return m_format != (NativeFormat)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; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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 );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_GTK_DATAFORM_H
 | 
				
			||||||
@@ -1,255 +1,26 @@
 | 
				
			|||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Name:        dataobj.h
 | 
					// Name:        gtk/dataobj.h
 | 
				
			||||||
// Purpose:     declaration of the wxDataObject class
 | 
					// Purpose:     declaration of the wxDataObject
 | 
				
			||||||
// Author:      Robert Roebling
 | 
					// Author:      Robert Roebling
 | 
				
			||||||
// RCS-ID:      $Id$
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
// Copyright:   (c) 1998 Vadim Zeitlin, Robert Roebling
 | 
					// Copyright:   (c) 1998, 1999 Vadim Zeitlin, Robert Roebling
 | 
				
			||||||
// Licence:     wxWindows license
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __GTKDATAOBJECTH__
 | 
					#ifndef _WX_GTK_DATAOBJ_H_
 | 
				
			||||||
#define __GTKDATAOBJECTH__
 | 
					#define _WX_GTK_DATAOBJ_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __GNUG__
 | 
					#ifdef __GNUG__
 | 
				
			||||||
#pragma interface
 | 
					    #pragma interface "dataobj.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/defs.h"
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
#include "wx/object.h"
 | 
					// wxDataObject is the same as wxDataObjectBase under wxGTK
 | 
				
			||||||
#include "wx/string.h"
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
#include "wx/bitmap.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					class wxDataObject : public wxDataObjectBase
 | 
				
			||||||
// 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 );
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//----------------------------------------------------------------------------
 | 
					#endif // _WX_GTK_DATAOBJ_H_
 | 
				
			||||||
// wxDataObject
 | 
					 | 
				
			||||||
//----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxDataObject : public wxObject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
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 );
 | 
					 | 
				
			||||||
    void SetFiles( const wxString &files )
 | 
					 | 
				
			||||||
        { m_files = files; }
 | 
					 | 
				
			||||||
    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; }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
private: 
 | 
					 | 
				
			||||||
    wxBitmap    m_bitmap;
 | 
					 | 
				
			||||||
    size_t      m_pngSize;
 | 
					 | 
				
			||||||
    void       *m_pngData;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    void DoConvertToPng();
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
private: 
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS( wxBitmapDataObject );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
       //__GTKDNDH__
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,8 +15,6 @@
 | 
				
			|||||||
#pragma interface
 | 
					#pragma interface
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/defs.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if wxUSE_CLIPBOARD
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/object.h"
 | 
					#include "wx/object.h"
 | 
				
			||||||
@@ -25,24 +23,11 @@
 | 
				
			|||||||
#include "wx/control.h"
 | 
					#include "wx/control.h"
 | 
				
			||||||
#include "wx/module.h"
 | 
					#include "wx/module.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// classes
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxClipboard;
 | 
					 | 
				
			||||||
class wxClipboardModule;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// global data
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extern wxClipboard* wxTheClipboard;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboard
 | 
					// wxClipboard
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class wxClipboard : public wxObject
 | 
					class wxClipboard : public wxClipboardBase
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    wxClipboard();
 | 
					    wxClipboard();
 | 
				
			||||||
@@ -61,22 +46,20 @@ public:
 | 
				
			|||||||
    virtual bool AddData( wxDataObject *data );
 | 
					    virtual bool AddData( wxDataObject *data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ask if data in correct format is available
 | 
					    // ask if data in correct format is available
 | 
				
			||||||
    virtual bool IsSupported( wxDataFormat format );
 | 
					    virtual bool IsSupported( const wxDataFormat& format );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // fill data with data on the clipboard (if available)
 | 
					    // fill data with data on the clipboard (if available)
 | 
				
			||||||
    virtual bool GetData( wxDataObject *data );
 | 
					    virtual bool GetData( wxDataObject& data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // clears wxTheClipboard and the system's clipboard if possible
 | 
					    // clears wxTheClipboard and the system's clipboard if possible
 | 
				
			||||||
    virtual void Clear();
 | 
					    virtual void Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // flushes the clipboard: not available under GTK
 | 
					    // If primary == TRUE, use primary selection in all further ops,
 | 
				
			||||||
    virtual bool Flush() { return FALSE; }
 | 
					    // primary == FALSE resets it.
 | 
				
			||||||
 | 
					    virtual void UsePrimarySelection(bool primary = TRUE)
 | 
				
			||||||
 | 
					        { m_usePrimary = primary; }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /// If primary == TRUE, use primary selection in all further ops,
 | 
					    // implementation from now on
 | 
				
			||||||
    /// primary=FALSE resets it.
 | 
					 | 
				
			||||||
    inline void UsePrimarySelection(bool primary = TRUE) { m_usePrimary = primary; }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
  // implementation
 | 
					 | 
				
			||||||
    bool              m_open;
 | 
					    bool              m_open;
 | 
				
			||||||
    bool              m_ownsClipboard;
 | 
					    bool              m_ownsClipboard;
 | 
				
			||||||
    bool              m_ownsPrimarySelection;
 | 
					    bool              m_ownsPrimarySelection;
 | 
				
			||||||
@@ -95,23 +78,7 @@ private:
 | 
				
			|||||||
    DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
					    DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxClipboardModule: public wxModule
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    wxClipboardModule() {}
 | 
					 | 
				
			||||||
    bool OnInit();
 | 
					 | 
				
			||||||
    void OnExit();
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS(wxClipboardModule)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
   // wxUSE_CLIPBOARD
 | 
					   // wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										60
									
								
								include/wx/gtk1/dataform.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								include/wx/gtk1/dataform.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        gtk/dataform.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of the wxDataFormat class
 | 
				
			||||||
 | 
					// Author:      Vadim Zeitlin
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19.10.99 (extracted from gtk/dataobj.h)
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 | 
				
			||||||
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_GTK_DATAFORM_H
 | 
				
			||||||
 | 
					#define _WX_GTK_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // comparison (must have both versions)
 | 
				
			||||||
 | 
					    bool operator==(NativeFormat format) const
 | 
				
			||||||
 | 
					        { return m_format == (NativeFormat)format; }
 | 
				
			||||||
 | 
					    bool operator!=(NativeFormat format) const
 | 
				
			||||||
 | 
					        { return m_format != (NativeFormat)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; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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 );
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_GTK_DATAFORM_H
 | 
				
			||||||
@@ -1,255 +1,26 @@
 | 
				
			|||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Name:        dataobj.h
 | 
					// Name:        gtk/dataobj.h
 | 
				
			||||||
// Purpose:     declaration of the wxDataObject class
 | 
					// Purpose:     declaration of the wxDataObject
 | 
				
			||||||
// Author:      Robert Roebling
 | 
					// Author:      Robert Roebling
 | 
				
			||||||
// RCS-ID:      $Id$
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
// Copyright:   (c) 1998 Vadim Zeitlin, Robert Roebling
 | 
					// Copyright:   (c) 1998, 1999 Vadim Zeitlin, Robert Roebling
 | 
				
			||||||
// Licence:     wxWindows license
 | 
					// Licence:     wxWindows license
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef __GTKDATAOBJECTH__
 | 
					#ifndef _WX_GTK_DATAOBJ_H_
 | 
				
			||||||
#define __GTKDATAOBJECTH__
 | 
					#define _WX_GTK_DATAOBJ_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __GNUG__
 | 
					#ifdef __GNUG__
 | 
				
			||||||
#pragma interface
 | 
					    #pragma interface "dataobj.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/defs.h"
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
#include "wx/object.h"
 | 
					// wxDataObject is the same as wxDataObjectBase under wxGTK
 | 
				
			||||||
#include "wx/string.h"
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
#include "wx/bitmap.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					class wxDataObject : public wxDataObjectBase
 | 
				
			||||||
// 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 );
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//----------------------------------------------------------------------------
 | 
					#endif // _WX_GTK_DATAOBJ_H_
 | 
				
			||||||
// wxDataObject
 | 
					 | 
				
			||||||
//----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxDataObject : public wxObject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
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 );
 | 
					 | 
				
			||||||
    void SetFiles( const wxString &files )
 | 
					 | 
				
			||||||
        { m_files = files; }
 | 
					 | 
				
			||||||
    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; }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
private: 
 | 
					 | 
				
			||||||
    wxBitmap    m_bitmap;
 | 
					 | 
				
			||||||
    size_t      m_pngSize;
 | 
					 | 
				
			||||||
    void       *m_pngData;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    void DoConvertToPng();
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
private: 
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS( wxBitmapDataObject );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
       //__GTKDNDH__
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,8 +19,6 @@
 | 
				
			|||||||
#pragma interface "clipbrd.h"
 | 
					#pragma interface "clipbrd.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/defs.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if wxUSE_CLIPBOARD
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/dataobj.h"
 | 
					#include "wx/dataobj.h"
 | 
				
			||||||
@@ -42,13 +40,9 @@ bool WXDLLEXPORT wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatN
 | 
				
			|||||||
// wxClipboard
 | 
					// wxClipboard
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					//-----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WXDLLEXPORT wxDataObject;
 | 
					class wxClipboard : public wxClipboardBase
 | 
				
			||||||
class WXDLLEXPORT wxClipboard: public wxObject
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxClipboard();
 | 
					    wxClipboard();
 | 
				
			||||||
    ~wxClipboard();
 | 
					    ~wxClipboard();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -71,105 +65,19 @@ public:
 | 
				
			|||||||
    // clears wxTheClipboard and the system's clipboard if possible
 | 
					    // clears wxTheClipboard and the system's clipboard if possible
 | 
				
			||||||
    virtual void Clear();
 | 
					    virtual void Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// If primary == TRUE, use primary selection in all further ops,
 | 
					    // implementation from now on
 | 
				
			||||||
  /// primary=FALSE resets it.
 | 
					 | 
				
			||||||
  inline void UsePrimarySelection(bool primary = TRUE) { m_usePrimary = primary; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 // implementation
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool              m_open;
 | 
					    bool              m_open;
 | 
				
			||||||
    wxList            m_data;
 | 
					    wxList            m_data;
 | 
				
			||||||
    bool              m_usePrimary;
 | 
					    bool              m_usePrimary;
 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* The clipboard */
 | 
					private:
 | 
				
			||||||
WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxClipboardModule: public wxModule
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  DECLARE_DYNAMIC_CLASS(wxClipboardModule)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    wxClipboardModule() {}
 | 
					 | 
				
			||||||
    bool OnInit();
 | 
					 | 
				
			||||||
    void OnExit();
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// This is the old, 1.68 implementation
 | 
					 | 
				
			||||||
#if 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* A clipboard client holds data belonging to the clipboard.
 | 
					 | 
				
			||||||
   For plain text, a client is not necessary. */
 | 
					 | 
				
			||||||
class WXDLLEXPORT wxClipboardClient : public wxObject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  DECLARE_ABSTRACT_CLASS(wxClipboardClient)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 public:
 | 
					 | 
				
			||||||
  /* This list should be filled in with strings indicating the formats
 | 
					 | 
				
			||||||
     this client can provide. Almost all clients will provide "TEXT".
 | 
					 | 
				
			||||||
     Format names should be 4 characters long, so things will work
 | 
					 | 
				
			||||||
     out on the Macintosh */
 | 
					 | 
				
			||||||
  wxStringList formats;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* This method is called when the client is losing the selection. */
 | 
					 | 
				
			||||||
  virtual void BeingReplaced() = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* This method is called when someone wants the data this client is
 | 
					 | 
				
			||||||
     supplying to the clipboard. "format" is a string indicating the
 | 
					 | 
				
			||||||
     format of the data - one of the strings from the "formats"
 | 
					 | 
				
			||||||
     list. "*size" should be filled with the size of the resulting
 | 
					 | 
				
			||||||
     data. In the case of text, "*size" does not count the
 | 
					 | 
				
			||||||
     NULL terminator. */
 | 
					 | 
				
			||||||
  virtual char *GetData(char *format, long *size) = 0;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* ONE instance of this class: */
 | 
					 | 
				
			||||||
class WXDLLEXPORT wxClipboard : public wxObject
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
					    DECLARE_DYNAMIC_CLASS(wxClipboard)
 | 
				
			||||||
 | 
					 | 
				
			||||||
 public:
 | 
					 | 
				
			||||||
  wxClipboardClient *clipOwner;
 | 
					 | 
				
			||||||
  char *cbString, *sentString, *receivedString;
 | 
					 | 
				
			||||||
  void *receivedTargets;
 | 
					 | 
				
			||||||
  long receivedLength;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  wxClipboard();
 | 
					 | 
				
			||||||
  ~wxClipboard();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Set the clipboard data owner. "time" comes from the event record. */
 | 
					 | 
				
			||||||
  void SetClipboardClient(wxClipboardClient *, long time);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Set the clipboard string; does not require a client. */
 | 
					 | 
				
			||||||
  void SetClipboardString(char *, long time);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Get data from the clipboard in the format "TEXT". */
 | 
					 | 
				
			||||||
  char *GetClipboardString(long time);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Get data from the clipboard */
 | 
					 | 
				
			||||||
  char *GetClipboardData(char *format, long *length, long time);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Get the clipboard client directly. Will be NULL if clipboard data
 | 
					 | 
				
			||||||
     is a string, or if some other application owns the clipboard.
 | 
					 | 
				
			||||||
     This can be useful for shortcutting data translation, if the
 | 
					 | 
				
			||||||
     clipboard user can check for a specific client. (This is used
 | 
					 | 
				
			||||||
     by the wxMediaEdit class.) */
 | 
					 | 
				
			||||||
  wxClipboardClient *GetClipboardClient();
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Initialize wxTheClipboard. Can be called repeatedly */
 | 
					 | 
				
			||||||
void WXDLLEXPORT wxInitClipboard();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* The clipboard */
 | 
					/* The clipboard */
 | 
				
			||||||
WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard;
 | 
					WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
  // Old clipboard class
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif // wxUSE_CLIPBOARD
 | 
					#endif // wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										54
									
								
								include/wx/motif/dataform.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								include/wx/motif/dataform.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        motif/dataform.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of the wxDataFormat class
 | 
				
			||||||
 | 
					// Author:      Vadim Zeitlin
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19.10.99 (extracted from motif/dataobj.h)
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 | 
				
			||||||
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _WX_MOTIF_DATAFORM_H
 | 
				
			||||||
 | 
					#define _WX_MOTIF_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class wxDataFormat
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    wxDataFormat();
 | 
				
			||||||
 | 
					    wxDataFormat( wxDataFormatId type );
 | 
				
			||||||
 | 
					    wxDataFormat( const wxString &id );
 | 
				
			||||||
 | 
					    wxDataFormat( const wxChar *id );
 | 
				
			||||||
 | 
					    wxDataFormat( const wxDataFormat &format );
 | 
				
			||||||
 | 
					    wxDataFormat( const Atom atom );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void SetType( wxDataFormatId type );
 | 
				
			||||||
 | 
					    wxDataFormatId GetType() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* the string Id identifies the format of clipboard or DnD data. a word
 | 
				
			||||||
 | 
					     * processor would e.g. add a wxTextDataObject and a wxPrivateDataObject
 | 
				
			||||||
 | 
					     * to the clipboard - the latter with the Id "application/wxword", an
 | 
				
			||||||
 | 
					     * image manipulation program would put a wxBitmapDataObject and a
 | 
				
			||||||
 | 
					     * wxPrivateDataObject to the clipboard - the latter with "image/png". */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxString GetId() const;
 | 
				
			||||||
 | 
					    void SetId( const wxChar *id );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Atom GetAtom();
 | 
				
			||||||
 | 
					    void SetAtom(Atom atom) { m_hasAtom = TRUE; m_atom = atom; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // implicit conversion to wxDataFormatId
 | 
				
			||||||
 | 
					    operator wxDataFormatId() const { return m_type; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool operator==(wxDataFormatId type) const { return m_type == type; }
 | 
				
			||||||
 | 
					    bool operator!=(wxDataFormatId type) const { return m_type != type; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    wxDataFormatId  m_type;
 | 
				
			||||||
 | 
					    wxString    m_id;
 | 
				
			||||||
 | 
					    bool        m_hasAtom;
 | 
				
			||||||
 | 
					    Atom        m_atom;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _WX_MOTIF_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
/////////////////////////////////////////////////////////////////////////////
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Name:        clipbrd.h
 | 
					// Name:        wx/msw/clipbrd.h
 | 
				
			||||||
// Purpose:     Clipboard functionality
 | 
					// Purpose:     wxClipboad class and clipboard functions for MSW
 | 
				
			||||||
// Author:      Julian Smart
 | 
					// Author:      Julian Smart
 | 
				
			||||||
// Modified by:
 | 
					// Modified by:
 | 
				
			||||||
// Created:     01/02/97
 | 
					// Created:     01/02/97
 | 
				
			||||||
@@ -16,9 +16,6 @@
 | 
				
			|||||||
#pragma interface "clipbrd.h"
 | 
					#pragma interface "clipbrd.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/defs.h"
 | 
					 | 
				
			||||||
#include "wx/setup.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if wxUSE_CLIPBOARD
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "wx/list.h"
 | 
					#include "wx/list.h"
 | 
				
			||||||
@@ -96,25 +93,6 @@ private:
 | 
				
			|||||||
    bool m_clearOnExit;
 | 
					    bool m_clearOnExit;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The global clipboard object
 | 
					 | 
				
			||||||
WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule: module responsible for initializing the global clipboard
 | 
					 | 
				
			||||||
// object
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class wxClipboardModule : public wxModule
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    DECLARE_DYNAMIC_CLASS(wxClipboardModule)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    wxClipboardModule() { }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bool OnInit();
 | 
					 | 
				
			||||||
    void OnExit();
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif // wxUSE_CLIPBOARD
 | 
					#endif // wxUSE_CLIPBOARD
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    // _WX_CLIPBRD_H_
 | 
					    // _WX_CLIPBRD_H_
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										68
									
								
								include/wx/msw/ole/dataform.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								include/wx/msw/ole/dataform.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
				
			|||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Name:        msw/ole/dataform.h
 | 
				
			||||||
 | 
					// Purpose:     declaration of the wxDataFormat class
 | 
				
			||||||
 | 
					// Author:      Vadim Zeitlin
 | 
				
			||||||
 | 
					// Modified by:
 | 
				
			||||||
 | 
					// Created:     19.10.99 (extracted from msw/ole/dataobj.h)
 | 
				
			||||||
 | 
					// RCS-ID:      $Id$
 | 
				
			||||||
 | 
					// Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 | 
				
			||||||
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef   _WX_MSW_OLE_DATAFORM_H
 | 
				
			||||||
 | 
					#define   _WX_MSW_OLE_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// wxDataFormat identifies the single format of data
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WXDLLEXPORT wxDataFormat
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    // the clipboard formats under Win32 are UINTs
 | 
				
			||||||
 | 
					    typedef unsigned int NativeFormat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxDataFormat(NativeFormat format = wxDF_INVALID) { m_format = format; }
 | 
				
			||||||
 | 
					    wxDataFormat(const wxChar *format) { SetId(format); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wxDataFormat& operator=(NativeFormat format)
 | 
				
			||||||
 | 
					        { m_format = format; return *this; }
 | 
				
			||||||
 | 
					    wxDataFormat& operator=(const wxDataFormat& format)
 | 
				
			||||||
 | 
					        { m_format = format.m_format; return *this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // default copy ctor/assignment operators ok
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // comparison (must have both versions)
 | 
				
			||||||
 | 
					    bool operator==(wxDataFormatId format) const
 | 
				
			||||||
 | 
					        { return m_format == (NativeFormat)format; }
 | 
				
			||||||
 | 
					    bool operator!=(wxDataFormatId 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 SetType(wxDataFormatId format) { m_format = format; }
 | 
				
			||||||
 | 
					    wxDataFormatId GetType() const { return m_format; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // string ids are used for custom types - this SetId() must be used for
 | 
				
			||||||
 | 
					    // application-specific formats
 | 
				
			||||||
 | 
					    wxString GetId() const;
 | 
				
			||||||
 | 
					    void SetId(const wxChar *format);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    // returns TRUE if the format is one of those defined in wxDataFormatId
 | 
				
			||||||
 | 
					    bool IsStandard() const { return m_format > 0 && m_format < wxDF_MAX; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    NativeFormat m_format;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif //  _WX_MSW_OLE_DATAFORM_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
// Name:        ole/dataobj.h
 | 
					// Name:        msw/ole/dataobj.h
 | 
				
			||||||
// Purpose:     declaration of the wxDataObject class
 | 
					// Purpose:     declaration of the wxDataObject class
 | 
				
			||||||
// Author:      Vadim Zeitlin
 | 
					// Author:      Vadim Zeitlin
 | 
				
			||||||
// Modified by:
 | 
					// Modified by:
 | 
				
			||||||
@@ -9,59 +9,8 @@
 | 
				
			|||||||
// Licence:     wxWindows licence
 | 
					// Licence:     wxWindows licence
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef   _WX_OLEDATAOBJ_H
 | 
					#ifndef   _WX_MSW_OLE_DATAOBJ_H
 | 
				
			||||||
#define   _WX_OLEDATAOBJ_H
 | 
					#define   _WX_MSW_OLE_DATAOBJ_H
 | 
				
			||||||
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxDataFormat identifies the single format of data
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class WXDLLEXPORT wxDataFormat
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
    // the clipboard formats under Win32 are UINTs
 | 
					 | 
				
			||||||
    typedef unsigned int NativeFormat;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxDataFormat(NativeFormat format = wxDF_INVALID) { m_format = format; }
 | 
					 | 
				
			||||||
    wxDataFormat(const wxChar *format) { SetId(format); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wxDataFormat& operator=(NativeFormat format)
 | 
					 | 
				
			||||||
        { m_format = format; return *this; }
 | 
					 | 
				
			||||||
    wxDataFormat& operator=(const wxDataFormat& format)
 | 
					 | 
				
			||||||
        { m_format = format.m_format; return *this; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // defautl copy ctor/assignment operators ok
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // comparison (must have both versions)
 | 
					 | 
				
			||||||
    bool operator==(wxDataFormatId format) const
 | 
					 | 
				
			||||||
        { return m_format == (NativeFormat)format; }
 | 
					 | 
				
			||||||
    bool operator!=(wxDataFormatId 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 format) { m_format = format; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // string ids are used for custom types - this SetId() must be used for
 | 
					 | 
				
			||||||
    // application-specific formats
 | 
					 | 
				
			||||||
    wxString GetId() const;
 | 
					 | 
				
			||||||
    void SetId(const wxChar *format);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
    // returns TRUE if the format is one of those defined in wxDataFormatId
 | 
					 | 
				
			||||||
    bool IsStandard() const { return m_format > 0 && m_format < wxDF_MAX; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    NativeFormat m_format;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// forward declarations
 | 
					// forward declarations
 | 
				
			||||||
@@ -198,5 +147,5 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// TODO: wxFileDataObject.
 | 
					// TODO: wxFileDataObject.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif  //_WX_OLEDATAOBJ_H
 | 
					#endif  //_WX_MSW_OLE_DATAOBJ_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,19 +28,6 @@ class wxIDropSource;
 | 
				
			|||||||
class WXDLLEXPORT wxDataObject;
 | 
					class WXDLLEXPORT wxDataObject;
 | 
				
			||||||
class WXDLLEXPORT wxWindow;
 | 
					class WXDLLEXPORT wxWindow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// constants
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum wxDragResult
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    wxDragError,    // error prevented the d&d operation from completing
 | 
					 | 
				
			||||||
    wxDragNone,     // drag target didn't accept the data
 | 
					 | 
				
			||||||
    wxDragCopy,     // the data was successfully copied
 | 
					 | 
				
			||||||
    wxDragMove,     // the data was successfully moved
 | 
					 | 
				
			||||||
    wxDragCancel    // the operation was cancelled by user (not an error)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// wxDropSource is used to start the drag-&-drop operation on associated
 | 
					// wxDropSource is used to start the drag-&-drop operation on associated
 | 
				
			||||||
// wxDataObject object. It's responsible for giving UI feedback while dragging.
 | 
					// wxDataObject object. It's responsible for giving UI feedback while dragging.
 | 
				
			||||||
@@ -50,6 +37,7 @@ class WXDLLEXPORT wxDropSource
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    // ctors: if you use default ctor you must call SetData() later!
 | 
					    // ctors: if you use default ctor you must call SetData() later!
 | 
				
			||||||
 | 
					    //
 | 
				
			||||||
    // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
 | 
					    // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
 | 
				
			||||||
    //     compatibility, as well as both icon parameters
 | 
					    //     compatibility, as well as both icon parameters
 | 
				
			||||||
    wxDropSource(wxWindow *win = NULL,
 | 
					    wxDropSource(wxWindow *win = NULL,
 | 
				
			||||||
@@ -60,24 +48,20 @@ public:
 | 
				
			|||||||
            const wxIcon &go = wxNullIcon,
 | 
					            const wxIcon &go = wxNullIcon,
 | 
				
			||||||
            const wxIcon &stop = wxNullIcon );
 | 
					            const wxIcon &stop = wxNullIcon );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void SetData(wxDataObject& data);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    virtual ~wxDropSource();
 | 
					    virtual ~wxDropSource();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // do it (call this in response to a mouse button press, for example)
 | 
					    // do it (call this in response to a mouse button press, for example)
 | 
				
			||||||
    // params: if bAllowMove is false, data can be only copied
 | 
					    // params: if bAllowMove is false, data can be only copied
 | 
				
			||||||
  wxDragResult DoDragDrop(bool bAllowMove = FALSE);
 | 
					    virtual wxDragResult DoDragDrop(bool bAllowMove = FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // overridable: you may give some custom UI feedback during d&d operation
 | 
					    // overridable: you may give some custom UI feedback during d&d operation
 | 
				
			||||||
  // in this function (it's called on each mouse move, so it shouldn't be too
 | 
					    // in this function (it's called on each mouse move, so it shouldn't be
 | 
				
			||||||
  // slow). Just return false if you want default feedback.
 | 
					    // too slow). Just return false if you want default feedback.
 | 
				
			||||||
    virtual bool GiveFeedback(wxDragResult effect, bool bScrolling);
 | 
					    virtual bool GiveFeedback(wxDragResult effect, bool bScrolling);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
    void Init();
 | 
					    void Init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  wxDataObject  *m_pData;         // pointer to associated data object
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    wxIDropSource *m_pIDropSource;  // the pointer to COM interface
 | 
					    wxIDropSource *m_pIDropSource;  // the pointer to COM interface
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,6 +38,12 @@
 | 
				
			|||||||
// implementation
 | 
					// implementation
 | 
				
			||||||
// ===========================================================================
 | 
					// ===========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					// some global data defined here
 | 
				
			||||||
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule, wxModule)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ---------------------------------------------------------------------------
 | 
					// ---------------------------------------------------------------------------
 | 
				
			||||||
// wxAppBase
 | 
					// wxAppBase
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if wxUSE_CLIPBOARD
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/dataobj.h"
 | 
				
			||||||
#include "wx/utils.h"
 | 
					#include "wx/utils.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "glib.h"
 | 
					#include "glib.h"
 | 
				
			||||||
@@ -548,7 +549,7 @@ void wxClipboard::Close()
 | 
				
			|||||||
    m_open = FALSE;
 | 
					    m_open = FALSE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxClipboard::IsSupported( wxDataFormat format )
 | 
					bool wxClipboard::IsSupported( const wxDataFormat& format )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* store requested format to be asked for by callbacks */
 | 
					    /* store requested format to be asked for by callbacks */
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -580,7 +581,7 @@ bool wxClipboard::IsSupported( wxDataFormat format )
 | 
				
			|||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}    
 | 
					}    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
bool wxClipboard::GetData( wxDataObject *data )
 | 
					bool wxClipboard::GetData( wxDataObject& data )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxCHECK_MSG( m_open, FALSE, wxT("clipboard not open") );
 | 
					    wxCHECK_MSG( m_open, FALSE, wxT("clipboard not open") );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -627,26 +628,6 @@ bool wxClipboard::GetData( wxDataObject *data )
 | 
				
			|||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxClipboardModule::OnInit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    wxTheClipboard = new wxClipboard();
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxClipboardModule::OnExit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (wxTheClipboard) delete wxTheClipboard;
 | 
					 | 
				
			||||||
    wxTheClipboard = (wxClipboard*) NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
  // wxUSE_CLIPBOARD
 | 
					  // wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "gdk/gdk.h"
 | 
					#include "gdk/gdk.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					//-------------------------------------------------------------------------
 | 
				
			||||||
// global data
 | 
					// global data
 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					//-------------------------------------------------------------------------
 | 
				
			||||||
@@ -162,84 +161,26 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format) const
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxTextDataObject
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS( wxTextDataObject, wxDataObject )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxTextDataObject::wxTextDataObject() 
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxTextDataObject::wxTextDataObject(const wxString& strText) 
 | 
					 | 
				
			||||||
    : m_strText(strText) 
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
size_t wxTextDataObject::GetDataSize(const wxDataFormat& format) const
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
    return m_strText.Len() + 1;   // +1 for trailing '\0'of course
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxTextDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
    memcpy(buf, m_strText.c_str(), GetDataSize(format)); 
 | 
					 | 
				
			||||||
    return TRUE; 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxTextDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
    m_strText = (const wxChar *)buf; 
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// wxFileDataObject
 | 
					// wxFileDataObject
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS( wxFileDataObject, wxDataObject )
 | 
					bool wxFileDataObject::GetDataHere(void *buf) const
 | 
				
			||||||
 | 
					 | 
				
			||||||
wxFileDataObject::wxFileDataObject()
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					    const wxString& filenames = GetFilenames();
 | 
				
			||||||
 | 
					    memcpy( buf, filenames.mbc_str(), filenames.Len() + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxFileDataObject::AddFile( const wxString &file )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    m_files += file;
 | 
					 | 
				
			||||||
    m_files += (wxChar)0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxString wxFileDataObject::GetFiles() const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return m_files;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxFileDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (format == wxDF_FILENAME)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        memcpy( buf, m_files.mbc_str(), m_files.Len() + 1 );
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t wxFileDataObject::GetDataSize(const wxDataFormat& format) const
 | 
					size_t wxFileDataObject::GetDataSize() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (format != wxDF_FILENAME) return 0;
 | 
					    return GetFilenames().Len() + 1;
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return m_files.Len() + 1;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxFileDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
					bool wxFileDataObject::SetData(const void *buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (format != wxDF_FILENAME)
 | 
					    SetFilenames((const wxChar *)buf);
 | 
				
			||||||
        return FALSE;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
    m_files = (char*)(buf);  // this is so ugly, I cannot look at it
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -248,95 +189,80 @@ bool wxFileDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
				
			|||||||
// wxBitmapDataObject
 | 
					// wxBitmapDataObject
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS( wxBitmapDataObject, wxDataObject )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxBitmapDataObject::wxBitmapDataObject()
 | 
					wxBitmapDataObject::wxBitmapDataObject()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_pngData = (void*)NULL;
 | 
					    Init();
 | 
				
			||||||
    m_pngSize = 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxBitmapDataObject::wxBitmapDataObject( const wxBitmap& bitmap )
 | 
					wxBitmapDataObject::wxBitmapDataObject( const wxBitmap& bitmap )
 | 
				
			||||||
 | 
					                  : wxBitmapDataObjectBase(bitmap)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_pngData = (void*)NULL;
 | 
					    Init();
 | 
				
			||||||
    m_pngSize = 0;
 | 
					
 | 
				
			||||||
    m_bitmap = bitmap;
 | 
					 | 
				
			||||||
    DoConvertToPng();
 | 
					    DoConvertToPng();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxBitmapDataObject::~wxBitmapDataObject()
 | 
					wxBitmapDataObject::~wxBitmapDataObject()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (m_pngData) 
 | 
					    Clear();
 | 
				
			||||||
        delete[] m_pngData;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxBitmapDataObject::SetBitmap( const wxBitmap &bitmap )
 | 
					void wxBitmapDataObject::SetBitmap( const wxBitmap &bitmap )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (m_pngData) 
 | 
					    ClearAll();
 | 
				
			||||||
        delete[] m_pngData;
 | 
					
 | 
				
			||||||
    m_pngData = (void*)NULL;
 | 
					    wxBitmapDataObjectBase::SetBitmap(bitmap);
 | 
				
			||||||
    m_pngSize = 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_bitmap = bitmap;
 | 
					 | 
				
			||||||
    DoConvertToPng();
 | 
					    DoConvertToPng();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t wxBitmapDataObject::GetDataSize(const wxDataFormat& format) const
 | 
					bool wxBitmapDataObject::GetDataHere(void *buf) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (format != wxDF_BITMAP) return 0;
 | 
					    if ( !m_pngSize )
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return m_pngSize;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxBitmapDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (format != wxDF_BITMAP) return FALSE;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    if (m_pngSize > 0)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        memcpy(buf, m_pngData, m_pngSize); 
 | 
					        wxFAIL_MSG( wxT("attempt to copy empty bitmap failed") );
 | 
				
			||||||
        return TRUE;
 | 
					
 | 
				
			||||||
 | 
					        return FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					    memcpy(buf, m_pngData, m_pngSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxBitmapDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
					bool wxBitmapDataObject::SetData(size_t size, const void *buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (m_pngData) delete[] m_pngData;
 | 
					    Clear();
 | 
				
			||||||
    m_pngData = (void*) NULL;
 | 
					 | 
				
			||||||
    m_pngSize = 0;
 | 
					 | 
				
			||||||
    m_bitmap = wxNullBitmap;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxBitmapDataObject::SetPngData(const void *buf, size_t size)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (m_pngData) delete[] m_pngData;
 | 
					 | 
				
			||||||
    m_pngSize = size;
 | 
					    m_pngSize = size;
 | 
				
			||||||
    m_pngData = (void*) new char[m_pngSize];
 | 
					    m_pngData = malloc(m_pngSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    memcpy( m_pngData, buf, m_pngSize );
 | 
					    memcpy( m_pngData, buf, m_pngSize );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxMemoryInputStream mstream( (char*) m_pngData, m_pngSize );
 | 
					    wxMemoryInputStream mstream( (char*) m_pngData, m_pngSize );
 | 
				
			||||||
    wxImage image;
 | 
					    wxImage image;
 | 
				
			||||||
    wxPNGHandler handler;
 | 
					    wxPNGHandler handler;
 | 
				
			||||||
    handler.LoadFile( &image, mstream );
 | 
					    if ( !handler.LoadFile( &image, mstream ) )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return FALSE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_bitmap = image.ConvertToBitmap();
 | 
					    m_bitmap = image.ConvertToBitmap();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxBitmapDataObject::DoConvertToPng()
 | 
					void wxBitmapDataObject::DoConvertToPng()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (!m_bitmap.Ok()) return;
 | 
					    if (!m_bitmap.Ok())
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxImage image( m_bitmap );
 | 
					    wxImage image( m_bitmap );
 | 
				
			||||||
    wxPNGHandler handler;
 | 
					    wxPNGHandler handler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxCountingOutputStream count;
 | 
					    wxCountingOutputStream count;
 | 
				
			||||||
    handler.SaveFile( &image, count );
 | 
					    handler.SaveFile( &image, count );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ???
 | 
					    m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ???
 | 
				
			||||||
    m_pngData = (void*) new char[m_pngSize];
 | 
					    m_pngData = malloc(m_pngSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxMemoryOutputStream mstream( (char*) m_pngData, m_pngSize );
 | 
					    wxMemoryOutputStream mstream( (char*) m_pngData, m_pngSize );
 | 
				
			||||||
    handler.SaveFile( &image, mstream );
 | 
					    handler.SaveFile( &image, mstream );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,6 +15,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if wxUSE_CLIPBOARD
 | 
					#if wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "wx/dataobj.h"
 | 
				
			||||||
#include "wx/utils.h"
 | 
					#include "wx/utils.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "glib.h"
 | 
					#include "glib.h"
 | 
				
			||||||
@@ -548,7 +549,7 @@ void wxClipboard::Close()
 | 
				
			|||||||
    m_open = FALSE;
 | 
					    m_open = FALSE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxClipboard::IsSupported( wxDataFormat format )
 | 
					bool wxClipboard::IsSupported( const wxDataFormat& format )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* store requested format to be asked for by callbacks */
 | 
					    /* store requested format to be asked for by callbacks */
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -580,7 +581,7 @@ bool wxClipboard::IsSupported( wxDataFormat format )
 | 
				
			|||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}    
 | 
					}    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
bool wxClipboard::GetData( wxDataObject *data )
 | 
					bool wxClipboard::GetData( wxDataObject& data )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    wxCHECK_MSG( m_open, FALSE, wxT("clipboard not open") );
 | 
					    wxCHECK_MSG( m_open, FALSE, wxT("clipboard not open") );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -627,26 +628,6 @@ bool wxClipboard::GetData( wxDataObject *data )
 | 
				
			|||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxClipboardModule::OnInit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    wxTheClipboard = new wxClipboard();
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxClipboardModule::OnExit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (wxTheClipboard) delete wxTheClipboard;
 | 
					 | 
				
			||||||
    wxTheClipboard = (wxClipboard*) NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
  // wxUSE_CLIPBOARD
 | 
					  // wxUSE_CLIPBOARD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "gdk/gdk.h"
 | 
					#include "gdk/gdk.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					//-------------------------------------------------------------------------
 | 
				
			||||||
// global data
 | 
					// global data
 | 
				
			||||||
//-------------------------------------------------------------------------
 | 
					//-------------------------------------------------------------------------
 | 
				
			||||||
@@ -162,84 +161,26 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format) const
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxTextDataObject
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS( wxTextDataObject, wxDataObject )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxTextDataObject::wxTextDataObject() 
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxTextDataObject::wxTextDataObject(const wxString& strText) 
 | 
					 | 
				
			||||||
    : m_strText(strText) 
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
size_t wxTextDataObject::GetDataSize(const wxDataFormat& format) const
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
    return m_strText.Len() + 1;   // +1 for trailing '\0'of course
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxTextDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
    memcpy(buf, m_strText.c_str(), GetDataSize(format)); 
 | 
					 | 
				
			||||||
    return TRUE; 
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxTextDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
					 | 
				
			||||||
{ 
 | 
					 | 
				
			||||||
    m_strText = (const wxChar *)buf; 
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
// wxFileDataObject
 | 
					// wxFileDataObject
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS( wxFileDataObject, wxDataObject )
 | 
					bool wxFileDataObject::GetDataHere(void *buf) const
 | 
				
			||||||
 | 
					 | 
				
			||||||
wxFileDataObject::wxFileDataObject()
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					    const wxString& filenames = GetFilenames();
 | 
				
			||||||
 | 
					    memcpy( buf, filenames.mbc_str(), filenames.Len() + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxFileDataObject::AddFile( const wxString &file )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    m_files += file;
 | 
					 | 
				
			||||||
    m_files += (wxChar)0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxString wxFileDataObject::GetFiles() const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return m_files;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxFileDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (format == wxDF_FILENAME)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        memcpy( buf, m_files.mbc_str(), m_files.Len() + 1 );
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t wxFileDataObject::GetDataSize(const wxDataFormat& format) const
 | 
					size_t wxFileDataObject::GetDataSize() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (format != wxDF_FILENAME) return 0;
 | 
					    return GetFilenames().Len() + 1;
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return m_files.Len() + 1;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxFileDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
					bool wxFileDataObject::SetData(const void *buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (format != wxDF_FILENAME)
 | 
					    SetFilenames((const wxChar *)buf);
 | 
				
			||||||
        return FALSE;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
    m_files = (char*)(buf);  // this is so ugly, I cannot look at it
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return TRUE;
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -248,95 +189,80 @@ bool wxFileDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
				
			|||||||
// wxBitmapDataObject
 | 
					// wxBitmapDataObject
 | 
				
			||||||
// ----------------------------------------------------------------------------
 | 
					// ----------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS( wxBitmapDataObject, wxDataObject )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxBitmapDataObject::wxBitmapDataObject()
 | 
					wxBitmapDataObject::wxBitmapDataObject()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_pngData = (void*)NULL;
 | 
					    Init();
 | 
				
			||||||
    m_pngSize = 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxBitmapDataObject::wxBitmapDataObject( const wxBitmap& bitmap )
 | 
					wxBitmapDataObject::wxBitmapDataObject( const wxBitmap& bitmap )
 | 
				
			||||||
 | 
					                  : wxBitmapDataObjectBase(bitmap)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_pngData = (void*)NULL;
 | 
					    Init();
 | 
				
			||||||
    m_pngSize = 0;
 | 
					
 | 
				
			||||||
    m_bitmap = bitmap;
 | 
					 | 
				
			||||||
    DoConvertToPng();
 | 
					    DoConvertToPng();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wxBitmapDataObject::~wxBitmapDataObject()
 | 
					wxBitmapDataObject::~wxBitmapDataObject()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (m_pngData) 
 | 
					    Clear();
 | 
				
			||||||
        delete[] m_pngData;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxBitmapDataObject::SetBitmap( const wxBitmap &bitmap )
 | 
					void wxBitmapDataObject::SetBitmap( const wxBitmap &bitmap )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (m_pngData) 
 | 
					    ClearAll();
 | 
				
			||||||
        delete[] m_pngData;
 | 
					
 | 
				
			||||||
    m_pngData = (void*)NULL;
 | 
					    wxBitmapDataObjectBase::SetBitmap(bitmap);
 | 
				
			||||||
    m_pngSize = 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_bitmap = bitmap;
 | 
					 | 
				
			||||||
    DoConvertToPng();
 | 
					    DoConvertToPng();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t wxBitmapDataObject::GetDataSize(const wxDataFormat& format) const
 | 
					bool wxBitmapDataObject::GetDataHere(void *buf) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (format != wxDF_BITMAP) return 0;
 | 
					    if ( !m_pngSize )
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return m_pngSize;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxBitmapDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (format != wxDF_BITMAP) return FALSE;
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    if (m_pngSize > 0)
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        memcpy(buf, m_pngData, m_pngSize); 
 | 
					        wxFAIL_MSG( wxT("attempt to copy empty bitmap failed") );
 | 
				
			||||||
        return TRUE;
 | 
					
 | 
				
			||||||
 | 
					        return FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					    memcpy(buf, m_pngData, m_pngSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool wxBitmapDataObject::SetData(const wxDataFormat& format, const void *buf)
 | 
					bool wxBitmapDataObject::SetData(size_t size, const void *buf)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (m_pngData) delete[] m_pngData;
 | 
					    Clear();
 | 
				
			||||||
    m_pngData = (void*) NULL;
 | 
					 | 
				
			||||||
    m_pngSize = 0;
 | 
					 | 
				
			||||||
    m_bitmap = wxNullBitmap;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return FALSE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxBitmapDataObject::SetPngData(const void *buf, size_t size)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (m_pngData) delete[] m_pngData;
 | 
					 | 
				
			||||||
    m_pngSize = size;
 | 
					    m_pngSize = size;
 | 
				
			||||||
    m_pngData = (void*) new char[m_pngSize];
 | 
					    m_pngData = malloc(m_pngSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    memcpy( m_pngData, buf, m_pngSize );
 | 
					    memcpy( m_pngData, buf, m_pngSize );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxMemoryInputStream mstream( (char*) m_pngData, m_pngSize );
 | 
					    wxMemoryInputStream mstream( (char*) m_pngData, m_pngSize );
 | 
				
			||||||
    wxImage image;
 | 
					    wxImage image;
 | 
				
			||||||
    wxPNGHandler handler;
 | 
					    wxPNGHandler handler;
 | 
				
			||||||
    handler.LoadFile( &image, mstream );
 | 
					    if ( !handler.LoadFile( &image, mstream ) )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return FALSE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_bitmap = image.ConvertToBitmap();
 | 
					    m_bitmap = image.ConvertToBitmap();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxBitmapDataObject::DoConvertToPng()
 | 
					void wxBitmapDataObject::DoConvertToPng()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    if (!m_bitmap.Ok()) return;
 | 
					    if (!m_bitmap.Ok())
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxImage image( m_bitmap );
 | 
					    wxImage image( m_bitmap );
 | 
				
			||||||
    wxPNGHandler handler;
 | 
					    wxPNGHandler handler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxCountingOutputStream count;
 | 
					    wxCountingOutputStream count;
 | 
				
			||||||
    handler.SaveFile( &image, count );
 | 
					    handler.SaveFile( &image, count );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ???
 | 
					    m_pngSize = count.GetSize() + 100; // sometimes the size seems to vary ???
 | 
				
			||||||
    m_pngData = (void*) new char[m_pngSize];
 | 
					    m_pngData = malloc(m_pngSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    wxMemoryOutputStream mstream( (char*) m_pngData, m_pngSize );
 | 
					    wxMemoryOutputStream mstream( (char*) m_pngData, m_pngSize );
 | 
				
			||||||
    handler.SaveFile( &image, mstream );
 | 
					    handler.SaveFile( &image, mstream );
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -363,26 +363,6 @@ bool wxClipboard::GetData( wxDataObject *data )
 | 
				
			|||||||
    return FALSE;
 | 
					    return FALSE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxClipboardModule::OnInit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    wxTheClipboard = new wxClipboard();
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxClipboardModule::OnExit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (wxTheClipboard) delete wxTheClipboard;
 | 
					 | 
				
			||||||
    wxTheClipboard = (wxClipboard*) NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -778,25 +778,6 @@ bool wxClipboard::GetData( wxDataObject *data )
 | 
				
			|||||||
#endif // wxUSE_DATAOBJ/!wxUSE_DATAOBJ
 | 
					#endif // wxUSE_DATAOBJ/!wxUSE_DATAOBJ
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// wxClipboardModule
 | 
					 | 
				
			||||||
//-----------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool wxClipboardModule::OnInit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    wxTheClipboard = new wxClipboard();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return TRUE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void wxClipboardModule::OnExit()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (wxTheClipboard) delete wxTheClipboard;
 | 
					 | 
				
			||||||
    wxTheClipboard = (wxClipboard*) NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    #error "Please turn wxUSE_CLIPBOARD on to compile this file."
 | 
					    #error "Please turn wxUSE_CLIPBOARD on to compile this file."
 | 
				
			||||||
#endif // wxUSE_CLIPBOARD
 | 
					#endif // wxUSE_CLIPBOARD
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -177,11 +177,6 @@ wxDropSource::wxDropSource(wxDataObject& data,
 | 
				
			|||||||
  SetData(data);
 | 
					  SetData(data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void wxDropSource::SetData(wxDataObject& data)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  m_pData = &data;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
wxDropSource::~wxDropSource()
 | 
					wxDropSource::~wxDropSource()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  m_pIDropSource->Release();
 | 
					  m_pIDropSource->Release();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user