X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_StandardMeshInfosDlg.cxx;h=ea81f7eb24d374f43363d45767238a8e3f7787e8;hb=ef8432633e57037dcd8df55503e62b08069c9190;hp=37dfbdfedbb80c7a3b50a7415f605eef78ba58c7;hpb=ed456586bfb1411c5bff73b221658766689a6253;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx b/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx index 37dfbdfed..ea81f7eb2 100644 --- a/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx @@ -1,173 +1,171 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// 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 +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com // -// File : SMESHGUI_StandardMeshInfosDlg.cxx -// Author : Michael ZORIN -// Module : SMESH -// $Header$ - -// QT Includes -#include -#include -#include -#include -#include -#include -#include - -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_WaitCursor.h" +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_StandardMeshInfosDlg.cxx +// Author : Michael ZORIN, Open CASCADE S.A.S. +// SMESH includes +// #include "SMESHGUI_StandardMeshInfosDlg.h" + +#include "SMESHGUI.h" #include "SMESHGUI_Utils.h" #include "SMESHGUI_MeshUtils.h" -#include "SMESHGUI.h" -#include "SMESH.hxx" +#include -// IDL Headers -#include "SALOMEconfig.h" -#include CORBA_SERVER_HEADER(SMESH_Mesh) -#include CORBA_SERVER_HEADER(SMESH_Group) -#include CORBA_SERVER_HEADER(GEOM_Gen) +// SALOME KERNEL includes +#include +#include -#include "utilities.h" +// SALOME GUI includes +#include +#include +#include +#include +#include -using namespace std; +#include +#include +#include + +// Qt includes +#include +#include +#include +#include +#include +#include +#include +#include + +// IDL includes +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) +#include CORBA_SERVER_HEADER(SMESH_Group) + +#define SPACING 6 +#define MARGIN 11 //================================================================================= /*! * SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg - * + * * Constructor */ //================================================================================= -SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) +SMESHGUI_StandardMeshInfosDlg::SMESHGUI_StandardMeshInfosDlg( SMESHGUI* theModule ) + : QDialog( SMESH::GetDesktop( theModule ) ), + mySMESHGUI( theModule ), + mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ) { - if ( !name ) - setName( "SMESHGUI_StandardMeshInfosDlg" ); - setCaption( tr( "SMESH_STANDARD_MESHINFO_TITLE" ) ); - setSizeGripEnabled( TRUE ); + setModal(false); + setAttribute(Qt::WA_DeleteOnClose, true); + setWindowTitle(tr("SMESH_STANDARD_MESHINFO_TITLE")); + setSizeGripEnabled(true); myStartSelection = true; myIsActiveWindow = true; // dialog layout - QGridLayout* aDlgLayout = new QGridLayout( this ); - aDlgLayout->setSpacing( 6 ); - aDlgLayout->setMargin( 11 ); - + QVBoxLayout* aDlgLayout = new QVBoxLayout(this); + aDlgLayout->setSpacing(SPACING); + aDlgLayout->setMargin(MARGIN); + // mesh group box - 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 ); - + myMeshGroup = new QGroupBox(tr("SMESH_MESH"), this); + QHBoxLayout* myMeshGroupLayout = new QHBoxLayout(myMeshGroup); + myMeshGroupLayout->setSpacing(SPACING); + myMeshGroupLayout->setMargin(MARGIN); + // select button, label and line edit with mesh name - myNameLab = new QLabel( myMeshGroup, "myNameLab" ); - myNameLab->setText( tr( "SMESH_NAME" ) ); - myMeshGroupLayout->addWidget( myNameLab, 0, 0 ); - - QPixmap image0( QAD_Desktop::getResourceManager()->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 ); + myNameLab = new QLabel(tr("SMESH_NAME"), myMeshGroup); + myMeshGroupLayout->addWidget(myNameLab); + + QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("SMESH",tr("ICON_SELECT"))); + mySelectBtn = new QPushButton(myMeshGroup); + mySelectBtn->setIcon(image0); + myMeshGroupLayout->addWidget(mySelectBtn); + + myMeshLine = new QLineEdit(myMeshGroup); + myMeshGroupLayout->addWidget(myMeshLine); + + aDlgLayout->addWidget(myMeshGroup); // information group box - 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 ); - + myInfoGroup = new QGroupBox(tr("SMESH_INFORMATION"), this); + QVBoxLayout* myInfoGroupLayout = new QVBoxLayout(myInfoGroup); + myInfoGroupLayout->setSpacing(SPACING); + myInfoGroupLayout->setMargin(MARGIN); + // information text browser - myInfo = new QTextBrowser(myInfoGroup, "myInfo"); - myInfoGroupLayout->addWidget( myInfo, 0, 0 ); + myInfo = new QTextBrowser(myInfoGroup); + myInfo->setMinimumSize(200, 150); + myInfoGroupLayout->addWidget(myInfo); - aDlgLayout->addWidget( myInfoGroup, 1, 0 ); + aDlgLayout->addWidget(myInfoGroup); // buttons group - 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 ); - - // buttons --> OK button - myOkBtn = new QPushButton( tr( "SMESH_BUT_OK" ), myButtonsGroup, "myOkBtn" ); - myOkBtn->setAutoDefault( TRUE ); myOkBtn->setDefault( TRUE ); - myButtonsGroupLayout->addStretch(); - myButtonsGroupLayout->addWidget( myOkBtn ); + myButtonsGroup = new QGroupBox(this); + QHBoxLayout* myButtonsGroupLayout = new QHBoxLayout(myButtonsGroup); + myButtonsGroupLayout->setSpacing(SPACING); + myButtonsGroupLayout->setMargin(MARGIN); + + // buttons --> OK and Help buttons + myOkBtn = new QPushButton(tr("SMESH_BUT_OK"), myButtonsGroup); + myOkBtn->setAutoDefault(true); myOkBtn->setDefault(true); + myHelpBtn = new QPushButton(tr("SMESH_BUT_HELP"), myButtonsGroup); + myHelpBtn->setAutoDefault(true); + + myButtonsGroupLayout->addWidget(myOkBtn); + myButtonsGroupLayout->addSpacing(10); myButtonsGroupLayout->addStretch(); - - aDlgLayout->addWidget( myButtonsGroup, 2, 0 ); - - mySelection = SALOME_Selection::Selection( SMESHGUI::GetSMESHGUI()->GetActiveStudy()->getSelection() ); - SMESHGUI::GetSMESHGUI()->SetActiveDialogBox( this ) ; + myButtonsGroupLayout->addWidget(myHelpBtn); + + aDlgLayout->addWidget(myButtonsGroup); + + mySMESHGUI->SetActiveDialogBox(this); // connect signals - connect( myOkBtn, SIGNAL( clicked() ), this, SLOT( close() ) ); - connect( mySelectBtn, SIGNAL( clicked() ), this, SLOT( onStartSelection() ) ); - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalCloseAllDialogs() ), this, SLOT( close() ) ) ; - connect( SMESHGUI::GetSMESHGUI(), SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ) ; - connect( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionChanged() ) ); - - // resize and move dialog, then show - this->setMinimumSize(270, 428); - int x, y; - SMESHGUI::GetSMESHGUI()->DefineDlgPosition( this, x, y ); - this->move( x, y ); - this->show(); - + connect( myOkBtn, SIGNAL(clicked()), this, SLOT(close())); + connect( myHelpBtn, SIGNAL(clicked()), this, SLOT(onHelp())); + 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())); + // init dialog with current selection - myMeshFilter = new SMESH_TypeFilter( MESH ); - mySelection->AddFilter( myMeshFilter ); + myMeshFilter = new SMESH_TypeFilter (MESH); + mySelectionMgr->installFilter(myMeshFilter); onSelectionChanged(); + + myHelpFileName = "mesh_infos_page.html#standard_mesh_infos_anchor"; } //================================================================================= /*! * SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg - * + * * Destructor */ //================================================================================= @@ -182,199 +180,190 @@ SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg() //================================================================================= void SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos() { - QAD_WaitCursor wc; - int nbSel = mySelection->IObjectCount(); + SUIT_OverrideCursor wc; + + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList); + + int nbSel = aList.Extent(); myInfo->clear(); - if ( nbSel == 1 ) { + if (nbSel == 1) { myStartSelection = false; - myMeshLine->setText( "" ); - SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO( mySelection->firstIObject() ); - - if ( !aMesh->_is_nil() ) { + myMeshLine->setText(""); + SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(aList.First()); + + if (!aMesh->_is_nil()) { QString aName, anInfo; - SMESH::GetNameOfSelectedIObjects(mySelection, aName); - myMeshLine->setText( aName ); + SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName); + myMeshLine->setText(aName); int aNbNodes = (int)aMesh->NbNodes(); int aNbEdges = (int)aMesh->NbEdges(); int aNbFaces = (int)aMesh->NbFaces(); int aNbVolumes = (int)aMesh->NbVolumes(); - + int aDimension = 0; double aNbDimElements = 0; if (aNbVolumes > 0) { - aNbDimElements = aNbVolumes; - aDimension = 3; + aNbDimElements = aNbVolumes; + aDimension = 3; } - else if(aNbFaces > 0 ) { - aNbDimElements = aNbFaces; - aDimension = 2; + else if(aNbFaces > 0) { + aNbDimElements = aNbFaces; + aDimension = 2; } - else if(aNbEdges > 0 ) { - aNbDimElements = aNbEdges; - aDimension = 1; + else if(aNbEdges > 0) { + aNbDimElements = aNbEdges; + aDimension = 1; } - else if(aNbNodes > 0 ) { - aNbDimElements = aNbNodes; - aDimension = 0; + else if(aNbNodes > 0) { + aNbDimElements = aNbNodes; + aDimension = 0; } - + // information about the mesh anInfo.append(QString("Nb of element of dimension %1: %2
").arg(aDimension).arg(aNbDimElements)); anInfo.append(QString("Nb of nodes: %1

").arg(aNbNodes)); // information about the groups of the mesh - SALOMEDS::Study_var aStudy = SMESH::GetActiveStudyDocument(); - SALOMEDS::SObject_var aMeshSO = aStudy->FindObjectIOR( aStudy->ConvertObjectToIOR(aMesh) ); - SALOMEDS::SObject_var anObj; - + _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); + _PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh); + _PTR(SObject) anObj; + bool hasGroup = false; // info about groups on nodes - aMeshSO->FindSubObject(Tag_NodeGroups , anObj); - if ( !anObj->_is_nil() ) - { - SALOMEDS::ChildIterator_var it = aStudy->NewChildIterator(anObj); - if (it->More()) - { - anInfo.append(QString("Groups:

")); - hasGroup = true; - } - for(; it->More(); it->Next()){ - SALOMEDS::SObject_var subObj = it->Value(); - SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( subObj->GetObject() ); - if ( !aGroup->_is_nil() ) - { - anInfo.append(QString("- %1
").arg(aGroup->GetName())); - anInfo.append(QString("%1
").arg("on nodes")); - anInfo.append(QString("%1
").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 = ""; - SALOMEDS::SObject_var aGeomObj, aRef; - if ( subObj->FindSubObject( 1, aGeomObj ) && aGeomObj->ReferencedObject( aRef )) - aShapeName = aRef->GetName(); - anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); - } - else - anInfo.append(QString("
")); - } - } - } - + aMeshSO->FindSubObject(SMESH::Tag_NodeGroups, anObj); + if (anObj) { + _PTR(ChildIterator) it = aStudy->NewChildIterator(anObj); + if (it->More()) { + anInfo.append(QString("Groups:

")); + 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("- %1
").arg(aGroup->GetName())); + anInfo.append(QString("%1
").arg("on nodes")); + anInfo.append(QString("%1
").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 = ""; + _PTR(SObject) aGeomObj, aRef; + if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef)) + aShapeName = aRef->GetName().c_str(); + anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); + } else { + anInfo.append(QString("
")); + } + } + } + } + // info about groups on edges - anObj = SALOMEDS::SObject::_nil(); - aMeshSO->FindSubObject(Tag_EdgeGroups , anObj); - if ( !anObj->_is_nil() ) - { - SALOMEDS::ChildIterator_var it = aStudy->NewChildIterator(anObj); - if (!hasGroup && it->More()) - { - anInfo.append(QString("Groups:

")); - hasGroup = true; - } - for(; it->More(); it->Next()){ - SALOMEDS::SObject_var subObj = it->Value(); - SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( subObj->GetObject() ); - if ( !aGroup->_is_nil() ) - { - anInfo.append(QString("- %1
").arg(aGroup->GetName())); - anInfo.append(QString("%1
").arg("on edges")); - anInfo.append(QString("%1
").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 = ""; - SALOMEDS::SObject_var aGeomObj, aRef; - if ( subObj->FindSubObject( 1, aGeomObj ) && aGeomObj->ReferencedObject( aRef )) - aShapeName = aRef->GetName(); - anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); - } - else - anInfo.append(QString("
")); - } - } - } - + anObj.reset(); + aMeshSO->FindSubObject(SMESH::Tag_EdgeGroups, anObj); + if (anObj) { + _PTR(ChildIterator) it = aStudy->NewChildIterator(anObj); + if (!hasGroup && it->More()) { + anInfo.append(QString("Groups:

")); + 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("- %1
").arg(aGroup->GetName())); + anInfo.append(QString("%1
").arg("on edges")); + anInfo.append(QString("%1
").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 = ""; + _PTR(SObject) aGeomObj, aRef; + if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef)) + aShapeName = aRef->GetName().c_str(); + anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); + } else { + anInfo.append(QString("
")); + } + } + } + } + // info about groups on faces - anObj = SALOMEDS::SObject::_nil(); - aMeshSO->FindSubObject(Tag_FaceGroups , anObj); - if ( !anObj->_is_nil() ) - { - SALOMEDS::ChildIterator_var it = aStudy->NewChildIterator(anObj); - if (!hasGroup && it->More()) - { - anInfo.append(QString("Groups:

")); - hasGroup = true; - } - for(; it->More(); it->Next()){ - SALOMEDS::SObject_var subObj = it->Value(); - SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( subObj->GetObject() ); - if ( !aGroup->_is_nil() ) - { - anInfo.append(QString("- %1
").arg(aGroup->GetName())); - anInfo.append(QString("%1
").arg("on faces")); - anInfo.append(QString("%1
").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 = ""; - SALOMEDS::SObject_var aGeomObj, aRef; - if ( subObj->FindSubObject( 1, aGeomObj ) && aGeomObj->ReferencedObject( aRef )) - aShapeName = aRef->GetName(); - anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); - } - else - anInfo.append(QString("
")); - } - } - } - + anObj.reset(); + aMeshSO->FindSubObject(SMESH::Tag_FaceGroups, anObj); + if (anObj) { + _PTR(ChildIterator) it = aStudy->NewChildIterator(anObj); + if (!hasGroup && it->More()) { + anInfo.append(QString("Groups:

")); + 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("- %1
").arg(aGroup->GetName())); + anInfo.append(QString("%1
").arg("on faces")); + anInfo.append(QString("%1
").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 = ""; + _PTR(SObject) aGeomObj, aRef; + if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef)) + aShapeName = aRef->GetName().c_str(); + anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); + } else { + anInfo.append(QString("
")); + } + } + } + } + // info about groups on volumes - anObj = SALOMEDS::SObject::_nil(); - aMeshSO->FindSubObject(Tag_VolumeGroups , anObj); - if ( !anObj->_is_nil() ) - { - SALOMEDS::ChildIterator_var it = aStudy->NewChildIterator(anObj); - if (!hasGroup && it->More()) - anInfo.append(QString("Groups:
")); - for(; it->More(); it->Next()){ - SALOMEDS::SObject_var subObj = it->Value(); - SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( subObj->GetObject() ); - if ( !aGroup->_is_nil() ) - { - anInfo.append(QString("- %1
").arg(aGroup->GetName())); - anInfo.append(QString("%1
").arg("on volumes")); - anInfo.append(QString("%1
").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 = ""; - SALOMEDS::SObject_var aGeomObj, aRef; - if ( subObj->FindSubObject( 1, aGeomObj ) && aGeomObj->ReferencedObject( aRef )) - aShapeName = aRef->GetName(); - anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); - } - else - anInfo.append(QString("
")); - } - } - } - + anObj.reset(); + aMeshSO->FindSubObject(SMESH::Tag_VolumeGroups, anObj); + if (anObj) { + _PTR(ChildIterator) it = aStudy->NewChildIterator(anObj); + if (!hasGroup && it->More()) + anInfo.append(QString("Groups:
")); + 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("- %1
").arg(aGroup->GetName())); + anInfo.append(QString("%1
").arg("on volumes")); + anInfo.append(QString("%1
").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 = ""; + _PTR(SObject) aGeomObj, aRef; + if (subObj->FindSubObject(1, aGeomObj) && aGeomObj->ReferencedObject(aRef)) + aShapeName = aRef->GetName().c_str(); + anInfo.append(QString("based on %1 geometry object

").arg(aShapeName)); + } else { + anInfo.append(QString("
")); + } + } + } + } + myInfo->setText(anInfo); return; } } - - return; } //================================================================================= @@ -383,46 +372,42 @@ void SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos() //================================================================================= void SMESHGUI_StandardMeshInfosDlg::onSelectionChanged() { - if ( myStartSelection ) + if (myStartSelection) DumpMeshInfos(); } - //================================================================================= // function : closeEvent() // purpose : //================================================================================= -void SMESHGUI_StandardMeshInfosDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_StandardMeshInfosDlg::closeEvent (QCloseEvent* e) { - mySelection->ClearFilters(); - SMESHGUI::GetSMESHGUI()->ResetState(); - QDialog::closeEvent( e ); + mySelectionMgr->clearFilters(); + mySMESHGUI->ResetState(); + QDialog::closeEvent(e); } - //================================================================================= // function : windowActivationChange() // purpose : called when window is activated/deactivated //================================================================================= -void SMESHGUI_StandardMeshInfosDlg::windowActivationChange( bool oldActive ) +void SMESHGUI_StandardMeshInfosDlg::windowActivationChange (bool oldActive) { - QDialog::windowActivationChange( oldActive ); - if ( isActiveWindow() && myIsActiveWindow != isActiveWindow() ) - ActivateThisDialog() ; + QDialog::windowActivationChange(oldActive); + if (isActiveWindow() && myIsActiveWindow != isActiveWindow()) + ActivateThisDialog(); myIsActiveWindow = isActiveWindow(); } - //================================================================================= // function : DeactivateActiveDialog() // purpose : //================================================================================= void SMESHGUI_StandardMeshInfosDlg::DeactivateActiveDialog() { - disconnect( mySelection, 0, this, 0 ); + disconnect(mySelectionMgr, 0, this, 0); } - //================================================================================= // function : ActivateThisDialog() // purpose : @@ -430,8 +415,8 @@ void SMESHGUI_StandardMeshInfosDlg::DeactivateActiveDialog() void SMESHGUI_StandardMeshInfosDlg::ActivateThisDialog() { /* Emit a signal to deactivate any active dialog */ - SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog() ; - connect( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( onSelectionChanged() ) ); + mySMESHGUI->EmitSignalDeactivateDialog(); + connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged())); } //================================================================================= @@ -441,8 +426,48 @@ void SMESHGUI_StandardMeshInfosDlg::ActivateThisDialog() void SMESHGUI_StandardMeshInfosDlg::onStartSelection() { myStartSelection = true; - mySelection->AddFilter( myMeshFilter ) ; - myMeshLine->setText( tr( "Select a mesh" ) ); + mySelectionMgr->installFilter(myMeshFilter); + myMeshLine->setText(tr("Select a mesh")); onSelectionChanged(); myStartSelection = true; } + +//================================================================================= +// function : onHelp() +// purpose : +//================================================================================= +void SMESHGUI_StandardMeshInfosDlg::onHelp() +{ + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) + app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName); + else { + QString platform; +#ifdef WIN32 + platform = "winapplication"; +#else + platform = "application"; +#endif + SUIT_MessageBox::warning(this, tr("WRN_WARNING"), + tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", + platform)). + arg(myHelpFileName)); + } +} + +//================================================================================= +// function : keyPressEvent() +// purpose : +//================================================================================= +void SMESHGUI_StandardMeshInfosDlg::keyPressEvent( QKeyEvent* e ) +{ + QDialog::keyPressEvent( e ); + if ( e->isAccepted() ) + return; + + if ( e->key() == Qt::Key_F1 ) { + e->accept(); + onHelp(); + } +}