Salome HOME
GPUSPHGUI: add an option to Offset Surface opreation
[modules/geom.git] / src / TransformationGUI / TransformationGUI_OffsetDlg.cxx
index 6dde981b125a5c59187d3f9b9a7b93479b49d3c1..2e2916f0336cdd3bc3cdd3a38dbc9e2c00079327 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -58,26 +58,24 @@ TransformationGUI_OffsetDlg::TransformationGUI_OffsetDlg( GeometryGUI* theGeomet
   mainFrame()->RadioButton2->close();
   mainFrame()->RadioButton3->setAttribute( Qt::WA_DeleteOnClose );
   mainFrame()->RadioButton3->close();
+
   GroupPoints = new DlgRef_1Sel1Spin1Check( centralWidget() );
   GroupPoints->GroupBox1->setTitle( tr( "GEOM_ARGUMENTS" ) );
   GroupPoints->TextLabel1->setText( tr( "GEOM_OBJECTS" ) );
   GroupPoints->TextLabel2->setText( tr( "GEOM_OFFSET" ) );
-  GroupPoints->CheckButton1->setText( tr( "GEOM_CREATE_COPY" ) );
-
-  // san -- modification of an exisitng object by offset is not allowed
-  GroupPoints->CheckButton1->hide();
+  GroupPoints->CheckButton1->setText( tr( "GEOM_JOIN_BY_PIPES" ) );
+  GroupPoints->CheckButton1->setChecked( true );
 
   GroupPoints->PushButton1->setIcon( image1 );
-  
+
   QVBoxLayout* layout = new QVBoxLayout( centralWidget() );
   layout->setMargin( 0 ); layout->setSpacing( 6 );
   layout->addWidget( GroupPoints );
-  
+
   /***************************************************************/
 
   setHelpFileName( "offset_operation_page.html" );
-  
+
   Init();
 }
 
@@ -97,37 +95,33 @@ TransformationGUI_OffsetDlg::~TransformationGUI_OffsetDlg()
 // purpose  :
 //=================================================================================
 void TransformationGUI_OffsetDlg::Init()
-{  
+{
   /* init variables */
   myEditCurrentArgument = GroupPoints->LineEdit1;
   GroupPoints->LineEdit1->setReadOnly( true );
 
   myObjects.clear();
-  
+
   /* Get setting of step value from file configuration */
   double step = 1;
-   
+
   /* min, max, step and decimals for spin boxes & initial values */
   initSpinBox( GroupPoints->SpinBox_DX, COORD_MIN, COORD_MAX, step, "length_precision" );
   GroupPoints->SpinBox_DX->setValue( 1e-05 );
-  
-  // Activate Create a Copy mode
-  GroupPoints->CheckButton1->setChecked( true );
-  CreateCopyModeChanged();
 
   mainFrame()->GroupBoxPublish->show();
 
   /* signals and slots connections */
   connect( buttonOk(),    SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
   connect( buttonApply(), SIGNAL( clicked() ), this, SLOT( ClickOnApply() ) );
-  
+
   connect( GroupPoints->PushButton1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() ) );
-  connect( myGeomGUI->getApp()->selectionMgr(), 
+  connect( myGeomGUI->getApp()->selectionMgr(),
            SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
 
   connect( GroupPoints->SpinBox_DX,   SIGNAL( valueChanged( double ) ), this, SLOT( ValueChangedInSpinBox() ) );
-  connect( GroupPoints->CheckButton1, SIGNAL( toggled( bool ) ),        this, SLOT( CreateCopyModeChanged() ) );
-  
+  connect( GroupPoints->CheckButton1, SIGNAL( toggled( bool ) ),        this, SLOT( JoinModeChanged() ) );
+
   initName( tr( "GEOM_OFFSET" ) );
 
   globalSelection( GEOM_ALLSHAPES );
@@ -271,10 +265,10 @@ bool TransformationGUI_OffsetDlg::execute( ObjectList& objects )
   
   GEOM::GEOM_ITransformOperations_var anOper = GEOM::GEOM_ITransformOperations::_narrow(getOperation());
 
-  if ( GroupPoints->CheckButton1->isChecked() || IsPreview() ) {
+  if ( true /*GroupPoints->CheckButton1->isChecked() || IsPreview()*/ ) {
     for ( int i = 0; i < myObjects.count(); i++ ) {
       
-      anObj = anOper->OffsetShapeCopy( myObjects[i].get(), GetOffset() );
+      anObj = anOper->OffsetShapeCopy( myObjects[i].get(), GetOffset(), GetIsJoinByPipes() );
       if ( !anObj->_is_nil() ) {
         if(!IsPreview()) {
           anObj->SetParameters(GroupPoints->SpinBox_DX->text().toLatin1().constData());
@@ -285,7 +279,7 @@ bool TransformationGUI_OffsetDlg::execute( ObjectList& objects )
   }
   else {
     for ( int i = 0; i < myObjects.count(); i++ ) {
-      anObj = anOper->OffsetShape( myObjects[i].get(), GetOffset() );
+      anObj = anOper->OffsetShape( myObjects[i].get(), GetOffset(), GetIsJoinByPipes()  );
       if ( !anObj->_is_nil() )
         objects.push_back( anObj._retn() );
     }
@@ -320,11 +314,34 @@ double TransformationGUI_OffsetDlg::GetOffset() const
   return GroupPoints->SpinBox_DX->value();
 }
 
+//=======================================================================
+//function : GetIsJoinByPipes
+//purpose  : 
+//=======================================================================
+
+bool TransformationGUI_OffsetDlg::GetIsJoinByPipes() const
+{
+  return GroupPoints->CheckButton1->isChecked();
+}
+
 //=================================================================================
-// function :  CreateCopyModeChanged()
+// function :  JoinModeChanged()
 // purpose  :
 //=================================================================================
-void TransformationGUI_OffsetDlg::CreateCopyModeChanged()
+void TransformationGUI_OffsetDlg::JoinModeChanged()
+{
+  processPreview();
+  //mainFrame()->GroupBoxName->setEnabled( GroupPoints->CheckButton1->isChecked() );
+}
+
+//=================================================================================
+// function : getSourceObjects
+// purpose  : virtual method to get source objects
+//=================================================================================
+QList<GEOM::GeomObjPtr> TransformationGUI_OffsetDlg::getSourceObjects()
 {
-  mainFrame()->GroupBoxName->setEnabled( GroupPoints->CheckButton1->isChecked() );
+  QList<GEOM::GeomObjPtr> res;
+  if ( GroupPoints->CheckButton1->isChecked() )
+    res.append( myObjects );
+  return res;
 }