Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[modules/kernel.git] / src / SALOMEGUI / QAD_RightFrame.cxx
1 using namespace std;
2 //  File      : QAD_RightFrame.cxx
3 //  Created   : Thu Jun 14 14:51:52 2001
4 //  Author    : Nicolas REJNERI
5 //  Project   : SALOME
6 //  Module    : SALOMEGUI
7 //  Copyright : Open CASCADE
8 //  $Header$
9
10 #include "QAD_RightFrame.h"
11 #include "QAD_Application.h"
12 #include "QAD_Desktop.h"
13 #include "QAD_StudyFrame.h"
14 #include "QAD_Tools.h"
15 #include <qvaluelist.h>
16
17 // QT Include
18 #include <qmessagebox.h>
19
20 // Open CASCADE Include
21 #include <OSD_SharedLibrary.hxx>
22
23 /*!
24   \class QAD_RightFrame QAD_RightFrame.h
25   \brief Frame window which contains QAD_ViewFrame, QAD_PyInterp and QAD_Message.
26 */
27
28 typedef QAD_ViewFrame* View(QAD_RightFrame*);
29
30
31 /*!
32     Constructor
33 */
34 QAD_RightFrame::QAD_RightFrame(QWidget *parent, const char *name,
35                                QAD_PyInterp* interp, ViewType vt)
36   : QAD_Splitter( Qt::Vertical, parent, name )
37 {
38   this->setCompressEnabled( true );
39   myViewType  = vt;
40
41   QAD_Desktop* Desktop = QAD_Application::getDesktop();
42   int DesktopHeight = Desktop->getMainFrame()->width();
43   int DesktopWidth  = Desktop->getMainFrame()->height();
44
45   _interp = interp;
46
47   OSD_SharedLibrary SharedLib = OSD_SharedLibrary();
48   QString ComponentLib;
49   QCString dir;
50   QFileInfo fileInfo ;
51   bool found = false;
52   if (myViewType == VIEW_OCC) {
53     if ( dir = getenv("SALOME_SITE_DIR")) {
54       dir = QAD_Tools::addSlash(dir) ;
55       dir = dir + "lib" ;
56       dir = QAD_Tools::addSlash(dir) ;
57       dir = dir + "salome" ;
58       dir = QAD_Tools::addSlash(dir) ;
59 #ifdef WNT
60       dir = dir + "libOCCViewer.dll" ;
61 #else
62       dir = dir + "libOCCViewer.so" ;
63 #endif
64       MESSAGE ( " GUI library = " << dir )
65       fileInfo.setFile(dir) ;
66       if (fileInfo.exists()) {
67         ComponentLib = fileInfo.fileName();
68         found = true;
69         MESSAGE (" Found ")
70       } else
71         MESSAGE (" Not found ")
72     }
73     
74     if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
75       dir = QAD_Tools::addSlash(dir) ;
76       dir = dir + "lib" ;
77       dir = QAD_Tools::addSlash(dir) ;
78       dir = dir + "salome" ;
79       dir = QAD_Tools::addSlash(dir) ;
80 #ifdef WNT
81       dir = dir + "libOCCViewer.dll" ;
82 #else
83       dir = dir + "libOCCViewer.so" ;
84 #endif
85       MESSAGE ( " GUI library = " << dir )
86       fileInfo.setFile(dir) ;
87       if (fileInfo.exists()) {
88         ComponentLib = fileInfo.fileName();
89         found = true;
90         MESSAGE (" Found ")
91       } else
92         MESSAGE (" Not found ")
93     }
94   } else if (myViewType == VIEW_VTK) {
95     
96     if ( dir = getenv("SALOME_SITE_DIR")) {
97       dir = QAD_Tools::addSlash(dir) ;
98       dir = dir + "lib" ;
99       dir = QAD_Tools::addSlash(dir) ;
100       dir = dir + "salome" ;
101       dir = QAD_Tools::addSlash(dir) ;
102 #ifdef WNT
103       dir = dir + "libVTKViewer.dll" ;
104 #else
105       dir = dir + "libVTKViewer.so" ;
106 #endif
107       MESSAGE ( " GUI library = " << dir );
108       fileInfo.setFile(dir) ;
109       if (fileInfo.exists()) {
110         ComponentLib = fileInfo.fileName();
111         found = true;
112         MESSAGE (" Found ");
113       } else
114         MESSAGE (" Not found ");
115     }
116         
117     if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
118       dir = QAD_Tools::addSlash(dir) ;
119       dir = dir + "lib" ;
120       dir = QAD_Tools::addSlash(dir) ;
121       dir = dir + "salome" ;
122       dir = QAD_Tools::addSlash(dir) ;
123 #ifdef WNT
124       dir = dir + "libVTKViewer.dll" ;
125 #else
126       dir = dir + "libVTKViewer.so" ;
127 #endif
128       MESSAGE ( " GUI library = " << dir );
129       fileInfo.setFile(dir) ;
130       if (fileInfo.exists()) {
131         ComponentLib = fileInfo.fileName();
132         found = true;
133         MESSAGE (" Found ");
134       } else
135         MESSAGE (" Not found ");
136     }
137   } else if (myViewType == VIEW_GRAPHSUPERV) {
138     if ( dir = getenv("SALOME_SITE_DIR")){
139       dir = QAD_Tools::addSlash(dir) ;
140       dir = dir + "lib" ;
141       dir = QAD_Tools::addSlash(dir) ;
142       dir = dir + "salome" ;
143       dir = QAD_Tools::addSlash(dir) ;
144 #ifdef WNT
145       dir = dir + "libSUPERVGraph.dll" ;
146 #else
147       dir = dir + "libSUPERVGraph.so" ;
148 #endif
149       MESSAGE ( " GUI library = " << dir )
150       fileInfo.setFile(dir) ;
151       if (fileInfo.exists()) {
152         ComponentLib = fileInfo.fileName() ;
153         found = true;
154         MESSAGE (" Found ")
155       } else
156         MESSAGE (" Not found ")
157     }
158     
159     if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
160       dir = QAD_Tools::addSlash(dir) ;
161       dir = dir + "lib" ;
162       dir = QAD_Tools::addSlash(dir) ;
163       dir = dir + "salome" ;
164       dir = QAD_Tools::addSlash(dir) ;
165 #ifdef WNT
166       dir = dir + "libSUPERVGraph.dll" ;
167 #else
168       dir = dir + "libSUPERVGraph.so" ;
169 #endif
170       MESSAGE ( " GUI library = " << dir )
171       fileInfo.setFile(dir) ;
172       if (fileInfo.exists()) {
173         ComponentLib = fileInfo.fileName() ;
174         found = true;
175         MESSAGE (" Found ")
176       } else
177         MESSAGE (" Not found ")
178     }
179   } else if (myViewType == VIEW_PLOT2D) {
180     if ( dir = getenv("SALOME_SITE_DIR")){
181       dir = QAD_Tools::addSlash(dir) ;
182       dir = dir + "lib" ;
183       dir = QAD_Tools::addSlash(dir) ;
184       dir = dir + "salome" ;
185       dir = QAD_Tools::addSlash(dir) ;
186 #ifdef WNT
187       dir = dir + "libPlot2d.dll" ;
188 #else
189       dir = dir + "libPlot2d.so" ;
190 #endif
191       MESSAGE ( " GUI library = " << dir )
192       fileInfo.setFile(dir) ;
193       if (fileInfo.exists()) {
194         ComponentLib = fileInfo.fileName() ;
195         found = true;
196         MESSAGE (" Found ")
197       } else
198         MESSAGE (" Not found ")
199     }
200     
201     if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
202       dir = QAD_Tools::addSlash(dir) ;
203       dir = dir + "lib" ;
204       dir = QAD_Tools::addSlash(dir) ;
205       dir = dir + "salome" ;
206       dir = QAD_Tools::addSlash(dir) ;
207 #ifdef WNT
208       dir = dir + "libPlot2d.dll" ;
209 #else
210       dir = dir + "libPlot2d.so" ;
211 #endif
212       MESSAGE ( " GUI library = " << dir )
213       fileInfo.setFile(dir) ;
214       if (fileInfo.exists()) {
215         ComponentLib = fileInfo.fileName() ;
216         found = true;
217         MESSAGE (" Found ")
218       } else
219         MESSAGE (" Not found ")
220     }
221   } else {
222     QMessageBox::critical( this,
223                            tr("ERR_ERROR"),
224                            tr("undefined view type") );
225     return;
226   }
227
228   SharedLib.SetName( strdup(ComponentLib) );
229   
230   bool ok = SharedLib.DlOpen(OSD_RTLD_LAZY);
231   if (!ok) {
232     QMessageBox::critical( this,
233                            tr("ERR_ERROR"),
234                            tr( SharedLib.DlError() ) );
235     return;
236   } else {
237     OSD_Function osdF = SharedLib.DlSymb("createView");
238     if ( osdF != NULL ) {
239       View (*f1) = (QAD_ViewFrame* (*) (QAD_RightFrame*)) osdF;
240       myViewFrame = (*f1)(this);
241     } else {
242       QMessageBox::critical( this,
243                              tr("ERR_ERROR"),
244                              tr("createView undefined") );
245       return;
246     }
247   }
248
249   QValueList<int> sizes;
250
251   myViewFrame->setMinimumSize( 1, 1 );
252   vsplitter = new QAD_Splitter( Qt::Horizontal, this );
253   vsplitter->setMinimumSize( 1, 1 );
254   vsplitter->setCompressEnabled( true );
255   myPyEditor = new QAD_PyEditor(_interp, vsplitter ,"Python Interpreter");
256   myPyEditor->setMinimumSize( 1, 1 );
257   myMessage  = new QAD_Message( vsplitter ,"Message");  
258   myMessage->setMinimumSize( 1, 1 );
259
260   sizes.append( 0.48 * DesktopHeight );
261   sizes.append( 0.16 * DesktopHeight );
262   setSizes( sizes );
263   sizes.clear();
264   sizes.append( 0.25 * DesktopWidth );
265   sizes.append( 0.25 * DesktopWidth );
266   vsplitter->setSizes( sizes );
267 }
268
269 /*!
270     Destructor
271 */
272 QAD_RightFrame::~QAD_RightFrame()
273 {  
274 }
275
276 QAD_ViewFrame* QAD_RightFrame::getViewFrame() const
277 {
278   return myViewFrame;
279 }
280
281 /*!
282     Returns reference to the message window [ static ]
283 */
284 QAD_Message* QAD_RightFrame::getMessage() const
285 {
286   return myMessage;
287 }
288
289 /*!
290   Returns the Python interpreter that belongs to this study
291 */
292 QAD_PyInterp* QAD_RightFrame::get_PyInterp(void)
293 {
294   return _interp;
295 }
296
297 /*!
298     Returns reference to the Python window [ static ]
299 */
300 QAD_PyEditor* QAD_RightFrame::getPyEditor() const
301 {
302   return myPyEditor;
303 }
304
305 /*!
306     Compress views
307 */
308 void QAD_RightFrame::compressUp()
309 {
310   QSplitterPHandle* h = getHandleAfter(myViewFrame);
311   if (h)
312     h->compressBefore();
313 }
314
315 /*!
316     Uncompress views
317 */
318 void QAD_RightFrame::unCompressUp()
319 {
320   QSplitterPHandle* h = getHandleAfter(myViewFrame);
321   if (h)
322     h->unCompressBefore();
323 }
324
325 /*!
326     Compress Python Interpreter and Messages windows
327 */
328 void QAD_RightFrame::compressBottom()
329 {
330   QSplitterPHandle* h = getHandleAfter(myViewFrame);
331   if (h)
332     h->compressAfter();
333 }
334
335 /*!
336     Uncompress Python Interpreter and Messages windows
337 */
338 void QAD_RightFrame::unCompressBottom()
339 {
340   QSplitterPHandle* h = getHandleAfter(myViewFrame);
341   if (h)
342     h->unCompressAfter();
343 }
344