Salome HOME
0051789: TC7.2.0: NoteBook cannot update study
authoreap <eap@opencascade.com>
Fri, 29 Mar 2013 13:33:48 +0000 (13:33 +0000)
committereap <eap@opencascade.com>
Fri, 29 Mar 2013 13:33:48 +0000 (13:33 +0000)
Fix for "LayerDistribution" hypothesis

+     * \brief Store a hypothesis wrapping this not published one.
+     *
+     * This hyp, which has no own parameters but is published, is used to store variables
+     * defining parameters of this hypothesis.
+     */
+    void SetHolderHypothesis(in SMESH::SMESH_Hypothesis hyp);

+  // a published hypothesis wrapping this not published one
+  SMESH::SMESH_Hypothesis_var myHolder;

src/SMESH_I/SMESH_Hypothesis_i.cxx
src/SMESH_I/SMESH_Hypothesis_i.hxx

index fd66bcfd47920f537679261b23e2e04b92ea34de..c1b5c956a72edb85ca224c2fe54e358c5fced769 100644 (file)
@@ -153,7 +153,10 @@ void SMESH_Hypothesis_i::SetVarParameter (const char* theParameter,
 {
   if ( SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen() )
   {
 {
   if ( SMESH_Gen_i *gen = SMESH_Gen_i::GetSMESHGen() )
   {
-    gen->UpdateParameters( CORBA::Object_var( _this() ).in(), theParameter );
+    SMESH::SMESH_Hypothesis_var varHolder;
+    if ( myHolder->_is_nil() ) varHolder = _this();
+    else                       varHolder = myHolder;
+    gen->UpdateParameters( varHolder, theParameter );
 
     const std::vector< std::string >& pars = gen->GetLastParameters();
     if ( !pars.empty() )
 
     const std::vector< std::string >& pars = gen->GetLastParameters();
     if ( !pars.empty() )
@@ -186,6 +189,20 @@ char* SMESH_Hypothesis_i::GetVarParameter (const char* theMethod)
   return CORBA::string_dup("");
 }
 
   return CORBA::string_dup("");
 }
 
+//================================================================================
+/*!
+ * \brief Store a hypothesis wrapping this not published one.
+ *
+ * This hyp, which has no own parameters but is published, is used to store variables
+ * defining parameters of this hypothesis.
+ */
+//================================================================================
+
+void SMESH_Hypothesis_i::SetHolderHypothesis(const SMESH::SMESH_Hypothesis_ptr hyp)
+{
+  myHolder = SMESH::SMESH_Hypothesis::_duplicate( hyp );
+}
+
 //================================================================================
 /*!
  * \brief Restore myMethod2VarParams by parameters stored in an old study
 //================================================================================
 /*!
  * \brief Restore myMethod2VarParams by parameters stored in an old study
index f721a048d2bb2f06a100fb1b8dc9b9d07b5777ef..835131af0a51999685e7e12f20726f64421674cd 100644 (file)
@@ -70,29 +70,20 @@ public:
   // Get unique id of hypothesis
   CORBA::Long GetId();
   
   // Get unique id of hypothesis
   CORBA::Long GetId();
   
-  // Set the variable parameter; method is a name of method setting this parameter.
+  // Set the variable parameter (a variable name or a parameter value); \a method is a name
+  // of method setting this parameter.
   // This method must be called by the hypothesis creator just before calling hyp->method()
   void SetVarParameter (const char* parameter, const char* method);
 
   // This method must be called by the hypothesis creator just before calling hyp->method()
   void SetVarParameter (const char* parameter, const char* method);
 
-  // Return the variable parameter used for Hypothesis creation by name of method
-  // setting this parameter
+  // Return the variable parameter used at Hypothesis Creation by the name of method
+  // setting this parameter. The returned variable name is used at Hypothesis Edition.
   char* GetVarParameter (const char* methodName);
 
   char* GetVarParameter (const char* methodName);
 
-  // Set list of parameters  separated by ":" symbol, used for Hypothesis creation
-  // void SetParameters (const char* theParameters);
-  
-  // // Return list of notebook variables used for Hypothesis creation separated by ":" symbol
-  // char* GetParameters();
-
-  // //Return list of last notebook variables used for Hypothesis creation.
-  // SMESH::ListOfParameters* GetLastParameters();
-
-  // //Set last parameters for not published hypothesis
-  
-  // void SetLastParameters(const char* theParameters);
-  
-  // // Clear parameters list
-  // void ClearParameters();
+  // Store a hypothesis wrapping this not published one. This hyp, which has
+  // no own parameters but is published, is used to store variables defining parameters
+  // of this hypothesis. This method is to be called before setting parameters
+  // of this hypothesis.
+  void SetHolderHypothesis(const SMESH::SMESH_Hypothesis_ptr hyp);
 
   //Return true if hypothesis was published in study
   bool IsPublished();
 
   //Return true if hypothesis was published in study
   bool IsPublished();
@@ -105,11 +96,16 @@ public:
   virtual void  LoadFrom( const char* theStream );
   virtual void  UpdateAsMeshesRestored(); // for hyps needing full data restored
 
   virtual void  LoadFrom( const char* theStream );
   virtual void  UpdateAsMeshesRestored(); // for hyps needing full data restored
 
-protected:
-  ::SMESH_Hypothesis*          myBaseImpl;    // base hypothesis implementation
+ protected:
+
+  // base hypothesis implementation
+  ::SMESH_Hypothesis*         myBaseImpl;
 
 
-  std::map< std::string, std::string > myMethod2VarParams; // variable parameters
+  // a published hypothesis wrapping this not published one
+  SMESH::SMESH_Hypothesis_var myHolder;
 
 
+  // variable parameters
+  std::map< std::string, std::string > myMethod2VarParams;
 
  public:
   // Methods for backward compatibility of notebook variables
 
  public:
   // Methods for backward compatibility of notebook variables