From: eap Date: Thu, 29 Dec 2005 14:36:35 +0000 (+0000) Subject: PAL10953: add methods allowing creation of hypotheses using params of an other hyp... X-Git-Tag: T_Before_Join_BR-D5-38-2003~20 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=6277715d4c1e6425fe3779063f98c3a030f682f6;p=modules%2Fsmesh.git PAL10953: add methods allowing creation of hypotheses using params of an other hyp. PAL1094: return string from storeParams() to be shown on object browser --- diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx index e7e894fcd..6926df448 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.cxx +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.cxx @@ -27,6 +27,16 @@ SMESHGUI_GenericHypothesisCreator::~SMESHGUI_GenericHypothesisCreator() { } +void SMESHGUI_GenericHypothesisCreator::create( SMESH::SMESH_Hypothesis_ptr initParamsHyp, + QWidget* parent) +{ + MESSAGE( "Creation of hypothesis with initial params" ); + + if ( !CORBA::is_nil( initParamsHyp ) && hypType() == initParamsHyp->GetName() ) + myInitParamsHypo = SMESH::SMESH_Hypothesis::_duplicate( initParamsHyp ); + create( false, parent ); +} + void SMESHGUI_GenericHypothesisCreator::create( const bool isAlgo, QWidget* parent ) { MESSAGE( "Creation of hypothesis" ); @@ -94,6 +104,7 @@ bool SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ bool res = true; myHypo = SMESH::SMESH_Hypothesis::_duplicate( h ); + QFrame* fr = buildFrame(); if( fr ) { @@ -105,12 +116,18 @@ bool SMESHGUI_GenericHypothesisCreator::editHypothesis( SMESH::SMESH_Hypothesis_ dlg->setType( type() ); retrieveParams(); res = dlg->exec()==QDialog::Accepted; - if( res ) - storeParams(); + if( res ) { + QString paramValues = storeParams(); + if ( !paramValues.isEmpty() ) { + if ( _PTR(SObject) SHyp = SMESH::FindSObject( myHypo )) + SMESH::SetValue( SHyp, paramValues ); + } + } delete dlg; } changeWidgets().clear(); myHypo = SMESH::SMESH_Hypothesis::_nil(); + myInitParamsHypo = SMESH::SMESH_Hypothesis::_nil(); return res; } @@ -236,11 +253,45 @@ bool SMESHGUI_GenericHypothesisCreator::getStdParamFromDlg( ListOfStdParams& par return res; } +QString SMESHGUI_GenericHypothesisCreator::stdParamValues( const ListOfStdParams& params) +{ + QString valueStr = ""; + ListOfStdParams::const_iterator param = params.begin(), aLast = params.end(); + for( int i=0; param!=aLast; param++, i++ ) + { + if ( i > 0 ) + valueStr += "; "; + switch( (*param).myValue.type() ) + { + case QVariant::Int: + valueStr += valueStr.number( (*param).myValue.toInt() ); + break; + case QVariant::Double: + valueStr += valueStr.number( (*param).myValue.toDouble() ); + break; + case QVariant::String: + valueStr += (*param).myValue.toString(); + break; + default: + QVariant valCopy = (*param).myValue; + valueStr += valCopy.asString(); + } + } + return valueStr; +} + SMESH::SMESH_Hypothesis_var SMESHGUI_GenericHypothesisCreator::hypothesis() const { return myHypo; } +SMESH::SMESH_Hypothesis_var SMESHGUI_GenericHypothesisCreator::initParamsHypothesis() const +{ + if ( CORBA::is_nil( myInitParamsHypo )) + return myHypo; + return myInitParamsHypo; +} + QString SMESHGUI_GenericHypothesisCreator::hypType() const { return myHypType; diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index f48062b8e..d47422a4a 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -50,6 +50,7 @@ public: void create( const bool isAlgo, QWidget* ); void edit( SMESH::SMESH_Hypothesis_ptr, QWidget* ); + void create( SMESH::SMESH_Hypothesis_ptr, QWidget* ); virtual bool checkParams() const = 0; QString hypType() const; @@ -67,15 +68,17 @@ protected: typedef QPtrList ListOfWidgets; SMESH::SMESH_Hypothesis_var hypothesis() const; + SMESH::SMESH_Hypothesis_var initParamsHypothesis() const; const ListOfWidgets& widgets() const; ListOfWidgets& changeWidgets(); virtual QFrame* buildFrame () = 0; QFrame* buildStdFrame (); virtual void retrieveParams() const = 0; - virtual void storeParams () const = 0; + virtual QString storeParams () const = 0; virtual bool stdParams ( ListOfStdParams& ) const; bool getStdParamFromDlg( ListOfStdParams& ) const; + static QString stdParamValues( const ListOfStdParams& ); virtual void attuneStdWidget( QWidget*, const int ) const; virtual QWidget* getCustomWidget( const StdParam &, QWidget* ) const; virtual bool getParamFromCustomWidget( StdParam& , QWidget* ) const; @@ -90,7 +93,7 @@ private: bool editHypothesis( SMESH::SMESH_Hypothesis_ptr, QWidget* ); private: - SMESH::SMESH_Hypothesis_var myHypo; + SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo; QString myHypType; ListOfWidgets myParamWidgets; bool myIsCreate;