X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_SewingDlg.cxx;h=cc27ffed285889363d6e8416d03fd65096833ccd;hp=3753dff1d9762c8b3037c729a259845adbe5dd61;hb=8d297d6698f361d4f2dde723050bcfbaea050920;hpb=674c0d8b9d98776136d216ec8f1bad56acac5bf5 diff --git a/src/SMESHGUI/SMESHGUI_SewingDlg.cxx b/src/SMESHGUI/SMESHGUI_SewingDlg.cxx index 3753dff1d..cc27ffed2 100644 --- a/src/SMESHGUI/SMESHGUI_SewingDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_SewingDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -452,7 +452,7 @@ SMESHGUI_SewingDlg::SMESHGUI_SewingDlg( SMESHGUI* theModule ) mySMESHGUI->SetActiveDialogBox((QDialog*)this); - myHelpFileName = "sewing_meshes_page.html"; + myHelpFileName = "sewing_meshes.html"; myActor = 0; myStoredEntityMode = 0; @@ -826,12 +826,13 @@ bool SMESHGUI_SewingDlg::haveBorders() QString SMESHGUI_SewingDlg::getPartText(const SMESH::FreeBorderPart& aPART) { + typedef CORBA::Long TInt; QString text; - if ( 0 <= aPART.border && aPART.border < myBorders->borders.length() ) + if ( 0 <= aPART.border && aPART.border < (TInt)myBorders->borders.length() ) { const SMESH::FreeBorder& aBRD = myBorders->borders[ aPART.border ]; - if ( 0 <= aPART.node1 && aPART.node1 < aBRD.nodeIDs.length() && - 0 <= aPART.nodeLast && aPART.nodeLast < aBRD.nodeIDs.length() ) + if ( 0 <= aPART.node1 && aPART.node1 < (TInt)aBRD.nodeIDs.length() && + 0 <= aPART.nodeLast && aPART.nodeLast < (TInt)aBRD.nodeIDs.length() ) { text += QString("( %1 %2 %3 ) ") .arg( aBRD.nodeIDs[ aPART.node1 ] ) @@ -853,7 +854,7 @@ QString SMESHGUI_SewingDlg::getGroupText(int groupIndex) if ( haveBorders() && groupIndex >= 0 && - groupIndex < myBorders->coincidentGroups.length() ) + groupIndex < (int)myBorders->coincidentGroups.length() ) { const SMESH::FreeBordersGroup& aGRP = myBorders->coincidentGroups[ groupIndex ]; @@ -894,7 +895,7 @@ void SMESHGUI_SewingDlg::onDetectClicked() } myBorderDisplayers.resize( myBorders->coincidentGroups.length(), 0 ); - for ( CORBA::ULong i = 0; i < myBorders->coincidentGroups.length(); ++i ) + for ( uint i = 0; i < myBorders->coincidentGroups.length(); ++i ) { QString groupText = getGroupText( i ); if ( groupText.isEmpty() ) @@ -934,7 +935,7 @@ void SMESHGUI_SewingDlg::onRemoveGroupClicked() delete item; if ( myBorderDisplayers[ groupIndex ]) myBorderDisplayers[ groupIndex ]->Hide(); - SMESH::FreeBordersGroup& aGRP = myBorders->coincidentGroups[ myCurGroupIndex ]; + SMESH::FreeBordersGroup& aGRP = myBorders->coincidentGroups[ groupIndex ]; aGRP.length( 0 ); } myBusy = false; @@ -958,7 +959,7 @@ void SMESHGUI_SewingDlg::showGroup( QListWidgetItem* item ) int groupIndex = item->data( GROUP_INDEX ).toInt(); QColor groupColor = item->data( GROUP_COLOR ).value(); if ( groupIndex >= 0 && - groupIndex < myBorders->coincidentGroups.length() ) + groupIndex < (int)myBorders->coincidentGroups.length() ) { if ( !myBorderDisplayers[ groupIndex ] && SMESH::GetCurrentVtkView()) myBorderDisplayers[ groupIndex ] = new BorderGroupDisplayer( myBorders, groupIndex, groupColor, myMesh ); @@ -984,7 +985,7 @@ bool SMESHGUI_SewingDlg::setCurrentGroup() myCurGroupIndex = selItems[0]->data( GROUP_INDEX ).toInt(); - return ( myCurGroupIndex >= 0 && myCurGroupIndex < myBorders->coincidentGroups.length() ); + return ( myCurGroupIndex >= 0 && myCurGroupIndex < (int)myBorders->coincidentGroups.length() ); } //======================================================================= @@ -1003,7 +1004,7 @@ bool SMESHGUI_SewingDlg::setCurrentPart() myCurPartIndex = ListEdit->currentRow(); const SMESH::FreeBordersGroup& aGRP = myBorders->coincidentGroups[ myCurGroupIndex ]; - return ( myCurPartIndex >= 0 && myCurPartIndex < aGRP.length() ); + return ( myCurPartIndex >= 0 && myCurPartIndex < (int)aGRP.length() ); } //======================================================================= @@ -1192,15 +1193,18 @@ void SMESHGUI_SewingDlg::onRemoveElemClicked() SMESH::FreeBordersGroup& aGRP = myBorders->coincidentGroups[ myCurGroupIndex ]; + myBusy = true; QList selItems = ListEdit->selectedItems(); for ( int i = 0; i < selItems.count(); ++i ) { int part = ListEdit->row( selItems[i] ); - for ( ; part + 1 < aGRP.length(); ++part ) + for ( ; part + 1 < (int)aGRP.length(); ++part ) aGRP[ part ] = aGRP[ part + 1 ]; - aGRP.length( aGRP.length() - 1 ); + if ( aGRP.length() > 0 ) + aGRP.length( aGRP.length() - 1 ); delete selItems[i]; } + myBusy = false; if ( aGRP.length() == 0 ) onRemoveGroupClicked(); @@ -1289,7 +1293,7 @@ void SMESHGUI_SewingDlg::onSwapClicked() //================================================================================= bool SMESHGUI_SewingDlg::ClickOnApply() { - if (mySMESHGUI->isActiveStudyLocked()) + if (SMESHGUI::isStudyLocked()) return false; bool aResult = false; @@ -1304,7 +1308,7 @@ bool SMESHGUI_SewingDlg::ClickOnApply() SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); int aConstructorId = GetConstructorId(); - SMESH::SMESH_MeshEditor::Sew_Error anError; + SMESH::SMESH_MeshEditor::Sew_Error anError = SMESH::SMESH_MeshEditor::SEW_OK; if (aConstructorId == 0) { @@ -1528,7 +1532,7 @@ void SMESHGUI_SewingDlg::onTextChange (const QString& theNewText) else if (send == LineEdit6) myOk6 = false; - // hilight entered elements/nodes + // highlight entered elements/nodes SMDS_Mesh* aMesh = 0; if (myActor) @@ -1944,16 +1948,21 @@ void SMESHGUI_SewingDlg::BorderGroupDisplayer::getPartEnds( int p std::vector & ids, std::list& coords) { + if ( partIndex >= (int)myGroup.length() ) return; const SMESH::FreeBorderPart& aPART = myGroup [ partIndex ]; const SMESH::FreeBorder& aBRD = myBorders[ aPART.border ]; ids.push_back( aBRD.nodeIDs[ aPART.node1 ]); ids.push_back( aBRD.nodeIDs[ aPART.nodeLast ]); + if ( aPART.node1 == aPART.nodeLast ) + ids.push_back( aBRD.nodeIDs[ aPART.node2 ]); SMDS_Mesh* mesh = myPartActors[ partIndex ]->GetObject()->GetMesh(); coords.push_back( SMESH_TNodeXYZ( mesh->FindNode( aPART.node1+1 ))); coords.push_back( SMESH_TNodeXYZ( mesh->FindNode( aPART.nodeLast+1 ))); + if ( aPART.node1 == aPART.nodeLast ) + coords.push_back( SMESH_TNodeXYZ( mesh->FindNode( aPART.node2+1 ))); } void SMESHGUI_SewingDlg::BorderGroupDisplayer::Update()