-// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 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
// SMESH SMESHGUI : GUI for SMESH component
// File : SMESHGUI_FilterDlg.cxx
// Author : Sergey LITONIN, Open CASCADE S.A.S.
-// SMESH includes
//
+
+// SMESH includes
#include "SMESHGUI_FilterDlg.h"
#include "SMESHGUI.h"
((ComboItem*)aTable->item(theRow, 0))->setValue(theCriterion.Type);
onCriterionChanged(theRow, 0, aType);
- ((ComboItem*)aTable->item(theRow, 1))->setValue(theCriterion.Compare);
+ if ( theCriterion.Compare == SMESH::FT_Undefined )
+ ((ComboItem*)aTable->item(theRow, 1))->setValue( SMESH::FT_EqualTo );
+ else
+ ((ComboItem*)aTable->item(theRow, 1))->setValue(theCriterion.Compare);
((CheckItem*)aTable->item(theRow, 3))->setChecked(theCriterion.UnaryOp == SMESH::FT_LogicalNOT);
if (theCriterion.BinaryOp != SMESH::FT_Undefined)
typeIds.append( SMESH::Geom_HEXAGONAL_PRISM );
typeIds.append( SMESH::Geom_POLYHEDRA );
}
+ if ( theType == SMESH::ALL || theType == SMESH::ELEM0D )
+ {
+ typeIds.append( SMESH::Geom_POINT );
+ }
+ if ( theType == SMESH::ALL || theType == SMESH::BALL )
+ {
+ typeIds.append( SMESH::Geom_BALL );
+ }
return typeIds;
}
if (aTypes.isEmpty())
{
aTypes[ SMESH::NODE ] = tr("NODES");
+ aTypes[ SMESH::BALL ] = tr("BALLS");
aTypes[ SMESH::EDGE ] = tr("EDGES");
aTypes[ SMESH::FACE ] = tr("FACES");
aTypes[ SMESH::VOLUME ] = tr("VOLUMES");
}
return aCriteria;
}
+ else if (theType == SMESH::ELEM0D)
+ {
+ static QMap<int, QString> aCriteria;
+ if (aCriteria.isEmpty())
+ {
+ aCriteria[ SMESH::FT_RangeOfIds ] = tr("RANGE_OF_IDS");
+ aCriteria[ SMESH::FT_BelongToGeom ] = tr("BELONG_TO_GEOM");
+ aCriteria[ SMESH::FT_BelongToPlane ] = tr("BELONG_TO_PLANE");
+ aCriteria[ SMESH::FT_BelongToCylinder ] = tr("BELONG_TO_CYLINDER");
+ aCriteria[ SMESH::FT_BelongToGenSurface ] = tr("BELONG_TO_GENSURFACE");
+ aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
+ }
+ return aCriteria;
+ }
+ else if (theType == SMESH::BALL)
+ {
+ static QMap<int, QString> aCriteria;
+ if (aCriteria.isEmpty())
+ {
+ aCriteria[ SMESH::FT_BallDiameter ] = tr("BALL_DIAMETER");
+ aCriteria[ SMESH::FT_RangeOfIds ] = tr("RANGE_OF_IDS");
+ aCriteria[ SMESH::FT_BelongToGeom ] = tr("BELONG_TO_GEOM");
+ aCriteria[ SMESH::FT_BelongToPlane ] = tr("BELONG_TO_PLANE");
+ aCriteria[ SMESH::FT_BelongToCylinder ] = tr("BELONG_TO_CYLINDER");
+ aCriteria[ SMESH::FT_BelongToGenSurface ] = tr("BELONG_TO_GENSURFACE");
+ aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
+ }
+ return aCriteria;
+ }
else // SMESH::ALL
{
static QMap<int, QString> aCriteria;
// name : SMESHGUI_FilterDlg::Init
// Purpose : Init dialog fields, connect signals and slots, show dialog
//=======================================================================
-void SMESHGUI_FilterDlg::Init (const int type)
+void SMESHGUI_FilterDlg::Init (const int type, const bool setInViewer)
{
QList<int> aTypes;
aTypes.append(type);
- Init(aTypes);
+ Init(aTypes,setInViewer);
}
//=======================================================================
// name : SMESHGUI_FilterDlg::Init
// Purpose : Init dialog fields, connect signals and slots, show dialog
//=======================================================================
-void SMESHGUI_FilterDlg::Init (const QList<int>& theTypes)
+void SMESHGUI_FilterDlg::Init (const QList<int>& theTypes, const bool setInViewer)
{
mySourceWg = 0;
myTypes = theTypes;
if (myInsertState.contains(theTypes.first()))
mySetInViewer->setChecked(myInsertState[ theTypes.first() ]);
else
- mySetInViewer->setChecked(true);
+ mySetInViewer->setChecked(setInViewer);
mySourceGrp->button(myApplyToState.contains(theTypes.first()) ?
myApplyToState[ theTypes.first() ] :
//=======================================================================
// name : SMESHGUI_FilterDlg::SetSourceWg
-// Purpose : Set widget of parent dialog containing idsto be filtered if
+// Purpose : Set widget of parent dialog containing ids to be filtered if
// user select corresponding source radio button
//=======================================================================
void SMESHGUI_FilterDlg::SetSourceWg (QWidget* theWg,
// filter ids
SMESH::Predicate_ptr aPred = myFilter[ theType ]->GetPredicate();
+ myFilter[ theType ]->SetMesh(myMesh);
QList<int>::const_iterator anIter;
for (anIter = aDialogIds.begin(); anIter != aDialogIds.end(); ++ anIter)
if (aPred->IsSatisfy(*anIter))
// Filter entities
SMESH::Predicate_ptr aPred = myFilter[ theType ]->GetPredicate();
+ myFilter[ theType ]->SetMesh(myMesh);
TColStd_MapIteratorOfMapOfInteger aResIter(aToBeFiltered);
for ( ; aResIter.More(); aResIter.Next())
if (aPred->IsSatisfy(aResIter.Key()))
}
else
{
+ mySelector->SetSelectionMode( getSelMode( myTable->GetType() ));
+
if (myIsSelectionChanged) {
// mySelectionMgr->installFilter( new GEOM_TypeFilter( aStudy, -1 ) ); // This filter deactivates selection
// Impossible to select any object in the OB on the second opening of FilterDlg