2004-12-17 16:07:35 +05:00
|
|
|
// SMESH SMESHGUI : GUI for SMESH component
|
|
|
|
//
|
|
|
|
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
2005-06-07 19:22:20 +06:00
|
|
|
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
|
|
//
|
|
|
|
// This library is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
|
|
// License as published by the Free Software Foundation; either
|
|
|
|
// version 2.1 of the License.
|
|
|
|
//
|
|
|
|
// This library is distributed in the hope that it will be useful,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
// Lesser General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
|
|
// License along with this library; if not, write to the Free Software
|
|
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
//
|
|
|
|
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
2004-12-17 16:07:35 +05:00
|
|
|
//
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// File : SMESHGUI_StandardMeshInfosDlg.cxx
|
|
|
|
// Author : Michael ZORIN
|
|
|
|
// Module : SMESH
|
|
|
|
// $Header$
|
|
|
|
|
2005-06-07 19:22:20 +06:00
|
|
|
#include "SMESHGUI_StandardMeshInfosDlg.h"
|
|
|
|
|
|
|
|
#include "SMESHGUI.h"
|
|
|
|
#include "SMESHGUI_Utils.h"
|
|
|
|
#include "SMESHGUI_MeshUtils.h"
|
|
|
|
|
|
|
|
#include "SMESH.hxx"
|
|
|
|
#include "SMESH_TypeFilter.hxx"
|
|
|
|
|
|
|
|
#include "SALOMEDSClient_Study.hxx"
|
|
|
|
#include "SALOMEDSClient_SObject.hxx"
|
|
|
|
|
2005-06-08 16:45:19 +06:00
|
|
|
#include "SUIT_Desktop.h"
|
2005-06-07 19:22:20 +06:00
|
|
|
#include "SUIT_Session.h"
|
|
|
|
#include "SUIT_OverrideCursor.h"
|
|
|
|
|
|
|
|
#include "SalomeApp_SelectionMgr.h"
|
|
|
|
#include "SALOME_ListIO.hxx"
|
|
|
|
|
|
|
|
#include "utilities.h"
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// QT Includes
|
|
|
|
#include <qgroupbox.h>
|
|
|
|
#include <qlabel.h>
|
|
|
|
#include <qlayout.h>
|
|
|
|
#include <qlineedit.h>
|
|
|
|
#include <qtextbrowser.h>
|
|
|
|
#include <qmap.h>
|
|
|
|
#include <qpushbutton.h>
|
|
|
|
|
|
|
|
// IDL Headers
|
|
|
|
#include "SALOMEconfig.h"
|
|
|
|
#include CORBA_SERVER_HEADER(SMESH_Mesh)
|
|
|
|
#include CORBA_SERVER_HEADER(SMESH_Group)
|
|
|
|
#include CORBA_SERVER_HEADER(GEOM_Gen)
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
/*!
|
|
|
|
* SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg
|
2005-06-07 19:22:20 +06:00
|
|
|
*
|
2004-12-17 16:07:35 +05:00
|
|
|
* Constructor
|
|
|
|
*/
|
|
|
|
//=================================================================================
|
2005-06-08 16:45:19 +06:00
|
|
|
SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg( SMESHGUI* theModule, const char* name,
|
2005-06-07 19:22:20 +06:00
|
|
|
bool modal, WFlags fl)
|
2005-06-08 16:45:19 +06:00
|
|
|
: QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
|
|
|
|
WStyle_Title | WStyle_SysMenu | WDestructiveClose),
|
|
|
|
mySMESHGUI( theModule ),
|
|
|
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
2004-12-17 16:07:35 +05:00
|
|
|
{
|
2005-06-07 19:22:20 +06:00
|
|
|
if (!name)
|
|
|
|
setName("SMESHGUI_StandardMeshInfosDlg");
|
|
|
|
setCaption(tr("SMESH_STANDARD_MESHINFO_TITLE" ));
|
|
|
|
setSizeGripEnabled(TRUE);
|
2004-12-17 16:07:35 +05:00
|
|
|
|
|
|
|
myStartSelection = true;
|
|
|
|
myIsActiveWindow = true;
|
|
|
|
|
|
|
|
// dialog layout
|
2005-06-07 19:22:20 +06:00
|
|
|
QGridLayout* aDlgLayout = new QGridLayout(this);
|
|
|
|
aDlgLayout->setSpacing(6);
|
|
|
|
aDlgLayout->setMargin(11);
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// mesh group box
|
2005-06-07 19:22:20 +06:00
|
|
|
myMeshGroup = new QGroupBox(this, "myMeshGroup");
|
|
|
|
myMeshGroup->setTitle(tr("SMESH_MESH"));
|
|
|
|
myMeshGroup->setColumnLayout(0, Qt::Vertical);
|
|
|
|
myMeshGroup->layout()->setSpacing(0);
|
|
|
|
myMeshGroup->layout()->setMargin(0);
|
|
|
|
QGridLayout* myMeshGroupLayout = new QGridLayout(myMeshGroup->layout());
|
|
|
|
myMeshGroupLayout->setAlignment(Qt::AlignTop);
|
|
|
|
myMeshGroupLayout->setSpacing(6);
|
|
|
|
myMeshGroupLayout->setMargin(11);
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// select button, label and line edit with mesh name
|
2005-06-07 19:22:20 +06:00
|
|
|
myNameLab = new QLabel(myMeshGroup, "myNameLab");
|
|
|
|
myNameLab->setText(tr("SMESH_NAME" ));
|
|
|
|
myMeshGroupLayout->addWidget(myNameLab, 0, 0);
|
|
|
|
|
|
|
|
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("SMESH",tr("ICON_SELECT")));
|
|
|
|
mySelectBtn = new QPushButton(myMeshGroup, "mySelectBtn");
|
|
|
|
mySelectBtn->setPixmap(image0);
|
|
|
|
mySelectBtn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
|
|
|
|
myMeshGroupLayout->addWidget(mySelectBtn, 0, 1);
|
|
|
|
|
|
|
|
myMeshLine = new QLineEdit(myMeshGroup, "myMeshLine");
|
|
|
|
myMeshGroupLayout->addWidget(myMeshLine, 0, 2);
|
|
|
|
|
|
|
|
aDlgLayout->addWidget(myMeshGroup, 0, 0);
|
2004-12-17 16:07:35 +05:00
|
|
|
|
|
|
|
// information group box
|
2005-06-07 19:22:20 +06:00
|
|
|
myInfoGroup = new QGroupBox(this, "myInfoGroup");
|
|
|
|
myInfoGroup->setTitle(tr("SMESH_INFORMATION"));
|
|
|
|
myInfoGroup->setColumnLayout(0, Qt::Vertical);
|
|
|
|
myInfoGroup->layout()->setSpacing(0);
|
|
|
|
myInfoGroup->layout()->setMargin(0);
|
|
|
|
QGridLayout* myInfoGroupLayout = new QGridLayout(myInfoGroup->layout());
|
|
|
|
myInfoGroupLayout->setAlignment(Qt::AlignTop);
|
|
|
|
myInfoGroupLayout->setSpacing(6);
|
|
|
|
myInfoGroupLayout->setMargin(11);
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// information text browser
|
|
|
|
myInfo = new QTextBrowser(myInfoGroup, "myInfo");
|
2005-06-07 19:22:20 +06:00
|
|
|
myInfoGroupLayout->addWidget(myInfo, 0, 0);
|
2004-12-17 16:07:35 +05:00
|
|
|
|
2005-06-07 19:22:20 +06:00
|
|
|
aDlgLayout->addWidget(myInfoGroup, 1, 0);
|
2004-12-17 16:07:35 +05:00
|
|
|
|
|
|
|
// buttons group
|
2005-06-07 19:22:20 +06:00
|
|
|
myButtonsGroup = new QGroupBox(this, "myButtonsGroup");
|
|
|
|
myButtonsGroup->setColumnLayout(0, Qt::Vertical);
|
|
|
|
myButtonsGroup->layout()->setSpacing(0); myButtonsGroup->layout()->setMargin(0);
|
|
|
|
QHBoxLayout* myButtonsGroupLayout = new QHBoxLayout(myButtonsGroup->layout());
|
|
|
|
myButtonsGroupLayout->setAlignment(Qt::AlignTop);
|
|
|
|
myButtonsGroupLayout->setSpacing(6); myButtonsGroupLayout->setMargin(11);
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// buttons --> OK button
|
2005-06-07 19:22:20 +06:00
|
|
|
myOkBtn = new QPushButton(tr("SMESH_BUT_OK" ), myButtonsGroup, "myOkBtn");
|
|
|
|
myOkBtn->setAutoDefault(TRUE); myOkBtn->setDefault(TRUE);
|
2004-12-17 16:07:35 +05:00
|
|
|
myButtonsGroupLayout->addStretch();
|
2005-06-07 19:22:20 +06:00
|
|
|
myButtonsGroupLayout->addWidget(myOkBtn);
|
2004-12-17 16:07:35 +05:00
|
|
|
myButtonsGroupLayout->addStretch();
|
2005-06-07 19:22:20 +06:00
|
|
|
|
|
|
|
aDlgLayout->addWidget(myButtonsGroup, 2, 0);
|
|
|
|
|
2005-06-08 16:45:19 +06:00
|
|
|
mySMESHGUI->SetActiveDialogBox(this);
|
2004-12-17 16:07:35 +05:00
|
|
|
|
|
|
|
// connect signals
|
2005-06-08 16:45:19 +06:00
|
|
|
connect( myOkBtn, SIGNAL(clicked()), this, SLOT(close()));
|
|
|
|
connect( mySelectBtn, SIGNAL(clicked()), this, SLOT(onStartSelection()));
|
|
|
|
connect( mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(close()));
|
|
|
|
connect( mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
|
|
|
|
connect( mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
|
2004-12-17 16:07:35 +05:00
|
|
|
|
|
|
|
// resize and move dialog, then show
|
|
|
|
this->setMinimumSize(270, 428);
|
|
|
|
int x, y;
|
2005-06-08 16:45:19 +06:00
|
|
|
mySMESHGUI->DefineDlgPosition(this, x, y);
|
2005-06-07 19:22:20 +06:00
|
|
|
this->move(x, y);
|
2004-12-17 16:07:35 +05:00
|
|
|
this->show();
|
2005-06-07 19:22:20 +06:00
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// init dialog with current selection
|
2005-06-07 19:22:20 +06:00
|
|
|
myMeshFilter = new SMESH_TypeFilter (MESH);
|
|
|
|
mySelectionMgr->installFilter(myMeshFilter);
|
2004-12-17 16:07:35 +05:00
|
|
|
onSelectionChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
/*!
|
|
|
|
* SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg
|
2005-06-07 19:22:20 +06:00
|
|
|
*
|
2004-12-17 16:07:35 +05:00
|
|
|
* Destructor
|
|
|
|
*/
|
|
|
|
//=================================================================================
|
|
|
|
SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
/*!
|
|
|
|
* SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos
|
|
|
|
*/
|
|
|
|
//=================================================================================
|
|
|
|
void SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos()
|
|
|
|
{
|
2005-06-07 19:22:20 +06:00
|
|
|
SUIT_OverrideCursor wc;
|
|
|
|
|
|
|
|
SALOME_ListIO aList;
|
|
|
|
mySelectionMgr->selectedObjects(aList);
|
|
|
|
|
|
|
|
int nbSel = aList.Extent();
|
2004-12-17 16:07:35 +05:00
|
|
|
myInfo->clear();
|
2005-06-07 19:22:20 +06:00
|
|
|
if (nbSel == 1) {
|
2004-12-17 16:07:35 +05:00
|
|
|
myStartSelection = false;
|
2005-06-07 19:22:20 +06:00
|
|
|
myMeshLine->setText("");
|
|
|
|
SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(aList.First());
|
|
|
|
|
|
|
|
if (!aMesh->_is_nil()) {
|
2004-12-17 16:07:35 +05:00
|
|
|
QString aName, anInfo;
|
2005-06-07 19:22:20 +06:00
|
|
|
SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);
|
|
|
|
myMeshLine->setText(aName);
|
2004-12-17 16:07:35 +05:00
|
|
|
int aNbNodes = (int)aMesh->NbNodes();
|
|
|
|
int aNbEdges = (int)aMesh->NbEdges();
|
|
|
|
int aNbFaces = (int)aMesh->NbFaces();
|
|
|
|
int aNbVolumes = (int)aMesh->NbVolumes();
|
2005-06-07 19:22:20 +06:00
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
int aDimension = 0;
|
|
|
|
double aNbDimElements = 0;
|
|
|
|
if (aNbVolumes > 0) {
|
|
|
|
aNbDimElements = aNbVolumes;
|
|
|
|
aDimension = 3;
|
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
else if(aNbFaces > 0) {
|
2004-12-17 16:07:35 +05:00
|
|
|
aNbDimElements = aNbFaces;
|
|
|
|
aDimension = 2;
|
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
else if(aNbEdges > 0) {
|
2004-12-17 16:07:35 +05:00
|
|
|
aNbDimElements = aNbEdges;
|
|
|
|
aDimension = 1;
|
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
else if(aNbNodes > 0) {
|
2004-12-17 16:07:35 +05:00
|
|
|
aNbDimElements = aNbNodes;
|
|
|
|
aDimension = 0;
|
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// information about the mesh
|
|
|
|
anInfo.append(QString("Nb of element of dimension %1:<b> %2</b><br>").arg(aDimension).arg(aNbDimElements));
|
|
|
|
anInfo.append(QString("Nb of nodes: <b>%1</b><br><br>").arg(aNbNodes));
|
|
|
|
|
|
|
|
// information about the groups of the mesh
|
2005-06-07 19:22:20 +06:00
|
|
|
_PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
|
|
|
|
_PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
|
|
|
|
_PTR(SObject) anObj;
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
bool hasGroup = false;
|
|
|
|
|
|
|
|
// info about groups on nodes
|
2005-06-07 19:22:20 +06:00
|
|
|
aMeshSO->FindSubObject(Tag_NodeGroups, anObj);
|
|
|
|
if (anObj) {
|
|
|
|
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
|
|
if (it->More()) {
|
|
|
|
anInfo.append(QString("Groups:<br><br>"));
|
|
|
|
hasGroup = true;
|
|
|
|
}
|
|
|
|
for (; it->More(); it->Next()) {
|
|
|
|
_PTR(SObject) subObj = it->Value();
|
|
|
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
|
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
|
|
if (!aGroup->_is_nil()) {
|
|
|
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
|
|
anInfo.append(QString("%1<br>").arg("on nodes"));
|
|
|
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
|
|
// check if the group based on geometry
|
|
|
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
|
|
if (!aGroupOnGeom->_is_nil()) {
|
|
|
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
|
|
QString aShapeName = "<unknown>";
|
|
|
|
_PTR(SObject) aGeomObj, aRef;
|
|
|
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
|
|
aShapeName = aRef->GetName().c_str();
|
|
|
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
|
|
} else {
|
|
|
|
anInfo.append(QString("<br>"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// info about groups on edges
|
2005-06-07 19:22:20 +06:00
|
|
|
anObj.reset();
|
|
|
|
aMeshSO->FindSubObject(Tag_EdgeGroups, anObj);
|
|
|
|
if (anObj) {
|
|
|
|
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
|
|
if (!hasGroup && it->More()) {
|
|
|
|
anInfo.append(QString("Groups:<br><br>"));
|
|
|
|
hasGroup = true;
|
|
|
|
}
|
|
|
|
for (; it->More(); it->Next()) {
|
|
|
|
_PTR(SObject) subObj = it->Value();
|
|
|
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
|
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
|
|
if (!aGroup->_is_nil()) {
|
|
|
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
|
|
anInfo.append(QString("%1<br>").arg("on edges"));
|
|
|
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
|
|
// check if the group based on geometry
|
|
|
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
|
|
if (!aGroupOnGeom->_is_nil()) {
|
|
|
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
|
|
QString aShapeName = "<unknown>";
|
|
|
|
_PTR(SObject) aGeomObj, aRef;
|
|
|
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
|
|
aShapeName = aRef->GetName().c_str();
|
|
|
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
|
|
} else {
|
|
|
|
anInfo.append(QString("<br>"));
|
|
|
|
}
|
|
|
|
}
|
2004-12-17 16:07:35 +05:00
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
}
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// info about groups on faces
|
2005-06-07 19:22:20 +06:00
|
|
|
anObj.reset();
|
2004-12-17 16:07:35 +05:00
|
|
|
aMeshSO->FindSubObject(Tag_FaceGroups , anObj);
|
2005-06-07 19:22:20 +06:00
|
|
|
if (anObj) {
|
|
|
|
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
|
|
if (!hasGroup && it->More()) {
|
|
|
|
anInfo.append(QString("Groups:<br><br>"));
|
|
|
|
hasGroup = true;
|
|
|
|
}
|
|
|
|
for (; it->More(); it->Next()) {
|
|
|
|
_PTR(SObject) subObj = it->Value();
|
|
|
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
|
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
|
|
if (!aGroup->_is_nil()) {
|
|
|
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
|
|
anInfo.append(QString("%1<br>").arg("on faces"));
|
|
|
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
|
|
// check if the group based on geometry
|
|
|
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
|
|
if (!aGroupOnGeom->_is_nil()) {
|
|
|
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
|
|
QString aShapeName = "<unknown>";
|
|
|
|
_PTR(SObject) aGeomObj, aRef;
|
|
|
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
|
|
aShapeName = aRef->GetName().c_str();
|
|
|
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
|
|
} else {
|
|
|
|
anInfo.append(QString("<br>"));
|
|
|
|
}
|
|
|
|
}
|
2004-12-17 16:07:35 +05:00
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
}
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
// info about groups on volumes
|
2005-06-07 19:22:20 +06:00
|
|
|
anObj.reset();
|
|
|
|
aMeshSO->FindSubObject(Tag_VolumeGroups, anObj);
|
|
|
|
if (anObj) {
|
|
|
|
_PTR(ChildIterator) it = aStudy->NewChildIterator(anObj);
|
|
|
|
if (!hasGroup && it->More())
|
|
|
|
anInfo.append(QString("Groups:<br>"));
|
|
|
|
for (; it->More(); it->Next()) {
|
|
|
|
_PTR(SObject) subObj = it->Value();
|
|
|
|
CORBA::Object_var anObject = SMESH::SObjectToObject(subObj);
|
|
|
|
SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow(anObject);
|
|
|
|
if (!aGroup->_is_nil()) {
|
|
|
|
anInfo.append(QString("- <b>%1</b><br>").arg(aGroup->GetName()));
|
|
|
|
anInfo.append(QString("%1<br>").arg("on volumes"));
|
|
|
|
anInfo.append(QString("%1<br>").arg(aGroup->Size()));
|
|
|
|
// check if the group based on geometry
|
|
|
|
SMESH::SMESH_GroupOnGeom_var aGroupOnGeom = SMESH::SMESH_GroupOnGeom::_narrow(aGroup);
|
|
|
|
if (!aGroupOnGeom->_is_nil()) {
|
|
|
|
GEOM::GEOM_Object_var aGroupMainShape = aGroupOnGeom->GetShape();
|
|
|
|
QString aShapeName = "<unknown>";
|
|
|
|
_PTR(SObject) aGeomObj, aRef;
|
|
|
|
if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef))
|
|
|
|
aShapeName = aRef->GetName().c_str();
|
|
|
|
anInfo.append(QString("based on <i>%1</i> geometry object<br><br>").arg(aShapeName));
|
|
|
|
} else {
|
|
|
|
anInfo.append(QString("<br>"));
|
|
|
|
}
|
|
|
|
}
|
2004-12-17 16:07:35 +05:00
|
|
|
}
|
2005-06-07 19:22:20 +06:00
|
|
|
}
|
|
|
|
|
2004-12-17 16:07:35 +05:00
|
|
|
myInfo->setText(anInfo);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
// function : SelectionIntoArgument()
|
|
|
|
// purpose : Called when selection has changed
|
|
|
|
//=================================================================================
|
|
|
|
void SMESHGUI_StandardMeshInfosDlg::onSelectionChanged()
|
|
|
|
{
|
2005-06-07 19:22:20 +06:00
|
|
|
if (myStartSelection)
|
2004-12-17 16:07:35 +05:00
|
|
|
DumpMeshInfos();
|
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
// function : closeEvent()
|
|
|
|
// purpose :
|
|
|
|
//=================================================================================
|
2005-06-07 19:22:20 +06:00
|
|
|
void SMESHGUI_StandardMeshInfosDlg::closeEvent (QCloseEvent* e)
|
2004-12-17 16:07:35 +05:00
|
|
|
{
|
2005-06-07 19:22:20 +06:00
|
|
|
mySelectionMgr->clearFilters();
|
2005-06-08 16:45:19 +06:00
|
|
|
mySMESHGUI->ResetState();
|
2005-06-07 19:22:20 +06:00
|
|
|
QDialog::closeEvent(e);
|
2004-12-17 16:07:35 +05:00
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
// function : windowActivationChange()
|
|
|
|
// purpose : called when window is activated/deactivated
|
|
|
|
//=================================================================================
|
2005-06-07 19:22:20 +06:00
|
|
|
void SMESHGUI_StandardMeshInfosDlg::windowActivationChange (bool oldActive)
|
2004-12-17 16:07:35 +05:00
|
|
|
{
|
2005-06-07 19:22:20 +06:00
|
|
|
QDialog::windowActivationChange(oldActive);
|
|
|
|
if (isActiveWindow() && myIsActiveWindow != isActiveWindow())
|
|
|
|
ActivateThisDialog();
|
2004-12-17 16:07:35 +05:00
|
|
|
myIsActiveWindow = isActiveWindow();
|
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
// function : DeactivateActiveDialog()
|
|
|
|
// purpose :
|
|
|
|
//=================================================================================
|
|
|
|
void SMESHGUI_StandardMeshInfosDlg::DeactivateActiveDialog()
|
|
|
|
{
|
2005-06-07 19:22:20 +06:00
|
|
|
disconnect(mySelectionMgr, 0, this, 0);
|
2004-12-17 16:07:35 +05:00
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
// function : ActivateThisDialog()
|
|
|
|
// purpose :
|
|
|
|
//=================================================================================
|
|
|
|
void SMESHGUI_StandardMeshInfosDlg::ActivateThisDialog()
|
|
|
|
{
|
|
|
|
/* Emit a signal to deactivate any active dialog */
|
2005-06-08 16:45:19 +06:00
|
|
|
mySMESHGUI->EmitSignalDeactivateDialog();
|
2005-06-07 19:22:20 +06:00
|
|
|
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
|
2004-12-17 16:07:35 +05:00
|
|
|
}
|
|
|
|
|
|
|
|
//=================================================================================
|
|
|
|
// function : onStartSelection()
|
|
|
|
// purpose : starts selection
|
|
|
|
//=================================================================================
|
|
|
|
void SMESHGUI_StandardMeshInfosDlg::onStartSelection()
|
|
|
|
{
|
|
|
|
myStartSelection = true;
|
2005-06-07 19:22:20 +06:00
|
|
|
mySelectionMgr->installFilter(myMeshFilter);
|
|
|
|
myMeshLine->setText(tr("Select a mesh"));
|
2004-12-17 16:07:35 +05:00
|
|
|
onSelectionChanged();
|
|
|
|
myStartSelection = true;
|
|
|
|
}
|