Salome HOME
bb8f5c0ef1af3b26da54f891ad660ed69f904c18
[modules/gui.git] / src / Qtx / QtxTable.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 // File:      QtxTable.h
20 // Author:    Sergey TELKOV
21
22 #ifndef QTX_TABLE_H
23 #define QTX_TABLE_H
24
25 #include "Qtx.h"
26
27 #include <qtable.h>
28
29 #ifndef QT_NO_TABLE
30
31 class QHeader;
32
33 class QTX_EXPORT QtxTable : public QTable
34 {
35   Q_OBJECT
36
37   class HeaderEditor;
38
39 public:
40   QtxTable( QWidget* = 0, const char* = 0 );
41   QtxTable( int, int, QWidget* = 0, const char* = 0 );
42   virtual ~QtxTable();
43
44   bool             headerEditable( Orientation ) const;
45
46   bool             editHeader( Orientation, const int );
47   void             endEditHeader( const bool = true );
48
49   virtual bool     eventFilter( QObject*, QEvent* );
50
51 signals:
52   void             headerEdited( QHeader*, int );
53   void             headerEdited( Orientation, int );
54
55 public slots:
56   virtual void     hide();
57   virtual void     setHeaderEditable( Orientation, bool );
58
59 private slots:
60   void             onScrollBarMoved( int );
61   void             onHeaderSizeChange( int, int, int );
62
63 protected:
64   virtual void     resizeEvent( QResizeEvent* );
65
66   virtual bool     beginHeaderEdit( Orientation, const int );
67   virtual void     endHeaderEdit( const bool = true );
68   bool             isHeaderEditing() const;
69   virtual QWidget* createHeaderEditor( QHeader*, const int, const bool = true );
70   virtual void     setHeaderContentFromEditor( QHeader*, const int, QWidget* );
71
72   QHeader*         header( Orientation o ) const;
73
74 private:
75   void             updateHeaderEditor();
76   void             beginHeaderEdit( Orientation, const QPoint& );
77   QRect            headerSectionRect( QHeader*, const int ) const;
78
79 private:
80   QWidget*         myHeaderEditor;
81   QHeader*         myEditedHeader;
82   int              myEditedSection;
83   QMap<int, bool>  myHeaderEditable;
84 };
85
86 #endif
87
88 #endif