SideElement.hh

00001 /*===========================================================================*\
00002  *                                                                           *
00003  *                              OpenFlipper                                  *
00004  *      Copyright (C) 2001-2009 by Computer Graphics Group, RWTH Aachen      *
00005  *                           www.openflipper.org                             *
00006  *                                                                           *
00007  *---------------------------------------------------------------------------*
00008  *  This file is part of OpenFlipper.                                        *
00009  *                                                                           *
00010  *  OpenFlipper is free software: you can redistribute it and/or modify      *
00011  *  it under the terms of the GNU Lesser General Public License as           *
00012  *  published by the Free Software Foundation, either version 3 of           *
00013  *  the License, or (at your option) any later version with the              *
00014  *  following exceptions:                                                    *
00015  *                                                                           *
00016  *  If other files instantiate templates or use macros                       *
00017  *  or inline functions from this file, or you compile this file and         *
00018  *  link it with other files to produce an executable, this file does        *
00019  *  not by itself cause the resulting executable to be covered by the        *
00020  *  GNU Lesser General Public License. This exception does not however       *
00021  *  invalidate any other reasons why the executable file might be            *
00022  *  covered by the GNU Lesser General Public License.                        *
00023  *                                                                           *
00024  *  OpenFlipper is distributed in the hope that it will be useful,           *
00025  *  but WITHOUT ANY WARRANTY; without even the implied warranty of           *
00026  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            *
00027  *  GNU Lesser General Public License for more details.                      *
00028  *                                                                           *
00029  *  You should have received a copy of the GNU LesserGeneral Public          *
00030  *  License along with OpenFlipper. If not,                                  *
00031  *  see <http://www.gnu.org/licenses/>.                                      *
00032  *                                                                           *
00033 \*===========================================================================*/
00034 
00035 /*===========================================================================*\
00036  *                                                                           *
00037  *   $Revision: 8520 $                                                         *
00038  *   $Author: moebius $                                                      *
00039  *   $Date: 2010-02-10 15:56:59 +0100 (Mi, 10. Feb 2010) $                   *
00040  *                                                                           *
00041 \*===========================================================================*/
00042 
00043 #ifndef SIDE_ELEMENT_
00044 #define SIDE_ELEMENT_
00045 
00046 //=============================================================================
00047 //
00048 //  CLASS SideElement
00049 //
00050 //=============================================================================
00051 
00052 //== INCLUDES =================================================================
00053 
00054 #include <QWidget>
00055 #include <QSettings>
00056 
00057 //== FORWARDDECLARATIONS ======================================================
00058 
00059 class QLabel;
00060 class QToolButton;
00061 class QAction;
00062 class QDialog;
00063 class QVBoxLayout;
00064 
00065 class SideArea;
00066 
00067 
00068 //== CLASS DEFINITION =========================================================
00069 
00070 
00077 class SideElement : public QWidget
00078 {
00079   Q_OBJECT
00080 
00081   public:
00087     SideElement (SideArea *_parent, QWidget *_w, QString _name);
00088 
00090     ~SideElement ();
00091 
00093     void saveState (QSettings &_settings);
00094 
00096     void restoreState (QSettings &_settings);
00097 
00098   private:
00099 
00101     class TopArea : public QWidget
00102     {
00103       public:
00104         TopArea (SideElement *_e);
00105 
00106         virtual void mousePressEvent (QMouseEvent *_event);
00107       private:
00108         SideElement *e_;
00109     };
00110 
00112     void labelPress ();
00113     
00114   private slots:
00115 
00117     void detachPressed (bool _checked);
00118 
00120     void dialogClosed ();
00121 
00122   private:
00123 
00124     // parent
00125     SideArea *parent_;
00126 
00127     // plugin widget
00128     QWidget *widget_;
00129 
00130     // plugin name
00131     QString name_;
00132 
00133     // main layout
00134     QVBoxLayout *mainLayout_;
00135 
00136     // status
00137     bool active_;
00138 
00139     // label that display the plugin name
00140     QLabel *label_;
00141 
00142     // detach button & action
00143     QToolButton *detachButton_;
00144     QAction *detachAction_;
00145     
00146     // dialog for detached widget
00147     QDialog *dialog_;
00148 };
00149 
00150 //=============================================================================
00151 //=============================================================================
00152 #endif // SIDE_ELEMENT_ defined
00153 //=============================================================================

acg pic Project OpenFlipper, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .