0051789: TC7.2.0: NoteBook cannot update study

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;
This commit is contained in:
eap 2013-03-29 13:33:48 +00:00
parent 751c6aceb0
commit cdff506eaf
2 changed files with 35 additions and 22 deletions

View File

@ -153,7 +153,10 @@ void SMESH_Hypothesis_i::SetVarParameter (const char* theParameter,
{
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() )
@ -186,6 +189,20 @@ char* SMESH_Hypothesis_i::GetVarParameter (const char* theMethod)
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

View File

@ -70,29 +70,20 @@ public:
// 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);
// 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);
// 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();
@ -105,11 +96,16 @@ public:
virtual void LoadFrom( const char* theStream );
virtual void UpdateAsMeshesRestored(); // for hyps needing full data restored
protected:
::SMESH_Hypothesis* myBaseImpl; // base hypothesis implementation
protected:
std::map< std::string, std::string > myMethod2VarParams; // variable parameters
// base hypothesis implementation
::SMESH_Hypothesis* myBaseImpl;
// 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