Salome HOME
Container servant hold information about SSL mode or not
[modules/geom.git] / src / TransformationGUI / TransformationGUI_MultiTranslationDlg.cxx
index b9862ae650001381e97cc17f48b12bc6a3983bab..6d9c3262015d037a5dd37002ad8b35a6e86477df 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  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
@@ -239,15 +239,21 @@ void TransformationGUI_MultiTranslationDlg::ConstructorsClicked (int constructor
       GroupDimensions->hide();
       GroupPoints->show();
 
-      GroupPoints->LineEdit1->setText("");
-      GroupPoints->LineEdit2->setText("");
-      myBase.nullify();
-      myVectorU.nullify();
+      //GroupPoints->LineEdit1->setText("");
+      //GroupPoints->LineEdit2->setText("");
+      //myBase.nullify();
+      //myVectorU.nullify();
+
+      if ( myBase ) GroupDimensions->LineEdit1->setText( GEOMBase::GetName( myBase.get() ) );
+      if ( myVectorU ) GroupDimensions->LineEdit2->setText( GEOMBase::GetName( myVectorU.get() ) );
 
       GroupPoints->SpinBox_DX->setValue(myStepU);
       GroupPoints->SpinBox_DY->setValue(myNbTimesU);
 
-      GroupPoints->PushButton1->click();
+      if ( !myBase )
+       GroupPoints->PushButton1->click();
+      else if ( !myVectorU )
+       GroupPoints->PushButton2->click();
       break;
     }
   case 1: // Translate double
@@ -255,19 +261,28 @@ void TransformationGUI_MultiTranslationDlg::ConstructorsClicked (int constructor
       GroupPoints->hide();
       GroupDimensions->show();
 
-      GroupDimensions->LineEdit1->setText("");
-      GroupDimensions->LineEdit2->setText("");
-      GroupDimensions->LineEdit3->setText("");
-      myBase.nullify();
-      myVectorU.nullify();
-      myVectorV.nullify();
+      //GroupDimensions->LineEdit1->setText("");
+      //GroupDimensions->LineEdit2->setText("");
+      //GroupDimensions->LineEdit3->setText("");
+      //myBase.nullify();
+      //myVectorU.nullify();
+      //myVectorV.nullify();
+
+      if ( myBase ) GroupDimensions->LineEdit1->setText( GEOMBase::GetName( myBase.get() ) );
+      if ( myVectorU ) GroupDimensions->LineEdit2->setText( GEOMBase::GetName( myVectorU.get() ) );
+      if ( myVectorV ) GroupDimensions->LineEdit3->setText( GEOMBase::GetName( myVectorV.get() ) );
 
       GroupDimensions->SpinBox_DX1->setValue(myStepU);
       GroupDimensions->SpinBox_DY1->setValue(myNbTimesU);
       GroupDimensions->SpinBox_DX2->setValue(myStepV);
       GroupDimensions->SpinBox_DY2->setValue(myNbTimesV);
 
-      GroupDimensions->PushButton1->click();
+      if ( !myBase )
+       GroupDimensions->PushButton1->click();
+      else if ( !myVectorU )
+       GroupDimensions->PushButton2->click();
+      else if ( !myVectorV )
+       GroupDimensions->PushButton3->click();
       break;
     }
   }
@@ -329,45 +344,35 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
     QString aName = GEOMBase::GetName( aSelectedObject.get() );
     myEditCurrentArgument->setText( aName );
 
-    if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
+    if ( myEditCurrentArgument == GroupPoints->LineEdit1 || myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
       myBase = aSelectedObject;
 
       // recompute myStepU (Mantis issue 0021718)
-      GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations(getStudyId());
+      GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations();
       double Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
       anOper->GetBoundingBox(myBase.get(), true, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
       if (anOper->IsDone()) {
         myStepU = floor(1.5 * (Xmax - Xmin));
+        myStepV = floor(1.5 * (Ymax - Ymin));
         GroupPoints->SpinBox_DX->setValue(myStepU);
+        GroupDimensions->SpinBox_DX1->setValue(myStepU);
+        GroupDimensions->SpinBox_DX2->setValue(myStepV);
       }
 
-      if (!myVectorU)
+      if ( myEditCurrentArgument == GroupPoints->LineEdit1 && !myVectorU )
         GroupPoints->PushButton2->click();
+      if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
+       if ( !myVectorU )
+         GroupDimensions->PushButton2->click();
+       else if ( !myVectorV )
+         GroupDimensions->PushButton3->click();
+      }
     }
     else if ( myEditCurrentArgument == GroupPoints->LineEdit2 ) {
       myVectorU = aSelectedObject;
       if ( !myBase )
         GroupPoints->PushButton1->click();
     }
-    else if ( myEditCurrentArgument == GroupDimensions->LineEdit1 ) {
-      myBase = aSelectedObject;
-
-      // recompute myStepU and myStepV (Mantis issue 0021718)
-      GEOM::GEOM_IMeasureOperations_var anOper = getGeomEngine()->GetIMeasureOperations(getStudyId());
-      double Xmin, Xmax, Ymin, Ymax, Zmin, Zmax;
-      anOper->GetBoundingBox(myBase.get(), true, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax);
-      if (anOper->IsDone()) {
-        myStepU = floor(1.5 * (Xmax - Xmin));
-        myStepV = floor(1.5 * (Ymax - Ymin));
-        GroupDimensions->SpinBox_DX1->setValue(myStepU);
-        GroupDimensions->SpinBox_DX2->setValue(myStepV);
-      }
-
-      if ( !myVectorU )
-        GroupDimensions->PushButton2->click();
-      else if ( !myVectorV )
-        GroupDimensions->PushButton3->click();
-    }
     else if ( myEditCurrentArgument == GroupDimensions->LineEdit2 ) {
       myVectorU = aSelectedObject;
       if ( !myVectorV )
@@ -384,10 +389,10 @@ void TransformationGUI_MultiTranslationDlg::SelectionIntoArgument()
     }
 
     // clear selection
-    disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
-    myGeomGUI->getApp()->selectionMgr()->clearSelected();
-    connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
-            this, SLOT(SelectionIntoArgument()));
+    // disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
+    // myGeomGUI->getApp()->selectionMgr()->clearSelected();
+    // connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
+    //         this, SLOT(SelectionIntoArgument()));
   }
   else {
     if ( myEditCurrentArgument == GroupPoints->LineEdit1 ||
@@ -424,7 +429,7 @@ void TransformationGUI_MultiTranslationDlg::SetEditCurrentArgument()
   else if (send == GroupPoints->PushButton2) {
     myEditCurrentArgument = GroupPoints->LineEdit2;
 
-    localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
+    localSelection(TopAbs_EDGE);
 
     GroupPoints->PushButton1->setDown(false);
     GroupPoints->LineEdit1->setEnabled(false);
@@ -440,7 +445,7 @@ void TransformationGUI_MultiTranslationDlg::SetEditCurrentArgument()
   else if (send == GroupDimensions->PushButton2) {
     myEditCurrentArgument = GroupDimensions->LineEdit2;
 
-    localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
+    localSelection(TopAbs_EDGE);
 
     GroupDimensions->PushButton1->setDown(false);
     GroupDimensions->PushButton3->setDown(false);
@@ -450,7 +455,7 @@ void TransformationGUI_MultiTranslationDlg::SetEditCurrentArgument()
   else if (send == GroupDimensions->PushButton3) {
     myEditCurrentArgument = GroupDimensions->LineEdit3;
 
-    localSelection(GEOM::GEOM_Object::_nil(), TopAbs_EDGE);
+    localSelection(TopAbs_EDGE);
 
     GroupDimensions->PushButton1->setDown(false);
     GroupDimensions->PushButton2->setDown(false);
@@ -497,7 +502,7 @@ void TransformationGUI_MultiTranslationDlg::enterEvent (QEvent*)
 // function : TextValueChangedInSpinBox
 // purpose  :
 //=================================================================================
-void TransformationGUI_MultiTranslationDlg::TextValueChangedInSpinBox( const QString& s)
+void TransformationGUI_MultiTranslationDlg::TextValueChangedInSpinBox( const QString& )
 {
   QObject* send = (QObject*)sender();
   bool isDigit = true;
@@ -610,7 +615,7 @@ void TransformationGUI_MultiTranslationDlg::ReverseStepV()
 //=================================================================================
 GEOM::GEOM_IOperations_ptr TransformationGUI_MultiTranslationDlg::createOperation()
 {
-  return getGeomEngine()->GetITransformOperations(getStudyId());
+  return getGeomEngine()->GetITransformOperations();
 }
 
 //=================================================================================
@@ -682,7 +687,7 @@ bool TransformationGUI_MultiTranslationDlg::execute (ObjectList& objects)
 
   if (!anObj->_is_nil()) {
     if (!IsPreview())
-      anObj->SetParameters(aParameters.join(":").toLatin1().constData());
+      anObj->SetParameters(aParameters.join(":").toUtf8().constData());
     objects.push_back(anObj._retn());
   }
 
@@ -708,12 +713,22 @@ void TransformationGUI_MultiTranslationDlg::addSubshapesToStudy()
   }
 }
 
+//=================================================================================
+// function : getSourceObjects
+// purpose  : virtual method to get source objects
+//=================================================================================
+QList<GEOM::GeomObjPtr> TransformationGUI_MultiTranslationDlg::getSourceObjects()
+{
+  QList<GEOM::GeomObjPtr> res;
+  res << myBase << myVectorU << myVectorV;
+  return res;
+}
+
 //=================================================================================
 // function : restoreSubShapes
 // purpose  :
 //=================================================================================
-void TransformationGUI_MultiTranslationDlg::restoreSubShapes (SALOMEDS::Study_ptr   theStudy,
-                                                              SALOMEDS::SObject_ptr theSObject)
+void TransformationGUI_MultiTranslationDlg::restoreSubShapes (SALOMEDS::SObject_ptr theSObject)
 {
   if (mainFrame()->CheckBoxRestoreSS->isChecked()) {
     // we pass here the first operation argument (object) through the list of arguments
@@ -722,7 +737,7 @@ void TransformationGUI_MultiTranslationDlg::restoreSubShapes (SALOMEDS::Study_pt
     GEOM::ListOfGO_var anArgs = new GEOM::ListOfGO;
     anArgs->length(1);
     anArgs[0] = myBase.copy();
-    getGeomEngine()->RestoreSubShapesSO(theStudy, theSObject, anArgs,
+    getGeomEngine()->RestoreSubShapesSO(theSObject, anArgs,
                                         /*theFindMethod=*/GEOM::FSM_MultiTransformed,
                                         /*theInheritFirstArg=*/true,
                                         mainFrame()->CheckBoxAddPrefix->isChecked());