// This is the SIP interface definition for TQScrollView.
//
// 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>TQScrollView</Title>
<FuncSynopsis>
	<FuncDef>void <Function>contentsToViewport</Function></FuncDef>
	<ParamDef>int <Parameter>x</Parameter></ParamDef>
	<ParamDef>int <Parameter>y</Parameter></ParamDef>
	<ParamDef>int &<Parameter>vx</Parameter></ParamDef>
	<ParamDef>int &<Parameter>vy</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes the <Literal>x</Literal> and <Literal>y</Literal> parameters and
returns a tuple containing the <Literal>vx</Literal> and <Literal>vy</Literal>
values. (TQt v2+)
</Para>

<FuncSynopsis>
	<FuncDef>void <Function>viewportToContents</Function></FuncDef>
	<ParamDef>int <Parameter>vx</Parameter></ParamDef>
	<ParamDef>int <Parameter>vy</Parameter></ParamDef>
	<ParamDef>int &<Parameter>x</Parameter></ParamDef>
	<ParamDef>int &<Parameter>y</Parameter></ParamDef>
</FuncSynopsis>
<Para>
This takes the <Literal>vx</Literal> and <Literal>vy</Literal> parameters and
returns a tuple containing the <Literal>x</Literal> and <Literal>y</Literal>
values. (TQt v2+)
</Para>
</Sect2>
%End


class TQScrollView : TQFrame
{
%TypeHeaderCode
#include <tqscrollview.h>
%End

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

	enum ResizePolicy {
		Default,
		Manual,
		AutoOne,
		AutoOneFit,
	};

	virtual void setResizePolicy(ResizePolicy);
	ResizePolicy resizePolicy() const;

	void styleChange(TQStyle &);
	// The child was reparented when it was added, and it stays that way,
	// so we don't transfer it back here.
	void removeChild(TQWidget *);
	virtual void addChild(TQWidget * /Transfer/,int = 0,int = 0);
	virtual void moveChild(TQWidget *,int,int);
	int childX(TQWidget *);
	int childY(TQWidget *);

	enum ScrollBarMode {
		Auto,
		AlwaysOff,
		AlwaysOn
	};

	ScrollBarMode vScrollBarMode() const;
	virtual void setVScrollBarMode(ScrollBarMode);

	ScrollBarMode hScrollBarMode() const;
	virtual void setHScrollBarMode(ScrollBarMode);

	TQWidget *cornerWidget() const;
	virtual void setCornerWidget(TQWidget * /Transfer/);

	TQScrollBar *horizontalScrollBar() const;
	TQScrollBar *verticalScrollBar() const;
	TQWidget *viewport() const;
	TQWidget *clipper() const;

	int visibleWidth() const;
	int visibleHeight() const;

	int contentsWidth() const;
	int contentsHeight() const;
	int contentsX() const;
	int contentsY() const;

	void resize(int,int);
	void resize(const TQSize &);
	void show();

	void updateContents(int,int,int,int);
	void updateContents(const TQRect &);
	void updateContents();
	void repaintContents(int,int,int,int,bool = 1);
	void repaintContents(const TQRect &,bool = 1);
	void repaintContents(bool = 1);

	// Note that this wasn't actually const until TQt v3.0.0.
	void contentsToViewport(int,int,int &,int &) const;

	// Note that this wasn't actually const until TQt v3.0.0.
	void viewportToContents(int,int,int &,int &) const;

	TQPoint contentsToViewport(const TQPoint &) const;
	TQPoint viewportToContents(const TQPoint &) const;
	void enableClipper(bool);

	void setStaticBackground(bool);
	bool hasStaticBackground() const;

	TQSize viewportSize(int,int) const;
	TQSize sizeHint() const;
	TQSize minimumSizeHint() const;

	void removeChild(TQObject * /TransferBack/);

	bool isHorizontalSliderPressed();
	bool isVerticalSliderPressed();

%If (TQt_DRAGANDDROP)
	virtual void setDragAutoScroll(bool);
	bool dragAutoScroll() const;
%End

signals:
	void contentsMoving(int,int);
	void horizontalSliderPressed();
	void horizontalSliderReleased();
	void verticalSliderPressed();
	void verticalSliderReleased();

public slots:
	virtual void resizeContents(int,int);
	void scrollBy(int,int);
	virtual void setContentsPos(int,int);
	void ensureVisible(int,int);
	void ensureVisible(int,int,int,int);
	void center(int,int);
	void center(int,int,float,float);

	void updateScrollBars();
	void setEnabled(bool);

protected:
	virtual void drawContents(TQPainter *,int,int,int,int);
	virtual void drawContentsOffset(TQPainter *,int,int,int,int,int,int);

	virtual void contentsMousePressEvent(TQMouseEvent *);
	virtual void contentsMouseReleaseEvent(TQMouseEvent *);
	virtual void contentsMouseDoubleClickEvent(TQMouseEvent *);
	virtual void contentsMouseMoveEvent(TQMouseEvent *);
%If (TQt_DRAGANDDROP)
	virtual void contentsDragEnterEvent(TQDragEnterEvent *);
	virtual void contentsDragMoveEvent(TQDragMoveEvent *);
	virtual void contentsDragLeaveEvent(TQDragLeaveEvent *);
	virtual void contentsDropEvent(TQDropEvent *);
%End
	virtual void contentsWheelEvent(TQWheelEvent *);
	virtual void contentsContextMenuEvent(TQContextMenuEvent *);

	virtual void viewportPaintEvent(TQPaintEvent *);
	virtual void viewportResizeEvent(TQResizeEvent *);
	virtual void viewportMousePressEvent(TQMouseEvent *);
	virtual void viewportMouseReleaseEvent(TQMouseEvent *);
	virtual void viewportMouseDoubleClickEvent(TQMouseEvent *);
	virtual void viewportMouseMoveEvent(TQMouseEvent *);
%If (TQt_DRAGANDDROP)
	virtual void viewportDragEnterEvent(TQDragEnterEvent *);
	virtual void viewportDragMoveEvent(TQDragMoveEvent *);
	virtual void viewportDragLeaveEvent(TQDragLeaveEvent *);
	virtual void viewportDropEvent(TQDropEvent *);
%End
	virtual void viewportWheelEvent(TQWheelEvent *);
	virtual void viewportContextMenuEvent(TQContextMenuEvent *);

	void frameChanged();

	virtual void setMargins(int,int,int,int);
	int leftMargin() const;
	int topMargin() const;
	int rightMargin() const;
	int bottomMargin() const;

	bool focusNextPrevChild(bool);

	virtual void setHBarGeometry(TQScrollBar &,int,int,int,int);
	virtual void setVBarGeometry(TQScrollBar &,int,int,int,int);

	void resizeEvent(TQResizeEvent *);
	void mousePressEvent(TQMouseEvent *);
	void mouseReleaseEvent(TQMouseEvent *);
	void mouseDoubleClickEvent(TQMouseEvent *);
	void mouseMoveEvent(TQMouseEvent *);
	void wheelEvent(TQWheelEvent *);
	void contextMenuEvent(TQContextMenuEvent *);
	bool eventFilter(TQObject *,TQEvent *);

	void setCachedSizeHint(const TQSize &) const;
	TQSize cachedSizeHint() const;
	void fontChange(const TQFont &);

private:
	TQScrollView(const TQScrollView &);

public:
	void disableSizeHintCaching();
};
