// This is the SIP interface definition for QDragObject, QImageDrag,
// QStoredDrag, QTextDrag, QUriDrag, QUrlDrag, QColorDrag.
//
// Copyright (c) 2003
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyQt.
// 
// This copy of PyQt is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2, or (at your option) any later
// version.
// 
// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
// details.
// 
// You should have received a copy of the GNU General Public License along with
// PyQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


%ExportedDoc
<Sect2><Title>QColorDrag (Qt v2.1+)</Title>
<Para>
<Literal>QColorDrag</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QDragObject</Title>
<Para>
<Literal>QDragObject</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QImageDrag</Title>
<Para>
<Literal>QImageDrag</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QStoredDrag</Title>
<Para>
<Literal>QStoredDrag</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QTextDrag</Title>
<Para>
<Literal>QTextDrag</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QUriDrag (Qt v2+)</Title>
<Para>
<Literal>QUriDrag</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>QUrlDrag (Qt v1.x)</Title>
<Para>
<Literal>QUrlDrag</Literal> is fully implemented.
</Para>
</Sect2>
%End


%If (- Qt_2_00)

class QDragObject : QObject
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	enum DragMode {
		DragDefault,
		DragCopy,
		DragMove,
		DragCopyOrMove
	};

	QDragObject(QWidget * /TransferThis/ = 0,const char * = 0);

	bool drag();
	bool dragMove();
	void dragCopy();
	virtual bool provides(const char *) const;
	virtual const char *format(int) const = 0;
	virtual QByteArray encodedData(const char *) const = 0;
	void setPixmap(QPixmap);
	void setPixmap(QPixmap,QPoint);
	QPixmap pixmap() const;
	QPoint pixmapHotSpot() const;
	QWidget *source();

protected:
	virtual bool drag(DragMode);
};

%End

%If (Qt_2_00 -)

class QDragObject : QObject, QMimeSource
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QDragObject(QWidget * /TransferThis/ = 0,const char * = 0);

%If (Qt_DRAGANDDROP)
	bool drag();
	bool dragMove();
	void dragCopy();
%If (Qt_3_0_0 -)
	void dragLink();
%End

	virtual void setPixmap(QPixmap);
%If (- Qt_3_0_0)
	virtual void setPixmap(QPixmap,QPoint);
%End
%If (Qt_3_0_0 -)
	virtual void setPixmap(QPixmap,const QPoint &);
%End
	QPixmap pixmap() const;
	QPoint pixmapHotSpot() const;
%End

	QWidget *source();
	static QWidget *target();

	static void setTarget(QWidget *);

%If (Qt_DRAGANDDROP)
%If (- Qt_3_0_0)
	enum DragMode {
		DragDefault,
		DragCopy,
		DragMove,
		DragCopyOrMove
	};
%End
%If (Qt_3_0_0 -)
	enum DragMode {
		DragDefault,
		DragCopy,
		DragMove,
		DragLink,
		DragCopyOrMove
	};
%End
%End

protected:
%If (Qt_DRAGANDDROP)
	virtual bool drag(DragMode);
%End

private:
%If (Qt_3_1_0 -)
	QDragObject(const QDragObject &);
%End
};

%End


class QStoredDrag : QDragObject
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QStoredDrag(const char *,QWidget * /TransferThis/ = 0,const char * = 0);

%If (- Qt_2_00)
	void setEncodedData(const QByteArray&);
%End
%If (Qt_2_00 -)
	virtual void setEncodedData(const QByteArray&);
%End

	const char *format(int) const;
	virtual QByteArray encodedData(const char *) const;

private:
%If (Qt_3_1_0 -)
	QStoredDrag(const QStoredDrag &);
%End
};


%If (- Qt_2_00)

class QTextDrag : QStoredDrag
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QTextDrag(const char *,QWidget * /TransferThis/ = 0,const char * = 0);
	QTextDrag(QWidget * /TransferThis/ = 0,const char * = 0);

	void setText(const char *);
	static bool canDecode(QDragMoveEvent *);
	static bool decode(QDropEvent *,QString &);
};

%End

%If (Qt_2_00 -)

class QTextDrag : QDragObject
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QTextDrag(const QString &,QWidget * /TransferThis/ = 0,
		  const char * = 0);
	QTextDrag(QWidget * /TransferThis/ = 0,const char * = 0);

	virtual void setText(const QString &);
	virtual void setSubtype(const QCString &);

	const char *format(int) const;
	virtual QByteArray encodedData(const char *) const;

	static bool canDecode(const QMimeSource *);
	static bool decode(const QMimeSource *,QString &);
	static bool decode(const QMimeSource *,QString &,QCString &);

private:
%If (Qt_3_1_0 -)
	QTextDrag(const QTextDrag &);
%End
};

%End


class QImageDrag : QDragObject
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QImageDrag(QImage,QWidget * /TransferThis/ = 0,const char * = 0);
	QImageDrag(QWidget * /TransferThis/ = 0,const char * = 0);

%If (- Qt_2_00)
	void setImage(QImage);
%End
%If (Qt_2_00 -)
	virtual void setImage(QImage);
%End

	const char *format(int) const;
	virtual QByteArray encodedData(const char *) const;

%If (- Qt_2_00)
	static bool canDecode(QDragMoveEvent *);
	static bool decode(QDropEvent *,QImage &);
	static bool decode(QDropEvent *,QPixmap &);
%End
%If (Qt_2_00 -)
	static bool canDecode(const QMimeSource *);
	static bool decode(const QMimeSource *,QImage &);
	static bool decode(const QMimeSource *,QPixmap &);
%End

private:
%If (Qt_3_1_0 -)
	QImageDrag(const QImageDrag &);
%End
};


%If (- Qt_2_00)

class QUrlDrag : QStoredDrag
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QUrlDrag(QStrList,QWidget * /TransferThis/ = 0,const char * = 0);
	QUrlDrag(QWidget * /TransferThis/ = 0,const char * = 0);

	void setUrls(QStrList);
	static QString urlToLocalFile(const char *);
	static bool canDecode(QDragMoveEvent *);
	static bool decode(QDropEvent *,QStrList &);
	static bool decodeLocalFiles(QDropEvent *,QStrList &);
};

%End

%If (Qt_2_00 -)

class QUriDrag : QStoredDrag
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QUriDrag(QStrList,QWidget * /TransferThis/ = 0,const char * = 0);
	QUriDrag(QWidget * /TransferThis/ = 0,const char * = 0);

%If (- Qt_3_0_0)
	void setFilenames(QStringList);
	void setUnicodeUris(QStringList);
%End
%If (Qt_3_0_0 -)
	void setFileNames(const QStringList &);
	void setUnicodeUris(const QStringList &);
%End
	virtual void setUris(QStrList);

	static QString uriToLocalFile(const char *);
	static QCString localFileToUri(const QString &);
	static QString uriToUnicodeUri(const char *);
	static QCString unicodeUriToUri(const QString &);
	static bool canDecode(const QMimeSource *);
	static bool decode(const QMimeSource *,QStrList &);
	static bool decodeToUnicodeUris(const QMimeSource *,QStringList &);
	static bool decodeLocalFiles(const QMimeSource *,QStringList &);

private:
%If (Qt_3_1_0 -)
	QUriDrag(const QUriDrag &);
%End
};

%End


%If (Qt_2_1_0 -)

class QColorDrag : QStoredDrag
{
%HeaderCode
#include <qdragobject.h>
%End

public:
	QColorDrag(const QColor &,QWidget * /TransferThis/ = 0,
		   const char * = 0);
	QColorDrag(QWidget * /TransferThis/ = 0,const char * = 0);

	void setColor(const QColor &);
 
	static bool canDecode(QMimeSource *);
	static bool decode(QMimeSource *,QColor &);

private:
%If (Qt_3_1_0 -)
	QColorDrag(const QColorDrag &);
%End
};

%End
