// This is the SIP interface definition for TQTab and TQTabBar.
//
// 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>TQTab</Title>
<Para>
<Literal>TQTab</Literal> is fully implemented.
</Para>
</Sect2>

<Sect2><Title>TQTabBar</Title>
<FuncSynopsis>
        <FuncDef>TQPtrList&lt;TQTab&gt; <Function>tabList</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
This returns a list of <Literal>TQTab</Literal> instances.
</Para>
</Sect2>
%End


class TQTab : TQt
{
%TypeHeaderCode
#include <tqtabbar.h>
%End

public:
	TQTab();
	TQTab(const TQString &);
	TQTab(const TQIconSet &,const TQString & = TQString::null);
	virtual ~TQTab();

	void setText(const TQString &);
	TQString text() const;
	void setIconSet(const TQIconSet &);
	TQIconSet *iconSet() const;
	void setRect(const TQRect &);
	TQRect rect() const;
	void setEnabled(bool);
	bool isEnabled() const;
	void setIdentifier(int);
	int identifier() const;
};

class TQTabBar : TQWidget
{
%TypeHeaderCode
#include <tqtabbar.h>
%End

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

	enum Shape {
		RoundedAbove,
		RoundedBelow,
		TriangularAbove,
		TriangularBelow
	};

	Shape shape() const;
	virtual void setShape(Shape);

	void show();

	virtual int addTab(TQTab * /Transfer/);
	virtual int insertTab(TQTab * /Transfer/,int = -1);
	virtual void removeTab(TQTab *);

	virtual void setTabEnabled(int,bool);
	bool isTabEnabled(int) const;

	TQSize sizeHint() const;
	TQSize minimumSizeHint() const;
	TQSizePolicy sizePolicy() const;

	int currentTab() const;
	int keyboardFocusTab() const;

	TQTab *tab(int) const;
	TQTab *tabAt(int) const;
	int indexOf(int) const;
	int count() const;

	virtual void layoutTabs();
	virtual TQTab *selectTab(const TQPoint &) const;
 
	void removeToolTip(int);
	void setToolTip(int,const TQString &);
	TQString toolTip(int) const;

public slots:
	virtual void setCurrentTab(int);
	virtual void setCurrentTab(TQTab *);

signals:
	void selected(int);
	void layoutChanged();

protected:
	virtual void paint(TQPainter *,TQTab *,bool) const;
	virtual void paintLabel(TQPainter *,const TQRect &,TQTab *,bool) const;

	void focusInEvent(TQFocusEvent *);
	void focusOutEvent(TQFocusEvent *);

	void resizeEvent(TQResizeEvent *);
	void paintEvent(TQPaintEvent *);
	void mousePressEvent(TQMouseEvent *);
	void mouseMoveEvent(TQMouseEvent *);
	void mouseReleaseEvent(TQMouseEvent *);
	void keyPressEvent(TQKeyEvent *);
	void styleChange(TQStyle &);
	void fontChange(const TQFont &);

	bool event(TQEvent *);

	SIP_PYLIST tabList() [TQPtrList<TQTab> *()];
%MethodCode
		if ((sipRes = PyList_New(0)) == NULL)
			sipIsErr = 1;
		else
		{
			TQPtrList<TQTab> *tl;
			TQTab *tab;

			Py_BEGIN_ALLOW_THREADS
			tl = sipCpp -> sipProtect_tabList();
			Py_END_ALLOW_THREADS

			// Convert the list.
			for (TQPtrListIterator<TQTab> it(*tl); (tab = it.current()) != NULL; ++it)
			{
				PyObject *inst = sipBuildResult(&sipIsErr,"C",tab,sipClass_TQTab,NULL);

				if (sipIsErr)
					break;

				int rc = PyList_Append(sipRes,inst);

				Py_DECREF(inst);

				if (rc < 0)
				{
					sipIsErr = 1;
					break;
				}
			}

			if (sipIsErr)
            {
				Py_DECREF(sipRes);
            }
		}
%End

private:
	TQTabBar(const TQTabBar &);
};
