X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MultiEditDlg.cxx;h=0e39378b5f26351da3fa7596f37c5e1aee9c70ae;hb=c3e2a7b12ebefec0110115c2a571d809d6097d3d;hp=ac7e5969bbd767e5b411e46d910f81883b9d870a;hpb=81a502af8470190be359d6491a20796dbad5bb97;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx b/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx index ac7e5969b..0e39378b5 100755 --- a/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx @@ -17,7 +17,7 @@ // 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -43,15 +43,18 @@ #include "SUIT_ResourceMgr.h" #include "SUIT_Desktop.h" +#include "SUIT_Session.h" +#include "SUIT_MessageBox.h" #include "LightApp_SelectionMgr.h" +#include "LightApp_Application.h" #include "SALOME_ListIO.hxx" #include "SALOME_ListIteratorOfListIO.hxx" #include "SVTK_Selector.h" #include "SVTK_ViewModel.h" #include "SVTK_ViewWindow.h" -#include "SVTK_InteractorStyle.h" +#include "VTKViewer_CellLocationsArray.h" // OCCT Includes #include @@ -66,11 +69,11 @@ #include #include #include -#include #include #include #include #include +#include // QT Includes #include @@ -230,9 +233,10 @@ QFrame* SMESHGUI_MultiEditDlg::createButtonFrame (QWidget* theParent) QFrame* aFrame = new QFrame (theParent); aFrame->setFrameStyle(QFrame::Box | QFrame::Sunken); - myOkBtn = new QPushButton (tr("SMESH_BUT_OK" ), aFrame); myApplyBtn = new QPushButton (tr("SMESH_BUT_APPLY"), aFrame); myCloseBtn = new QPushButton (tr("SMESH_BUT_CLOSE"), aFrame); + myOkBtn = new QPushButton (tr("SMESH_BUT_APPLY_AND_CLOSE"), aFrame); + myHelpBtn = new QPushButton (tr("SMESH_BUT_HELP"), aFrame); QSpacerItem* aSpacer = new QSpacerItem (0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum); @@ -242,6 +246,7 @@ QFrame* SMESHGUI_MultiEditDlg::createButtonFrame (QWidget* theParent) aLay->addWidget(myApplyBtn); aLay->addItem(aSpacer); aLay->addWidget(myCloseBtn); + aLay->addWidget(myHelpBtn); return aFrame; } @@ -333,6 +338,7 @@ void SMESHGUI_MultiEditDlg::Init() connect(myOkBtn, SIGNAL(clicked()), SLOT(onOk())); connect(myCloseBtn, SIGNAL(clicked()), SLOT(onClose())); connect(myApplyBtn, SIGNAL(clicked()), SLOT(onApply())); + connect(myHelpBtn, SIGNAL(clicked()), SLOT(onHelp())); // selection and SMESHGUI connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone())); @@ -388,6 +394,35 @@ SMESH::long_array_var SMESHGUI_MultiEditDlg::getIds() anActor = myActor; if (anActor != 0) { + // skl 07.02.2006 + SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh(); + if( myFilterType == SMESHGUI_TriaFilter || + myFilterType == SMESHGUI_QuadFilter || + myFilterType == SMESHGUI_FaceFilter ) { + SMDS_FaceIteratorPtr it = aMesh->facesIterator(); + while(it->more()) { + const SMDS_MeshFace* f = it->next(); + if(myFilterType == SMESHGUI_FaceFilter) { + myIds.Add(f->GetID()); + } + else if( myFilterType==SMESHGUI_TriaFilter && + ( f->NbNodes()==3 || f->NbNodes()==6 ) ) { + myIds.Add(f->GetID()); + } + else if( myFilterType==SMESHGUI_QuadFilter && + ( f->NbNodes()==4 || f->NbNodes()==8 ) ) { + myIds.Add(f->GetID()); + } + } + } + else if(myFilterType == SMESHGUI_VolumeFilter) { + SMDS_VolumeIteratorPtr it = aMesh->volumesIterator(); + while(it->more()) { + const SMDS_MeshVolume* f = it->next(); + myIds.Add(f->GetID()); + } + } + /* commented by skl 07.02.2006 TVisualObjPtr aVisualObj = anActor->GetObject(); vtkUnstructuredGrid* aGrid = aVisualObj->GetUnstructuredGrid(); if (aGrid != 0) { @@ -411,6 +446,7 @@ SMESH::long_array_var SMESHGUI_MultiEditDlg::getIds() } } } + */ } } @@ -438,12 +474,35 @@ void SMESHGUI_MultiEditDlg::onClose() SMESH::RemoveFilters(); SMESH::SetPickable(); - mySelectionMgr->clearSelected(); + //mySelectionMgr->clearSelected(); mySelectionMgr->clearFilters(); reject(); } +//================================================================================= +// function : onHelp() +// purpose : +//================================================================================= +void SMESHGUI_MultiEditDlg::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::warn1(0, QObject::tr("WRN_WARNING"), + QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). + arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(myHelpFileName), + QObject::tr("BUT_OK")); + } +} + //======================================================================= // name : SMESHGUI_MultiEditDlg::onSelectionDone // Purpose : SLOT called when selection changed @@ -504,8 +563,8 @@ void SMESHGUI_MultiEditDlg::onSelectionDone() myActor = SMESH::FindActorByEntry(aList.First()->getEntry()); if (!myActor) myActor = SMESH::FindActorByObject(myMesh); - SVTK_InteractorStyle* aStyle = SMESH::GetInteractorStyle(); - Handle(VTKViewer_Filter) aFilter = aStyle->GetFilter(myFilterType); + SVTK_Selector* aSelector = SMESH::GetSelector(); + Handle(VTKViewer_Filter) aFilter = aSelector->GetFilter(myFilterType); if (!aFilter.IsNull()) aFilter->SetActor(myActor); } @@ -605,9 +664,9 @@ void SMESHGUI_MultiEditDlg::onFilterAccepted() //======================================================================= bool SMESHGUI_MultiEditDlg::isIdValid (const int theId) const { - SVTK_InteractorStyle* aStyle = SMESH::GetInteractorStyle(); + SVTK_Selector* aSelector = SMESH::GetSelector(); Handle(SMESHGUI_Filter) aFilter = - Handle(SMESHGUI_Filter)::DownCast(aStyle->GetFilter(myFilterType)); + Handle(SMESHGUI_Filter)::DownCast(aSelector->GetFilter(myFilterType)); return (!aFilter.IsNull() && aFilter->IsObjValid(theId)); } @@ -942,7 +1001,10 @@ bool SMESHGUI_MultiEditDlg::onApply() bool aResult = process(aMeshEditor, anIds.inout()); if (aResult) { if (myActor) { - mySelectionMgr->clearSelected(); + SALOME_ListIO sel; + mySelectionMgr->selectedObjects( sel ); + mySelector->ClearIndex(); + mySelectionMgr->setSelectedObjects( sel ); SMESH::UpdateView(); } @@ -990,6 +1052,23 @@ int SMESHGUI_MultiEditDlg::entityType() return myEntityType; } +//================================================================================= +// function : keyPressEvent() +// purpose : +//================================================================================= +void SMESHGUI_MultiEditDlg::keyPressEvent( QKeyEvent* e ) +{ + QDialog::keyPressEvent( e ); + if ( e->isAccepted() ) + return; + + if ( e->key() == Key_F1 ) + { + e->accept(); + onHelp(); + } +} + /*! * Class : SMESHGUI_ChangeOrientationDlg * Description : Modification of orientation of faces @@ -1001,6 +1080,7 @@ SMESHGUI_ChangeOrientationDlg SMESHGUI_MultiEditDlg(theModule, SMESHGUI_FaceFilter, true, theName) { setCaption(tr("CAPTION")); + myHelpFileName = "changing_orientation_of_elements_page.html"; } SMESHGUI_ChangeOrientationDlg::~SMESHGUI_ChangeOrientationDlg() @@ -1039,6 +1119,8 @@ SMESHGUI_UnionOfTrianglesDlg myMaxAngleSpin->SetValue(30.0); myCriterionGrp->show(); + + myHelpFileName = "uniting_set_of_triangles_page.html"; } SMESHGUI_UnionOfTrianglesDlg::~SMESHGUI_UnionOfTrianglesDlg() @@ -1077,6 +1159,8 @@ SMESHGUI_CuttingOfQuadsDlg connect(myGroupChoice , SIGNAL(clicked(int)) , this, SLOT(onCriterionRB())); connect(myComboBoxFunctor, SIGNAL(activated(int)) , this, SLOT(onPreviewChk())); connect(this , SIGNAL(ListContensChanged()), this, SLOT(onPreviewChk())); + + myHelpFileName = "cutting_quadrangles_page.html"; } SMESHGUI_CuttingOfQuadsDlg::~SMESHGUI_CuttingOfQuadsDlg() @@ -1259,7 +1343,7 @@ void SMESHGUI_CuttingOfQuadsDlg::displayPreview() } } - vtkIntArray* aCellLocationsArray = vtkIntArray::New(); + VTKViewer_CellLocationsArray* aCellLocationsArray = VTKViewer_CellLocationsArray::New(); aCellLocationsArray->SetNumberOfComponents(1); aCellLocationsArray->SetNumberOfTuples(aNbCells);