X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_StandardMeshInfosDlg.cxx;h=1c8ac49a30d9fd1e62fec8d55dcc1331288274e1;hb=refs%2Fheads%2FSLN_ASL_opt;hp=3b7916938be2c0666c903c9e9282aabd235af895;hpb=c38c10811a065cf5b13e8807ed71864d92ca7d80;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx b/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx index 3b7916938..1c8ac49a3 100644 --- a/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx @@ -26,43 +26,13 @@ // Module : SMESH // $Header$ -#include "SMESHGUI_StandardMeshInfosDlg.h" +#include -#include "SMESHGUI.h" -#include "SMESHGUI_Utils.h" -#include "SMESHGUI_MeshUtils.h" +#include -#include "SMESH.hxx" -#include "SMESH_TypeFilter.hxx" - -#include "SALOMEDSClient_Study.hxx" -#include "SALOMEDSClient_SObject.hxx" - -#include "SUIT_Session.h" -#include "SUIT_OverrideCursor.h" - -#include "SalomeApp_SelectionMgr.h" -#include "SALOME_ListIO.hxx" - -#include "utilities.h" - -// QT Includes -#include -#include #include -#include +#include #include -#include -#include - -// 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; - //================================================================================= /*! @@ -71,106 +41,41 @@ using namespace std; * 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_Dialog( 0, false, false, OK ) { - if (!name) - setName("SMESHGUI_StandardMeshInfosDlg"); setCaption(tr("SMESH_STANDARD_MESHINFO_TITLE" )); - setSizeGripEnabled(TRUE); - - myStartSelection = true; - myIsActiveWindow = true; + resize( 300, 200 ); + // dialog layout - QGridLayout* aDlgLayout = new QGridLayout(this); - aDlgLayout->setSpacing(6); - aDlgLayout->setMargin(11); + QVBoxLayout* main = new QVBoxLayout( mainFrame(), 0, 5 ); // 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); - - // select button, label and line edit with mesh name - myNameLab = new QLabel(myMeshGroup, "myNameLab"); - myNameLab->setText(tr("SMESH_NAME" )); - myMeshGroupLayout->addWidget(myNameLab, 0, 0); + QGroupBox* MeshGroup = new QGroupBox( mainFrame(), "myMeshGroup"); + MeshGroup->setTitle(tr("SMESH_MESH")); + MeshGroup->setColumnLayout(3, Qt::Horizontal); + MeshGroup->layout()->setSpacing(0); + MeshGroup->layout()->setMargin(5); - 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); + createObject( tr("SMESH_NAME" ), MeshGroup, 0 ); + setNameIndication( 0, OneName ); + setObjectType( 0, prefix( "SMESH" ) + MESH, -1 ); - myMeshLine = new QLineEdit(myMeshGroup, "myMeshLine"); - myMeshGroupLayout->addWidget(myMeshLine, 0, 2); - - aDlgLayout->addWidget(myMeshGroup, 0, 0); + main->addWidget( MeshGroup ); // 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); + QGroupBox* InfoGroup = new QGroupBox( mainFrame(), "myInfoGroup"); + InfoGroup->setTitle(tr("SMESH_INFORMATION")); + InfoGroup->setColumnLayout(1, Qt::Vertical); + InfoGroup->layout()->setSpacing(0); + InfoGroup->layout()->setMargin(5); // information text browser - myInfo = new QTextBrowser(myInfoGroup, "myInfo"); - myInfoGroupLayout->addWidget(myInfo, 0, 0); - - aDlgLayout->addWidget(myInfoGroup, 1, 0); - - // 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); - myButtonsGroupLayout->addStretch(); + myInfo = new QTextBrowser( InfoGroup, "myInfo"); - aDlgLayout->addWidget(myButtonsGroup, 2, 0); + main->addWidget( InfoGroup ); - mySelectionMgr = SMESHGUI::selectionMgr(); - SMESHGUI::GetSMESHGUI()->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(mySelectionMgr, 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(); - - // init dialog with current selection - myMeshFilter = new SMESH_TypeFilter (MESH); - mySelectionMgr->installFilter(myMeshFilter); - onSelectionChanged(); } //================================================================================= @@ -186,259 +91,12 @@ SMESHGUI_StandardMeshInfosDlg::~SMESHGUI_StandardMeshInfosDlg() //================================================================================= /*! - * SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos + * SMESHGUI_StandardMeshInfosDlg::setInfo + * + * Set text to text browser */ //================================================================================= -void SMESHGUI_StandardMeshInfosDlg::DumpMeshInfos() -{ - SUIT_OverrideCursor wc; - - SALOME_ListIO aList; - mySelectionMgr->selectedObjects(aList); - - int nbSel = aList.Extent(); - myInfo->clear(); - if (nbSel == 1) { - myStartSelection = false; - myMeshLine->setText(""); - SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(aList.First()); - - if (!aMesh->_is_nil()) { - QString aName, anInfo; - 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; - } - else if(aNbFaces > 0) { - aNbDimElements = aNbFaces; - aDimension = 2; - } - else if(aNbEdges > 0) { - aNbDimElements = aNbEdges; - aDimension = 1; - } - 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 - _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) { - _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.reset(); - aMeshSO->FindSubObject(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.reset(); - aMeshSO->FindSubObject(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.reset(); - aMeshSO->FindSubObject(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; - } - } -} - -//================================================================================= -// function : SelectionIntoArgument() -// purpose : Called when selection has changed -//================================================================================= -void SMESHGUI_StandardMeshInfosDlg::onSelectionChanged() -{ - if (myStartSelection) - DumpMeshInfos(); -} - -//================================================================================= -// function : closeEvent() -// purpose : -//================================================================================= -void SMESHGUI_StandardMeshInfosDlg::closeEvent (QCloseEvent* e) -{ - mySelectionMgr->clearFilters(); - SMESHGUI::GetSMESHGUI()->ResetState(); - QDialog::closeEvent(e); -} - -//================================================================================= -// function : windowActivationChange() -// purpose : called when window is activated/deactivated -//================================================================================= -void SMESHGUI_StandardMeshInfosDlg::windowActivationChange (bool oldActive) -{ - QDialog::windowActivationChange(oldActive); - if (isActiveWindow() && myIsActiveWindow != isActiveWindow()) - ActivateThisDialog(); - myIsActiveWindow = isActiveWindow(); -} - -//================================================================================= -// function : DeactivateActiveDialog() -// purpose : -//================================================================================= -void SMESHGUI_StandardMeshInfosDlg::DeactivateActiveDialog() -{ - disconnect(mySelectionMgr, 0, this, 0); -} - -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void SMESHGUI_StandardMeshInfosDlg::ActivateThisDialog() -{ - /* Emit a signal to deactivate any active dialog */ - SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog(); - connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged())); -} - -//================================================================================= -// function : onStartSelection() -// purpose : starts selection -//================================================================================= -void SMESHGUI_StandardMeshInfosDlg::onStartSelection() +void SMESHGUI_StandardMeshInfosDlg::setInfo( const QString& text ) { - myStartSelection = true; - mySelectionMgr->installFilter(myMeshFilter); - myMeshLine->setText(tr("Select a mesh")); - onSelectionChanged(); - myStartSelection = true; + myInfo->setText( text ); }