0020918: EDF 1447 SMESH: Mesh common borders

+	StdMeshers_ImportSource1D_i.cxx
+	StdMeshers_ImportSource2D_i.cxx
This commit is contained in:
eap 2010-11-12 15:02:15 +00:00
parent 38440ad0a9
commit ba115b7fa9
3 changed files with 174 additions and 3 deletions

View File

@ -45,6 +45,7 @@
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_BasicHypothesis)
#include CORBA_SERVER_HEADER(SMESH_Mesh)
#include CORBA_SERVER_HEADER(SMESH_Group)
// Qt includes
#include <QHBoxLayout>
@ -258,6 +259,25 @@ namespace {
return SMESH::SMESH_Mesh::_nil();
}
//================================================================================
/*!
* \brief Retrieve SMESH_Mesh held by widget
*/
//================================================================================
inline SMESH::ListOfGroups_var groupsFromWdg(const QWidget* wdg)
{
SMESH::ListOfGroups_var groups = new SMESH::ListOfGroups;
const StdMeshersGUI_ObjectReferenceParamWdg * objRefWdg =
dynamic_cast<const StdMeshersGUI_ObjectReferenceParamWdg*>( wdg );
if ( objRefWdg )
{
groups->length( objRefWdg->NbObjects() );
for ( unsigned i = 0; i < groups->length(); ++i )
groups[i] = objRefWdg->GetObject< SMESH::SMESH_GroupBase >(i);
}
return groups;
}
//================================================================================
/*!
* \brief creates a filter for selection of shapes of given dimension
* \param dim - dimension
@ -314,6 +334,15 @@ namespace {
w->SetObject( object.in() );
return w;
}
QWidget* newObjRefParamWdg( SUIT_SelectionFilter* filter,
SMESH::string_array_var& objEntries)
{
StdMeshersGUI_ObjectReferenceParamWdg* w =
new StdMeshersGUI_ObjectReferenceParamWdg( filter, 0, /*multiSel=*/true);
w->SetObjects( objEntries );
w->activateSelection();
return w;
}
//================================================================================
/*!
@ -379,6 +408,12 @@ bool StdMeshersGUI_StdHypothesisCreator::checkParams( QString& msg ) const
if ( ok )
deactivateObjRefParamWdg( customWidgets() );
}
else if ( hypType().startsWith("ImportSource" ))
{
StdMeshersGUI_ObjectReferenceParamWdg* w =
widget< StdMeshersGUI_ObjectReferenceParamWdg >( 0 );
ok = ( w->IsObjectSelected() );
}
else if ( hypType() == "LayerDistribution" || hypType() == "LayerDistribution2D" )
{
StdMeshersGUI_LayerDistributionParamWdg* w =
@ -604,6 +639,28 @@ QString StdMeshersGUI_StdHypothesisCreator::storeParams() const
geomFromWdg ( getWidgetForParam( 3 )), // tgt1
geomFromWdg ( getWidgetForParam( 5 ))); // tgt2
}
else if( hypType()=="ImportSource1D" )
{
StdMeshers::StdMeshers_ImportSource1D_var h =
StdMeshers::StdMeshers_ImportSource1D::_narrow( hypothesis() );
SMESH::ListOfGroups_var groups = groupsFromWdg( getWidgetForParam( 0 ));
h->SetSourceEdges( groups.in() );
QCheckBox* toCopyMesh = widget< QCheckBox >( 1 );
QCheckBox* toCopyGroups = widget< QCheckBox >( 2 );
h->SetCopySourceMesh( toCopyMesh->isChecked(), toCopyGroups->isChecked());
}
else if( hypType()=="ImportSource2D" )
{
StdMeshers::StdMeshers_ImportSource2D_var h =
StdMeshers::StdMeshers_ImportSource2D::_narrow( hypothesis() );
SMESH::ListOfGroups_var groups = groupsFromWdg( getWidgetForParam( 0 ));
h->SetSourceFaces( groups.in() );
QCheckBox* toCopyMesh = widget< QCheckBox >( 1 );
QCheckBox* toCopyGroups = widget< QCheckBox >( 2 );
h->SetCopySourceMesh( toCopyMesh->isChecked(), toCopyGroups->isChecked());
}
else if( hypType()=="QuadrangleParams" )
{
StdMeshers::StdMeshers_QuadrangleParams_var h =
@ -982,6 +1039,56 @@ bool StdMeshersGUI_StdHypothesisCreator::stdParams( ListOfStdParams& p ) const
customWidgets()->append( newObjRefParamWdg( filterForShapeOfDim( 0 ),
h->GetTargetVertex( 2 )));
}
else if( hypType()=="ImportSource1D" )
{
StdMeshers::StdMeshers_ImportSource1D_var h =
StdMeshers::StdMeshers_ImportSource1D::_narrow( hyp );
SMESH::string_array_var groupEntries = h->GetSourceEdges();
CORBA::Boolean toCopyMesh, toCopyGroups;
h->GetCopySourceMesh(toCopyMesh, toCopyGroups);
item.myName = tr( "SMESH_SOURCE_EDGES" ); p.append( item );
customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( GROUP_EDGE ),
groupEntries));
item.myName = tr( "SMESH_COPY_MESH" ); p.append( item );
QCheckBox* aQCheckBox = new QCheckBox(dlg());
aQCheckBox->setChecked( toCopyMesh );
connect( aQCheckBox, SIGNAL( stateChanged(int) ), this, SLOT( onValueChanged() ));
customWidgets()->append( aQCheckBox );
item.myName = tr( "SMESH_TO_COPY_GROUPS" ); p.append( item );
aQCheckBox = new QCheckBox(dlg());
aQCheckBox->setChecked( toCopyGroups );
aQCheckBox->setEnabled( toCopyMesh );
customWidgets()->append( aQCheckBox );
}
else if( hypType()=="ImportSource2D" )
{
StdMeshers::StdMeshers_ImportSource2D_var h =
StdMeshers::StdMeshers_ImportSource2D::_narrow( hyp );
SMESH::string_array_var groupEntries = h->GetSourceFaces();
CORBA::Boolean toCopyMesh, toCopyGroups;
h->GetCopySourceMesh(toCopyMesh, toCopyGroups);
item.myName = tr( "SMESH_SOURCE_FACES" ); p.append( item );
customWidgets()->append( newObjRefParamWdg( new SMESH_TypeFilter( GROUP_FACE ),
groupEntries));
item.myName = tr( "SMESH_COPY_MESH" ); p.append( item );
QCheckBox* aQCheckBox = new QCheckBox(dlg());
aQCheckBox->setChecked( toCopyMesh );
connect( aQCheckBox, SIGNAL( stateChanged(int) ), this, SLOT( onValueChanged() ));
customWidgets()->append( aQCheckBox );
item.myName = tr( "SMESH_COPY_GROUPS" ); p.append( item );
aQCheckBox = new QCheckBox(dlg());
aQCheckBox->setChecked( toCopyGroups );
aQCheckBox->setEnabled( toCopyMesh );
customWidgets()->append( aQCheckBox );
}
else if( hypType()=="QuadrangleParams" )
{
StdMeshers::StdMeshers_QuadrangleParams_var h =
@ -1129,6 +1236,8 @@ QString StdMeshersGUI_StdHypothesisCreator::hypTypeName( const QString& t ) cons
types.insert( "ProjectionSource1D", "PROJECTION_SOURCE_1D" );
types.insert( "ProjectionSource2D", "PROJECTION_SOURCE_2D" );
types.insert( "ProjectionSource3D", "PROJECTION_SOURCE_3D" );
types.insert( "ImportSource1D", "IMPORT_SOURCE_1D" );
types.insert( "ImportSource2D", "IMPORT_SOURCE_2D" );
types.insert( "NumberOfLayers", "NUMBER_OF_LAYERS" );
types.insert( "LayerDistribution", "LAYER_DISTRIBUTION" );
types.insert( "NumberOfLayers2D", "NUMBER_OF_LAYERS_2D" );
@ -1222,6 +1331,12 @@ bool StdMeshersGUI_StdHypothesisCreator::getParamFromCustomWidget( StdParam & pa
param.myValue = w->GetValue();
return true;
}
if ( widget->inherits( "QCheckBox" ))
{
//const QCheckBox * w = static_cast<const QCheckBox*>( widget );
//param.myValue = w->isChecked();
return true;
}
return false;
}
@ -1233,7 +1348,8 @@ bool StdMeshersGUI_StdHypothesisCreator::getParamFromCustomWidget( StdParam & pa
void StdMeshersGUI_StdHypothesisCreator::onReject()
{
if ( hypType().startsWith("ProjectionSource" ))
if ( hypType().startsWith("ProjectionSource" ) ||
hypType().startsWith("ImportSource" ))
{
// Uninstall filters of StdMeshersGUI_ObjectReferenceParamWdg
deactivateObjRefParamWdg( customWidgets() );
@ -1242,13 +1358,14 @@ void StdMeshersGUI_StdHypothesisCreator::onReject()
//================================================================================
/*!
* \brief
* \brief Update widgets dependent on paramWidget
*/
//================================================================================
void StdMeshersGUI_StdHypothesisCreator::valueChanged( QWidget* paramWidget)
{
if ( hypType() == "MaxLength" && paramWidget == getWidgetForParam(1) ) {
if ( hypType() == "MaxLength" && paramWidget == getWidgetForParam(1) )
{
getWidgetForParam(0)->setEnabled( !widget< QCheckBox >( 1 )->isChecked() );
if ( !getWidgetForParam(0)->isEnabled() ) {
StdMeshers::StdMeshers_MaxLength_var h =
@ -1256,6 +1373,20 @@ void StdMeshersGUI_StdHypothesisCreator::valueChanged( QWidget* paramWidget)
widget< QtxDoubleSpinBox >( 0 )->setValue( h->GetPreestimatedLength() );
}
}
else if ( hypType().startsWith("ImportSource") && paramWidget == getWidgetForParam(1) )
{
QCheckBox* toCopyMesh = (QCheckBox*) paramWidget;
QCheckBox* toCopyGroups = widget< QCheckBox >( 2 );
if ( !toCopyMesh->isChecked() )
{
toCopyGroups->setChecked( false );
toCopyGroups->setEnabled( false );
}
else
{
toCopyGroups->setEnabled( true );
}
}
}
//================================================================================

View File

@ -89,6 +89,14 @@
<source>ICON_DLG_PROJECTION_SOURCE_3D</source>
<translation>mesh_hypo_source_3d.png</translation>
</message>
<message>
<source>ICON_DLG_IMPORT_SOURCE_1D</source>
<translation>mesh_hypo_source_edge.png</translation>
</message>
<message>
<source>ICON_DLG_IMPORT_SOURCE_2D</source>
<translation>mesh_hypo_source_face.png</translation>
</message>
<message>
<source>ICON_DLG_SEGMENT_LENGTH_AROUND_VERTEX</source>
<translation>mesh_hypo_length.png</translation>

View File

@ -235,6 +235,22 @@
<source>SMESH_PROJECTION_SOURCE_3D_TITLE</source>
<translation>Hypothesis Construction</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_1D_HYPOTHESIS</source>
<translation>Source edges</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_1D_TITLE</source>
<translation>Hypothesis Construction</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_2D_HYPOTHESIS</source>
<translation>Source faces</translation>
</message>
<message>
<source>SMESH_IMPORT_SOURCE_2D_TITLE</source>
<translation>Hypothesis Construction</translation>
</message>
<message>
<source>SMESH_REMOVE_ROW</source>
<translation>Remove row</translation>
@ -283,14 +299,30 @@
<source>SMESH_SOURCE_EDGE</source>
<translation>Edge</translation>
</message>
<message>
<source>SMESH_SOURCE_EDGES</source>
<translation>Groups of Edges</translation>
</message>
<message>
<source>SMESH_SOURCE_FACE</source>
<translation>Face</translation>
</message>
<message>
<source>SMESH_SOURCE_FACES</source>
<translation>Groups of Faces</translation>
</message>
<message>
<source>SMESH_SOURCE_MESH</source>
<translation>Mesh</translation>
</message>
<message>
<source>SMESH_COPY_MESH</source>
<translation>To copy mesh</translation>
</message>
<message>
<source>SMESH_TO_COPY_GROUPS</source>
<translation>To copy groups</translation>
</message>
<message>
<source>SMESH_SOURCE_VERTEX</source>
<translation>Source Vertex</translation>