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