X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_FilterDlg.cxx;h=3ffd0419bf4d0c124edf92abc76d61980ead5c5e;hp=df5618fc2b223224094f732b318fe3f6af22c96a;hb=cf325767f500546fcf9e58406a3b4457cad3f490;hpb=b61aaf79a6bf68b65255a4b4791813f0a2c71b99 diff --git a/src/SMESHGUI/SMESHGUI_FilterDlg.cxx b/src/SMESHGUI/SMESHGUI_FilterDlg.cxx index df5618fc2..3ffd0419b 100755 --- a/src/SMESHGUI/SMESHGUI_FilterDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_FilterDlg.cxx @@ -51,6 +51,7 @@ #include #include #include +#include #include #include @@ -1569,7 +1570,8 @@ void SMESHGUI_FilterTable::updateAdditionalWidget() aCriterion != SMESH::FT_OverConstrainedFace && aCriterion != SMESH::FT_OverConstrainedVolume) || - aCriterion == SMESH::FT_CoplanarFaces); + aCriterion == SMESH::FT_CoplanarFaces || + aCriterion == SMESH::FT_EqualNodes); if (!myAddWidgets.contains(anItem)) { @@ -1608,6 +1610,7 @@ const char* SMESHGUI_FilterTable::getPrecision( const int aType ) case SMESH::FT_Length2D: case SMESH::FT_MaxElementLength2D: case SMESH::FT_MaxElementLength3D: + case SMESH::FT_BallDiameter: retval = "length_precision"; break; case SMESH::FT_Volume3D: retval = "vol_precision"; break; @@ -1799,7 +1802,7 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con case SMESH::FT_Volume3D: case SMESH::FT_MaxElementLength2D: case SMESH::FT_MaxElementLength3D: - anIsDoubleCriterion = true; nbCompareSigns = 3; break; + anIsDoubleCriterion = true; break; case SMESH::FT_FreeBorders: case SMESH::FT_FreeEdges: @@ -1941,6 +1944,8 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con } // set Compare + if ( anIsDoubleCriterion ) + nbCompareSigns = 3; if ( aCompareItem->count() != nbCompareSigns ) { switch ( nbCompareSigns ) { @@ -1970,6 +1975,10 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con { isThresholdEditable = true; } + if ( !isThresholdEditable ) + { + aTable->setItem( row, 2, new QTableWidgetItem() ); + } aTable->setEditable( isThresholdEditable, row, 2); @@ -3263,6 +3272,7 @@ bool SMESHGUI_FilterDlg::onApply() if (!isValid()) return false; + SUIT_OverrideCursor wc; try { int aCurrType = myTable->GetType(); @@ -3323,6 +3333,8 @@ bool SMESHGUI_FilterDlg::createFilter (const int theType) aCriteria[ i ] = aCriterion; } + if ( !myFilter[ theType ]->_is_nil() ) + myFilter[ theType ]->UnRegister(); myFilter[ theType ] = aFilterMgr->CreateFilter(); myFilter[ theType ]->SetCriteria(aCriteria.inout()); @@ -3356,9 +3368,29 @@ SMESH::Filter_var SMESHGUI_FilterDlg::GetFilter() const void SMESHGUI_FilterDlg::SetFilter(SMESH::Filter_var filter, int type) { + if ( !filter->_is_nil() ) + filter->Register(); + if ( !myFilter[ type ]->_is_nil() ) + myFilter[ type ]->UnRegister(); + myFilter[ type ] = filter; } +//================================================================================ +/*! + * \brief call UnRegister() for myFilter's + */ +//================================================================================ + +void SMESHGUI_FilterDlg::UnRegisterFilters() +{ + QMap< int, SMESH::Filter_var >::iterator i_f = myFilter.begin(); + for ( ; i_f != myFilter.end(); ++i_f ) + if ( !i_f.value()->_is_nil() ) + i_f.value()->UnRegister(); + myFilter.clear(); +} + //======================================================================= // name : SMESHGUI_FilterDlg::insertFilterInViewer // Purpose : Insert filter in viewer