]> SALOME platform Git repositories - modules/gui.git/blob - src/TreeData/DockWidgets.cxx
Salome HOME
Merge from V6_main 01/04/2013
[modules/gui.git] / src / TreeData / DockWidgets.cxx
1 // Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
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/ or email : webmaster.salome@opencascade.com
18 //
19
20 // Author: Guillaume Boulant (EDF/R&D)
21
22 #include "DockWidgets.hxx"
23
24 // Qt includes
25 #include <QMainWindow>
26
27 // SALOME includes
28 #include <SUIT_Desktop.h>
29 #include <SUIT_DataBrowser.h>
30 #include <QtxTreeView.h>
31
32 /*!
33  * This create a gui container to hold widgets dedicated to the XCAD
34  * data model. By default, the dock widgets are not visible. Use the
35  * show() method to control the visibility (usefull when activating
36  * and desactivating the module to show/hide the dock widgets).
37  *
38  * This class does not make any hypothesis on what will be embedded in
39  * the dock widgets (only that it is QTreeView). The QTreeView is
40  * defined elsewhere and is generaly rendering a tree model containing
41  * tree items.
42  */
43 DockWidgets::DockWidgets(SalomeApp_Application* salomeApp,
44                          bool tabify,
45                          const char * title) {
46   _salomeApp = salomeApp;
47
48   QMainWindow *parent = _salomeApp->desktop();
49   _dwDataPanel = new QDockWidget(parent);
50   _dwDataPanel->setVisible(false);
51   _dwDataPanel->setWindowTitle(title);
52   parent->addDockWidget(Qt::LeftDockWidgetArea, _dwDataPanel);
53   //
54   // At this step, the _dwDataPanel is located side by side with the object
55   // browser (or one over the other).
56   //
57   // It is possible to tabify the different dock widgets in one single
58   // tabbed widget. See the above example:
59   this->tabify(tabify);
60 }
61
62 void DockWidgets::tabify(bool tabify) {
63   if ( tabify ) {    
64     // We first get the object browser tree view, and then the
65     // associated DockWidget. Note that the tree view is a SALOME
66     // specific extention of the originate QTreeView and called
67     // QtxTreeView.
68     SUIT_DataBrowser* objectBrowser = _salomeApp->objectBrowser();
69     QtxTreeView* treeView = objectBrowser->treeView();
70     QWidget* pw = treeView->parentWidget();
71     QDockWidget* dwObjectBrowser = 0;
72     while ( pw && !dwObjectBrowser ) {
73       dwObjectBrowser = ::qobject_cast<QDockWidget*>( pw );
74       pw = pw->parentWidget();
75     };
76     QMainWindow *parent = _salomeApp->desktop();
77     parent->tabifyDockWidget(_dwDataPanel, dwObjectBrowser);
78     parent->setTabOrder(_dwDataPanel, dwObjectBrowser);
79     parent->setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::North);
80   }
81   else {
82     // TO BE IMPLEMENTED
83   }
84 }
85
86 /*!
87  * This function controls the visibility of the dock widgets.
88  */
89 void DockWidgets::show(bool isVisible) {
90   _dwDataPanel->setVisible(isVisible);
91 }
92
93 /*!
94  * This function initializes the central part of the dock widget with
95  * a tree view that can hold a hierarchical data model.
96  */
97 void DockWidgets::setDataView(QTreeView * dataView) {
98   _tvDataView = dataView;
99   _tvDataView->setParent(_dwDataPanel);
100   _tvDataView->setMinimumHeight(200);
101   _dwDataPanel->setWidget(_tvDataView);
102 }
103
104 void DockWidgets::setPropertiesView(QTreeView * propertiesView) {
105   // Not implemented yet
106 }