]> SALOME platform Git repositories - modules/geom.git/blobdiff - src/GEOM_I/GEOM_Gen_i.hh
Salome HOME
Algorithm of dependencies definition was updated and replaced. Auxiliry convertation...
[modules/geom.git] / src / GEOM_I / GEOM_Gen_i.hh
index 35fc9ad75102663eac6c42a1b5b71f4fd0a1255a..429e4e2f5c8dea07d478a781a423867cb9f0008b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014  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
@@ -6,7 +6,7 @@
 // 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.
+// 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
 #include "GEOM_IInsertOperations_i.hh"
 #include "GEOM_IMeasureOperations_i.hh"
 #include "GEOM_IGroupOperations_i.hh"
-#include "GEOM_IAdvancedOperations_i.hh"
+#include "GEOM_IFieldOperations_i.hh"
+#include "GEOMUtils.hxx"
 
 #include <TopTools_IndexedMapOfShape.hxx>
 
+#include <map>
 #include <set>
+#include <list>
 #include <string>
 
 //#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC
 
+class TopTools_SequenceOfShape;
+
+//=====================================================================
+// Generic operations creator (for plugins mechanism)
+//=====================================================================
+class GEOM_I_EXPORT GEOM_GenericOperationsCreator
+{
+public:
+  // Create operations
+  virtual GEOM_IOperations_i* Create (PortableServer::POA_ptr thePOA,
+                                      int                     theStudyId,
+                                      GEOM::GEOM_Gen_ptr      theEngine,
+                                      ::GEOMImpl_Gen*         theGenImpl) = 0;
+  // return the name of IDL module
+  //virtual std::string GetModuleName() = 0;
+};
 
 //=====================================================================
 // GEOM_Gen_i : class definition
@@ -145,10 +164,10 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
   /*! \brief Adds theObject in the study with a name = theName, if
    *         theFather is not null the object is placed under theFather
    */
-  SALOMEDS::SObject_ptr AddInStudy (SALOMEDS::Study_ptr theStudy,
-                                    GEOM::GEOM_Object_ptr theObject,
-                                    const char* theName,
-                                    GEOM::GEOM_Object_ptr theFather);
+  SALOMEDS::SObject_ptr AddInStudy (SALOMEDS::Study_ptr       theStudy,
+                                    GEOM::GEOM_BaseObject_ptr theObject,
+                                    const char*               theName,
+                                    GEOM::GEOM_BaseObject_ptr theFather);
 
   /*! \brief Publish sub-shapes, standing for arguments and sub-shapes of arguments.
    *         To be used from python scripts out of geompy.addToStudy (non-default usage)
@@ -180,6 +199,9 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
                                       CORBA::Boolean          theInheritFirstArg,
                                       CORBA::Boolean          theAddPrefix);
 
+  SALOMEDS::TMPFile* GetDependencyTree(SALOMEDS::Study_ptr theStudy,
+                                      const GEOM::string_array& theObjectIORs);
+
   //-----------------------------------------------------------------------//
   // Transaction methods                                                   //
   //-----------------------------------------------------------------------//
@@ -242,15 +264,20 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
   virtual GEOM::GEOM_IGroupOperations_ptr GetIGroupOperations (CORBA::Long theStudyID)
     throw (SALOME::SALOME_Exception);
 
-  //Returns a pointer to AdvancedOperations interface
-  virtual GEOM::GEOM_IAdvancedOperations_ptr GetIAdvancedOperations (CORBA::Long theStudyID)
+  //Returns a pointer to FiedlOperations interface
+  virtual GEOM::GEOM_IFieldOperations_ptr GetIFieldOperations (CORBA::Long theStudyID)
+    throw (SALOME::SALOME_Exception);
+
+  //Returns a pointer to corresponding plugin operations interface
+  virtual GEOM::GEOM_IOperations_ptr GetPluginOperations (CORBA::Long theStudyID,
+                                                          const char* theLibName)
     throw (SALOME::SALOME_Exception);
 
   //Adds a new sub-shape
   virtual GEOM::GEOM_Object_ptr AddSubShape (GEOM::GEOM_Object_ptr theMainShape,
                                              const GEOM::ListOfLong& theIndices);
 
-  virtual void RemoveObject(GEOM::GEOM_Object_ptr theObject);
+  virtual void RemoveObject(GEOM::GEOM_BaseObject_ptr theObject);
 
   virtual  char* GetStringFromIOR(GEOM::GEOM_Object_ptr theObject);
 
@@ -272,11 +299,35 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
   // Version information
   virtual char* getVersion();
 
+  // Create a new folder object
+  SALOMEDS::SObject_ptr CreateFolder(const char* theName, 
+                                    SALOMEDS::SObject_ptr theFather);
+
+  // Move GEOM object to the specified folder
+  void MoveToFolder(GEOM::GEOM_Object_ptr theObject, 
+                   SALOMEDS::SObject_ptr theFolder);
+
+  // Move list of GEOM objects to the specified folder
+  void MoveListToFolder (const GEOM::ListOfGO& theListOfGO, 
+                        SALOMEDS::SObject_ptr theFolder);
+
+  // Move objects to the specified position
+  void Move( const GEOM::object_list& what,
+            SALOMEDS::SObject_ptr where,
+            CORBA::Long row );
+
+  // SIMAN-related functions (check out/check in) : import data to study
+  virtual Engines::ListOfIdentifiers* importData(CORBA::Long studyId,
+                                                Engines::DataContainer_ptr data,
+                                                const Engines::ListOfOptions& options);
+  // SIMAN-related functions (check out/check in) : get modified data
+  virtual Engines::ListOfData* getModifiedData(CORBA::Long studyId);
+
   //-----------------------------------------------------------------------//
   // Internal methods                                                      //
   //-----------------------------------------------------------------------//
 
-  virtual GEOM::GEOM_Object_ptr GetObject(CORBA::Long theStudyID, const char* theEntry);
+  virtual GEOM::GEOM_BaseObject_ptr GetObject(CORBA::Long theStudyID, const char* theEntry);
 
  private:
   GEOM::ListOfGO* RestoreSubShapes (SALOMEDS::Study_ptr     theStudy,
@@ -320,11 +371,23 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
                              const Standard_CString& GrName,
                              GEOM::ListOfGO_var aResList);
 
+  void getUpwardDependency( GEOM::GEOM_BaseObject_ptr gbo, 
+                            GEOMUtils::LevelsList &upLevelList,  
+                            int level = 0 );
+
+  void getDownwardDependency( SALOMEDS::Study_ptr theStudy,
+                             GEOM::GEOM_BaseObject_ptr gbo, 
+                              GEOMUtils::LevelsList &downLevelList, 
+                              int level = 0 );
+
  private:
 
    ::GEOMImpl_Gen* _impl;
    SALOME_NamingService * name_service;
    char * _name;
+
+   // plugin operations managing
+   std::map<std::string, GEOM_GenericOperationsCreator*> myOpCreatorMap;
 };
 
 #endif