Salome HOME
restoring fam with old id
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshPatternDlg.cxx
old mode 100755 (executable)
new mode 100644 (file)
index 3d65010..aabcb60
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // 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.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -119,17 +119,17 @@ SMESHGUI_MeshPatternDlg::SMESHGUI_MeshPatternDlg( SMESHGUI* theModule )
   aDlgLay->setMargin( MARGIN );
   aDlgLay->setSpacing( SPACING );
 
-  QWidget* aMainFrame = createMainFrame  ( this );
+  myMainFrame = createMainFrame  ( this );
   QWidget* aBtnFrame  = createButtonFrame( this );
 
-  aDlgLay->addWidget( aMainFrame );
+  aDlgLay->addWidget( myMainFrame );
   aDlgLay->addWidget( aBtnFrame );
 
-  aDlgLay->setStretchFactor( aMainFrame, 1 );
+  aDlgLay->setStretchFactor( myMainFrame, 1 );
 
   mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
 
-  myHelpFileName = "pattern_mapping_page.html";
+  myHelpFileName = "pattern_mapping.html";
 
   Init();
 }
@@ -391,6 +391,8 @@ void SMESHGUI_MeshPatternDlg::Init()
   connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));
   connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate()));
   connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(reject()));
+  connect(mySMESHGUI, SIGNAL(SignalActivatedViewManager()), SLOT( onOpenView()));
+  connect(mySMESHGUI, SIGNAL(SignalCloseView()), SLOT( onCloseView()));
 
   myTypeGrp->button(Type_2d)->setChecked(true);
   onTypeChanged(Type_2d);
@@ -473,7 +475,7 @@ bool SMESHGUI_MeshPatternDlg::onApply()
         aParameters << myNode1->text();
         if(myType == Type_3d )
           aParameters << myNode2->text();
-        myMesh->SetParameters( aParameters.join(":").toLatin1().constData() );
+        myMesh->SetParameters( aParameters.join(":").toUtf8().constData() );
       }
       QList<int> ids;
       getIds(ids);
@@ -502,7 +504,7 @@ bool SMESHGUI_MeshPatternDlg::onApply()
         _PTR(SObject) aSO = SMESH::FindSObject(myMesh.in());
         SMESH_Actor* anActor = SMESH::FindActorByEntry(aSO->GetID().c_str());
         if (!anActor) {
-          anActor = SMESH::CreateActor(aSO->GetStudy(), aSO->GetID().c_str());
+          anActor = SMESH::CreateActor(aSO->GetID().c_str());
           if (anActor) {
             SMESH::DisplayActor(SMESH::GetActiveWindow(), anActor);
             SMESH::FitAll();
@@ -548,6 +550,7 @@ void SMESHGUI_MeshPatternDlg::onOk()
 void SMESHGUI_MeshPatternDlg::reject()
 {
   mySelectionMgr->clearFilters();
+  mySelInput = Mesh;
   SMESH::SetPickable();
   if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
     aViewWindow->SetSelectionMode(ActorSelection);
@@ -558,6 +561,32 @@ void SMESHGUI_MeshPatternDlg::reject()
   QDialog::reject();
 }
 
+//=================================================================================
+// function : onOpenView()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MeshPatternDlg::onOpenView()
+{
+  if(!mySelector) {
+    mySelector = SMESH::GetViewWindow( mySMESHGUI )->GetSelector();
+    mySMESHGUI->EmitSignalDeactivateDialog();
+    setEnabled(true);
+    activateSelection();
+    connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));
+  }
+}
+
+//=================================================================================
+// function : onCloseView()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MeshPatternDlg::onCloseView()
+{
+  onDeactivate();
+  mySelector = 0;
+}
+
+
 //=================================================================================
 // function : onHelp()
 // purpose  :
@@ -695,7 +724,7 @@ void SMESHGUI_MeshPatternDlg::resetSelInput()
 
 //=======================================================================
 // name    : SMESHGUI_MeshPatternDlg::onDeactivate
-// Purpose : SLOT called when dialog must be deativated
+// Purpose : SLOT called when dialog must be deactivated
 //=======================================================================
 void SMESHGUI_MeshPatternDlg::onDeactivate()
 {
@@ -715,8 +744,13 @@ void SMESHGUI_MeshPatternDlg::enterEvent (QEvent*)
   if (myIsCreateDlgOpen)
     return;
 
-  if (myReverseChk->isChecked())
+  if (myReverseChk->isChecked()) {
+    SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI );
+    if ( aViewWindow && !mySelector) {
+      mySelector = aViewWindow->GetSelector();
+    }
     displayPreview();
+  }
   mySMESHGUI->EmitSignalDeactivateDialog();
   setEnabled(true);
   activateSelection();
@@ -776,10 +810,10 @@ void SMESHGUI_MeshPatternDlg::onOpen()
   SUIT_FileDlg* aDlg = new SUIT_FileDlg (this, true);
   aDlg->setWindowTitle(tr("LOAD_PATTERN"));
   aDlg->setFileMode(QFileDialog::ExistingFile);
-  aDlg->setFilters(prepareFilters());
+  aDlg->setNameFilters(prepareFilters());
   if (!myName->text().isEmpty())
     aDlg->selectFile(myName->text() + ".smp");
-  QPushButton* anOkBtn = qFindChild<QPushButton*>( aDlg, "OK" );
+  QPushButton* anOkBtn = aDlg->findChild<QPushButton*>( "OK" );
   if (anOkBtn != 0)
     anOkBtn->setText(tr("SMESH_BUT_OK"));
 
@@ -793,9 +827,9 @@ void SMESHGUI_MeshPatternDlg::onOpen()
   if (QFileInfo(fName).suffix().isEmpty())
     fName = autoExtension(fName);
 
-  fName = QDir::convertSeparators(fName);
+  fName = QDir::toNativeSeparators(fName);
 
-  QString prev = QDir::convertSeparators(myName->text());
+  QString prev = QDir::toNativeSeparators(myName->text());
   if (prev == fName)
     return;
 
@@ -871,7 +905,7 @@ void SMESHGUI_MeshPatternDlg::onNew()
 
 //=======================================================================
 // name    : SMESHGUI_MeshPatternDlg::onReverse
-// Purpose : SLOT. Called when state of "Reverse order..." checkbox chaged
+// Purpose : SLOT. Called when state of "Reverse order..." checkbox changed
 //           Calculate new points of the mesh to be created. Redisplay preview
 //=======================================================================
 void SMESHGUI_MeshPatternDlg::onReverse (bool)
@@ -1116,7 +1150,7 @@ bool SMESHGUI_MeshPatternDlg::loadFromFile (const QString& theName)
   try {
     SMESH::SMESH_Pattern_var aPattern = SMESH::GetPattern();
 
-    if (!aPattern->LoadFromFile(theName.toLatin1().data()) ||
+    if (!aPattern->LoadFromFile(theName.toUtf8().data()) ||
         (myType == Type_2d && !aPattern->Is2D())) {
       SMESH::SMESH_Pattern::ErrorCode aCode = aPattern->GetErrorCode();
       QString aMess;
@@ -1201,11 +1235,16 @@ void SMESHGUI_MeshPatternDlg::onTypeChanged (int theType)
     myNode2Lbl->show();
     myNode2   ->show();
   }
-
   mySelInput = Mesh;
   activateSelection();
   updateWgState();
   displayPreview();
+  myPicture2d->hide();
+  myPicture2d->show();
+  myPicture2d->resize(minimumSizeHint());
+  myMainFrame->hide();
+  myMainFrame->show();
+  resize(minimumSizeHint());
 }
 
 //=======================================================================
@@ -1264,7 +1303,7 @@ vtkUnstructuredGrid* SMESHGUI_MeshPatternDlg::getGrid()
     for (int i = 0, n = elemPoints->length(); i < n; i++)
       aCellsSize += elemPoints[ i ].length();
 
-    // Create unstructured grid and other  usefull arrays
+    // Create unstructured grid and other useful arrays
     vtkUnstructuredGrid* aGrid = vtkUnstructuredGrid::New();
 
     vtkCellArray* aConnectivity = vtkCellArray::New();
@@ -1305,7 +1344,8 @@ vtkUnstructuredGrid* SMESHGUI_MeshPatternDlg::getGrid()
     aCellLocationsArray->SetNumberOfTuples(aNbCells);
 
     aConnectivity->InitTraversal();
-    for (vtkIdType idType = 0, *pts, npts; aConnectivity->GetNextCell(npts, pts); idType++)
+    vtkIdType const *pts(nullptr);
+    for (vtkIdType idType = 0, npts; aConnectivity->GetNextCell(npts, pts); idType++)
       aCellLocationsArray->SetValue(idType, aConnectivity->GetTraversalLocation(npts));
 
     aGrid->SetPoints(aPoints);
@@ -1331,8 +1371,10 @@ void SMESHGUI_MeshPatternDlg::onModeToggled (bool on)
 {
   on ? myRefineGrp->show() : myRefineGrp->hide();
   on ? myGeomGrp->hide()   : myGeomGrp->show();
-
+  myMainFrame->hide();
+  myMainFrame->show();
   displayPreview();
+  resize(minimumSizeHint());
 }
 
 //=======================================================================
@@ -1360,7 +1402,7 @@ void SMESHGUI_MeshPatternDlg::onTextChanged (const QString& theNewText)
     activateSelection();
   }
 
-  // hilight entered elements/nodes
+  // highlight entered elements/nodes
   SMDS_Mesh* aMesh = 0;
   SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh);
   if (anActor)