Salome HOME
Additional change to fix the preview problem
[modules/geom.git] / src / RepairGUI / RepairGUI_RemoveExtraEdgesDlg.cxx
index 25fceb12f45c0b1083e07aec07312ca2121a74b3..67ff1087b2d213b13be671275eba8d6f36ae2d95 100644 (file)
@@ -1,7 +1,4 @@
-//  Copyright (C) 2007-2008  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
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  This library is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU Lesser General Public
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 //  GEOM RepairGUI : GUI for Geometry component
 //  File   : RepairGUI_RemoveExtraEdgesDlg.cxx
 //  Author : Michael Zorin, Open CASCADE S.A.S.
-
+//
 #include "RepairGUI_RemoveExtraEdgesDlg.h"
 
 #include <DlgRef.h>
@@ -46,7 +44,7 @@
 //            TRUE to construct a modal dialog.
 //=================================================================================
 RepairGUI_RemoveExtraEdgesDlg::RepairGUI_RemoveExtraEdgesDlg( GeometryGUI* theGeometryGUI, QWidget* parent,
-                                                             bool modal )
+                                                              bool modal )
   : GEOMBase_Skeleton( theGeometryGUI, parent, modal )
 {
   SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
@@ -109,6 +107,8 @@ void RepairGUI_RemoveExtraEdgesDlg::Init()
   activateSelection();
   
   mainFrame()->GroupBoxPublish->show();
+  //Hide preview checkbox
+  mainFrame()->CheckBoxPreview->hide();
 
   /* signals and slots connections */
   connect( buttonOk(),    SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
@@ -118,10 +118,11 @@ void RepairGUI_RemoveExtraEdgesDlg::Init()
   connect( GroupPoints->LineEdit1,   SIGNAL( returnPressed() ), this, SLOT( LineEditReturnPressed() ) );
 
   connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
-          this, SLOT( SelectionIntoArgument() ) );
+           this, SLOT( SelectionIntoArgument() ) );
 
   initName( tr( "REMOVE_EXTRA_EDGES_NEW_OBJ_NAME" ) );
   resize(100,100);
+  SelectionIntoArgument();
 }
 
 
@@ -131,6 +132,7 @@ void RepairGUI_RemoveExtraEdgesDlg::Init()
 //=================================================================================
 void RepairGUI_RemoveExtraEdgesDlg::ClickOnOk()
 {
+  setIsApplyAndClose( true );
   if ( ClickOnApply() )
     ClickOnCancel();
 }
@@ -180,11 +182,10 @@ void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument()
   }
   
   // nbSel == 1
-  Standard_Boolean testResult = Standard_False;
   GEOM::GEOM_Object_ptr aSelectedObject =
-    GEOMBase::ConvertIOinGEOMObject( aSelList.First(), testResult );
+    GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
 
-  if ( !testResult )
+  if ( CORBA::is_nil( aSelectedObject ) )
     return;
   
   if ( myEditCurrentArgument == GroupPoints->LineEdit1 ) {
@@ -230,7 +231,7 @@ void RepairGUI_RemoveExtraEdgesDlg::ActivateThisDialog()
 {
   GEOMBase_Skeleton::ActivateThisDialog();
   connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
-          this, SLOT( SelectionIntoArgument() ) );
+           this, SLOT( SelectionIntoArgument() ) );
 
   activateSelection();
 }
@@ -254,6 +255,7 @@ void RepairGUI_RemoveExtraEdgesDlg::enterEvent(QEvent* e)
 void RepairGUI_RemoveExtraEdgesDlg::activateSelection()
 {
   TColStd_MapOfInteger aTypes;
+  aTypes.Add( GEOM_SHELL );
   aTypes.Add( GEOM_SOLID );
   aTypes.Add( GEOM_COMPOUND );
   globalSelection( aTypes );
@@ -288,8 +290,8 @@ bool RepairGUI_RemoveExtraEdgesDlg::execute( ObjectList& objects )
   int nbFacesOptimum = -1; // -1 means do not union faces
   if (GroupPoints->CheckButton1->isChecked())
     nbFacesOptimum = 0; // 0 means union all faces, that possible
-  anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->RemoveExtraEdges
-    (myObject, nbFacesOptimum);
+  GEOM::GEOM_IBlocksOperations_var anOper = GEOM::GEOM_IBlocksOperations::_narrow(getOperation());
+  anObj = anOper->RemoveExtraEdges(myObject, nbFacesOptimum);
 
   if (!anObj->_is_nil())
     objects.push_back(anObj._retn());
@@ -307,7 +309,8 @@ void RepairGUI_RemoveExtraEdgesDlg::restoreSubShapes( SALOMEDS::Study_ptr   theS
   if ( mainFrame()->CheckBoxRestoreSS->isChecked() ) {
     // empty list of arguments means that all arguments should be restored
     getGeomEngine()->RestoreSubShapesSO( theStudy, theSObject, GEOM::ListOfGO(),
-                                        /*theFindMethod=*/GEOM::FSM_GetInPlace, // ? GetInPlaceByHistory
-                                        /*theInheritFirstArg=*/true );
+                                         /*theFindMethod=*/GEOM::FSM_GetInPlace, // ? GetInPlaceByHistory
+                                         /*theInheritFirstArg=*/true,
+                                         mainFrame()->CheckBoxAddPrefix->isChecked() );
   }
 }