WStyle_Title | WStyle_SysMenu | WDestructiveClose),
mySMESHGUI( theModule ),
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
- myViewWindow( SMESH::GetViewWindow( theModule ) ),
- mySelector( myViewWindow->GetSelector() )
+ myIsBusy( false ),
+ myActor( 0 )
{
if (!name) setName("SMESHGUI_GroupDlg");
initDialog(true);
myGeomGroupLine->setEnabled(false);
}
+ mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
+
/* Move widget on the botton right corner of main widget */
int x, y ;
mySMESHGUI->DefineDlgPosition(this, x, y);
WStyle_Title | WStyle_SysMenu | WDestructiveClose),
mySMESHGUI( theModule ),
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
- myViewWindow( SMESH::GetViewWindow( theModule ) ),
- mySelector( myViewWindow->GetSelector() )
+ myIsBusy( false )
{
if (!name) setName("SMESHGUI_GroupDlg");
+
+ mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
+
initDialog(false);
if (!theGroup->_is_nil())
init(theGroup);
mySelectSubMesh->setEnabled(false);
mySelectGroup->setEnabled(false);
}
-
+
/* Move widget on the botton right corner of main widget */
int x, y ;
mySMESHGUI->DefineDlgPosition(this, x, y);
myCreate = create;
myCurrentLineEdit = 0;
- QPixmap image0 (SMESHGUI::resourceMgr()->loadPixmap("SMESH", tr("ICON_SELECT")));
+ QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
if (create)
setCaption(tr("SMESH_CREATE_GROUP_TITLE"));
//=================================================================================
void SMESHGUI_GroupDlg::init (SMESH::SMESH_Mesh_ptr theMesh)
{
+ mySelectionMgr->installFilter(myMeshFilter);
+
/* init data from current selection */
myMesh = SMESH::SMESH_Mesh::_duplicate(theMesh);
myGroup = SMESH::SMESH_Group::_nil();
myActor = SMESH::FindActorByObject(myMesh);
SMESH::SetPickable(myActor);
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
-
- QString aName = aList.First()->getName();
- myMeshGroupLine->setText(aName) ;
- myMeshGroupLine->home( false );
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+ if( !aList.IsEmpty() )
+ {
+ QString aName = aList.First()->getName();
+ myMeshGroupLine->setText(aName) ;
+ myMeshGroupLine->home( false );
+ }
myCurrentLineEdit = 0;
myActor->SetPointRepresentation(true);
else
SMESH::SetPointRepresentation(true);
- myViewWindow->SetSelectionMode(NodeSelection);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode(NodeSelection);
break;
case 1:
- myViewWindow->SetSelectionMode(EdgeSelection);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode(EdgeSelection);
break;
case 2:
- myViewWindow->SetSelectionMode(FaceSelection);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode(FaceSelection);
break;
default:
- myViewWindow->SetSelectionMode(VolumeSelection);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode(VolumeSelection);
}
} else {
- myViewWindow->SetSelectionMode(ActorSelection);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode(ActorSelection);
if (theMode == 4)
mySelectionMgr->installFilter(mySubMeshFilter);
else if (theMode == 5)
onClose();
}
-static bool busy = false;
//=================================================================================
// function : onListSelectionChanged()
// purpose : Called when selection in element list is changed
void SMESHGUI_GroupDlg::onListSelectionChanged()
{
// MESSAGE("SMESHGUI_GroupDlg::onListSelectionChanged(); myActor = " << myActor);
- if (busy || !myActor) return;
- busy = true;
+ if( myIsBusy || !myActor) return;
+ myIsBusy = true;
if (myCurrentLineEdit == 0) {
mySelectionMgr->clearSelected();
SALOME_ListIO aList;
aList.Append(myActor->getIO());
mySelectionMgr->setSelectedObjects(aList,false);
- myViewWindow->highlight( myActor->getIO(), true, true );
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->highlight( myActor->getIO(), true, true );
}
- busy = false;
+ myIsBusy = false;
}
//=================================================================================
//=================================================================================
void SMESHGUI_GroupDlg::onObjectSelectionChanged()
{
- if (busy || !isEnabled()) return;
- busy = true;
-
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+ if ( myIsBusy || !isEnabled()) return;
+ myIsBusy = true;
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
int aNbSel = aList.Extent();
myElements->clearSelection();
myElements->clear();
- if (aNbSel != 1) {
+ if (aNbSel != 1 ) {
myGroup = SMESH::SMESH_Group::_nil();
myMesh = SMESH::SMESH_Mesh::_nil();
- busy = false;
+ myIsBusy = false;
return;
}
Handle(SALOME_InteractiveObject) IO = aList.First();
myMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(IO);
if (myMesh->_is_nil())
{
- busy = false;
+ myIsBusy = false;
return;
}
myGroup = SMESH::SMESH_Group::_nil();
SMESH::SMESH_Group_var aGroup = SMESH::IObjectToInterface<SMESH::SMESH_Group>(IO);
if (aGroup->_is_nil())
{
- busy = false;
+ myIsBusy = false;
return;
}
- busy = false;
+ myIsBusy = false;
myCurrentLineEdit = 0;
init(aGroup);
- busy = true;
+ myIsBusy = true;
mySelectSubMesh->setEnabled(true);
mySelectGroup->setEnabled(true);
myGeomGroupBtn->setEnabled(true);
myGeomGroupLine->setEnabled(true);
}
myCurrentLineEdit = 0;
- busy = false;
+ myIsBusy = false;
if (!myCreate)
- {
- busy = false;
return;
- }
if (myTypeId == -1)
onTypeChanged(0);
setSelectionMode(myTypeId);
}
- busy = false;
+ myIsBusy = false;
return;
} else if (myCurrentLineEdit == myGeomGroupLine) {
if (aNbSel != 1) {
myGeomGroup = GEOM::GEOM_Object::_nil();
- busy = false;
+ myIsBusy = false;
return;
}
// Check if the object is a geometry group
if (!testResult || CORBA::is_nil(myGeomGroup)) {
myGeomGroup = GEOM::GEOM_Object::_nil();
- busy = false;
+ myIsBusy = false;
return;
}
// Check if group constructed on the same shape as a mesh or on its child
_PTR(SObject) aMeshSO = SMESH::FindSObject(myMesh);
if (!aMeshSO) {
myGeomGroup = GEOM::GEOM_Object::_nil();
- busy = false;
+ myIsBusy = false;
return;
}
_PTR(SObject) anObj, aRef;
}
if (!isRefOrSubShape) {
myGeomGroup = GEOM::GEOM_Object::_nil();
- busy = false;
+ myIsBusy = false;
return;
}
}
- if (aNbSel >= 1) {
- if (aNbSel > 1) {
- if (myCurrentLineEdit == mySubMeshLine)
+ if(aNbSel >= 1) {
+ if(aNbSel > 1) {
+ if(myCurrentLineEdit == mySubMeshLine)
aString = tr("SMESH_SUBMESH_SELECTED").arg(aNbSel);
- else if (myCurrentLineEdit == myGroupLine || myCurrentLineEdit == myGeomGroupLine)
+ else if(myCurrentLineEdit == myGroupLine || myCurrentLineEdit == myGeomGroupLine)
aString = tr("SMESH_GROUP_SELECTED").arg(aNbSel);
} else {
aString = aList.First()->getName();
updateButtons();
} else {
- if (aNbSel == 1) {
+ if (aNbSel == 1 && myActor ) {
QString aListStr = "";
int aNbItems = 0;
if (myTypeId == 0) {
myActor = SMESH::FindActorByObject(myMesh);
}
- busy = false;
+ myIsBusy = false;
}
//=================================================================================
//=================================================================================
void SMESHGUI_GroupDlg::onAdd()
{
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
int aNbSel = aList.Extent();
if (aNbSel == 0 || !myActor || myMesh->_is_nil()) return;
- busy = true;
+ myIsBusy = true;
SMESH::ElementType aType = SMESH::ALL;
switch(myTypeId) {
}
if (myCurrentLineEdit == 0) {
- //if (aNbSel != 1) { busy = false; return; }
+ //if (aNbSel != 1) { myIsBusy = false; return; }
QString aListStr = "";
int aNbItems = 0;
if (myTypeId == 0) {
}
} else if (myCurrentLineEdit == mySubMeshLine) {
//SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
SALOME_ListIteratorOfListIO anIt (aList);
for (; anIt.More(); anIt.Next()) {
SMESH::SMESH_subMesh_var aSubMesh =
}
}
mySelectSubMesh->setChecked(false);
- busy = false;
+ myIsBusy = false;
onListSelectionChanged();
} else if (myCurrentLineEdit == myGroupLine) {
//SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
SALOME_ListIteratorOfListIO anIt (aList);
for (; anIt.More(); anIt.Next()) {
SMESH::SMESH_Group_var aGroup =
}
}
mySelectGroup->setChecked(false);
- busy = false;
+ myIsBusy = false;
onListSelectionChanged();
} else if (myCurrentLineEdit == myGeomGroupLine && !CORBA::is_nil(myGeomGroup)) {
case 6: aGroupType = SMESH::EDGE; break;
case 4: aGroupType = SMESH::FACE; break;
case 2: aGroupType = SMESH::VOLUME; break;
- default: busy = false; return;
+ default: myIsBusy = false; return;
}
if (aGroupType == aType) {
}
//VSR: mySelectGeomGroup->setChecked(false);
- busy = false;
+ myIsBusy = false;
onListSelectionChanged();
}
- busy = false;
+ myIsBusy = false;
// mySelectionMgr->clearSelected();
updateButtons();
}
//=================================================================================
void SMESHGUI_GroupDlg::onRemove()
{
- busy = true;
+ myIsBusy = true;
if (myCurrentLineEdit == 0) {
for (int i = myElements->count(); i > 0; i--) {
if (myElements->isSelected(i-1)) {
}
}
} else {
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
int aNbSel = aList.Extent();
- if (aNbSel == 0) { busy = false; return; }
+ if (aNbSel == 0) { myIsBusy = false; return; }
SMESH::ElementType aType = SMESH::ALL;
switch(myTypeId) {
if (myCurrentLineEdit == mySubMeshLine) {
//SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
SALOME_ListIteratorOfListIO anIt (aList);
for (; anIt.More(); anIt.Next()) {
SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(anIt.Value());
else if (myCurrentLineEdit == myGroupLine) {
Standard_Boolean aRes;
//SALOME_ListIteratorOfListIO anIt (mySelectionMgr->StoredIObjects());
- const SALOME_ListIO& aList = mySelector->StoredIObjects();
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects( aList );
+
SALOME_ListIteratorOfListIO anIt (aList);
for (; anIt.More(); anIt.Next()) {
SMESH::SMESH_Group_var aGroup = SMESH::IObjectToInterface<SMESH::SMESH_Group>(anIt.Value());
}
}
}
- busy = false;
+ myIsBusy = false;
updateButtons();
}
// myElements->update();
int i, k = myElements->count();
if (k > 0) {
- busy = true;
+ myIsBusy = true;
QStringList aSelected;
std::vector<int> anArray(k);
// QMemArray<int> anArray(k);
anItem = myElements->findItem(*it, Qt::ExactMatch);
if (anItem) myElements->setSelected(anItem, true);
}
- busy = false;
+ myIsBusy = false;
}
}
}
mySelectionMgr->clearSelected();
- myViewWindow->SetSelectionMode(ActorSelection);
+ if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+ aViewWindow->SetSelectionMode(ActorSelection);
mySelectionMgr->clearFilters();
mySMESHGUI->ResetState();