-//=============================================================================
-// File : SALOME_PYQT_Module.h
-// Created : 25/04/05
-// Author : Vadim SANDLER
-// Project : SALOME
-// Copyright : 2003-2005 CEA/DEN, EDF R&D
-// $Header : $
-//=============================================================================
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// File : SALOME_PYQT_Module.h
+// Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
#ifndef SALOME_PYQT_MODULE_H
#define SALOME_PYQT_MODULE_H
#include "SALOME_PYQT_GUI.h"
-#include "SALOME_PYQT_PyInterp.h" // this include must be first (see PyInterp_base.h)!
+#include "PyInterp_Interp.h" // !!! WARNING !!! THIS INCLUDE MUST BE THE VERY FIRST !!!
#include "SalomeApp_Module.h"
-#include <map>
-#include <qaction.h>
-#include <qptrlist.h>
-#include <qstringlist.h>
-#include <qmap.h>
-class SALOME_PYQT_XmlHandler;
+class PyModuleHelper;
class SALOME_PYQT_EXPORT SALOME_PYQT_Module: public SalomeApp_Module
{
Q_OBJECT;
- /******************************
- * Data
- ******************************/
-
-private:
- typedef std::map<int, SALOME_PYQT_PyInterp*> InterpMap;
-
- /* study-to-subinterpreter map */
- static InterpMap myInterpMap;
- /* current Python subinterpreter */
- SALOME_PYQT_PyInterp* myInterp;
- /* Python GUI module loaded */
- PyObjWrapper myModule;
-
- typedef QPtrList<QAction> ActionList;
-
- /* own actions list */
- ActionList myMenuActionList;
- ActionList myPopupActionList;
- ActionList myToolbarActionList;
-
- enum PyQtGUIAction { PYQT_ACTION_MENU = 10000000,
- PYQT_ACTION_TOOLBAL = 20000000,
- PYQT_ACTION_POPUP = 30000000 };
-
- /* XML resource file parser */
- SALOME_PYQT_XmlHandler* myXmlHandler;
- /* windows map*/
- QMap<int, int> myWindowsMap;
- /* compatible view managers list */
- QStringList myViewMgrList;
-
- /******************************
- * Construction/destruction
- ******************************/
-
public:
- /* constructor */
SALOME_PYQT_Module();
- /* destructor */
~SALOME_PYQT_Module();
- /******************************
- * Inherited from CAM_Module
- ******************************/
-
-public:
- /* initialization */
- void initialize ( CAM_Application* );
-
- /* getting windows list */
- void windows ( QMap<int, int>& ) const;
- /* getting compatible viewer managers list */
- void viewManagers( QStringList& ) const;
-
- /* context popup menu request */
- void contextMenuPopup( const QString&, QPopupMenu* );
-
-protected:
- /* data model creation */
- CAM_DataModel* createDataModel();
-
-public slots:
- /* activation */
- void activateModule ( SUIT_Study* );
- /* deactivation */
- void deactivateModule( SUIT_Study* );
-
- /******************************
- * Internal methods
- ******************************/
-
-public slots:
- /* GUI action processing slot */
- void onGUIEvent();
- /* desktop activation slot */
- void onDesktopActivated();
-
+ // engine management
+ QString engineIOR() const;
+
+ // module activation, preferences, menus
+ void initialize( CAM_Application* );
+ bool activateModule( SUIT_Study* );
+ bool deactivateModule( SUIT_Study* );
+ void windows( QMap<int, int>& ) const;
+ void viewManagers( QStringList& ) const;
+ void studyActivated();
+ void contextMenuPopup( const QString&, QMenu*, QString& );
+ void createPreferences();
+ void preferencesChanged( const QString&, const QString& );
+ void studyClosed( SUIT_Study* );
+
+ // drag-n-drop support
+ bool isDraggable( const SUIT_DataObject* ) const;
+ bool isDropAccepted( const SUIT_DataObject* ) const;
+ void dropObjects( const DataObjectList&, SUIT_DataObject*,
+ const int, Qt::DropAction );
private:
- /* internal initizalition */
- void init ( CAM_Application* );
- /* internal activation */
- void activate ( SUIT_Study* );
- /* internal deactivation */
- void deactivate ( SUIT_Study* );
- /* study activation */
- void studyChanged( SUIT_Study* );
- /* context popup menu processing */
- void contextMenu( const QString&, QPopupMenu* );
- /* GUI event processing */
- void guiEvent( const int );
-
- /* add action to the private action map */
- void addAction ( const PyQtGUIAction, QAction* );
-
- /* initialize a Python subinterpreter */
- void initInterp ( int );
- /* import a Python GUI module */
- void importModule();
- /* set workspace to Python GUI module */
- void setWorkSpace();
-
-friend class SALOME_PYQT_XmlHandler;
+ PyModuleHelper* myHelper;
};
#endif // SALOME_PYQT_MODULE_H