Salome HOME
updated copyright message
[modules/gui.git] / src / SALOME_PYQT / SalomePyQt / SalomePyQt.h
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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, or (at your option) any later version.
10 //
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.
15 //
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
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 // File   : SalomePyQt.h
24 // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
25 //
26 #ifndef SALOME_PYQT_H
27 #define SALOME_PYQT_H
28
29 #include <Python.h>
30
31 #include <QObject>
32 #include <QString>
33 #include <QColor>
34
35 #include <LightApp_Application.h>
36 #ifndef GUI_DISABLE_CORBA
37 #include <SalomeApp_Application.h>
38 #endif
39 #include <LightApp_Preferences.h>
40 #ifndef DISABLE_PLOT2DVIEWER
41 #include <Plot2d_ViewFrame.h>
42 #endif
43
44 class LightApp_SelectionMgr;
45 class QMenuBar;
46 class QMenu;
47 class QWidget;
48 class QAction;
49 class QTreeView;
50 class QtxActionGroup;
51 #ifndef DISABLE_PLOT2DVIEWER
52 class Plot2d_Curve;
53 #endif
54
55 class SALOME_Selection : public QObject
56 {
57   Q_OBJECT
58
59 public:
60   ~SALOME_Selection();
61   static SALOME_Selection* GetSelection( LightApp_Application* );
62
63   void Clear();
64   void ClearIObjects();
65   void ClearFilters();
66
67 signals:
68   void currentSelectionChanged();
69
70 private slots:
71   void onSelMgrDestroyed();
72
73 private:
74   LightApp_SelectionMgr* mySelMgr;
75   SALOME_Selection( QObject* );
76 };
77
78 enum MenuName {
79   File        = 1,
80   View        = 2,
81   Edit        = 3,
82   Preferences = 4,
83   Tools       = 5,
84   Window      = 6,
85   Help        = 7  
86 };
87
88 enum {
89   WT_ObjectBrowser = LightApp_Application::WT_ObjectBrowser,
90   WT_PyConsole     = LightApp_Application::WT_PyConsole,
91   WT_LogWindow     = LightApp_Application::WT_LogWindow,
92   WT_InfoPanel     = LightApp_Application::WT_InfoPanel,
93 #ifndef GUI_DISABLE_CORBA
94   WT_NoteBook      = SalomeApp_Application::WT_NoteBook,
95   WT_User          = SalomeApp_Application::WT_User
96 #else
97   WT_User          = LightApp_Application::WT_User
98 #endif
99 };
100
101 enum { 
102   PT_Auto     = LightApp_Preferences::Auto,
103   PT_Space    = LightApp_Preferences::Space,
104   PT_Bool     = LightApp_Preferences::Bool, 
105   PT_Color    = LightApp_Preferences::Color,
106   PT_String   = LightApp_Preferences::String, 
107   PT_Selector = LightApp_Preferences::Selector, 
108   PT_DblSpin  = LightApp_Preferences::DblSpin, 
109   PT_IntSpin  = LightApp_Preferences::IntSpin, 
110   PT_Double   = LightApp_Preferences::Double, 
111   PT_Integer  = LightApp_Preferences::Integer, 
112   PT_GroupBox = LightApp_Preferences::GroupBox, 
113   PT_Tab      = LightApp_Preferences::Tab, 
114   PT_Frame    = LightApp_Preferences::Frame, 
115   PT_Font     = LightApp_Preferences::Font, 
116   PT_DirList  = LightApp_Preferences::DirList, 
117   PT_File     = LightApp_Preferences::File, 
118   PT_Slider       = LightApp_Preferences::Slider, 
119   PT_Shortcut     = LightApp_Preferences::Shortcut, 
120   PT_ShortcutTree = LightApp_Preferences::ShortcutTree, 
121   PT_BiColor      = LightApp_Preferences::BiColor, 
122   PT_Background   = LightApp_Preferences::Background, 
123   PT_UserDefined  = LightApp_Preferences::UserDefined, 
124 };
125
126 class UserDefinedContent: public QWidget
127 {
128   Q_OBJECT
129
130 public:
131   explicit UserDefinedContent();
132
133   virtual void store();
134   virtual void retrieve();
135 };
136
137 //! Orientation
138 enum Orientation {
139   Horizontal = 0, //!< Horizontal orientation 
140   Vertical   = 1  //!< Vertical orientation
141 };
142
143 //! Action of splitting corresponding to QtxWorkstack::SplitType enumeration
144 enum Action {
145   MoveWidget   = 0, //!< move specified widget to the new area, other views stay in the previous area
146   LeaveWidget  = 1, //!< specified widget stays in the old area, all other views are moved to the new area
147   SplitAt      = 2  //!< the view area is splitted in such a way, that specified view and all views which follow it, are moved to the new area
148 };
149
150 #ifndef DISABLE_PLOT2DVIEWER
151 //! Type of titles in Plot3d View
152 enum ObjectType
153 {
154   MainTitle = Plot2d_ViewFrame::MainTitle,
155   XTitle = Plot2d_ViewFrame::XTitle,
156   YTitle = Plot2d_ViewFrame::YTitle,
157   Y2Title = Plot2d_ViewFrame::Y2Title,
158   XAxis = Plot2d_ViewFrame::XAxis,
159   YAxis = Plot2d_ViewFrame::YAxis,
160   Y2Axis = Plot2d_ViewFrame::Y2Axis
161 };
162 #endif
163
164 enum VisibilityState 
165 {
166   ShownState,             //!< Object is shown in viewer
167   HiddenState,            //!< Object is hidden in viewer
168   UnpresentableState      //!< Unpresentable object    
169 };
170
171 #ifndef DISABLE_PLOT2DVIEWER
172 enum Axis {
173   yLeft    = QwtPlot::yLeft,
174   yRight   = QwtPlot::yRight,
175   xBottom  = QwtPlot::xBottom,
176   xTop     = QwtPlot::xTop,
177 };      
178 #endif
179
180 class SalomePyQt
181 {
182 public:
183   static QString           getAppName();
184   static bool              isLightApp();
185
186   static QWidget*          getDesktop();
187   static QWidget*          getMainFrame();
188   static QMenuBar*         getMainMenuBar();
189   static QMenu*            getPopupMenu( const MenuName );
190   static QMenu*            getPopupMenu( const QString& );
191   static QTreeView*        getObjectBrowser();
192   static void              enableSelector();
193   static void              disableSelector();
194   static SALOME_Selection* getSelection();
195   static QStringList       getComponents();
196   static void              setSelection( const QStringList& );
197   static const QString     getActiveComponent();
198   static PyObject*         getActivePythonModule();
199   static bool              activateModule( const QString& );
200   static void              registerModule( const QString& );
201   static void              updateObjBrowser();
202
203   static void              infoSetTitle( const QString& );
204   static int               infoAddLabel( const QString&, const int = -1 );
205   static int               infoAddLabel( const QString&, Qt::Alignment, const int = -1 );
206   static int               infoAddAction( QAction*, const int = -1 );
207   static int               infoAddGroup( const QString&, const int = -1 );
208
209   static void              infoRemove( const int );
210   static void              infoClear( const int = -1 );
211
212   static void              infoSetVisible( const int, bool );
213   static void              infoSetEnabled( const int, bool );
214
215   static void              putInfo( const QString&, const int = 0 );
216   static int               showNotification( const QString&, const QString&, const int = -1 );
217   static void              hideNotification( const QString& );
218   static void              hideNotification( const int );
219
220   static bool              isModified();
221   static void              setModified( bool );
222
223   static QString           getFileName         ( QWidget*, const QString&, const QStringList&, const QString&, bool );
224   static QStringList       getOpenFileNames    ( QWidget*, const QString&, const QStringList&, const QString& );
225   static QString           getExistingDirectory( QWidget*, const QString&, const QString& );
226
227   static void              createRoot();
228   static QString           createObject( const QString& parent = QString() );
229   static QString           createObject( const QString&, const QString&, const QString&, const QString& = QString() );
230
231   static void              removeObject( const QString&);
232   static void              removeChildren( const QString& = QString() );
233   static QStringList       getChildren( const QString& = QString(), const bool = false );
234   static void              setName( const QString&, const QString& );
235   static void              setIcon( const QString&, const QString& );
236   static void              setToolTip( const QString&, const QString& );
237   static QString           getName( const QString& );
238   static QString           getToolTip( const QString& );
239
240   static void              setVisibilityState( const QString&, VisibilityState );
241   static VisibilityState   getVisibilityState( const QString& );
242
243   static void              setObjectPosition( const QString&, int );
244   static int               getObjectPosition( const QString& );
245
246
247   static void              setColor( const QString&, const QColor& );
248   static QColor            getColor( const QString& );
249
250   static void              setReference( const QString&, const QString& ); 
251   static QString           getReference( const QString& );
252
253   static QIcon             loadIcon( const QString&, const QString& );
254
255   static void              helpContext( const QString&, const QString& );
256
257   static bool              dumpView( const QString&, const int = 0 );
258
259   static int               defaultMenuGroup();
260
261   static int               createTool( const QString&, const QString& = QString() );
262   static int               createTool( const int,  const int,      const int = -1 );
263   static int               createTool( const int,  const QString&, const int = -1 );
264   static int               createTool( QAction*, const int,      const int = -1, const int = -1 );
265   static int               createTool( QAction*, const QString&, const int = -1, const int = -1 );
266   static void              clearTool( const QString& );
267
268   static int               createMenu( const QString&, const int = -1,
269                                        const int = -1, const int = -1, const int = -1 );
270   static int               createMenu( const QString&, const QString& = QString(), 
271                                        const int = -1, const int = -1, const int = -1 );
272   static int               createMenu( const int,      const int = -1,
273                                        const int = -1, const int = -1 );
274   static int               createMenu( const int,      const QString& = QString(), 
275                                        const int = -1, const int = -1 );
276   static int               createMenu( QAction*,     const int,      const int = -1, 
277                                        const int = -1, const int = -1 );
278   static int               createMenu( QAction*,     const QString&, const int = -1, 
279                                        const int = -1, const int = -1 );
280
281   static QAction*          createSeparator();
282
283   static QAction*          createAction( const int, const QString&,
284                                          const QString& = QString(), const QString& = QString(), 
285                                          const QString& = QString(), const int = 0, const bool = false );
286   
287   static QtxActionGroup*   createActionGroup( const int, const bool = true );
288
289   static QAction*          action( const int );
290   static int               actionId( const QAction* );
291
292   static QString           constant      ( const QString& );
293   static void              setConstant   ( const QString&, const QString& );
294   static void              addSetting    ( const QString&, const QString&, const double );
295   static void              addSetting    ( const QString&, const QString&, const int );
296   static void              addSetting    ( const QString&, const QString&, const bool, const int );
297   static void              addSetting    ( const QString&, const QString&, const QString& );
298   static void              addSetting    ( const QString&, const QString&, const QColor& );
299   static void              addSetting    ( const QString&, const QString&, const QByteArray& );
300   static void              addSetting    ( const QString&, const QString&, const QFont& );
301   static int               integerSetting( const QString&, const QString&, const int = 0 );
302   static double            doubleSetting ( const QString&, const QString&, const double = 0 );
303   static bool              boolSetting   ( const QString&, const QString&, const bool = 0 );
304   static QString           stringSetting ( const QString&, const QString&, const QString& = QString(""), const bool = true );
305   static QColor            colorSetting  ( const QString&, const QString&, const QColor& = QColor() );
306   static QByteArray        byteArraySetting( const QString&, const QString&, const QByteArray& = QByteArray() );
307   static QFont             fontSetting( const QString&, const QString&, const QFont& = QFont() );
308   static void              removeSetting ( const QString&, const QString& );
309   static bool              hasSetting    ( const QString&, const QString& );
310   static QStringList       parameters    ( const QString& );
311   static QStringList       parameters    ( const QStringList& );
312
313   static int               addGlobalPreference( const QString& );
314   static int               addPreference( const QString& );
315   static int               addPreference( const QString&,
316                                           const int, const int = PT_Auto,
317                                           const QString& = QString(),
318                                           const QString& = QString() );
319   static QVariant          preferenceProperty( const int, const QString& );
320   static void              setPreferenceProperty( const int, const QString&, const QVariant& );
321   static void              setPreferencePropertyWg( const int, const QString&, UserDefinedContent* );
322   static void              addPreferenceProperty( const int, const QString&, const int, const QVariant& );
323
324   static void              message( const QString&, bool = true );
325   static void              clearMessages();
326   
327   static QList<int>        getViews();
328   static int               getActiveView();
329   static QString           getViewType( const int );
330   static bool              setViewTitle( const int, const QString& );
331   static QString           getViewTitle( const int );
332   static bool              setViewSize( const int, const int, const int = 0 );
333   static bool              setViewRotationPoint( const double, const double, const double, const int = 0 );
334   static QList<int>        findViews( const QString& );
335   static bool              activateView( const int );
336   static bool              activateViewManagerAndView( const int );
337   static QWidget*          getViewWidget( const int );
338   static int               createView( const QString&, bool visible = true, const int width = 0, const int height = 0, bool detached = false );
339   static int               createView( const QString&, QWidget* );
340   static bool              closeView( const int );
341   static int               cloneView( const int );
342   static void              setViewVisible( const int id, bool visible = true );
343   static bool              isViewVisible( const int );
344   static void              setViewClosable( const int, const bool );
345   static bool              isViewClosable( const int );
346
347   static bool              groupAllViews();
348   static bool              splitView( const int, const Orientation, const Action );
349   static bool              moveView( const int, const int, const bool );
350   static QList<int>        neighbourViews( const int );
351
352 #ifndef DISABLE_PLOT2DVIEWER
353   static void              displayCurve(const int, Plot2d_Curve*);
354   static void              eraseCurve(const int, Plot2d_Curve*);
355   static void              eraseCurve(Plot2d_Curve*);
356   static void              updateCurves( const int );
357   static QString           getPlot2dTitle(const int, ObjectType = MainTitle);
358   static void              setPlot2dTitle(const int, const QString&, ObjectType = MainTitle, bool = true);
359   static QList<double>     getPlot2dFitRangeByCurves(const int);
360   static QList<double>     getPlot2dFitRangeCurrent(const int);
361   static void              setPlot2dFitRange(const int, const double XMin, const double XMax, const double YMin, const double YMax);
362 #endif
363
364 //  static void              initializeParaViewGUI();
365   static void              processEvents();
366
367   // the following methods are obsolete
368   static void              addStringSetting( const QString&, const QString&, bool = true );
369   static void              addIntSetting   ( const QString&, const int,      bool = true );
370   static void              addBoolSetting  ( const QString&, const bool,     bool = true );
371   static void              addDoubleSetting( const QString&, const double,   bool = true );
372   static void              removeSettings  ( const QString& );
373   static QString           getSetting      ( const QString& );
374
375   static void              removeChild( const QString& = QString() );
376
377   static void              startPyLog(const QString&);
378   static void              stopPyLog();
379
380 };
381
382 #endif // SALOME_PYQT_H