// This is the SIP interface definition for AppLnk, AppLnkSet, DocLnk and
// DocLnkSet.
//
// 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.


// The documentation is in the main documentation file because SIP isn't clever
// enough to handle the resulting %Timeline complexity.


%If (WS_QWS)

class AppLnk
{
%TypeHeaderCode
#include <tqpe/applnk.h>
%End

public:
	AppLnk();
	AppLnk(const TQString &);
	AppLnk(const AppLnk &);

	bool isValid() const;

	static void setSmallIconSize(int);
	static void setBigIconSize(int);
	static int smallIconSize();
	static int bigIconSize();

	TQString name() const;
	const TQPixmap& pixmap() const;
	const TQPixmap& bigPixmap() const;
	virtual TQString exec() const /PyName=exec_property/;
	TQString type() const;
	TQString rotation() const;
	TQString comment() const;
	TQString file() const;
	TQString linkFile() const;
	TQStringList mimeTypes() const;
	TQStringList mimeTypeIcons() const;
	const TQArray<int> &categories() const;
	int id() const;

	bool fileKnown() const;
	bool linkFileKnown() const;

	void execute() const /ReleaseGIL/;
	void execute(const TQStringList &) const /ReleaseGIL/;
	void removeFiles();
	void removeLinkFile();

	void setName(const TQString &);
	void setExec(const TQString &);
	void setFile(const TQString &);
	void setLinkFile(const TQString &);
	void setComment(const TQString &);
	void setType(const TQString &);
	void setIcon(const TQString &);
	void setCategories(const TQArray<int> &);
	bool writeLink() const;

	void setProperty(const TQString &,const TQString &);
	TQString property(const TQString &) const;

protected:
	virtual void invoke(const TQStringList &) const;
	bool ensureLinkExists() const;
// Undocumented and missing on the Zaurus.
//	void storeLink() const;
};


class DocLnk : AppLnk
{
%TypeHeaderCode
#include <tqpe/applnk.h>
%End

public:
	DocLnk();
	DocLnk(const DocLnk &);
	DocLnk(const TQString &);
	DocLnk(const TQString &,bool);

	TQString exec() const /PyName=exec_property/;

protected:
	void invoke(const TQStringList &) const;
};


class AppLnkSet
{
%TypeHeaderCode
#include <tqpe/applnk.h>
%End

public:
	AppLnkSet();
	AppLnkSet(const TQString &);

	const AppLnk *find(int) const;
	const AppLnk *findExec(const TQString &) const;

	TQStringList types() const;
	TQString typeName(const TQString &) const;
	TQPixmap typePixmap(const TQString &) const;
	TQPixmap typeBigPixmap(const TQString &) const;

	void add(AppLnk *);
	bool remove(AppLnk *);

	const TQPtrList<AppLnk> &children() const;
	void detachChildren();

private:
	AppLnkSet(const AppLnkSet &);
};


class DocLnkSet : AppLnkSet
{
%TypeHeaderCode
#include <tqpe/applnk.h>
%End

public:
	DocLnkSet();
	DocLnkSet(const TQString &,const TQString & = TQString::null);

	const TQPtrList<DocLnk> &children() const;

	void appendFrom(DocLnkSet &);

private:
	DocLnkSet(const DocLnkSet &);
};

%End
