1 // Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 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, or (at your option) any later version.
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.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // File : SalomePyQt.h
24 // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
35 #include <LightApp_Application.h>
36 #ifndef GUI_DISABLE_CORBA
37 #include <SalomeApp_Application.h>
39 #include <LightApp_Preferences.h>
40 #ifndef DISABLE_PLOT2DVIEWER
41 #include <Plot2d_ViewFrame.h>
44 class LightApp_SelectionMgr;
51 #ifndef DISABLE_PLOT2DVIEWER
55 class SALOME_Selection : public QObject
61 static SALOME_Selection* GetSelection( LightApp_Application* );
68 void currentSelectionChanged();
71 void onSelMgrDestroyed();
74 LightApp_SelectionMgr* mySelMgr;
75 SALOME_Selection( QObject* );
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
97 WT_User = LightApp_Application::WT_User
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,
126 class UserDefinedContent: public QWidget
131 explicit UserDefinedContent();
133 virtual void store();
134 virtual void retrieve();
139 Horizontal = 0, //!< Horizontal orientation
140 Vertical = 1 //!< Vertical orientation
143 //! Action of splitting corresponding to QtxWorkstack::SplitType enumeration
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
150 #ifndef DISABLE_PLOT2DVIEWER
151 //! Type of titles in Plot3d View
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
166 ShownState, //!< Object is shown in viewer
167 HiddenState, //!< Object is hidden in viewer
168 UnpresentableState //!< Unpresentable object
171 #ifndef DISABLE_PLOT2DVIEWER
173 yLeft = QwtPlot::yLeft,
174 yRight = QwtPlot::yRight,
175 xBottom = QwtPlot::xBottom,
176 xTop = QwtPlot::xTop,
183 static QString getAppName();
184 static bool isLightApp();
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();
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 );
209 static void infoRemove( const int );
210 static void infoClear( const int = -1 );
212 static void infoSetVisible( const int, bool );
213 static void infoSetEnabled( const int, bool );
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 );
220 static bool isModified();
221 static void setModified( bool );
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& );
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() );
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& );
240 static void setVisibilityState( const QString&, VisibilityState );
241 static VisibilityState getVisibilityState( const QString& );
243 static void setObjectPosition( const QString&, int );
244 static int getObjectPosition( const QString& );
247 static void setColor( const QString&, const QColor& );
248 static QColor getColor( const QString& );
250 static void setReference( const QString&, const QString& );
251 static QString getReference( const QString& );
253 static QIcon loadIcon( const QString&, const QString& );
255 static void helpContext( const QString&, const QString& );
257 static bool dumpView( const QString&, const int = 0 );
259 static int defaultMenuGroup();
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& );
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 );
281 static QAction* createSeparator();
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 );
287 static QtxActionGroup* createActionGroup( const int, const bool = true );
289 static QAction* action( const int );
290 static int actionId( const QAction* );
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& );
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& );
324 static void message( const QString&, bool = true );
325 static void clearMessages();
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 );
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 );
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);
364 // static void initializeParaViewGUI();
365 static void processEvents();
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& );
375 static void removeChild( const QString& = QString() );
377 static void startPyLog(const QString&);
378 static void stopPyLog();
382 #endif // SALOME_PYQT_H