// This is the SIP interface definition for TQDragObject, TQImageDrag,
// TQStoredDrag, TQTextDrag, TQUriDrag, TQUrlDrag, TQColorDrag.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyTQt.
// 
// This copy of PyTQt 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.
// 
// PyTQt 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
// PyTQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

%DefaultEncoding "UTF-8"

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

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

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

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

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

<Sect2><Title>TQUriDrag (TQt v2+)</Title>
<Para>
<Literal>TQUriDrag</Literal> is fully implemented.
</Para>
</Sect2>

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


class TQDragObject : TQObject, TQMimeSource
{
%TypeHeaderCode
#include <tqdragobject.h>
%End

public:
	TQDragObject(TQWidget * /TransferThis/ = 0,const char * = 0);

%If (TQt_DRAGANDDROP)
	bool drag();
	bool dragMove();
	void dragCopy();
	void dragLink();

	virtual void setPixmap(TQPixmap);
	virtual void setPixmap(TQPixmap,const TQPoint &);
	TQPixmap pixmap() const;
	TQPoint pixmapHotSpot() const;
%End

	TQWidget *source();
	static TQWidget *target();

	static void setTarget(TQWidget *);

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

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

private:
	TQDragObject(const TQDragObject &);
};


class TQStoredDrag : TQDragObject
{
%TypeHeaderCode
#include <tqdragobject.h>
%End

public:
	TQStoredDrag(const char *,TQWidget * /TransferThis/ = 0,const char * = 0);

	virtual void setEncodedData(const TQByteArray&);

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

private:
	TQStoredDrag(const TQStoredDrag &);
};


class TQTextDrag : TQDragObject
{
%TypeHeaderCode
#include <tqdragobject.h>
%End

public:
	TQTextDrag(const TQString &,TQWidget * /TransferThis/ = 0,
		  const char * = 0);
	TQTextDrag(TQWidget * /TransferThis/ = 0,const char * = 0);

	virtual void setText(const TQString &);
	virtual void setSubtype(const TQCString &);

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

	static bool canDecode(const TQMimeSource *);
	static bool decode(const TQMimeSource *,TQString &);
	static bool decode(const TQMimeSource *,TQString &,TQCString &);

private:
	TQTextDrag(const TQTextDrag &);
};


class TQImageDrag : TQDragObject
{
%TypeHeaderCode
#include <tqdragobject.h>
%End

public:
	TQImageDrag(TQImage,TQWidget * /TransferThis/ = 0,const char * = 0);
	TQImageDrag(TQWidget * /TransferThis/ = 0,const char * = 0);

	virtual void setImage(TQImage);

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

	static bool canDecode(const TQMimeSource *);
	static bool decode(const TQMimeSource *,TQImage &);
	static bool decode(const TQMimeSource *,TQPixmap &);

private:
	TQImageDrag(const TQImageDrag &);
};


class TQUriDrag : TQStoredDrag
{
%TypeHeaderCode
#include <tqdragobject.h>
%End

public:
	TQUriDrag(TQStrList,TQWidget * /TransferThis/ = 0,const char * = 0);
	TQUriDrag(TQWidget * /TransferThis/ = 0,const char * = 0);

	void setFileNames(const TQStringList &);
	void setUnicodeUris(const TQStringList &);
	virtual void setUris(TQStrList);

	static TQString uriToLocalFile(const char *);
	static TQCString localFileToUri(const TQString &);
	static TQString uriToUnicodeUri(const char *);
	static TQCString unicodeUriToUri(const TQString &);
	static bool canDecode(const TQMimeSource *);
	static bool decode(const TQMimeSource *,TQStrList &);
	static bool decodeToUnicodeUris(const TQMimeSource *,TQStringList &);
	static bool decodeLocalFiles(const TQMimeSource *,TQStringList &);

private:
	TQUriDrag(const TQUriDrag &);
};


class TQColorDrag : TQStoredDrag
{
%TypeHeaderCode
#include <tqdragobject.h>
%End

public:
	TQColorDrag(const TQColor &,TQWidget * /TransferThis/ = 0,
		   const char * = 0);
	TQColorDrag(TQWidget * /TransferThis/ = 0,const char * = 0);

	void setColor(const TQColor &);
 
	static bool canDecode(TQMimeSource *);
	static bool decode(TQMimeSource *,TQColor &);

private:
	TQColorDrag(const TQColorDrag &);
};
