1 // Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 // File : SALOME_PYQT_PyModule.h
21 // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
24 #ifndef SALOME_PYQT_PYMODULE_H
25 #define SALOME_PYQT_PYMODULE_H
27 #include "SALOME_PYQT_GUILight.h"
29 #include "PyInterp_Interp.h" // !!! WARNING !!! THIS INCLUDE MUST BE THE VERY FIRST !!!
35 #include <QStringList>
37 class CAM_Application;
38 class LightApp_DataObject;
39 class LightApp_Module;
40 class PyInterp_Interp;
43 class SUIT_DataObject;
45 class SUIT_ViewWindow;
47 typedef QList<SUIT_DataObject*> DataObjectList;
49 class SALOME_PYQT_LIGHT_EXPORT PyModuleHelper : public QObject
57 static LightApp_Module* myInitModule; //!< Python GUI being initialized (not zero only during the initialization)
59 LightApp_Module* myModule; //!< GUI module
60 PyObject* myPyModule; //!< Python GUI module
61 PyInterp_Interp* myInterp; //!< current Python subinterpreter
62 XmlHandler* myXmlHandler; //!< XML resource file parser
63 QMap<int, int> myWindowsMap; //!< windows map
64 QStringList myViewMgrList; //!< compatible view managers list
65 bool myLastActivateStatus; //!< latest module activation status
68 PyModuleHelper( LightApp_Module* );
71 static LightApp_Module* getInitModule();
72 static int defaultMenuGroup();
74 LightApp_Module* module() const;
75 PyObject* pythonModule() const;
77 void connectAction( QAction* );
79 QMap<int, int> windows() const;
80 QStringList viewManagers() const;
83 void initialize( CAM_Application* );
84 bool activate( SUIT_Study* study );
85 bool deactivate( SUIT_Study* study );
86 void modelClosed( SUIT_Study* study );
87 void preferencesChanged( const QString&, const QString& setting );
88 void preferenceChanged( const QString&, const QString&, const QString& setting );
89 void studyActivated( SUIT_Study* );
90 void actionActivated();
91 void selectionUpdated(const QStringList&);
92 void contextMenu( const QString&, QMenu* );
93 void createPreferences();
94 void activeViewChanged( SUIT_ViewWindow* );
95 void tryCloseView( SUIT_ViewWindow* );
96 void closeView( SUIT_ViewWindow* );
97 void cloneView( SUIT_ViewWindow* );
98 void save( QStringList&, const QString& );
99 bool load( const QStringList&, const QString& );
100 void dumpPython( QStringList& files );
101 bool isDraggable( const SUIT_DataObject* ) const;
102 bool isDropAccepted( const SUIT_DataObject* ) const;
103 void dropObjects( const DataObjectList&, SUIT_DataObject*,
104 const int, Qt::DropAction );
105 QString engineIOR() const;
107 void onObjectBrowserClicked(SUIT_DataObject*, int);
114 void internalInitialize( CAM_Application* );
115 void internalActivate( SUIT_Study* );
116 void internalCustomize( SUIT_Study* );
117 void internalDeactivate( SUIT_Study* );
118 void internalClosedStudy( SUIT_Study* );
119 void internalPreferencesChanged( const QString&, const QString& );
120 void internalStudyChanged( SUIT_Study* );
121 void internalActionActivated( int );
122 void internalSelectionUpdated(const QStringList&);
123 void internalContextMenu( const QString&, QMenu* );
124 void internalCreatePreferences();
125 void internalActiveViewChanged( SUIT_ViewWindow* );
126 void internalTryCloseView( SUIT_ViewWindow* );
127 void internalCloseView( SUIT_ViewWindow* );
128 void internalCloneView( SUIT_ViewWindow* );
129 void internalSave( QStringList&, const QString& );
130 void internalLoad( const QStringList&, const QString&, bool& );
131 void internalDumpPython( QStringList& );
132 bool internalIsDraggable( LightApp_DataObject* );
133 bool internalIsDropAccepted( LightApp_DataObject* );
134 void internalDropObjects( const DataObjectList&, SUIT_DataObject*,
135 const int, Qt::DropAction );
136 QString internalEngineIOR() const;
137 void internalOBClickedPython( const QString&, int );
139 void connectView( SUIT_ViewWindow* );
142 #endif // SALOME_PYQT_PYMODULE_H