1 // SALOME SALOMEGUI : implementation of desktop and GUI kernel
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
24 // File : QAD_RightFrame.cxx
25 // Author : Nicolas REJNERI
30 #include "QAD_RightFrame.h"
31 #include "QAD_Application.h"
32 #include "QAD_Desktop.h"
33 #include "QAD_StudyFrame.h"
34 #include "QAD_Tools.h"
35 #include <qvaluelist.h>
38 #include <qmessagebox.h>
40 // Open CASCADE Include
41 #include <OSD_SharedLibrary.hxx>
44 \class QAD_RightFrame QAD_RightFrame.h
45 \brief Frame window which contains QAD_ViewFrame, QAD_PyInterp and QAD_Message.
48 typedef QAD_ViewFrame* View(QAD_RightFrame*);
54 QAD_RightFrame::QAD_RightFrame(QWidget *parent, const char *name,
55 QAD_PyInterp* interp, ViewType vt)
56 : QAD_Splitter( Qt::Vertical, parent, name )
58 this->setCompressEnabled( true );
61 QAD_Desktop* Desktop = QAD_Application::getDesktop();
62 int DesktopHeight = Desktop->getMainFrame()->width();
63 int DesktopWidth = Desktop->getMainFrame()->height();
67 OSD_SharedLibrary SharedLib = OSD_SharedLibrary();
72 if (myViewType == VIEW_OCC) {
73 if ( dir = getenv("SALOME_SITE_DIR")) {
74 dir = QAD_Tools::addSlash(dir) ;
76 dir = QAD_Tools::addSlash(dir) ;
77 dir = dir + "salome" ;
78 dir = QAD_Tools::addSlash(dir) ;
80 dir = dir + "libOCCViewer.dll" ;
82 dir = dir + "libOCCViewer.so" ;
84 MESSAGE ( " GUI library = " << dir )
85 fileInfo.setFile(dir) ;
86 if (fileInfo.exists()) {
87 ComponentLib = fileInfo.fileName();
91 MESSAGE (" Not found ")
94 if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
95 dir = QAD_Tools::addSlash(dir) ;
97 dir = QAD_Tools::addSlash(dir) ;
98 dir = dir + "salome" ;
99 dir = QAD_Tools::addSlash(dir) ;
101 dir = dir + "libOCCViewer.dll" ;
103 dir = dir + "libOCCViewer.so" ;
105 MESSAGE ( " GUI library = " << dir )
106 fileInfo.setFile(dir) ;
107 if (fileInfo.exists()) {
108 ComponentLib = fileInfo.fileName();
112 MESSAGE (" Not found ")
115 if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
116 dir = QAD_Tools::addSlash(dir) ;
118 dir = QAD_Tools::addSlash(dir) ;
119 dir = dir + "salome" ;
120 dir = QAD_Tools::addSlash(dir) ;
122 dir = dir + "libOCCViewer.dll" ;
124 dir = dir + "libOCCViewer.so" ;
126 MESSAGE ( " GUI library = " << dir )
127 fileInfo.setFile(dir) ;
128 if (fileInfo.exists()) {
129 ComponentLib = fileInfo.fileName();
133 MESSAGE (" Not found ")
135 } else if (myViewType == VIEW_VTK) {
137 if ( dir = getenv("SALOME_SITE_DIR")) {
138 dir = QAD_Tools::addSlash(dir) ;
140 dir = QAD_Tools::addSlash(dir) ;
141 dir = dir + "salome" ;
142 dir = QAD_Tools::addSlash(dir) ;
144 dir = dir + "libVTKViewer.dll" ;
146 dir = dir + "libVTKViewer.so" ;
148 MESSAGE ( " GUI library = " << dir );
149 fileInfo.setFile(dir) ;
150 if (fileInfo.exists()) {
151 ComponentLib = fileInfo.fileName();
155 MESSAGE (" Not found ");
158 if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
159 dir = QAD_Tools::addSlash(dir) ;
161 dir = QAD_Tools::addSlash(dir) ;
162 dir = dir + "salome" ;
163 dir = QAD_Tools::addSlash(dir) ;
165 dir = dir + "libVTKViewer.dll" ;
167 dir = dir + "libVTKViewer.so" ;
169 MESSAGE ( " GUI library = " << dir );
170 fileInfo.setFile(dir) ;
171 if (fileInfo.exists()) {
172 ComponentLib = fileInfo.fileName();
176 MESSAGE (" Not found ");
179 if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
180 dir = QAD_Tools::addSlash(dir) ;
182 dir = QAD_Tools::addSlash(dir) ;
183 dir = dir + "salome" ;
184 dir = QAD_Tools::addSlash(dir) ;
186 dir = dir + "libVTKViewer.dll" ;
188 dir = dir + "libVTKViewer.so" ;
190 MESSAGE ( " GUI library = " << dir );
191 fileInfo.setFile(dir) ;
192 if (fileInfo.exists()) {
193 ComponentLib = fileInfo.fileName();
197 MESSAGE (" Not found ");
199 } else if (myViewType == VIEW_GRAPHSUPERV) {
200 if ( dir = getenv("SALOME_SITE_DIR")){
201 dir = QAD_Tools::addSlash(dir) ;
203 dir = QAD_Tools::addSlash(dir) ;
204 dir = dir + "salome" ;
205 dir = QAD_Tools::addSlash(dir) ;
207 dir = dir + "libSUPERVGraph.dll" ;
209 dir = dir + "libSUPERVGraph.so" ;
211 MESSAGE ( " GUI library = " << dir )
212 fileInfo.setFile(dir) ;
213 if (fileInfo.exists()) {
214 ComponentLib = fileInfo.fileName() ;
218 MESSAGE (" Not found ")
221 if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
222 dir = QAD_Tools::addSlash(dir) ;
224 dir = QAD_Tools::addSlash(dir) ;
225 dir = dir + "salome" ;
226 dir = QAD_Tools::addSlash(dir) ;
228 dir = dir + "libSUPERVGraph.dll" ;
230 dir = dir + "libSUPERVGraph.so" ;
232 MESSAGE ( " GUI library = " << dir )
233 fileInfo.setFile(dir) ;
234 if (fileInfo.exists()) {
235 ComponentLib = fileInfo.fileName() ;
239 MESSAGE (" Not found ")
242 if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
243 dir = QAD_Tools::addSlash(dir) ;
245 dir = QAD_Tools::addSlash(dir) ;
246 dir = dir + "salome" ;
247 dir = QAD_Tools::addSlash(dir) ;
249 dir = dir + "libSUPERVGraph.dll" ;
251 dir = dir + "libSUPERVGraph.so" ;
253 MESSAGE ( " GUI library = " << dir )
254 fileInfo.setFile(dir) ;
255 if (fileInfo.exists()) {
256 ComponentLib = fileInfo.fileName() ;
260 MESSAGE (" Not found ")
262 } else if (myViewType == VIEW_PLOT2D) {
263 if ( dir = getenv("SALOME_SITE_DIR")){
264 dir = QAD_Tools::addSlash(dir) ;
266 dir = QAD_Tools::addSlash(dir) ;
267 dir = dir + "salome" ;
268 dir = QAD_Tools::addSlash(dir) ;
270 dir = dir + "libPlot2d.dll" ;
272 dir = dir + "libPlot2d.so" ;
274 MESSAGE ( " GUI library = " << dir )
275 fileInfo.setFile(dir) ;
276 if (fileInfo.exists()) {
277 ComponentLib = fileInfo.fileName() ;
281 MESSAGE (" Not found ")
284 if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
285 dir = QAD_Tools::addSlash(dir) ;
287 dir = QAD_Tools::addSlash(dir) ;
288 dir = dir + "salome" ;
289 dir = QAD_Tools::addSlash(dir) ;
291 dir = dir + "libPlot2d.dll" ;
293 dir = dir + "libPlot2d.so" ;
295 MESSAGE ( " GUI library = " << dir )
296 fileInfo.setFile(dir) ;
297 if (fileInfo.exists()) {
298 ComponentLib = fileInfo.fileName() ;
302 MESSAGE (" Not found ")
305 if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
306 dir = QAD_Tools::addSlash(dir) ;
308 dir = QAD_Tools::addSlash(dir) ;
309 dir = dir + "salome" ;
310 dir = QAD_Tools::addSlash(dir) ;
312 dir = dir + "libPlot2d.dll" ;
314 dir = dir + "libPlot2d.so" ;
316 MESSAGE ( " GUI library = " << dir )
317 fileInfo.setFile(dir) ;
318 if (fileInfo.exists()) {
319 ComponentLib = fileInfo.fileName() ;
323 MESSAGE (" Not found ")
326 QMessageBox::critical( this,
328 tr("undefined view type") );
332 SharedLib.SetName( strdup(ComponentLib) );
334 bool ok = SharedLib.DlOpen(OSD_RTLD_LAZY);
336 QMessageBox::critical( this,
338 tr( SharedLib.DlError() ) );
341 OSD_Function osdF = SharedLib.DlSymb("createView");
342 if ( osdF != NULL ) {
343 View (*f1) = (QAD_ViewFrame* (*) (QAD_RightFrame*)) osdF;
344 myViewFrame = (*f1)(this);
346 QMessageBox::critical( this,
348 tr("createView undefined") );
353 QValueList<int> sizes;
355 myViewFrame->setMinimumSize( 1, 1 );
356 vsplitter = new QAD_Splitter( Qt::Horizontal, this );
357 vsplitter->setMinimumSize( 1, 1 );
358 vsplitter->setCompressEnabled( true );
359 myPyEditor = new QAD_PyEditor(_interp, vsplitter ,"Python Interpreter");
360 myPyEditor->setMinimumSize( 1, 1 );
361 myMessage = new QAD_Message( vsplitter ,"Message");
362 myMessage->setMinimumSize( 1, 1 );
364 sizes.append( (int)(0.48 * DesktopHeight) );
365 sizes.append( (int)(0.16 * DesktopHeight) );
368 sizes.append( (int)(0.25 * DesktopWidth) );
369 sizes.append( (int)(0.25 * DesktopWidth) );
370 vsplitter->setSizes( sizes );
376 QAD_RightFrame::~QAD_RightFrame()
380 QAD_ViewFrame* QAD_RightFrame::getViewFrame() const
386 Returns reference to the message window [ static ]
388 QAD_Message* QAD_RightFrame::getMessage() const
394 Returns the Python interpreter that belongs to this study
396 QAD_PyInterp* QAD_RightFrame::get_PyInterp(void)
402 Returns reference to the Python window [ static ]
404 QAD_PyEditor* QAD_RightFrame::getPyEditor() const
412 void QAD_RightFrame::compressUp()
414 QSplitterPHandle* h = getHandleAfter(myViewFrame);
422 void QAD_RightFrame::unCompressUp()
424 QSplitterPHandle* h = getHandleAfter(myViewFrame);
426 h->unCompressBefore();
430 Compress Python Interpreter and Messages windows
432 void QAD_RightFrame::compressBottom()
434 QSplitterPHandle* h = getHandleAfter(myViewFrame);
440 Uncompress Python Interpreter and Messages windows
442 void QAD_RightFrame::unCompressBottom()
444 QSplitterPHandle* h = getHandleAfter(myViewFrame);
446 h->unCompressAfter();