Salome HOME
Copyright update 2022
[modules/gui.git] / src / LightApp / LightApp_Module.h
index 2df7aab616a7ddca5269fe6aad3f7690ff335c4c..44cad68c66b2f9bb829620e0fe840e6366398241 100644 (file)
@@ -1,25 +1,49 @@
+// Copyright (C) 2007-2022  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:      LightApp_Module.h
 // Created:   6/20/2005 16:25:06 AM
 // Author:    OCC team
-// Copyright (C) CEA 2005
 
 #ifndef LIGHTAPP_MODULE_H
 #define LIGHTAPP_MODULE_H
 
 #include "LightApp.h"
+#include "LightApp_Preferences.h"
 #include <CAM_Module.h>
 
+#include <SUIT_DataObject.h>
+
 class LightApp_Application;
-class LightApp_Preferences;
 class LightApp_Selection;
 class LightApp_Operation;
 class LightApp_SwitchOp;
-class LightApp_ShowHideOp;
 class LightApp_Displayer;
+class LightApp_SelectionMgr;
 
 class SUIT_Study;
-class SUIT_DataObject;
+//class SUIT_DataObject;
 class SUIT_Operation;
+class SUIT_ViewManager;
 class CAM_Application;
 
 class QtxPopupMgr;
@@ -27,9 +51,13 @@ class QtxPopupMgr;
 class QString;
 class QVariant;
 
-/*
-  Class : LightApp_Module
-  Description : Base class for all light modules
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
+/*!
+  \class LightApp_Module
+  Base class for all light modules
 */
 
 class LIGHTAPP_EXPORT LightApp_Module : public CAM_Module
@@ -44,7 +72,7 @@ public:
   virtual void                        windows( QMap<int, int>& ) const;
   virtual void                        viewManagers( QStringList& ) const;
 
-  virtual void                        contextMenuPopup( const QString&, QPopupMenu*, QString& );
+  virtual void                        contextMenuPopup( const QString&, QMenu*, QString& );
 
   virtual void                        createPreferences();
 
@@ -52,26 +80,45 @@ public:
 
   virtual void                        update( const int );
   // Update viewer or/and object browser etc. in accordance with update flags
-  // ( see SalomeApp_UpdateFlags enumeration ). Derived modules can redefine this method
+  // (see SalomeApp_UpdateFlags enumeration). Derived modules can redefine this method
   // for their own purposes
 
   virtual void                        updateObjBrowser( bool = true, SUIT_DataObject* = 0 );
-  // Update object bropwser ( for updating model or whole object browser use update() method
-  // can be used )
+  // Update object browser (for updating model or whole object browser use update() method)
 
   virtual void                        selectionChanged();
   virtual void                        preferencesChanged( const QString&, const QString& );
+  virtual void                        message( const QString& );
 
   virtual void                        studyActivated() {};
 
   virtual LightApp_Displayer*         displayer();
+  virtual LightApp_Selection*         createSelection() const;
+
+  virtual bool                        canCopy() const;
+  virtual bool                        canPaste() const;
+  virtual bool                        isDraggable( const SUIT_DataObject* ) const;
+  virtual bool                        isDropAccepted( const SUIT_DataObject* ) const;
+  virtual void                        dropObjects( const DataObjectList&, SUIT_DataObject*,
+                                                  const int, Qt::DropAction );
+  virtual void                        copy();
+  virtual void                        paste();
+  virtual bool                        renameAllowed( const QString& ) const;
+  virtual bool                        renameObject( const QString&, const QString& );
+
+  virtual void                        updateModuleVisibilityState();
 
 public slots:
   virtual bool                        activateModule( SUIT_Study* );
   virtual bool                        deactivateModule( SUIT_Study* );
+  virtual void                        studyClosed( SUIT_Study* );
+  virtual void                        onObjectClicked( SUIT_DataObject*, int );
+  void                                onOBDestroyed();
 
   void                                MenuItem();
 
+  virtual void                        updateInfoPanel();
+
 protected slots:
   virtual void                        onModelSaved();
   virtual void                        onModelOpened();
@@ -80,18 +127,22 @@ protected slots:
   virtual void                        onOperationStopped( SUIT_Operation* );
   virtual void                        onOperationDestroyed();
   virtual void                        onShowHide();
+  virtual void                        onViewManagerAdded( SUIT_ViewManager* );
+  virtual void                        onViewManagerRemoved( SUIT_ViewManager* );
 
 protected:
   virtual QtxPopupMgr*                popupMgr();
   LightApp_Preferences*               preferences() const;
 
   virtual CAM_DataModel*              createDataModel();
-  virtual LightApp_Selection*         createSelection() const;
+
+  virtual bool                        reusableOperation( const int id );
 
   int                                 addPreference( const QString& label );
-  int                                 addPreference( const QString& label, const int pId, const int = -1,
-                                                    const QString& section = QString::null,
-                                                    const QString& param = QString::null );
+  int                                 addPreference( const QString& label, const int pId,
+                                                     const int type = LightApp_Preferences::Auto,
+                                                     const QString& section = QString(),
+                                                     const QString& param = QString() );
   QVariant                            preferenceProperty( const int, const QString& ) const;
   void                                setPreferenceProperty( const int, const QString&, const QVariant& );
 
@@ -107,6 +158,10 @@ protected:
 
   virtual void                        updateControls();
 
+  virtual bool                        isSelectionCompatible();
+
+  LightApp_Operation*                 operation( const int ) const;
+
 private:
   typedef QMap<int,LightApp_Operation*> MapOfOperation;
 
@@ -117,6 +172,11 @@ private:
 
 protected:
   int                   myDisplay, myErase, myDisplayOnly, myEraseAll;
+  bool                  myIsFirstActivate;
 };
 
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
 #endif