Salome HOME
updated copyright message
[modules/gui.git] / src / SALOME_PYQT / SALOME_PYQT_GUI / SALOME_PYQT_Module.h
index 755895df0d7dad7fa206161ec90f72f9230d0d74..7f2e734a6318644b89d7b6af409d38976a8be3a3 100644 (file)
-//=============================================================================
-// 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-2023  CEA, EDF, 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>
 
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_Component)
-
-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
-   ******************************/
+  Q_OBJECT
 
 public:
-  /* constructor */
   SALOME_PYQT_Module();
-  /* destructor */
   ~SALOME_PYQT_Module();
 
-  /* get module engine */
-  Engines::Component_var getEngine() const;
-
-  /******************************
-   * Inherited from CAM_Module 
-   ******************************/
-
-public:
-  /* initialization */
-  void            initialize  ( CAM_Application* );
+  // engine management
+  QString         engineIOR() const;
 
-  /* getting windows list */
-  void            windows     ( QMap<int, int>& ) const;
-  /* getting compatible viewer managers list */
+  // 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;
-
-  /* context popup menu request */
-  void            contextMenuPopup( const QString&, QPopupMenu*, QString& );
-
-  /* get module engine IOR */
-  virtual QString engineIOR() const;
-
-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();
-
+  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