X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshersGUI%2FStdMeshersGUI_NbSegmentsCreator.cxx;h=9e8e0bda842b80b5672c123d7dacee87a15723ca;hb=586cf75e22889d19a66bc5c73b4e5e90d626c6d1;hp=33d2c3be0732f19396a8ffa62d6e9b6fea0df6af;hpb=3443420a18b6f6fee4fe826191acd7512772e477;p=modules%2Fsmesh.git diff --git a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx index 33d2c3be0..9e8e0bda8 100644 --- a/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx +++ b/src/StdMeshersGUI/StdMeshersGUI_NbSegmentsCreator.cxx @@ -27,6 +27,7 @@ #include "StdMeshersGUI_DistrTable.h" #include "StdMeshersGUI_DistrPreview.h" +#include #include #include #include @@ -36,7 +37,7 @@ // SALOME GUI includes #include -#include +#include #include // Qt includes @@ -78,13 +79,17 @@ StdMeshersGUI_NbSegmentsCreator::~StdMeshersGUI_NbSegmentsCreator() { } -bool StdMeshersGUI_NbSegmentsCreator::checkParams() const +bool StdMeshersGUI_NbSegmentsCreator::checkParams( QString& msg ) const { + if( !SMESHGUI_GenericHypothesisCreator::checkParams( msg ) ) + return false; NbSegmentsHypothesisData data_old, data_new; readParamsFromHypo( data_old ); readParamsFromWidgets( data_new ); bool res = storeParamsToHypo( data_new ); storeParamsToHypo( data_old ); + res = myNbSeg->isValid( msg, true ) && res; + res = myScale->isValid( msg, true ) && res; return res; } @@ -122,7 +127,7 @@ QFrame* StdMeshersGUI_NbSegmentsCreator::buildFrame() // 1) number of segments myGroupLayout->addWidget( new QLabel( tr( "SMESH_NB_SEGMENTS_PARAM" ), GroupC1 ), row, 0 ); - myNbSeg = new QtxIntSpinBox( GroupC1 ); + myNbSeg = new SalomeApp_IntSpinBox( GroupC1 ); myNbSeg->setMinimum( 1 ); myNbSeg->setMaximum( 9999 ); myGroupLayout->addWidget( myNbSeg, row, 1 ); @@ -206,9 +211,16 @@ void StdMeshersGUI_NbSegmentsCreator::retrieveParams() const if( myName ) myName->setText( data.myName ); - myNbSeg->setValue( data.myNbSeg ); + if(data.myNbSegVarName.isEmpty()) + myNbSeg->setValue( data.myNbSeg ); + else + myNbSeg->setText( data.myNbSegVarName ); + myDistr->setCurrentIndex( data.myDistrType ); - myScale->setValue( data.myScale ); + if(data.myScaleVarName.isEmpty()) + myScale->setValue( data.myScale ); + else + myScale->setText( data.myScaleVarName ); myConv->button( data.myConv )->setChecked( true ); myTable->setFuncMinValue(myConv->checkedId()==0 ? -1E20 : 0); myTable->setData( data.myTable ); @@ -223,7 +235,7 @@ QString StdMeshersGUI_NbSegmentsCreator::storeParams() const NbSegmentsHypothesisData data; readParamsFromWidgets( data ); storeParamsToHypo( data ); - + QString valStr = QString::number( data.myNbSeg ) += "; "; enum DistrType @@ -238,8 +250,8 @@ QString StdMeshersGUI_NbSegmentsCreator::storeParams() const case Regular : valStr += tr("SMESH_DISTR_REGULAR"); break; - case Scale : - valStr += tr("SMESH_NB_SEGMENTS_SCALE_PARAM") + " = " + QString::number( data.myScale ); + case Scale : + valStr += tr("SMESH_NB_SEGMENTS_SCALE_PARAM") + " = " + QString::number( data.myScale );\ break; case TabFunc : { //valStr += tr("SMESH_TAB_FUNC"); @@ -275,9 +287,21 @@ bool StdMeshersGUI_NbSegmentsCreator::readParamsFromHypo( NbSegmentsHypothesisDa h_data.myName = hypName(); h_data.myNbSeg = (int) h->GetNumberOfSegments(); + + SMESH::ListOfParameters_var aParameters = h->GetLastParameters(); + + h_data.myNbSegVarName = (aParameters->length() > 0) ? QString(aParameters[0].in()) : QString(""); + int distr = (int) h->GetDistrType(); h_data.myDistrType = distr; h_data.myScale = distr==1 ? h->GetScaleFactor() : 1.0; + + if(distr==1){ + h_data.myScaleVarName = (aParameters->length() > 1) ? QString(aParameters[1].in()) : QString(""); + } + else + h_data.myScaleVarName = QString(""); + if( distr==2 ) { SMESH::double_array* a = h->GetTableFunction(); @@ -310,13 +334,17 @@ bool StdMeshersGUI_NbSegmentsCreator::storeParamsToHypo( const NbSegmentsHypothe if( isCreation() ) SMESH::SetName( SMESH::FindSObject( h ), h_data.myName.toLatin1().data() ); + QStringList aVariablesList; + aVariablesList.append(h_data.myNbSegVarName); + h->SetNumberOfSegments( h_data.myNbSeg ); int distr = h_data.myDistrType; h->SetDistrType( distr ); - - if( distr==1 ) + + if( distr==1 ) { h->SetScaleFactor( h_data.myScale ); - + aVariablesList.append(h_data.myScaleVarName); + } if( distr==2 || distr==3 ) h->SetConversionMode( h_data.myConv ); @@ -328,6 +356,8 @@ bool StdMeshersGUI_NbSegmentsCreator::storeParamsToHypo( const NbSegmentsHypothe //setting of function must follow after setConversionMode, because otherwise //the function will be checked with old conversion mode, so that it may occurs //unexpected errors for user + + h->SetParameters(SMESHGUI::JoinObjectParameters(aVariablesList)); } catch(const SALOME::SALOME_Exception& ex) { @@ -341,6 +371,8 @@ bool StdMeshersGUI_NbSegmentsCreator::readParamsFromWidgets( NbSegmentsHypothesi { h_data.myName = myName ? myName->text() : ""; h_data.myNbSeg = myNbSeg->value(); + h_data.myNbSegVarName = myNbSeg->text(); + h_data.myScaleVarName = myScale->text(); h_data.myDistrType = myDistr->currentIndex(); h_data.myConv = myConv->checkedId(); h_data.myScale = myScale->value();