// This is the SIP interface definition for QScrollView.
//
// 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>QScrollView</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. (Qt 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. (Qt v2+)
</Para>
</Sect2>
%End


class QScrollView : QFrame
{
%TypeHeaderCode
#include <qscrollview.h>
%End

public:
	QScrollView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0);

	enum ResizePolicy {
		Default,
		Manual,
		AutoOne,
%If (Qt_2_3_0 -)
		AutoOneFit,
%End
	};

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

%If (Qt_2_1_0 -)
	void styleChange(QStyle &);
%End
	// The child was reparented when it was added, and it stays that way,
	// so we don't transfer it back here.
	void removeChild(QWidget *);
%If (- Qt_2_00)
	void addChild(QWidget * /Transfer/);
	virtual void addChild(QWidget * /Transfer/,int,int);
%End
%If (Qt_2_00 -)
	virtual void addChild(QWidget * /Transfer/,int = 0,int = 0);
%End
	virtual void moveChild(QWidget *,int,int);
	int childX(QWidget *);
	int childY(QWidget *);
%If (- Qt_3_0_0)
	bool childIsVisible(QWidget *);
	void showChild(QWidget *,bool = 1);
%End

	enum ScrollBarMode {
		Auto,
		AlwaysOff,
		AlwaysOn
	};

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

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

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

%If (- Qt_2_00)
	QScrollBar *horizontalScrollBar();
	QScrollBar *verticalScrollBar();
	QWidget *viewport();
%End
%If (Qt_2_00 -)
	QScrollBar *horizontalScrollBar() const;
	QScrollBar *verticalScrollBar() const;
	QWidget *viewport() const;
	QWidget *clipper() const;

	int visibleWidth() const;
	int visibleHeight() const;
%End

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

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

%If (Qt_2_00 -)
	void updateContents(int,int,int,int);
%End
%If (Qt_2_1_0 -)
	void updateContents(const QRect &);
%End
%If (Qt_3_0_0 -)
	void updateContents();
%End
%If (Qt_2_00 -)
	void repaintContents(int,int,int,int,bool = 1);
%End
%If (Qt_2_1_0 -)
	void repaintContents(const QRect &,bool = 1);
%End
%If (Qt_3_0_0 -)
	void repaintContents(bool = 1);
%End

%If (Qt_2_00 -)
	// Note that this wasn't actually const until Qt v3.0.0.
	void contentsToViewport(int,int,int &,int &) const;

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

%If (- Qt_3_0_0)
	QPoint contentsToViewport(const QPoint &);
	QPoint viewportToContents(const QPoint &);
%End
%If (Qt_3_0_0 -)
	QPoint contentsToViewport(const QPoint &) const;
	QPoint viewportToContents(const QPoint &) const;
%End
	void enableClipper(bool);

%If (Qt_2_2_0 -)
	void setStaticBackground(bool);
	bool hasStaticBackground() const;
%End

	QSize viewportSize(int,int) const;
%If (Qt_2_1_0 -)
	QSize sizeHint() const;
%End
%If (- Qt_3_0_0)
	QSizePolicy sizePolicy() const;
%End
	QSize minimumSizeHint() const;

	void removeChild(QObject * /TransferBack/);
%End

%If (Qt_3_1_0 -)
	bool isHorizontalSliderPressed();
	bool isVerticalSliderPressed();
%End

%If (Qt_DRAGANDDROP)
%If (Qt_2_1_0 - Qt_3_0_0)
	void setDragAutoScroll(bool);
%End
%If (Qt_3_0_0 -)
	virtual void setDragAutoScroll(bool);
%End
%If (Qt_2_1_0 -)
	bool dragAutoScroll() const;
%End
%End

signals:
	void contentsMoving(int,int);
%If (Qt_3_1_0 -)
	void horizontalSliderPressed();
	void horizontalSliderReleased();
	void verticalSliderPressed();
	void verticalSliderReleased();
%End

public slots:
	virtual void resizeContents(int,int);
	void scrollBy(int,int);
%If (- Qt_2_00)
	void setContentsPos(int,int);
%End
%If (Qt_2_00 -)
	virtual void setContentsPos(int,int);
%End
	void ensureVisible(int,int);
	void ensureVisible(int,int,int,int);
	void center(int,int);
	void center(int,int,float,float);

	void updateScrollBars();
%If (Qt_2_00 -)
	void setEnabled(bool);
%End

protected:
%If (Qt_2_00 -)
	virtual void drawContents(QPainter *,int,int,int,int);
%End
	virtual void drawContentsOffset(QPainter *,int,int,int,int,int,int);

%If (Qt_2_00 -)
	virtual void contentsMousePressEvent(QMouseEvent *);
	virtual void contentsMouseReleaseEvent(QMouseEvent *);
	virtual void contentsMouseDoubleClickEvent(QMouseEvent *);
	virtual void contentsMouseMoveEvent(QMouseEvent *);
%If (Qt_DRAGANDDROP)
	virtual void contentsDragEnterEvent(QDragEnterEvent *);
	virtual void contentsDragMoveEvent(QDragMoveEvent *);
	virtual void contentsDragLeaveEvent(QDragLeaveEvent *);
	virtual void contentsDropEvent(QDropEvent *);
%End
	virtual void contentsWheelEvent(QWheelEvent *);
%End
%If (Qt_3_0_0 -)
	virtual void contentsContextMenuEvent(QContextMenuEvent *);
%End

	virtual void viewportPaintEvent(QPaintEvent *);
%If (Qt_2_00 -)
	virtual void viewportResizeEvent(QResizeEvent *);
%End
	virtual void viewportMousePressEvent(QMouseEvent *);
	virtual void viewportMouseReleaseEvent(QMouseEvent *);
	virtual void viewportMouseDoubleClickEvent(QMouseEvent *);
	virtual void viewportMouseMoveEvent(QMouseEvent *);
%If (Qt_2_00 -)
%If (Qt_DRAGANDDROP)
	virtual void viewportDragEnterEvent(QDragEnterEvent *);
	virtual void viewportDragMoveEvent(QDragMoveEvent *);
	virtual void viewportDragLeaveEvent(QDragLeaveEvent *);
	virtual void viewportDropEvent(QDropEvent *);
%End
	virtual void viewportWheelEvent(QWheelEvent *);
%End
%If (Qt_3_0_0 -)
	virtual void viewportContextMenuEvent(QContextMenuEvent *);
%End

	void frameChanged();

%If (- Qt_2_00)
	void setMargins(int,int,int,int);
%End
%If (Qt_2_00 -)
	virtual void setMargins(int,int,int,int);
%End
	int leftMargin() const;
	int topMargin() const;
	int rightMargin() const;
	int bottomMargin() const;

	bool focusNextPrevChild(bool);

%If (Qt_2_00 -)
	virtual void setHBarGeometry(QScrollBar &,int,int,int,int);
	virtual void setVBarGeometry(QScrollBar &,int,int,int,int);
%End

	void resizeEvent(QResizeEvent *);
%If (Qt_3_0_0 -)
	void mousePressEvent(QMouseEvent *);
	void mouseReleaseEvent(QMouseEvent *);
	void mouseDoubleClickEvent(QMouseEvent *);
	void mouseMoveEvent(QMouseEvent *);
%End
%If (Qt_2_00 -)
	void wheelEvent(QWheelEvent *);
%End
%If (Qt_3_0_0 -)
	void contextMenuEvent(QContextMenuEvent *);
%End
	bool eventFilter(QObject *,QEvent *);

%If (Qt_3_1_0 -)
	void setCachedSizeHint(const QSize &) const;
	QSize cachedSizeHint() const;
	void fontChange(const QFont &);
%End

private:
	QScrollView(const QScrollView &);

public:
%If (Qt_3_1_0 -)
	void disableSizeHintCaching();
%End
};
