+
+//=======================================================================
+// function : FunctionPreview
+// purpose :
+//=======================================================================
+void SMESHGUI_aParameterDlg::FunctionPreview( const SMESHGUI_aParameterPtr p, QWidget* w )
+{
+ if( !w || !w->isShown() )
+ return;
+
+ SMESHGUI_strParameter* str_param = dynamic_cast<SMESHGUI_strParameter*>( p.operator->() );
+ SMESHGUI_tableParameter* tab_param = dynamic_cast<SMESHGUI_tableParameter*>( p.operator->() );
+ SMESHGUI_boolParameter* bool_param = dynamic_cast<SMESHGUI_boolParameter*>( p.operator->() );
+ if( str_param && str_param->needPreview() )
+ {
+ QString val; str_param->GetNewText( val );
+ if( !val.isNull() )
+ myPreview->setParams( val );
+ }
+ else if( tab_param && tab_param->needPreview() )
+ {
+ SMESH::double_array d;
+ tab_param->data( d );
+ myPreview->setParams( d );
+ }
+ else if( bool_param && bool_param->needPreview() )
+ {
+ int exp=0;
+ bool_param->GetNewInt( exp );
+ myPreview->setIsExp( exp );
+ }
+}
+
+//=======================================================================
+// function : onValueChanged
+// purpose :
+//=======================================================================
+void SMESHGUI_aParameterDlg::onValueChanged()
+{
+ if( sender()->inherits( "QWidget" ) )
+ {
+ QWidget* w = ( QWidget* )sender();
+
+
+ std::list<QWidget*>::const_iterator anIt = mySpinList.begin(),
+ aLast = mySpinList.end();
+ std::list<SMESHGUI_aParameterPtr>::const_iterator aPIt = myParamList.begin();
+ for( ; anIt!=aLast; anIt++, aPIt++ )
+ if( *anIt == w )
+ {
+ (*aPIt)->TakeValue( w );
+ UpdateShown( *aPIt, w );
+ FunctionPreview( *aPIt, w );
+ break;
+ }
+ }
+}
+
+//=======================================================================
+// function : onValueChanged
+// purpose :
+//=======================================================================
+void SMESHGUI_aParameterDlg::UpdateShown( const SMESHGUI_aParameterPtr param, QWidget* w )
+{
+ SMESHGUI_dependParameter* depPar = dynamic_cast<SMESHGUI_enumParameter*>( param.get() );
+ if( !depPar )
+ depPar = dynamic_cast<SMESHGUI_boolParameter*>( param.get() );
+
+ if( !depPar )
+ return;
+
+ SMESHGUI_dependParameter::ShownMap& map = depPar->shownMap();
+ if( map.isEmpty() )
+ return;
+
+ int val;
+ depPar->TakeValue( w );
+ depPar->GetNewInt( val );
+ bool hasValue = map.contains( val );
+
+ std::list<QWidget*>::const_iterator anIt = mySpinList.begin(),
+ aLast = mySpinList.end(),
+ aLIt = myLabelList.begin();
+ std::list<SMESHGUI_aParameterPtr>::iterator aPIt = myParamList.begin();
+ bool preview = false;
+ for( int i=0; anIt!=aLast; anIt++, aLIt++, i++, aPIt++ )
+ {
+ bool shown = hasValue && map[ val ].contains( i );
+ (*anIt)->setShown( shown );
+ (*aLIt)->setShown( shown );
+ if( shown )
+ {
+ SMESHGUI_strParameter* str_param = dynamic_cast<SMESHGUI_strParameter*>( (*aPIt).operator->() );
+ SMESHGUI_tableParameter* tab_param = dynamic_cast<SMESHGUI_tableParameter*>( (*aPIt).operator->() );
+ preview = preview || ( str_param && str_param->needPreview() ) || ( tab_param && tab_param->needPreview() );
+ }
+ }
+ myPreview->setShown( preview );
+}