]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Base implementation of Notebook
authorasl <asl@opencascade.com>
Thu, 19 Nov 2009 05:44:40 +0000 (05:44 +0000)
committerasl <asl@opencascade.com>
Thu, 19 Nov 2009 05:44:40 +0000 (05:44 +0000)
idl/SALOMEDS.idl
idl/SALOME_Component.idl
idl/SALOME_Notebook.idl
src/Container/Component_i.cxx
src/Container/SALOME_Component_i.hxx
src/Makefile.am
src/SALOMEDS/Makefile.am
src/SALOMEDS/SALOMEDS_Study_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.hxx

index 98899e4d3a598bbbc63f61f9cfb51aca5a3e7bcd..6f9710864e24e5997c7ad7aa81323285f22946ce 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "SALOME_Exception.idl"
 #include "SALOME_GenericObj.idl"
+#include "SALOME_Notebook.idl"
 
 /*! \brief
      This package contains the interfaces used for creation, management
@@ -403,6 +404,15 @@ during each working session.
 /*! \brief  Get the list of IDs of the Study's lockers. 
 */
     ListOfStrings GetLockerID();
+
+/*! \brief  Access to notebook instance
+*/
+    SALOME::Notebook GetNotebook();
+
+/*! \brief  Find an object by its component and entry (usually internal entry not available on high level)
+    even if object is not published yet in study
+*/
+    SALOME::GenericObj FindObjectByInternalEntry( in string theComponent, in string theEntry );
   };
 
   //==========================================================================
index fc555dc34cc955bd708204bb10c517f490abd27b..238c39f31e95083e34133e09e48ccbd84c7cbb12 100644 (file)
@@ -27,6 +27,7 @@
 #define _SALOME_COMPONENT_IDL_
 
 #include "SALOMEDS.idl"
+#include "SALOME_GenericObj.idl"
 #include "SALOME_Exception.idl"
 #include "SALOME_PyNode.idl"
 
@@ -417,6 +418,12 @@ module Engines
       \return an information about the given object.
     */
     string getObjectInfo(in long studyId, in string entry);
+
+    //! Find object by its internal entry (OCAF or other) even it is not published in the study
+    /*!
+       \param theEntry object entry
+    */
+    SALOME::GenericObj FindObjectByInternalEntry( in string theEntry );
   } ;
 
   //!  A block of binary data used for file transfer. The maximum size of the block is defined on server side.
@@ -465,7 +472,6 @@ module Engines
        \param block a data block to copy into the file identified by fileId
     */
     void putBlock(in long fileId, in fileBlock block);
-
   };
 
   //!  A file managed by a Salome_file. 
index 6c20aef2c6594a1a7b919914a02083fe47532cf0..7181b72187a0d7db5ce602cc3f50978c3575e81f 100644 (file)
@@ -30,7 +30,6 @@
 #ifndef _NOTEBOOK_IDL_
 #define _NOTEBOOK_IDL_
 
-#include "SALOME_Exception.idl"
 #include "SALOME_GenericObj.idl"
 
 /*! \brief
@@ -42,39 +41,88 @@ module SALOME
   //! This interface describes parameterized object
   interface ParameterizedObject : GenericObj
   {
-    //return object's entry
+    //return object's entry
     string GetEntry();
 
-    //validity status
+    //! return object's component
+    string GetComponent();
+
+    //! validity status
     boolean IsValid();
 
-    //update management
-    void SetToUpdate();
+    //! update management
     void Update();
   };
 
   //! This enumeration describes data types supported by notebook functionality
-  enum ParamType { TBoolean, TInteger, TReal, TExpression, TString };
+  enum ParamType { TUnknown, TBoolean, TInteger, TReal, TString };
+
+
 
   //! This interface describes parameter object
   interface Parameter : ParameterizedObject
   {
-    void SetValue( in string expr );
+    //! change expression of the parameter
+    void SetExpr( in string expr );
+
+    //! change value of the parameter
+    void SetReal( in double value );
+
+    //! return type of parameter
     ParamType GetType();
 
-    string  AsString()  raises(SALOME_Exception);
-    long    AsInteger() raises(SALOME_Exception);
-    double  AsDouble()  raises(SALOME_Exception);
-    boolean AsBoolean() raises(SALOME_Exception);
+    //! convert parameter into string
+    string  AsString();
+
+    //! convert parameter into integer
+    long    AsInteger();
+
+    //! convert parameter into real
+    double  AsReal();
+
+    //! convert parameter into boolean
+    boolean AsBoolean();
   };
 
+
+  //! This interface describes parameters container: Notebook
   interface Notebook : GenericObj
   {
     //dependency management
-    void AddDependency( in ParameterizedObject obj, in ParameterizedObject dep );
+
+    //! add new dependency between objects
+    boolean AddDependency( in ParameterizedObject obj, in ParameterizedObject dep );
+
+    //! remove dependency between objects
     void RemoveDependency( in ParameterizedObject obj, in ParameterizedObject dep );
+
+    //! remove all dependencies of the object
     void ClearDependencies( in ParameterizedObject obj );
-    void Update( in ParameterizedObject obj );
+
+    //! set internal flags of update: it means that this object and all objects depending on it will be updated
+    void SetToUpdate( in ParameterizedObject obj );
+
+    //! update all objects marked as "need to update"
+    void Update();
+
+
+
+    //parameters management
+
+    //! add new parameter (expression) into notebook
+    boolean AddExpr( in string expr );
+
+    //! add new parameter (named expression) into notebook
+    boolean AddNameExpr( in string name, in string expr );
+
+    //! add new parameter (value) into notebook
+    boolean AddValue( in string name, in double value );
+
+    //! remove parameter from notebook
+    void Remove( in string name );
+
+    //! access to parameter from notebook
+    Parameter Param( in string name );
   };
 };
 
index 66d3cd22a5c65a9cf39c055ef4b503624c35fd47..e6c194b595533d885937add50811676c30f36b57 100644 (file)
@@ -556,6 +556,15 @@ CORBA::Long Engines_Component_i::CpuUsed_impl()
   return cpu ;
 }
 
+//=============================================================================
+/*! 
+ *  CORBA method: 
+ */
+//=============================================================================
+SALOME::GenericObj_ptr Engines_Component_i::FindObjectByInternalEntry( const char* theEntry )
+{
+  return SALOME::GenericObj_ptr();
+}
 
 //=============================================================================
 /*! 
index 652f637a73a6c8ead82129bb4ace5b88659e8eb2..470c607ae6f2b61ee4a50d7f1fd8908bef883022 100644 (file)
@@ -114,6 +114,8 @@ public:
   // Object information
   virtual bool hasObjectInfo() { return false; }
   virtual char* getObjectInfo(CORBA::Long studyId, const char* entry) { return CORBA::string_dup(""); }
+
+  SALOME::GenericObj_ptr FindObjectByInternalEntry( const char* theEntry );
   
   // --- local C++ methods
 
index f9f92b6e56c95b36a98dd148e2173a643b4651ed..ba83ba54b7240a42bcf3e87aaf12844afaba6e41 100644 (file)
@@ -47,6 +47,7 @@ SUBDIR_CORBA = \
   Launcher \
   LifeCycleCORBA \
   LifeCycleCORBA_SWIG \
+  Notebook \
   SALOMEDSClient \
   TOOLSDS \
   SALOMEDSImpl \
@@ -54,8 +55,7 @@ SUBDIR_CORBA = \
   ModuleGenerator \
   Communication \
   Communication_SWIG \
-  DSC \
-  Notebook
+  DSC
 
 SUBDIR_CPPUNIT_BASE= \
   Basics/Test \
index 8ee8a7fa0789b368ddf609a50aa2a4e805db2c3a..e10fa90959d93e332286adb7e78bccb78f7c719d 100644 (file)
@@ -69,6 +69,7 @@ COMMON_CPPFLAGS=\
        -I$(srcdir)/../GenericObj \
        -I$(srcdir)/../SALOMEDSClient \
        -I$(srcdir)/../LifeCycleCORBA \
+       -I$(srcdir)/../Notebook \
        -I$(top_builddir)/idl \
        @CORBA_CXXFLAGS@ @CORBA_INCLUDES@
 
@@ -84,6 +85,7 @@ COMMON_LIBS =\
        ../SALOMEDSImpl/libSalomeDSImpl.la \
        ../GenericObj/libSalomeGenericObj.la \
        ../LifeCycleCORBA/libSalomeLifeCycleCORBA.la \
+       ../Notebook/libSalomeNotebook.la \
        $(top_builddir)/idl/libSalomeIDLKernel.la\
        @HDF5_LIBS@ 
 
index 8a01c0d95a8b105573e076eb2d02eea3dd08eddd..37e85b706ef57ec721b5efb99e48d831db28adb1 100644 (file)
@@ -32,6 +32,7 @@
 #include "SALOMEDS_AttributeParameter_i.hxx"
 #include "SALOMEDS_ChildIterator_i.hxx"
 #include "SALOMEDS_Driver_i.hxx"
+#include "SALOMEDS_StudyBuilder.hxx"
 #include "SALOMEDS.hxx"
 
 #include "SALOMEDSImpl_SObject.hxx"
@@ -929,3 +930,34 @@ CORBA::LongLong SALOMEDS_Study_i::GetLocalImpl(const char* theHostname, CORBA::L
   isLocal = (strcmp(theHostname, Kernel_Utils::GetHostname().c_str()) == 0 && pid == thePID)?1:0;
   return reinterpret_cast<CORBA::LongLong>(_impl);
 }
+
+SALOME::GenericObj_ptr SALOMEDS_Study_i::FindObjectByInternalEntry( const char* theComponent, const char* theEntry )
+{
+  SALOME::GenericObj_ptr aRes;
+  SALOMEDS::StudyBuilder_ptr aBuilder = NewBuilder();
+  SALOMEDS::SComponent_ptr aSComponent = FindComponent( theComponent );
+
+  if( !CORBA::is_nil( aSComponent ) )
+  {
+    SALOMEDS::GenericAttribute_ptr anAttr;
+    if( aBuilder->FindAttribute( aSComponent, anAttr, "AttributeIOR" ) )
+    {
+      SALOMEDS::AttributeIOR_ptr anAttrIOR = SALOMEDS::AttributeIOR::_narrow( anAttr );
+      CORBA::Object_var aCompObj = _orb->string_to_object( anAttrIOR->Value() );
+      Engines::Component_var aComponent = Engines::Component::_narrow( aCompObj );
+      aRes = aComponent->FindObjectByInternalEntry( theEntry );
+    }
+  }
+  return aRes;
+}
+
+SALOME::Notebook_ptr SALOMEDS_Study_i::GetNotebook()
+{
+  if( CORBA::is_nil( myNotebook ) )
+  {
+    SALOME_Notebook* aNb = new SALOME_Notebook( _this() );
+    myNotebook = aNb->_this();
+  }
+
+  return myNotebook._retn();
+}
index 49b971a7da203f16db7495168050e18a4ff91510..b2b87933a01fae66f59a23f9d365b9707c772d70 100644 (file)
@@ -32,6 +32,7 @@
 // IDL headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_GenericObj)
+#include CORBA_SERVER_HEADER(SALOME_Notebook)
 #include CORBA_SERVER_HEADER(SALOMEDS)
 
 #include <stdio.h>
@@ -44,6 +45,7 @@
 
 #include "SALOMEDSImpl_Study.hxx"
 #include "SALOMEDSImpl_AttributeIOR.hxx"
+#include "SALOME_Notebook.hxx"
 
 class Standard_EXPORT SALOMEDS_Study_i: public POA_SALOMEDS::Study
 {
@@ -52,6 +54,7 @@ private:
   SALOMEDSImpl_Study*            _impl;  
   SALOMEDS_StudyBuilder_i*       _builder;    
   static std::map<SALOMEDSImpl_Study*, SALOMEDS_Study_i*> _mapOfStudies;
+  SALOME::Notebook_var           myNotebook;
 
 public:
 
@@ -305,5 +308,9 @@ public:
   virtual SALOMEDSImpl_Study* GetImpl() { return _impl; }
 
   virtual CORBA::LongLong GetLocalImpl(const char* theHostname, CORBA::Long thePID, CORBA::Boolean& isLocal);
+
+  virtual SALOME::GenericObj_ptr FindObjectByInternalEntry( const char* theComponent, const char* theEntry );
+
+  virtual SALOME::Notebook_ptr GetNotebook();
 };
 #endif