// This is the SIP interface definition for TQMenuData, TQCustomMenuItem and
// TQMenuItem.
//
// 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.


%ExportedDoc
<Sect2><Title>TQMenuData</Title>
<FuncSynopsis>
        <FuncDef>TQMenuItem *<Function>findItem</Function></FuncDef>
        <ParamDef>int <Parameter>id</Parameter></ParamDef>
        <ParamDef>TQMenuData **<Parameter>parent</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>
</Sect2>

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

<Sect2><Title>TQMenuItem</Title>
<Para>
<Literal>TQMenuItem</Literal> is an internal TQt class.
</Para>
</Sect2>
%End


// Even though this is an internal class, uic for TQt v3.1.0 generates code that
// uses it.
class TQMenuItem
{
%TypeHeaderCode
#include <tqmenudata.h>
%End

public:
	TQMenuItem();

	void setText(const TQString &);

private:
	TQMenuItem(const TQMenuItem &);
};


class TQMenuData
{
%TypeHeaderCode
#include <tqmenudata.h>
%End

public:
	TQMenuData();

	uint count();

	int insertItem(const TQString &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
		       const TQKeySequence & = TQKeySequence(0),int = -1,
		       int = -1);
	int insertItem(const TQIconSet &,const TQString &,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),
		       const TQKeySequence & = TQKeySequence(0),int = -1,
		       int = -1);
	int insertItem(const TQPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
		       const TQKeySequence & = TQKeySequence(0),int = -1,
		       int = -1);
	int insertItem(const TQIconSet &,const TQPixmap &,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),
		       const TQKeySequence & = TQKeySequence(0),int = -1,
		       int = -1);

	int insertItem(const TQString &,int = -1,int = -1);
	int insertItem(const TQIconSet &,const TQString &,int = -1,int = -1);

	int insertItem(const TQString &,TQPopupMenu *,int = -1,int = -1);
	int insertItem(const TQIconSet &,const TQString &,TQPopupMenu *,int = -1,
		       int = -1);

	int insertItem(const TQPixmap &,int = -1,int = -1);
	int insertItem(const TQIconSet &,const TQPixmap &,int = -1,int = -1);
	int insertItem(const TQPixmap &,TQPopupMenu *,int = -1,int = -1);
	int insertItem(const TQIconSet &,const TQPixmap &,TQPopupMenu *,int = -1,
		       int = -1);

	int insertItem(TQWidget * /Transfer/,int = -1,int = -1);
	int insertItem(const TQIconSet &,TQCustomMenuItem * /Transfer/,int = -1,
		       int = -1);
	int insertItem(TQCustomMenuItem * /Transfer/,int = -1,int = -1);

	int insertSeparator(int = -1);

	void removeItem(int);
	void removeItemAt(int);
	void clear();

	TQKeySequence accel(int) const;
	void setAccel(const TQKeySequence &,int);

	TQIconSet *iconSet(int) const;
	TQString text(int) const;
	TQPixmap *pixmap(int) const;

	void setWhatsThis(int,const TQString &);
	TQString whatsThis(int) const;

	void changeItem(int,const TQString &);
	void changeItem(int,const TQPixmap &);
	void changeItem(int,const TQIconSet &,const TQString &);
	void changeItem(int,const TQIconSet &,const TQPixmap &);

	bool isItemActive(int) const;

	bool isItemEnabled(int) const;
	void setItemEnabled(int,bool);

	bool isItemChecked(int) const;
	void setItemChecked(int,bool);

	bool isItemVisible(int) const;
	void setItemVisible(int,bool);

	virtual void updateItem(int);

	int indexOf(int) const;
	int idAt(int) const;
	virtual void setId(int,int);

	bool connectItem(int,SIP_RXOBJ_CON,SIP_SLOT_CON(int));
	bool disconnectItem(int,SIP_RXOBJ_DIS,SIP_SLOT_DIS(int));

	bool setItemParameter(int,int);
	int itemParameter(int) const;

	TQMenuItem *findItem(int) const;
//	TQMenuItem *findItem(int,TQMenuData **) const;
//	Not documented in the TQt3 API (the similar findPopup() was internal in
//	TQt2).
//	TQMenuItem *findItem(TQPopupMenu *,int * = 0) const;

	virtual void activateItemAt(int);

protected:
	virtual void menuContentsChanged();
	virtual void menuStateChanged();
	virtual void menuInsPopup(TQPopupMenu *);
	virtual void menuDelPopup(TQPopupMenu *);

private:
	TQMenuData(const TQMenuData &);
};


class TQCustomMenuItem : TQt
{
%TypeHeaderCode
#include <tqmenudata.h>
%End

public:
	TQCustomMenuItem();

	virtual bool fullSpan() const;
	virtual bool isSeparator() const;
	virtual void setFont(const TQFont &);
	virtual void paint(TQPainter *,const TQColorGroup &,bool,bool,int,int,
			   int,int) = 0;
	virtual TQSize sizeHint() = 0;
};
