Salome HOME
Merge branch 'master' of ssh://git.salome-platform.org/modules/gui
[modules/gui.git] / src / SALOME_PYQT / SalomePyQt / SalomePyQt.sip
1 // Copyright (C) 2007-2014  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 // File   : SalomePyQt.sip
23 // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
24 //
25
26 %Module SalomePyQt
27
28 %Feature ENABLE_CORBA
29
30 %Import QtGuimod.sip
31 %Import QtXmlmod.sip
32
33 %ExportedHeaderCode
34 #include <QtxAction.h>
35 #include <QtxActionSet.h>
36 #include <QtxActionGroup.h>
37 #include <SalomePyQt.h>
38 #include <Plot2d_Curve.h>
39 %End
40
41 class SALOME_Selection : QObject
42 {
43 %TypeHeaderCode
44 #include <SalomePyQt.h>
45 %End
46
47 public:
48   void Clear() /ReleaseGIL/ ;
49   void ClearIObjects() /ReleaseGIL/ ;
50   void ClearFilters() /ReleaseGIL/ ;
51
52 private:
53   SALOME_Selection( QObject* /TransferThis/ );
54
55 signals:
56   void currentSelectionChanged();
57 };
58
59 enum MenuName {
60   File        = 1,
61   View        = 2,
62   Edit        = 3,
63   Preferences = 4,
64   Tools       = 5,
65   Window      = 6,
66   Help        = 7  
67 };
68
69 enum WindowType {
70   WT_ObjectBrowser,
71   WT_PyConsole,
72   WT_LogWindow,
73 %If (ENABLE_CORBA)
74   WT_NoteBook,
75 %End
76   WT_User
77 };
78
79 enum PrefType { 
80   PT_Auto,
81   PT_Space,
82   PT_Bool, 
83   PT_Color,
84   PT_String, 
85   PT_Selector, 
86   PT_DblSpin, 
87   PT_IntSpin, 
88   PT_Double, 
89   PT_Integer, 
90   PT_GroupBox, 
91   PT_Tab, 
92   PT_Frame, 
93   PT_Font, 
94   PT_DirList, 
95   PT_File, 
96 };
97
98 enum Orientation {
99   Horizontal = 0, 
100   Vertical   = 1  
101 };
102
103 enum Action {
104   MoveWidget   = 0, 
105   LeaveWidget  = 1, 
106   SplitAt      = 2  
107 };
108
109 enum Axis {
110   yLeft,
111   yRight,
112   xBottom,
113   xTop,         
114 };      
115
116 class QtxAction : QWidgetAction
117 {
118 %TypeHeaderCode
119 #include <QtxAction.h>
120 %End
121
122 %ConvertToSubClassCode
123     if ( qobject_cast<QtxAction*>( sipCpp ) )
124       sipClass = sipClass_QtxAction;
125     else
126       sipClass = NULL;
127 %End
128
129 public:
130   explicit QtxAction( QObject* /TransferThis/ = 0, bool = false );
131   QtxAction( const QString&, const QString&, int, QObject* /TransferThis/, bool = false );
132   QtxAction( const QString&, const QIcon&, const QString&, int, QObject* /TransferThis/, bool = false );
133   virtual ~QtxAction();
134
135 private:
136   QtxAction( const QtxAction& );
137 };
138
139 class QtxActionSet : QtxAction
140 {
141 %TypeHeaderCode
142 #include <QtxActionSet.h>
143 %End
144
145 %ConvertToSubClassCode
146     if ( qobject_cast<QtxActionSet*>( sipCpp ) )
147       sipClass = sipClass_QtxActionSet;
148     else
149       sipClass = NULL;
150 %End
151
152 public:
153   explicit QtxActionSet( QObject* /TransferThis/ = 0 );
154   virtual ~QtxActionSet();
155
156   QList<QAction*> actions() const;
157   void            setActions( const QList<QAction*>& );
158
159   void            insertActions( const QList<QAction*>&, const int = -1 );
160
161   int             insertAction( QAction*, const int id = -1, const int = -1 );
162   int             insertAction( const QString&, const int id = -1, const int = -1 );
163   int             insertAction( const QString&, const QIcon&, const int id = -1, const int = -1 );
164
165   void            removeAction( QAction* );
166   void            removeAction( const int );
167
168   void            clear();
169
170 signals:
171   void            triggered( int );
172   void            triggered( QAction* );
173
174 private:
175   QtxActionSet( const QtxActionSet& );
176 };
177
178 class QtxActionGroup : QtxActionSet
179 {
180 %TypeHeaderCode
181 #include <QtxActionGroup.h>
182 %End
183
184 %ConvertToSubClassCode
185     if ( qobject_cast<QtxActionGroup*>( sipCpp ) )
186       sipClass = sipClass_QtxActionGroup;
187     else
188       sipClass = NULL;
189 %End
190
191 public:
192   explicit QtxActionGroup( QObject* /TransferThis/ = 0 );
193   QtxActionGroup( QObject* /TransferThis/, const bool );
194   virtual ~QtxActionGroup();
195
196   bool isExclusive() const;
197   bool usesDropDown() const;
198
199   void add( QAction* );
200
201 public slots:
202   void setExclusive( const bool );
203   void setUsesDropDown( const bool );
204
205 signals:
206   void selected( QAction* );
207
208 private:
209   QtxActionGroup( const QtxActionGroup& );
210 };
211
212 enum ObjectType
213 {
214   MainTitle,
215   XTitle,
216   YTitle,
217   Y2Title,
218   XAxis,
219   YAxis,
220   Y2Axis
221 };
222
223 class Plot2d_Curve
224 {
225 %TypeHeaderCode
226 #include <Plot2d_Curve.h>
227 %End
228
229 %ConvertToSubClassCode
230     if ( dynamic_cast<Plot2d_Curve*>( sipCpp ) )
231       sipClass = sipClass_Plot2d_Curve;
232     else
233       sipClass = NULL;
234 %End
235
236 public:
237   Plot2d_Curve();
238   virtual ~Plot2d_Curve();
239   void setName( const QString& );
240   void addPoint( double, double );
241   void addPoints(SIP_PYLIST X, SIP_PYLIST Y);
242 %MethodCode
243   int nx = PyList_Size(a0);
244   int ny = PyList_Size(a1);
245   
246   if( nx != ny ) { 
247     PyErr_Format(PyExc_TypeError,"The dimension of x and y should be the same. It is %d and %d currently.", nx, ny);
248   }
249   
250   int i;
251   PyObject *pX, *pY;
252
253   for (i=0; i<nx; i++) {
254     pX = PyList_GET_ITEM(a0,i);
255     pY = PyList_GET_ITEM(a1,i);
256     double aX = PyFloat_AsDouble(pX);
257     double aY = PyFloat_AsDouble(pY);
258     sipCpp->addPoint(aX, aY);
259   }
260 %End
261   void insertPoint( int, double, double );
262   void deletePoint( int );
263   void clearAllPoints();
264   void setXAxis( Axis );
265 %MethodCode
266   int ax = int(a0);
267   sipCpp->setXAxis(QwtPlot::Axis(ax));
268 %End
269   Axis getXAxis() const;
270 %MethodCode
271   sipRes = Axis(sipCpp->getXAxis());
272 %End
273   void setYAxis( Axis );
274 %MethodCode
275   int ay = int(a0);
276   sipCpp->setYAxis(QwtPlot::Axis(ay));
277 %End
278   Axis getYAxis() const;
279 %MethodCode
280   sipRes = Axis(sipCpp->getYAxis());
281 %End
282 };
283
284 enum VisibilityState 
285 {
286   ShownState,
287   HiddenState,
288   UnpresentableState 
289 };
290
291
292 class SalomePyQt
293 {
294 %TypeHeaderCode
295 #include <SalomePyQt.h>
296 %End
297
298 public:
299 /* KeepReference is necessary on method getDesktop with SIP >= 4.15.5 to avoid garbage collection of
300    the Python objects added to the desktop. This causes a small memory leak (the wrapper around desktop
301    object is never garbage collected) but since this object contains only references this is not
302    considered a big problem. With versions < 4.15, it seems that this reference was kept implicitly.
303    No proper solution was found for versions between 4.15 and 4.15.4 (included), so those versions
304    should not be used to compile GUI module.
305 */
306 %If (SIP_4_15_5 - )
307   static QWidget*          getDesktop() /ReleaseGIL,KeepReference/ ;
308 %End
309 %If ( - SIP_4_15_5)
310   static QWidget*          getDesktop() /ReleaseGIL/ ;
311 %End
312
313   static QWidget*          getMainFrame() /ReleaseGIL/ ;
314   static QMenuBar*         getMainMenuBar() /ReleaseGIL/ ;
315   static QMenu*            getPopupMenu( const MenuName ) /ReleaseGIL/ ;
316   static QMenu*            getPopupMenu( const QString& ) /ReleaseGIL/ ;
317   static QTreeView*        getObjectBrowser() /ReleaseGIL/ ;
318   static SALOME_Selection* getSelection() /Factory,ReleaseGIL/ ;
319   static int               getStudyId() /ReleaseGIL/ ;
320   static void              putInfo( const QString&, const int = 0 ) /ReleaseGIL/ ;
321   static const QString     getActiveComponent() /ReleaseGIL/ ;
322   static SIP_PYOBJECT      getActivePythonModule() /ReleaseGIL/ ;
323   static bool              activateModule( const QString& ) /ReleaseGIL/ ;
324   static void              updateObjBrowser( const int = 0, bool =  true ) /ReleaseGIL/ ;
325   
326   static bool              isModified() /ReleaseGIL/ ;
327   static void              setModified( bool ) /ReleaseGIL/ ;
328
329   static QString           getFileName         ( QWidget*, const QString&, const QStringList&, const QString&, bool ) /ReleaseGIL/ ;
330   static QStringList       getOpenFileNames    ( QWidget*, const QString&, const QStringList&, const QString& ) /ReleaseGIL/ ;
331   static QString           getExistingDirectory( QWidget*, const QString&, const QString& ) /ReleaseGIL/ ;
332                          
333   static QString           createObject( const QString& = QString("") )  /ReleaseGIL/ ;
334   static QString           createObject( const QString&,
335                                          const QString&,
336                                          const QString&,
337                                          const QString& = QString("") )  /ReleaseGIL/ ;
338
339   static void              setName(const QString& ,const QString& ) /ReleaseGIL/ ;
340   static void              setIcon(const QString& ,const QString& ) /ReleaseGIL/ ;
341   static void              setToolTip(const QString& ,const QString& ) /ReleaseGIL/ ;
342   static QString           getName(const QString& ) /ReleaseGIL/ ;
343   static QString           getToolTip(const QString& ) /ReleaseGIL/ ;
344
345   static void              setVisibilityState( const QString&, VisibilityState );
346   static VisibilityState   getVisibilityState( const QString& );
347
348   static void              setObjectPosition( const QString&, int );
349   static int               getObjectPosition( const QString& );
350
351   static void              setColor( const QString&, const QColor& ) /ReleaseGIL/ ;
352   static QColor            getColor( const QString& ) /ReleaseGIL/ ;
353
354   static void              setReference( const QString& ,const QString& ) /ReleaseGIL/ ; 
355   static QString           getReference( const QString& ) /ReleaseGIL/ ;
356
357   static void              removeObject(const QString&  )    /ReleaseGIL/ ;
358   static void              removeChildren(const QString& = QString("")  ) /ReleaseGIL/ ;
359   static void              removeChild(const QString& = QString("")  ) /ReleaseGIL/ ;
360   static QStringList       getChildren(const QString&=QString("") , const bool = false) /ReleaseGIL/ ;
361
362   static QIcon             loadIcon( const QString&, const QString& ) /ReleaseGIL/ ;
363   static void              helpContext( const QString&, const QString& ) /ReleaseGIL/ ;
364
365   static bool              dumpView( const QString&, const int = 0 ) /ReleaseGIL/ ;
366
367   static int               defaultMenuGroup() /ReleaseGIL/ ;
368
369   static int               createTool( const QString&, const QString& = QString() ) /ReleaseGIL/ ;
370   static int               createTool( const int,  const int,      const int = -1 ) /ReleaseGIL/ ;
371   static int               createTool( const int,  const QString&, const int = -1 ) /ReleaseGIL/ ;
372   static int               createTool( QAction*,   const int,      const int = -1, const int = -1 ) /ReleaseGIL/ ;
373   static int               createTool( QAction*,   const QString&, const int = -1, const int = -1 ) /ReleaseGIL/ ;
374
375   static int               createMenu( const QString&, const int,
376                                        const int = -1, const int = -1, const int = -1 ) /ReleaseGIL/ ;
377   static int               createMenu( const QString&, const QString&, 
378                                        const int = -1, const int = -1, const int = -1 ) /ReleaseGIL/ ;
379   static int               createMenu( const int,      const int,
380                                        const int = -1, const int = -1 ) /ReleaseGIL/ ;
381   static int               createMenu( const int,      const QString&, 
382                                        const int = -1, const int = -1 ) /ReleaseGIL/ ;
383   static int               createMenu( QAction*,       const int,      const int = -1, 
384                                        const int = -1, const int = -1 ) /ReleaseGIL/ ;
385   static int               createMenu( QAction*,       const QString&, const int = -1, 
386                                        const int = -1, const int = -1 ) /ReleaseGIL/ ;
387   static QAction*          createSeparator() /ReleaseGIL/ ;
388
389   static QAction*          createAction( const int, const QString&, 
390                                          const QString& = QString(), const QString& = QString(), 
391                                          const QString& = QString(), const int = 0, const bool = false ) /ReleaseGIL/ ;
392
393   static QtxActionGroup*   createActionGroup( const int, const bool = true ) /ReleaseGIL/ ;
394
395   static QAction*          action( const int ) /ReleaseGIL/ ;
396   static int               actionId( const QAction* ) /ReleaseGIL/ ;
397
398   static void              addSetting    ( const QString&, const QString&, const double ) /ReleaseGIL/ ;
399   static void              addSetting    ( const QString&, const QString&, const int /Constrained/ ) /ReleaseGIL/ ;
400   static void              addSetting    ( const QString&, const QString&, const bool, const int ) /ReleaseGIL/ ;
401   static void              addSetting    ( const QString&, const QString&, const QString& ) /ReleaseGIL/ ;
402   static void              addSetting    ( const QString&, const QString&, const QColor& ) /ReleaseGIL/ ;
403   static int               integerSetting( const QString&, const QString&, const int = 0 ) /ReleaseGIL/ ;
404   static double            doubleSetting ( const QString&, const QString&, const double = 0 ) /ReleaseGIL/ ;
405   static bool              boolSetting   ( const QString&, const QString&, const bool = false ) /ReleaseGIL/ ;
406   static QString           stringSetting ( const QString&, const QString&, const QString& = QString("") ) /ReleaseGIL/ ;
407   static QColor            colorSetting  ( const QString&, const QString&, const QColor& = QColor() ) /ReleaseGIL/ ;
408   static void              removeSetting ( const QString&, const QString& ) /ReleaseGIL/ ;
409   static bool              hasSetting    ( const QString&, const QString& ) /ReleaseGIL/ ;
410
411 // obsolete
412   static void              addStringSetting( const QString&, const QString&, bool = true ) /ReleaseGIL/ ;
413   static void              addIntSetting   ( const QString&, const int,      bool = true ) /ReleaseGIL/ ;
414   static void              addDoubleSetting( const QString&, const double,   bool = true ) /ReleaseGIL/ ;
415   static void              addBoolSetting  ( const QString&, const bool,     bool = true ) /ReleaseGIL/ ;
416   static void              removeSettings  ( const QString& ) /ReleaseGIL/ ;
417   static QString           getSetting      ( const QString& ) /ReleaseGIL/ ;
418
419   static int               addGlobalPreference( const QString& ) /ReleaseGIL/ ;
420   static int               addPreference( const QString& ) /ReleaseGIL/ ;
421   static int               addPreference( const QString&,
422                                           const int, const int = PT_Auto,
423                                           const QString& = QString(),
424                                           const QString& = QString() ) /ReleaseGIL/ ;
425   static QVariant          preferenceProperty( const int, const QString& ) /ReleaseGIL/ ;
426   static void              setPreferenceProperty( const int, 
427                                                   const QString&,
428                                                   const QVariant& ) /ReleaseGIL/ ;
429   static void              addPreferenceProperty( const int, 
430                                                   const QString&, 
431                                                   const int, 
432                                                   const QVariant& ) /ReleaseGIL/ ;
433
434   static void              message( const QString&, bool = true ) /ReleaseGIL/ ;
435   static void              clearMessages() /ReleaseGIL/ ;
436   
437   static QList<int>        getViews() /ReleaseGIL/ ;
438   static int               getActiveView() /ReleaseGIL/ ;
439   static QString           getViewType( const int ) /ReleaseGIL/ ;
440   static bool              setViewTitle( const int, const QString& ) /ReleaseGIL/ ;
441   static QString           getViewTitle( const int ) /ReleaseGIL/ ;
442   static QList<int>        findViews( const QString& ) /ReleaseGIL/ ;
443   static bool              activateView( const int ) /ReleaseGIL/ ;
444   static int               createView( const QString&, bool visible = true, const int width = 0, const int height = 0 ) /ReleaseGIL/ ;
445   static int               createView( const QString&, QWidget* ) /ReleaseGIL/ ;
446   static bool              closeView( const int ) /ReleaseGIL/ ;
447   static int               cloneView( const int ) /ReleaseGIL/ ;
448   static void              setViewVisible( const int id, bool visible = true ) /ReleaseGIL/ ;
449   static bool              isViewVisible( const int id ) /ReleaseGIL/ ;
450   static void              setViewClosable( const int id, const bool ) /ReleaseGIL/ ;
451   static bool              isViewClosable( const int id ) /ReleaseGIL/ ;
452   
453   static bool              groupAllViews() /ReleaseGIL/ ;
454   static bool              splitView( const int, Orientation, Action ) /ReleaseGIL/ ;
455   static bool              moveView( const int, const int, const bool ) /ReleaseGIL/ ;
456   static QList<int>        neighbourViews( const int ) /ReleaseGIL/ ;
457   
458   static void              displayCurve(const int, Plot2d_Curve*) /ReleaseGIL/ ;
459   static void              eraseCurve(const int, Plot2d_Curve*) /ReleaseGIL/ ;
460   static void              eraseCurve(Plot2d_Curve*) /ReleaseGIL/ ;
461   static void              updateCurves( const int ) /ReleaseGIL/ ;
462   static QString           getPlot2dTitle(const int, ObjectType = MainTitle) /ReleaseGIL/ ;
463   static void              setPlot2dTitle(const int, const QString&, ObjectType = MainTitle, bool = true) /ReleaseGIL/ ;
464   static QList<double>     getPlot2dFitRangeByCurves(const int) /ReleaseGIL/ ;
465   static QList<double>     getPlot2dFitRangeCurrent(const int) /ReleaseGIL/ ;
466   static void              setPlot2dFitRange(const int, const double XMin, const double XMax, const double YMin, const double YMax ) /ReleaseGIL/ ;
467
468   static void              startPyLog(const QString&) /ReleaseGIL/ ;
469   static void              stopPyLog() /ReleaseGIL/ ;
470 };