KDevelop API Documentation

splitter.h

Go to the documentation of this file.
00001 /* This file is part of the KDE project
00002    Copyright (C) 2001 Bernd Gehrmann <bernd@kdevelop.org>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00017    Boston, MA 02111-1307, USA.
00018 */
00019 
00020 #ifndef _SPLITTER_H_
00021 #define _SPLITTER_H_
00022 
00023 #include <qvaluelist.h>
00024 #include <qframe.h>
00025 #include <qptrlist.h>
00026 
00027 class SplitterHandle;
00028 
00029 
00039 class Splitter : public QWidget
00040 {
00041     Q_OBJECT
00042     
00043 public:
00044     Splitter( QWidget *parent=0, const char *name=0 );
00045     ~Splitter();
00046 
00047     void setOrientation(Orientation orient);
00048     Orientation orientation() const;
00049 
00053     bool hasMultipleChildren() const;
00059     QWidget *firstChild();
00060     
00064     void addChild(QWidget *w);
00070     void splitChild(QWidget *old, QWidget *w);
00076     void replaceChild(QWidget *old, QWidget *w);
00081     void moveSplitter(QWidget *w, int pos);
00082 
00083 signals:
00084     void collapsed(Splitter *splitter);
00085 
00086 protected:
00087     virtual QSize minimumSizeHint() const;
00088     virtual void childEvent(QChildEvent *e);
00089     virtual void resizeEvent(QResizeEvent *e);
00090 
00091 private slots:
00092     void collapse();
00093     
00094 private:
00095     void doLayout();
00096     int handleWidth() const;
00097     
00098     QPtrList<QWidget> childlist;
00099     QPtrList<SplitterHandle> handlelist;
00100     QValueList<int> sizes; // should really be a QVector
00101     Orientation _or;
00102 };
00103 
00104 
00110 class SplitterBar : public QFrame
00111 {
00112     Q_OBJECT
00113 
00114 public:
00115     SplitterBar( QWidget *parent=0, const char *name=0 );
00116     ~SplitterBar();
00117 
00118 protected:
00119     virtual void mouseMoveEvent(QMouseEvent *e);
00120     virtual void mousePressEvent(QMouseEvent *e);
00121     virtual void childEvent(QChildEvent *e);
00122     virtual bool eventFilter(QObject *o, QEvent *e);
00123 
00124 private:
00125     int offset;
00126 };
00127 
00128 
00133 class SplitterHandle : public QWidget
00134 {
00135 public:
00136     SplitterHandle( QWidget *embeddedSibling, Splitter *parent, const char *name=0 );
00137     ~SplitterHandle();
00138 
00139 protected:
00140     virtual void mouseMoveEvent(QMouseEvent *e);
00141     virtual void mousePressEvent(QMouseEvent *e);
00142     virtual void paintEvent(QPaintEvent *);
00143 
00144 private:
00145     int offset;
00146     QWidget *sibling;
00147 };
00148 
00149 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:36 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003