// This is the SIP interface definition for QMenuData, QCustomMenuItem and
// QMenuItem.
//
// Copyright (c) 2007
// 	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>QMenuData</Title>
<FuncSynopsis>
        <FuncDef>QMenuItem *<Function>findItem</Function></FuncDef>
        <ParamDef>int <Parameter>id</Parameter></ParamDef>
        <ParamDef>QMenuData **<Parameter>parent</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>
</Sect2>

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

<Sect2><Title>QMenuItem</Title>
<Para>
<Literal>QMenuItem</Literal> is an internal Qt class.
</Para>
</Sect2>
%End


%If (Qt_3_0_0 -)

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

public:
	QMenuItem();

	void setText(const QString &);

private:
	QMenuItem(const QMenuItem &);
};

%End


%If (- Qt_3_0_0)

class QMenuItem;

%End


class QMenuData
{
%TypeHeaderCode
#include <qmenudata.h>
%End

public:
	QMenuData();

	uint count();

%If (- Qt_2_00)
	int insertItem(const char *,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0);
	int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0);
	int insertItem(const QPixmap &,const char *,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),int = 0);
	int insertItem(const char *,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int,int,
		       int = -1);
	int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int,int,
		       int = -1);
	int insertItem(const QPixmap&,const char *,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
		       int,int,int = -1);
%End
%If (Qt_2_00 - Qt_3_0_0)
	int insertItem(const QString &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0,
		       int = -1,int = -1);
	int insertItem(const QIconSet &,const QString &,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),int = 0,int = -1,int = -1);
	int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),int = 0,
		       int = -1,int = -1);
	int insertItem(const QIconSet &,const QPixmap &,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),int = 0,int = -1,int = -1);
%End
%If (Qt_3_0_0 -)
	int insertItem(const QString &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
		       const QKeySequence & = QKeySequence(0),int = -1,
		       int = -1);
	int insertItem(const QIconSet &,const QString &,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),
		       const QKeySequence & = QKeySequence(0),int = -1,
		       int = -1);
	int insertItem(const QPixmap &,SIP_RXOBJ_CON,SIP_SLOT_CON(int),
		       const QKeySequence & = QKeySequence(0),int = -1,
		       int = -1);
	int insertItem(const QIconSet &,const QPixmap &,SIP_RXOBJ_CON,
		       SIP_SLOT_CON(int),
		       const QKeySequence & = QKeySequence(0),int = -1,
		       int = -1);
%End

%If (- Qt_2_00)
	int insertItem(const char *,int = -1,int = -1);
	int insertItem(const char *,QPopupMenu *,int = -1,int = -1);
	int insertItem(const QPixmap &,const char *,int = -1,int = -1);
	int insertItem(const QPixmap &,const char *,QPopupMenu *,int = -1,
		       int = -1);
%End
%If (Qt_2_00 -)
	int insertItem(const QString &,int = -1,int = -1);
	int insertItem(const QIconSet &,const QString &,int = -1,int = -1);

	int insertItem(const QString &,QPopupMenu *,int = -1,int = -1);
	int insertItem(const QIconSet &,const QString &,QPopupMenu *,int = -1,
		       int = -1);
%End

	int insertItem(const QPixmap &,int = -1,int = -1);
%If (Qt_2_00 -)
	int insertItem(const QIconSet &,const QPixmap &,int = -1,int = -1);
%End
	int insertItem(const QPixmap &,QPopupMenu *,int = -1,int = -1);
%If (Qt_2_00 -)
	int insertItem(const QIconSet &,const QPixmap &,QPopupMenu *,int = -1,
		       int = -1);
%End

%If (Qt_2_1_0 -)
	int insertItem(QWidget * /Transfer/,int = -1,int = -1);
	int insertItem(const QIconSet &,QCustomMenuItem * /Transfer/,int = -1,
		       int = -1);
	int insertItem(QCustomMenuItem * /Transfer/,int = -1,int = -1);
%End

%If (Qt_2_1_0 -)
	int insertSeparator(int = -1);
%End
%If (- Qt_2_1_0)
	void insertSeparator(int = -1);
%End

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

%If (- Qt_3_0_0)
	int accel(int) const;
	void setAccel(int,int);
%End
%If (Qt_3_0_0 -)
	QKeySequence accel(int) const;
	void setAccel(const QKeySequence &,int);
%End

%If (- Qt_2_00)
	const char *text(int) const;
%End
%If (Qt_2_00 -)
	QIconSet *iconSet(int) const;
	QString text(int) const;
%End
	QPixmap *pixmap(int) const;

%If (Qt_2_00 -)
	void setWhatsThis(int,const QString &);
	QString whatsThis(int) const;
%End

%If (- Qt_2_00)
	void changeItem(const char *,int);
	void changeItem(const QPixmap &,int);
	void changeItem(const QPixmap &,const char *,int);
%End
%If (Qt_2_00 -)
	void changeItem(int,const QString &);
	void changeItem(int,const QPixmap &);
	void changeItem(int,const QIconSet &,const QString &);
	void changeItem(int,const QIconSet &,const QPixmap &);
%End

%If (Qt_3_0_0 -)
	bool isItemActive(int) const;
%End

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

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

%If (Qt_3_1_0 -)
	bool isItemVisible(int) const;
	void setItemVisible(int,bool);
%End

	virtual void updateItem(int);

	int indexOf(int) const;
	int idAt(int) const;
%If (- Qt_2_00)
	void setId(int,int);
%End
%If (Qt_2_00 -)
	virtual void setId(int,int);
%End

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

%If (Qt_2_1_0 -)
	bool setItemParameter(int,int);
	int itemParameter(int) const;
%End

	QMenuItem *findItem(int) const;
//	QMenuItem *findItem(int,QMenuData **) const;
%If (Qt_3_0_0 -)
//	Not documented in the Qt3 API (the similar findPopup() was internal in
//	Qt2).
//	QMenuItem *findItem(QPopupMenu *,int * = 0) const;
%End

%If (Qt_2_2_0 - Qt_3_0_0)
	void activateItemAt(int);
%End
%If (Qt_3_0_0 -)
	virtual void activateItemAt(int);
%End

protected:
	virtual void menuContentsChanged();
	virtual void menuStateChanged();
	virtual void menuInsPopup(QPopupMenu *);
	virtual void menuDelPopup(QPopupMenu *);
%If (- Qt_3_0_0)
//	Documented as internal in the Qt2 API.
//	QMenuItem *findPopup(QPopupMenu *,int * = 0);
%End

private:
	QMenuData(const QMenuData &);
};


%If (Qt_2_1_0 -)

class QCustomMenuItem : Qt
{
%TypeHeaderCode
#include <qmenudata.h>
%End

public:
	QCustomMenuItem();

	virtual bool fullSpan() const;
	virtual bool isSeparator() const;
	virtual void setFont(const QFont &);
	virtual void paint(QPainter *,const QColorGroup &,bool,bool,int,int,
			   int,int) = 0;
	virtual QSize sizeHint() = 0;
};

%End
