X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MeshInfosDlg.cxx;h=40def53abb1f591240b196821f62a852bea0eeac;hp=b1946d689aead9a227db3247f5721396ad80ce98;hb=396a60d4bb68195f8f05b626598f0ad46c636aff;hpb=c3bf92bd87b770fd81631a3853f7f5bb1ac6a4e8 diff --git a/src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx b/src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx index b1946d689..40def53ab 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx @@ -1,434 +1,222 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2010 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_MeshInfosDlg.cxx -// Author : Nicolas BARBEROU -// Module : SMESH -// $Header$ -using namespace std; +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_MeshInfosDlg.cxx +// Author : Nicolas BARBEROU +// SMESH includes +// #include "SMESHGUI_MeshInfosDlg.h" #include "SMESHGUI.h" -#include "QAD_Application.h" -#include "QAD_Desktop.h" -#include "QAD_WaitCursor.h" -#include "utilities.h" - -// QT Includes -#include -#include -#include -#include -#include -#include -#include - -#define COLONIZE( str ) ( QString( str ).contains( ":" ) > 0 ? QString( str ) : QString( str ) + " :" ) +#include "SMESHGUI_Utils.h" +#include "SMESHGUI_MeshInfosBox.h" + +// SALOME GUI includes +#include +#include +#include +#include +#include + +#include +#include +#include + +// SALOME KERNEL includes +#include + +// Qt includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// IDL includes +#include +#include CORBA_SERVER_HEADER(SMESH_Mesh) +#include CORBA_SERVER_HEADER(SMESH_Group) + +#define COLONIZE(str) (QString(str).contains(":") > 0 ? QString(str) : QString(str) + " :" ) +#define SPACING 6 +#define MARGIN 11 //================================================================================= -/*! - * SMESHGUI_MeshInfosDlg::SMESHGUI_MeshInfosDlg - * - * Constructor - */ +// function : SMESHGUI_MeshInfosDlg() +// purpose : Constructor //================================================================================= -SMESHGUI_MeshInfosDlg::SMESHGUI_MeshInfosDlg( QWidget* parent, const char* name, bool modal, WFlags fl ) - : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose ) +SMESHGUI_MeshInfosDlg::SMESHGUI_MeshInfosDlg(SMESHGUI* theModule): + QDialog(SMESH::GetDesktop(theModule)), + mySelectionMgr(SMESH::GetSelectionMgr(theModule)), + mySMESHGUI(theModule) { - if ( !name ) - setName( "SMESHGUI_MeshInfosDlg" ); - setCaption( tr( "SMESH_MESHINFO_TITLE" ) ); - setSizeGripEnabled( TRUE ); + setModal( false ); + setAttribute( Qt::WA_DeleteOnClose, true ); + setWindowTitle(tr("SMESH_MESHINFO_TITLE")); + setSizeGripEnabled(true); myStartSelection = true; myIsActiveWindow = true; - QVBoxLayout* aTopLayout = new QVBoxLayout( this ); - aTopLayout->setSpacing( 6 ); aTopLayout->setMargin( 11 ); + QVBoxLayout* aTopLayout = new QVBoxLayout(this); + aTopLayout->setSpacing(SPACING); aTopLayout->setMargin(MARGIN); // select button & label - QPixmap image0( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH",tr( "ICON_SELECT" ) ) ); - mySelectBtn = new QPushButton( this, "mySelectBtn" ); - mySelectBtn->setPixmap( image0 ); - mySelectBtn->setSizePolicy( QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ) ); + QPixmap image0(SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH",tr("ICON_SELECT"))); + mySelectBtn = new QPushButton(this); + mySelectBtn->setIcon(image0); + mySelectBtn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); - mySelectLab = new QLabel( this, "mySelectLab" ); - mySelectLab->setAlignment( AlignCenter ); - QFont fnt = mySelectLab->font(); fnt.setBold( true ); - mySelectLab->setFont( fnt ); + mySelectLab = new QLabel(this); + mySelectLab->setAlignment(Qt::AlignCenter); + QFont fnt = mySelectLab->font(); fnt.setBold(true); + mySelectLab->setFont(fnt); - QHBoxLayout* aSelectLayout = new QHBoxLayout; - aSelectLayout->setMargin( 0 ); aSelectLayout->setSpacing( 0 ); - aSelectLayout->addWidget( mySelectBtn ); - aSelectLayout->addWidget( mySelectLab ); + QHBoxLayout* aSelectLayout = new QHBoxLayout; + aSelectLayout->setMargin(0); aSelectLayout->setSpacing(0); + aSelectLayout->addWidget(mySelectBtn); + aSelectLayout->addWidget(mySelectLab); // top widget stack - myWGStack = new QWidgetStack( this ); + myWGStack = new QStackedWidget(this); // no valid selection - QWidget* myBadWidget = new QWidget( myWGStack ); - QVBoxLayout* aBadLayout = new QVBoxLayout( myBadWidget ); - QLabel* myBadLab = new QLabel( tr( "SMESH_BAD_SELECTION" ), myBadWidget, "myBadLab" ); - myBadLab->setAlignment( Qt::AlignCenter ); - myBadLab->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); - aBadLayout->addWidget( myBadLab ); - myWGStack->addWidget( myBadWidget, 0 ); - + QWidget* myBadWidget = new QWidget(myWGStack); + QVBoxLayout* aBadLayout = new QVBoxLayout(myBadWidget); + QLabel* myBadLab = new QLabel(tr("SMESH_BAD_SELECTION"), myBadWidget); + myBadLab->setAlignment(Qt::AlignCenter); + myBadLab->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); + aBadLayout->addWidget(myBadLab); + myWGStack->addWidget(myBadWidget); + // mesh - myMeshWidget = new QWidget( myWGStack ); - QGridLayout* aMeshLayout = new QGridLayout( myMeshWidget ); - aMeshLayout->setSpacing( 6 ); aMeshLayout->setMargin( 0 ); - myWGStack->addWidget( myMeshWidget ); - - // --> name - QLabel* myMeshNameLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_NAME" ) ), myMeshWidget, "myMeshNameLab" ); - myMeshName = new QLabel( myMeshWidget, "myMeshName" ); - myMeshName->setMinimumWidth( 100 ); - QFrame* line1 = new QFrame( myMeshWidget ); - line1->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - - // --> nodes - QLabel* myMeshNbNodesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_NODES" ) ), myMeshWidget, "myMeshNbNodesLab" ); - myMeshNbNodes = new QLabel( myMeshWidget, "myMeshNbNodes" ); - myMeshNbNodes->setMinimumWidth( 100 ); - - // --> edges - QLabel* myMeshNbEdgesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_EDGES" ) ), myMeshWidget, "myMeshNbEdgesLab" ); - myMeshNbEdges = new QLabel( myMeshWidget, "myMeshNbEdges" ); - myMeshNbEdges->setMinimumWidth( 100 ); - - // --> faces - myMeshFacesGroup = new QGroupBox( tr( "SMESH_MESHINFO_FACES" ), myMeshWidget, "myMeshFacesGroup" ); - myMeshFacesGroup->setColumnLayout(0, Qt::Vertical ); - myMeshFacesGroup->layout()->setSpacing( 0 ); myMeshFacesGroup->layout()->setMargin( 0 ); - QGridLayout* myMeshFacesGroupLayout = new QGridLayout( myMeshFacesGroup->layout() ); - myMeshFacesGroupLayout->setAlignment( Qt::AlignTop ); - myMeshFacesGroupLayout->setSpacing( 6 ); myMeshFacesGroupLayout->setMargin( 11 ); - - // --> faces --> total - QLabel* myMeshNbFacesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_TOTAL" ) ), myMeshFacesGroup, "myMeshNbFacesLab" ); - myMeshNbFacesLab->setFont( fnt ); - myMeshNbFaces = new QLabel( myMeshFacesGroup, "myMeshNbFaces" ); - myMeshNbFaces->setMinimumWidth( 100 ); - myMeshNbFaces->setFont( fnt ); - - // --> faces --> triangles - QLabel* myMeshNbTrianglesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_TRIANGLES" ) ), myMeshFacesGroup, "myMeshNbTrianglesLab" ); - myMeshNbTriangles = new QLabel( myMeshFacesGroup, "myMeshNbTriangles" ); - myMeshNbTriangles->setMinimumWidth( 100 ); - - // --> faces --> quadrangles - QLabel* myMeshNbQuadranglesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_QUADRANGLES" ) ), myMeshFacesGroup, "myMeshNbQuadranglesLab" ); - myMeshNbQuadrangles = new QLabel( myMeshFacesGroup, "myMeshNbQuadrangles" ); - myMeshNbQuadrangles->setMinimumWidth( 100 ); - - myMeshFacesGroupLayout->addWidget( myMeshNbFacesLab, 0, 0 ); - myMeshFacesGroupLayout->addWidget( myMeshNbFaces, 0, 1 ); - myMeshFacesGroupLayout->addWidget( myMeshNbTrianglesLab, 1, 0 ); - myMeshFacesGroupLayout->addWidget( myMeshNbTriangles, 1, 1 ); - myMeshFacesGroupLayout->addWidget( myMeshNbQuadranglesLab, 2, 0 ); - myMeshFacesGroupLayout->addWidget( myMeshNbQuadrangles, 2, 1 ); - - // --> volumes - myMeshVolumesGroup = new QGroupBox( tr( "SMESH_MESHINFO_VOLUMES" ), myMeshWidget, "myMeshVolumesGroup" ); - myMeshVolumesGroup->setColumnLayout(0, Qt::Vertical ); - myMeshVolumesGroup->layout()->setSpacing( 0 ); myMeshVolumesGroup->layout()->setMargin( 0 ); - QGridLayout* myMeshVolumesGroupLayout = new QGridLayout( myMeshVolumesGroup->layout() ); - myMeshVolumesGroupLayout->setAlignment( Qt::AlignTop ); - myMeshVolumesGroupLayout->setSpacing( 6 ); myMeshVolumesGroupLayout->setMargin( 11 ); - - // --> volumes --> total - QLabel* myMeshNbVolumesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_TOTAL" ) ), myMeshVolumesGroup, "myMeshNbVolumesLab" ); - myMeshNbVolumesLab->setFont( fnt ); - myMeshNbVolumes = new QLabel( myMeshVolumesGroup, "myMeshNbVolumes" ); - myMeshNbVolumes->setMinimumWidth( 100 ); - myMeshNbVolumes->setFont( fnt ); - - // --> volumes --> tetrahedrons - QLabel* myMeshNbTetraLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_TETRAS" ) ), myMeshVolumesGroup, "myMeshNbTetraLab" ); - myMeshNbTetra = new QLabel( myMeshVolumesGroup, "myMeshNbTetra" ); - myMeshNbTetra->setMinimumWidth( 100 ); - - // --> volumes --> hexahedrons - QLabel* myMeshNbHexaLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_HEXAS" ) ), myMeshVolumesGroup, "myMeshNbHexaLab" ); - myMeshNbHexa = new QLabel( myMeshVolumesGroup, "myMeshNbHexa" ); - myMeshNbHexaLab->setMinimumWidth( 100 ); - - // --> volumes --> prisms - QLabel* myMeshNbPrismLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_PRISMS" ) ), myMeshVolumesGroup, "myMeshNbPrismLab" ); - myMeshNbPrism = new QLabel( myMeshVolumesGroup, "myMeshNbPrism" ); - myMeshNbPrism->setMinimumWidth( 100 ); - - // --> volumes --> pyramids - QLabel* myMeshNbPyraLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_PYRAS" ) ), myMeshVolumesGroup, "myMeshNbPyraLab" ); - myMeshNbPyra = new QLabel( myMeshVolumesGroup, "myMeshNbPyra" ); - myMeshNbPyra->setMinimumWidth( 100 ); - - myMeshVolumesGroupLayout->addWidget( myMeshNbVolumesLab, 0, 0 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbVolumes, 0, 1 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbTetraLab, 1, 0 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbTetra, 1, 1 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbHexaLab, 2, 0 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbHexa, 2, 1 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbPrismLab, 3, 0 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbPrism, 3, 1 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbPyraLab, 4, 0 ); - myMeshVolumesGroupLayout->addWidget( myMeshNbPyra, 4, 1 ); - - aMeshLayout->addWidget( myMeshNameLab, 0, 0 ); - aMeshLayout->addWidget( myMeshName, 0, 1 ); - aMeshLayout->addMultiCellWidget( line1, 1, 1, 0, 1 ); - aMeshLayout->addWidget( myMeshNbNodesLab, 2, 0 ); - aMeshLayout->addWidget( myMeshNbNodes, 2, 1 ); - aMeshLayout->addWidget( myMeshNbEdgesLab, 3, 0 ); - aMeshLayout->addWidget( myMeshNbEdges, 3, 1 ); - aMeshLayout->addMultiCellWidget( myMeshFacesGroup, 4, 4, 0, 1 ); - aMeshLayout->addMultiCellWidget( myMeshVolumesGroup, 5, 5, 0, 1 ); - aMeshLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Minimum, QSizePolicy::Expanding ), 6, 0 ); - - // submesh - mySubMeshWidget = new QWidget( myWGStack ); - QGridLayout* aSubMeshLayout = new QGridLayout( mySubMeshWidget ); - aSubMeshLayout->setSpacing( 6 ); aSubMeshLayout->setMargin( 0 ); - myWGStack->addWidget( mySubMeshWidget ); - - // --> name - QLabel* mySubMeshNameLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_NAME" ) ), mySubMeshWidget, "mySubMeshNameLab" ); - mySubMeshName = new QLabel( mySubMeshWidget, "mySubMeshName" ); - mySubMeshName->setMinimumWidth( 100 ); - QFrame* line2 = new QFrame( mySubMeshWidget ); - line2->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - - // --> nodes - QLabel* mySubMeshNbNodesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_NODES" ) ), mySubMeshWidget, "mySubMeshNbNodesLab" ); - mySubMeshNbNodes = new QLabel( mySubMeshWidget, "mySubMeshNbNodes" ); - mySubMeshNbNodes->setMinimumWidth( 100 ); - - // --> elements - mySubMeshElementsGroup = new QGroupBox( tr( "SMESH_MESHINFO_ELEMENTS" ), mySubMeshWidget, "mySubMeshElementsGroup" ); - mySubMeshElementsGroup->setColumnLayout(0, Qt::Vertical ); - mySubMeshElementsGroup->layout()->setSpacing( 0 ); mySubMeshElementsGroup->layout()->setMargin( 0 ); - QGridLayout* mySubMeshElementsGroupLayout = new QGridLayout( mySubMeshElementsGroup->layout() ); - mySubMeshElementsGroupLayout->setAlignment( Qt::AlignTop ); - mySubMeshElementsGroupLayout->setSpacing( 6 ); mySubMeshElementsGroupLayout->setMargin( 11 ); - - // --> elements --> total - QLabel* mySubMeshNbElementsLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_TOTAL" ) ), mySubMeshElementsGroup, "mySubMeshNbElementsLab" ); - mySubMeshNbElementsLab->setFont( fnt ); - mySubMeshNbElements = new QLabel( mySubMeshElementsGroup, "mySubMeshNbElements" ); - mySubMeshNbElements->setMinimumWidth( 100 ); - mySubMeshNbElements->setFont( fnt ); - - // --> elements --> edges - QLabel* mySubMeshNbEdgesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_EDGES" ) ), mySubMeshElementsGroup, "mySubMeshNbEdgesLab" ); - mySubMeshNbEdges = new QLabel( mySubMeshElementsGroup, "mySubMeshNbEdges" ); - mySubMeshNbEdges->setMinimumWidth( 100 ); - - // --> elements --> faces - QLabel* mySubMeshNbFacesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_FACES" ) ), mySubMeshElementsGroup, "mySubMeshNbFacesLab" ); - mySubMeshNbFaces = new QLabel( mySubMeshElementsGroup, "mySubMeshNbFaces" ); - mySubMeshNbFaces->setMinimumWidth( 100 ); - - // --> elements --> volumes - QLabel* mySubMeshNbVolumesLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_VOLUMES" ) ), mySubMeshElementsGroup, "mySubMeshNbVolumesLab" ); - mySubMeshNbVolumes = new QLabel( mySubMeshElementsGroup, "mySubMeshNbVolumes" ); - mySubMeshNbVolumes->setMinimumWidth( 100 ); - - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbElementsLab, 0, 0 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbElements, 0, 1 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbEdgesLab, 1, 0 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbEdges, 1, 1 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbFacesLab, 2, 0 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbFaces, 2, 1 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbVolumesLab, 3, 0 ); - mySubMeshElementsGroupLayout->addWidget( mySubMeshNbVolumes, 3, 1 ); - - aSubMeshLayout->addWidget( mySubMeshNameLab, 0, 0 ); - aSubMeshLayout->addWidget( mySubMeshName, 0, 1 ); - aSubMeshLayout->addMultiCellWidget( line2, 1, 1, 0, 1 ); - aSubMeshLayout->addWidget( mySubMeshNbNodesLab, 2, 0 ); - aSubMeshLayout->addWidget( mySubMeshNbNodes, 2, 1 ); - aSubMeshLayout->addMultiCellWidget( mySubMeshElementsGroup, 3, 3, 0, 1 ); - aSubMeshLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Minimum, QSizePolicy::Expanding ), 4, 0 ); - - // group - myGroupWidget = new QWidget( myWGStack ); - QGridLayout* myGroupWidgetLayout = new QGridLayout( myGroupWidget ); - myGroupWidgetLayout->setSpacing( 6 ); myGroupWidgetLayout->setMargin( 0 ); - myWGStack->addWidget( myGroupWidget ); - + myMeshWidget = new QWidget(myWGStack); + QGridLayout* aMeshLayout = new QGridLayout(myMeshWidget); + aMeshLayout->setSpacing(SPACING); aMeshLayout->setMargin(0); + myWGStack->addWidget(myMeshWidget); + // --> name - QLabel* myGroupNameLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_NAME" ) ), myGroupWidget, "myGroupNameLab" ); - myGroupName = new QLabel( myGroupWidget, "myGroupName" ); - myGroupName->setMinimumWidth( 100 ); - QFrame* line3 = new QFrame( myGroupWidget ); - line3->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - - // --> type - QLabel* myGroupTypeLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_TYPE" ) ), myGroupWidget, "myGroupTypeLab" ); - myGroupType = new QLabel( myGroupWidget, "myGroupType" ); - myGroupType->setMinimumWidth( 100 ); - - // --> number of entities - QLabel* myGroupNbLab = new QLabel( COLONIZE( tr( "SMESH_MESHINFO_ENTITIES" ) ), myGroupWidget, "myGroupNbLab" ); - myGroupNb = new QLabel( myGroupWidget, "myGroupNb" ); - myGroupNb->setMinimumWidth( 100 ); - - myGroupWidgetLayout->addWidget( myGroupNameLab, 0, 0 ); - myGroupWidgetLayout->addWidget( myGroupName, 0, 1 ); - myGroupWidgetLayout->addMultiCellWidget( line3, 1, 1, 0, 1 ); - myGroupWidgetLayout->addWidget( myGroupTypeLab, 2, 0 ); - myGroupWidgetLayout->addWidget( myGroupType, 2, 1 ); - myGroupWidgetLayout->addWidget( myGroupNbLab, 3, 0 ); - myGroupWidgetLayout->addWidget( myGroupNb, 3, 1 ); - myGroupWidgetLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Minimum, QSizePolicy::Expanding ), 4, 0 ); + QLabel* myMeshNameLab = new QLabel(COLONIZE(tr("SMESH_MESHINFO_NAME")), myMeshWidget); + myMeshName = new QLabel(myMeshWidget); + myMeshName->setMinimumWidth(100); + QFrame* line1 = new QFrame(myMeshWidget); + line1->setFrameStyle(QFrame::HLine | QFrame::Sunken); + + myMeshInfoBox = new SMESHGUI_MeshInfosBox(true, myMeshWidget); + + aMeshLayout->addWidget(myMeshNameLab, 0, 0); + aMeshLayout->addWidget(myMeshName, 0, 1); + aMeshLayout->addWidget(line1, 1, 0, 1, 2); + aMeshLayout->addWidget(myMeshInfoBox, 2, 0, 1, 2); + aMeshLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 0); // buttons - 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); + myOkBtn->setFocus(); + myHelpBtn = new QPushButton(tr("SMESH_BUT_HELP" ), myButtonsGroup); + myHelpBtn->setAutoDefault(true); + + myButtonsGroupLayout->addWidget(myOkBtn); + myButtonsGroupLayout->addSpacing(10); myButtonsGroupLayout->addStretch(); + myButtonsGroupLayout->addWidget(myHelpBtn); + + aTopLayout->addLayout(aSelectLayout); + aTopLayout->addWidget(myWGStack); + aTopLayout->addWidget(myButtonsGroup); - aTopLayout->addLayout( aSelectLayout ); - aTopLayout->addWidget( myWGStack ); - aTopLayout->addWidget( myButtonsGroup ); - - mySelection = SALOME_Selection::Selection( SMESHGUI::GetSMESHGUI()->GetActiveStudy()->getSelection() ); - SMESHGUI::GetSMESHGUI()->SetActiveDialogBox( this ) ; + 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 - 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 onSelectionChanged(); + + myHelpFileName = "mesh_infos_page.html#advanced_mesh_infos_anchor"; } //================================================================================= -/*! - * SMESHGUI_MeshInfosDlg::~SMESHGUI_MeshInfosDlg - * - * Destructor - */ +// function : ~SMESHGUI_MeshInfosDlg() +// purpose : Destructor //================================================================================= SMESHGUI_MeshInfosDlg::~SMESHGUI_MeshInfosDlg() { } //================================================================================= -/*! - * SMESHGUI_MeshInfosDlg::DumpMeshInfos - */ +// function : DumpMeshInfos() +// purpose : //================================================================================= void SMESHGUI_MeshInfosDlg::DumpMeshInfos() { - QAD_WaitCursor wc; - int nbSel = mySelection->IObjectCount(); - if ( nbSel == 1 ) { + SUIT_OverrideCursor wc; + + SALOME_ListIO aList; + mySelectionMgr->selectedObjects(aList); + + int nbSel = aList.Extent(); + if (nbSel == 1) { myStartSelection = false; - mySelectLab->setText( "" ); - Handle(SALOME_InteractiveObject) IObject = mySelection->firstIObject(); - SALOMEDS::SObject_var aSO = SMESHGUI::GetSMESHGUI()->GetStudy()->FindObjectID( IObject->getEntry() ); - if ( !aSO->_is_nil() ) { - CORBA::Object_var anObject = aSO->GetObject(); - if ( !CORBA::is_nil( anObject ) ) { - SMESH::SMESH_Mesh_var aMesh = SMESH::SMESH_Mesh::_narrow( anObject ); - if ( !aMesh->_is_nil() ) { - myWGStack->raiseWidget( myMeshWidget ); - setCaption( tr( "SMESH_MESHINFO_TITLE" ) + " [" + tr("SMESH_OBJECT_MESH") +"]" ); - myMeshName->setText( aSO->GetName() ); - myMeshNbNodes->setNum( (int)aMesh->NbNodes() ); - myMeshNbEdges->setNum( (int)aMesh->NbEdges() ); - myMeshNbFaces->setNum( (int)aMesh->NbFaces() ); - myMeshNbTriangles->setNum( (int)aMesh->NbTriangles() ); - myMeshNbQuadrangles->setNum( (int)aMesh->NbQuadrangles() ); - myMeshNbVolumes->setNum( (int)aMesh->NbVolumes() ); - myMeshNbTetra->setNum( (int)aMesh->NbTetras() ); - myMeshNbHexa->setNum( (int)aMesh->NbHexas() ); - myMeshNbPrism->setNum( (int)aMesh->NbPrisms() ); - myMeshNbPyra->setNum( (int)aMesh->NbPyramids() ); - return; - } - SMESH::SMESH_subMesh_var aSubMesh = SMESH::SMESH_subMesh::_narrow( anObject ); - if ( !aSubMesh->_is_nil() ) { - myWGStack->raiseWidget( mySubMeshWidget ); - setCaption( tr( "SMESH_MESHINFO_TITLE" ) + " [" + tr("SMESH_SUBMESH") +"]" ); - mySubMeshName->setText( aSO->GetName() ); - mySubMeshNbNodes->setNum( (int)aSubMesh->GetNumberOfNodes() ); - mySubMeshNbElements->setNum( (int)aSubMesh->GetNumberOfElements() ); - mySubMeshNbEdges->setNum( (int)( aSubMesh->GetElementsByType( SMESH::EDGE )->length() ) ); - mySubMeshNbFaces->setNum( (int)( aSubMesh->GetElementsByType( SMESH::FACE )->length() ) ); - mySubMeshNbVolumes->setNum( (int)( aSubMesh->GetElementsByType( SMESH::VOLUME )->length() ) ); - return; - } - SMESH::SMESH_Group_var aGroup = SMESH::SMESH_Group::_narrow( anObject ); - if ( !aGroup->_is_nil() ) { - myWGStack->raiseWidget( myGroupWidget ); - setCaption( tr( "SMESH_MESHINFO_TITLE" ) + " [" + tr("SMESH_GROUP") +"]" ); - myGroupName->setText( aSO->GetName() ); - int aType = aGroup->GetType(); - QString strType; - switch ( aType ) { - case SMESH::NODE: - strType = "SMESH_MESHINFO_NODES"; break; - case SMESH::EDGE: - strType = "SMESH_MESHINFO_EDGES"; break; - case SMESH::FACE: - strType = "SMESH_MESHINFO_FACES"; break; - case SMESH::VOLUME: - strType = "SMESH_MESHINFO_VOLUMES"; break; - default: - strType = "SMESH_MESHINFO_ALL_TYPES"; break; - } - - myGroupType->setText( tr( strType ) ); - myGroupNb->setNum( (int)aGroup->Size() ); - return; - } + mySelectLab->setText(""); + Handle(SALOME_InteractiveObject) IObject = aList.First(); + _PTR(SObject) aSO = SMESH::GetActiveStudyDocument()->FindObjectID(IObject->getEntry()); + if (aSO) { + //CORBA::Object_var anObject = aSO->GetObject(); + CORBA::Object_var anObject = SMESH::SObjectToObject(aSO); + if (!CORBA::is_nil(anObject)) { + SMESH::SMESH_IDSource_var anIDSource = SMESH::SMESH_IDSource::_narrow(anObject); + if (!anIDSource->_is_nil()) { + myWGStack->setCurrentWidget(myMeshWidget); + setWindowTitle(tr("SMESH_MESHINFO_TITLE") + " [" + tr("SMESH_OBJECT_MESH") + "]"); + myMeshName->setText(aSO->GetName().c_str()); + + SMESH::long_array_var aMeshInfo = anIDSource->GetMeshInfo(); + myMeshInfoBox->SetMeshInfo( aMeshInfo ); + + return; + } } } } - myWGStack->raiseWidget( 0 ); - setCaption( tr( "SMESH_MESHINFO_TITLE" ) ); + myWGStack->setCurrentIndex(0); + setWindowTitle(tr("SMESH_MESHINFO_TITLE")); } //================================================================================= @@ -437,45 +225,41 @@ void SMESHGUI_MeshInfosDlg::DumpMeshInfos() //================================================================================= void SMESHGUI_MeshInfosDlg::onSelectionChanged() { - if ( myStartSelection ) + if (myStartSelection) DumpMeshInfos(); } - //================================================================================= // function : closeEvent() // purpose : //================================================================================= -void SMESHGUI_MeshInfosDlg::closeEvent( QCloseEvent* e ) +void SMESHGUI_MeshInfosDlg::closeEvent(QCloseEvent* e) { - SMESHGUI::GetSMESHGUI()->ResetState(); - QDialog::closeEvent( e ); + mySMESHGUI->ResetState(); + QDialog::closeEvent(e); } - //================================================================================= // function : windowActivationChange() // purpose : called when window is activated/deactivated //================================================================================= -void SMESHGUI_MeshInfosDlg::windowActivationChange( bool oldActive ) +void SMESHGUI_MeshInfosDlg::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_MeshInfosDlg::DeactivateActiveDialog() { - disconnect( mySelection, 0, this, 0 ); + disconnect(mySelectionMgr, 0, this, 0); } - //================================================================================= // function : ActivateThisDialog() // purpose : @@ -483,8 +267,8 @@ void SMESHGUI_MeshInfosDlg::DeactivateActiveDialog() void SMESHGUI_MeshInfosDlg::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())); } //================================================================================= @@ -496,5 +280,45 @@ void SMESHGUI_MeshInfosDlg::onStartSelection() myStartSelection = true; onSelectionChanged(); myStartSelection = true; - mySelectLab->setText( tr( "INF_SELECT_OBJECT" ) ); + mySelectLab->setText(tr("INF_SELECT_OBJECT")); +} + +//================================================================================= +// function : onHelp() +// purpose : +//================================================================================= +void SMESHGUI_MeshInfosDlg::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_MeshInfosDlg::keyPressEvent( QKeyEvent* e ) +{ + QDialog::keyPressEvent( e ); + if ( e->isAccepted() ) + return; + + if ( e->key() == Qt::Key_F1 ) { + e->accept(); + onHelp(); + } }