-// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include <SMESHGUI_HypothesesUtils.h>
#include <SMESHGUI_Utils.h>
#include <SMESHGUI_GEOMGenUtils.h>
-
#include <SMESH_TypeFilter.hxx>
#include <SMESH_NumberFilter.hxx>
#include "StdMeshersGUI_FixedPointsParamWdg.h"
#include "StdMeshersGUI_LayerDistributionParamWdg.h"
#include "StdMeshersGUI_ObjectReferenceParamWdg.h"
+#include "StdMeshersGUI_PropagationHelperWdg.h"
#include "StdMeshersGUI_QuadrangleParamWdg.h"
-#include "StdMeshersGUI_SubShapeSelectorWdg.h"
#include "StdMeshersGUI_RadioButtonsGrpWdg.h"
+#include "StdMeshersGUI_SubShapeSelectorWdg.h"
#include <SALOMEDSClient_Study.hxx>
#include <GEOM_wrap.hxx>
// SALOME GUI includes
-#include <SUIT_ResourceMgr.h>
#include <SUIT_MessageBox.h>
+#include <SUIT_ResourceMgr.h>
+#include <SalomeApp_IntSpinBox.h>
// IDL includes
#include <SALOMEconfig.h>
//================================================================================
StdMeshersGUI_StdHypothesisCreator::StdMeshersGUI_StdHypothesisCreator( const QString& type )
-: SMESHGUI_GenericHypothesisCreator( type )
+ : SMESHGUI_GenericHypothesisCreator( type ), myHelperWidget( 0 )
{
}
item.myName = tr( "SMESH_REVERSED_EDGES" );
p.append( item );
- StdMeshersGUI_SubShapeSelectorWdg* aDirectionWidget =
- new StdMeshersGUI_SubShapeSelectorWdg();
- QString aGeomEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
- QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
- if ( aGeomEntry == "" )
- aGeomEntry = h->GetObjectEntry();
-
- aDirectionWidget->SetGeomShapeEntry( aGeomEntry );
- aDirectionWidget->SetMainShapeEntry( aMainEntry );
- aDirectionWidget->SetListOfIDs( h->GetReversedEdges() );
- aDirectionWidget->showPreview( true );
- customWidgets()->append ( aDirectionWidget );
+ customWidgets()->append ( makeReverseEdgesWdg( h->GetReversedEdges(), h->GetObjectEntry() ));
}
else if( hypType()=="GeometricProgression" )
item.myName = tr( "SMESH_REVERSED_EDGES" );
p.append( item );
- StdMeshersGUI_SubShapeSelectorWdg* aDirectionWidget =
- new StdMeshersGUI_SubShapeSelectorWdg();
- QString aGeomEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
- QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
- if ( aGeomEntry == "" )
- aGeomEntry = h->GetObjectEntry();
-
- aDirectionWidget->SetGeomShapeEntry( aGeomEntry );
- aDirectionWidget->SetMainShapeEntry( aMainEntry );
- aDirectionWidget->SetListOfIDs( h->GetReversedEdges() );
- aDirectionWidget->showPreview( true );
- customWidgets()->append ( aDirectionWidget );
+ customWidgets()->append ( makeReverseEdgesWdg( h->GetReversedEdges(), h->GetObjectEntry() ));
}
else if( hypType()=="FixedPoints1D" )
item.myName = tr( "SMESH_REVERSED_EDGES" );
p.append( item );
- StdMeshersGUI_SubShapeSelectorWdg* aDirectionWidget =
- new StdMeshersGUI_SubShapeSelectorWdg();
- QString anEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
- QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
- if ( anEntry == "" )
- anEntry = h->GetObjectEntry();
- aDirectionWidget->SetGeomShapeEntry( anEntry );
- aDirectionWidget->SetMainShapeEntry( aMainEntry );
- aDirectionWidget->SetListOfIDs( h->GetReversedEdges() );
- aDirectionWidget->showPreview( true );
- customWidgets()->append ( aDirectionWidget );
+ customWidgets()->append ( makeReverseEdgesWdg( h->GetReversedEdges(), h->GetObjectEntry() ));
}
if(!initVariableName( hyp, item, "SetMaxElementArea" ))
item.myValue = h->GetMaxElementArea();
p.append( item );
-
+
}
else if( hypType()=="MaxElementVolume" )
{
item.myName = tr( "SMESH_START_LENGTH_PARAM" );
- if(!initVariableName( hyp, item, "SetStartLength" ))
+ if(!initVariableName( hyp, item, "SetStartLength" ))
item.myValue = h->GetLength( true );
p.append( item );
customWidgets()->append(0);
item.myName = tr( "SMESH_END_LENGTH_PARAM" );
- if(!initVariableName( hyp, item, "SetEndLength" ))
+ if(!initVariableName( hyp, item, "SetEndLength" ))
item.myValue = h->GetLength( false );
p.append( item );
customWidgets()->append(0);
item.myName = tr( "SMESH_REVERSED_EDGES" );
p.append( item );
- StdMeshersGUI_SubShapeSelectorWdg* aDirectionWidget =
- new StdMeshersGUI_SubShapeSelectorWdg();
- QString anEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
- QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
- if ( anEntry == "" )
- anEntry = h->GetObjectEntry();
- aDirectionWidget->SetGeomShapeEntry( anEntry );
- aDirectionWidget->SetMainShapeEntry( aMainEntry );
- aDirectionWidget->SetListOfIDs( h->GetReversedEdges() );
- aDirectionWidget->showPreview( true );
- customWidgets()->append ( aDirectionWidget );
+ customWidgets()->append ( makeReverseEdgesWdg( h->GetReversedEdges(), h->GetObjectEntry() ));
}
else if( hypType()=="Deflection1D" )
{
StdMeshers::StdMeshers_Deflection1D::_narrow( hyp );
item.myName = tr( "SMESH_DEFLECTION1D_PARAM" );
- if(!initVariableName( hyp, item, "SetDeflection" ))
+ if(!initVariableName( hyp, item, "SetDeflection" ))
item.myValue = h->GetDeflection();
p.append( item );
}
StdMeshers::StdMeshers_Adaptive1D::_narrow( hyp );
item.myName = tr( "SMESH_MIN_SIZE" );
- if(!initVariableName( hyp, item, "SetMinSize" ))
+ if(!initVariableName( hyp, item, "SetMinSize" ))
item.myValue = h->GetMinSize();
p.append( item );
item.myName = tr( "SMESH_MAX_SIZE" );
- if(!initVariableName( hyp, item, "SetMaxSize" ))
+ if(!initVariableName( hyp, item, "SetMaxSize" ))
item.myValue = h->GetMaxSize();
p.append( item );
item.myName = tr( "SMESH_DEFLECTION1D_PARAM" );
- if(!initVariableName( hyp, item, "SetDeflection" ))
+ if(!initVariableName( hyp, item, "SetDeflection" ))
item.myValue = h->GetDeflection();
p.append( item );
}
StdMeshersGUI_SubShapeSelectorWdg* idsWg =
new StdMeshersGUI_SubShapeSelectorWdg(0,TopAbs_FACE);
- idsWg->SetMainShapeEntry( aMainEntry );
- idsWg->SetGeomShapeEntry( aSubEntry.isEmpty() ? aMainEntry : aSubEntry );
+ idsWg->SetGeomShapeEntry( aSubEntry, aMainEntry );
if ( idsWg->SetListOfIDs( h->GetFaces() ))
{
- idsWg->showPreview( true );
+ idsWg->ShowPreview( true );
}
else
{
StdMeshersGUI_SubShapeSelectorWdg* idsWg =
new StdMeshersGUI_SubShapeSelectorWdg(0,TopAbs_EDGE);
- idsWg->SetMainShapeEntry( aMainEntry );
- idsWg->SetGeomShapeEntry( aSubEntry.isEmpty() ? aMainEntry : aSubEntry );
+ idsWg->SetGeomShapeEntry( aSubEntry, aMainEntry );
if ( idsWg->SetListOfIDs( h->GetEdges() ))
{
- idsWg->showPreview( true );
+ idsWg->ShowPreview( true );
}
else
{
customWidgets()->append ( idsWg );
}
}
- // else if (hypType() == "QuadrangleParams")
- // {
- // StdMeshers::StdMeshers_QuadrangleParams_var h =
- // StdMeshers::StdMeshers_QuadrangleParams::_narrow(hyp);
-
- // item.myName = tr("SMESH_BASE_VERTEX");
- // p.append(item);
-
- // StdMeshersGUI_SubShapeSelectorWdg* aDirectionWidget =
- // new StdMeshersGUI_SubShapeSelectorWdg(0, TopAbs_VERTEX);
- // aDirectionWidget->SetMaxSize(1);
- // QString anEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
- // QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
- // if (anEntry == "")
- // anEntry = h->GetObjectEntry();
- // aDirectionWidget->SetGeomShapeEntry(anEntry);
- // aDirectionWidget->SetMainShapeEntry(aMainEntry);
- // if (!isCreation()) {
- // SMESH::long_array_var aVec = new SMESH::long_array;
- // int vertID = h->GetTriaVertex();
- // if (vertID > 0) {
- // aVec->length(1);
- // aVec[0] = vertID;
- // aDirectionWidget->SetListOfIDs(aVec);
- // }
- // }
- // aDirectionWidget->showPreview(true);
-
- // item.myName = tr("SMESH_QUAD_TYPE");
- // p.append(item);
-
- // StdMeshersGUI_QuadrangleParamWdg* aTypeWidget =
- // new StdMeshersGUI_QuadrangleParamWdg();
- // if (!isCreation()) {
- // aTypeWidget->SetType(int(h->GetQuadType()));
- // }
-
- // customWidgets()->append(aDirectionWidget);
- // customWidgets()->append(aTypeWidget);
- // }
else
res = false;
return res;
{
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" );
sb->setEnabled( !widget< QCheckBox >( 1 )->isChecked() );
+ sb->setMinimumWidth( 150 );
}
else if( hypType()=="MaxElementArea" )
{
sb->RangeStepAndValidator( VALUE_SMALL, VALUE_MAX, 1.0, "length_precision" );
}
}
+ else if ( SalomeApp_IntSpinBox* sb = qobject_cast< SalomeApp_IntSpinBox* >( w ))
+ {
+ if ( hypType().startsWith( "NumberOfLayers" ) ||
+ hypType().startsWith( "ViscousLayers" ))
+ {
+ sb->setMinimum( 1 );
+ }
+ }
}
//================================================================================
}
else if ( hypType().startsWith( "ViscousLayers" ) && paramWidget->inherits("QButtonGroup"))
{
- if ( QLabel* label = getLabel(4) )
+ int widgetNumber = hypType() == "ViscousLayers2D" ? 3 : 4;
+ if ( QLabel* label = getLabel( widgetNumber + 1 ) )
{
- bool toIgnore = widget< StdMeshersGUI_RadioButtonsGrpWdg >( 3 )->checkedId();
+ bool toIgnore = widget< StdMeshersGUI_RadioButtonsGrpWdg >( widgetNumber )->checkedId();
if ( hypType() == "ViscousLayers2D" )
label->setText( tr( toIgnore ? "SMESH_EDGES_WO_LAYERS" : "SMESH_EDGES_WITH_LAYERS" ));
else
return theParams.isVariable;
}
+
+//================================================================================
+/*!
+ * \brief Creates two widgets used to define reversed edges for some 1D hypotheses
+ * \param [in] edgeIDs - ids of reversed edges to set to the widgets
+ * \param [in] shapeEntry - entry of a sub-shape of a sub-mesh if any
+ * \return QWidget* - new StdMeshersGUI_SubShapeSelectorWdg;
+ * new StdMeshersGUI_PropagationHelperWdg is stored in \a myHelperWidget field.
+ */
+//================================================================================
+
+QWidget*
+StdMeshersGUI_StdHypothesisCreator::makeReverseEdgesWdg( SMESH::long_array_var edgeIDs,
+ CORBA::String_var shapeEntry) const
+{
+ QString aGeomEntry = SMESHGUI_GenericHypothesisCreator::getShapeEntry();
+ QString aMainEntry = SMESHGUI_GenericHypothesisCreator::getMainShapeEntry();
+ if ( aGeomEntry.isEmpty() && shapeEntry.in() )
+ aGeomEntry = shapeEntry.in();
+
+ StdMeshersGUI_SubShapeSelectorWdg* wdg = new StdMeshersGUI_SubShapeSelectorWdg();
+ wdg->SetGeomShapeEntry( aGeomEntry, aMainEntry );
+ wdg->SetListOfIDs( edgeIDs );
+ wdg->ShowPreview( true );
+
+ if ( !aGeomEntry.isEmpty() || !aMainEntry.isEmpty() )
+ const_cast<StdMeshersGUI_StdHypothesisCreator*>( this )->
+ myHelperWidget = new StdMeshersGUI_PropagationHelperWdg( wdg );
+
+ return wdg;
+}