]> SALOME platform Git repositories - modules/gui.git/blob - src/ObjBrowser/OB_Browser.h
Salome HOME
debug IPAL9411: redefine virtual methods createEmptyStudy and activateModule
[modules/gui.git] / src / ObjBrowser / OB_Browser.h
1 #ifndef OB_BROWSER_H
2 #define OB_BROWSER_H
3
4 #include "OB.h"
5
6 #include <qframe.h>
7
8 #include <qmap.h>
9 #include <qlistview.h>
10
11 #include <SUIT_DataObject.h>
12 #include <SUIT_DataObjectKey.h>
13 #include <SUIT_PopupClient.h>
14
15 #ifdef WNT
16 #pragma warning( disable:4251 )
17 #endif
18
19 class QToolTip;
20 class OB_Filter;
21 class OB_ListView;
22
23 class OB_EXPORT OB_Browser : public QFrame, public SUIT_PopupClient
24 {
25         Q_OBJECT
26
27   class ToolTip;
28
29 public:
30   OB_Browser( QWidget* = 0, SUIT_DataObject* theRoot = 0 );
31   virtual ~OB_Browser();
32
33   virtual QString   popupClientType() const { return QString( "ObjectBrowser" ); }
34
35   SUIT_DataObject*  getRootObject() const;
36   virtual void      setRootObject( SUIT_DataObject* theRoot = 0 );
37
38   int               numberOfSelected() const;
39
40   DataObjectList    getSelected() const;
41   void              getSelected( DataObjectList& ) const;
42
43   virtual void      setSelected( const SUIT_DataObject* theObject, const bool = false );
44   virtual void      setSelected( const DataObjectList& theObjLst, const bool = false );
45
46   bool              isOpen( SUIT_DataObject* theObject ) const;
47   virtual void      setOpen( SUIT_DataObject* theObject, const bool theOpen = true );
48
49   bool              isAutoUpdate() const;
50   virtual void      setAutoUpdate( const bool );
51
52   bool              isAutoDeleteObjects() const;
53   virtual void      setAutoDeleteObjects( const bool );
54
55   virtual void      updateTree( SUIT_DataObject* = 0 );
56   virtual void      replaceTree( SUIT_DataObject*, SUIT_DataObject* );
57
58   bool              isShowToolTips();
59   void              setShowToolTips( const bool theDisplay );
60
61   void              adjustWidth();
62
63   SUIT_DataObject*  dataObjectAt( const QPoint& ) const;
64
65   OB_Filter*        filter() const;
66   void              setFilter( OB_Filter* );
67
68   bool              rootIsDecorated() const;
69   void              setRootIsDecorated( const bool );
70
71   int               autoOpenLevel() const;
72   void              setAutoOpenLevel( const int );
73
74   virtual int       addColumn( const QString&, const int id = -1, const int width = -1 );
75   virtual int       addColumn( const QIconSet&, const QString&, const int id = -1, const int width = -1 );
76   virtual void      removeColumn( const int id );
77
78   void              setNameTitle( const QString& );
79   virtual void      setNameTitle( const QIconSet&, const QString& );
80   void              setColumnTitle( const int id, const QString& );
81   virtual void      setColumnTitle( const int id, const QIconSet&, const QString& );
82
83   QString           nameTitle() const;
84   QString           columnTitle( const int ) const;
85
86   bool              isColumnVisible( const int ) const;
87   virtual void      setColumnShown( const int, const bool );
88
89   QValueList<int>   columns() const;
90
91   bool              appropriateColumn( const int ) const;
92   virtual void      setAppropriateColumn( const int, const bool );
93
94   virtual bool      eventFilter(QObject* watched, QEvent* e);
95
96   QListView*        listView() const;
97
98   virtual void      contextMenuPopup( QPopupMenu* );
99
100 signals:
101   void              selectionChanged();
102   void              dropped( DataObjectList, SUIT_DataObject*, int );
103
104 private slots:
105   void              onExpand();
106   void              onColumnVisible( int );
107   void              onDestroyed( SUIT_DataObject* );
108   void              onDropped( QPtrList<QListViewItem>, QListViewItem*, int );
109
110 protected:
111   void              adjustWidth( QListViewItem* );
112   virtual void      updateView( const SUIT_DataObject* theStartObj = 0 );
113   virtual void      updateText();
114
115   virtual void      keyPressEvent( QKeyEvent* );
116
117   SUIT_DataObject*  dataObject( const QListViewItem* ) const;
118   QListViewItem*    listViewItem( const SUIT_DataObject* ) const;
119
120 private:
121   typedef QMap<SUIT_DataObject*, QListViewItem*> ItemMap;
122   typedef SUIT_DataObjectKeyHandle               DataObjectKey;
123   typedef QMap<SUIT_DataObject*, int>            DataObjectMap;
124   typedef QMap<DataObjectKey, int>               DataObjectKeyMap;
125
126 private:
127   void              expand( QListViewItem* );
128   bool              hasClosed( QListViewItem* ) const;
129
130   void              autoOpenBranches();
131   void              openBranch( QListViewItem*, const int );
132
133   void              removeReferences( QListViewItem* );
134   void              removeConnections( SUIT_DataObject* );
135   void              createConnections( SUIT_DataObject* );
136   void              removeObject( SUIT_DataObject*, const bool = true );
137
138   void              updateText( QListViewItem* );
139
140   DataObjectKey     objectKey( QListViewItem* ) const;
141   DataObjectKey     objectKey( SUIT_DataObject* ) const;
142
143   QListViewItem*    createTree( const SUIT_DataObject*, QListViewItem*, QListViewItem* = 0 );
144   QListViewItem*    createItem( const SUIT_DataObject*, QListViewItem*, QListViewItem* = 0 );
145
146   SUIT_DataObject*  storeState( DataObjectMap&, DataObjectMap&,
147                                 DataObjectKeyMap&, DataObjectKeyMap&, DataObjectKey& ) const;
148   void              restoreState( const DataObjectMap&, const DataObjectMap&, const SUIT_DataObject*,
149                                   const DataObjectKeyMap&, const DataObjectKeyMap&, const DataObjectKey& );
150
151 private:
152   OB_ListView*      myView;
153   SUIT_DataObject*  myRoot;
154   ItemMap           myItems;
155   QToolTip*         myTooltip;
156   QMap<int, int>    myColumnIds;
157   bool              myAutoUpdate;
158   bool              myAutoDelObjs;
159   bool              myShowToolTips;
160   bool              myRootDecorated;
161   int               myAutoOpenLevel;
162
163   friend class OB_Browser::ToolTip;
164 };
165
166 #endif