From 868e2eb89595e70f1d1d3428812dc890d6c12d67 Mon Sep 17 00:00:00 2001 From: mzn Date: Sat, 29 Dec 2007 10:47:24 +0000 Subject: [PATCH] Fix for bug NPAL18339 (RemoveExtraEdges function in GUI). --- .../gui/GEOM/images/remove_extra_edges.png | Bin 0 -> 5918 bytes .../gui/GEOM/images/remove_extra_edges1.png | Bin 0 -> 22232 bytes .../gui/GEOM/images/remove_extra_edges2.png | Bin 0 -> 21630 bytes doc/salome/gui/GEOM/input/index.doc | 1 + .../input/remove_extra_edges_operation.doc | 24 ++ .../gui/GEOM/input/repairing_operations.doc | 1 + .../gui/GEOM/input/transforming_geom_objs.doc | 1 + resources/Makefile.am | 3 +- resources/remove_extra_edges.png | Bin 0 -> 443 bytes src/GEOMGUI/GEOM_images.po | 7 + src/GEOMGUI/GEOM_msg_en.po | 18 ++ src/GEOMGUI/GeometryGUI.cxx | 5 +- src/RepairGUI/Makefile.am | 6 +- src/RepairGUI/RepairGUI.cxx | 2 + .../RepairGUI_RemoveExtraEdgesDlg.cxx | 279 ++++++++++++++++++ src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h | 77 +++++ 16 files changed, 420 insertions(+), 4 deletions(-) create mode 100644 doc/salome/gui/GEOM/images/remove_extra_edges.png create mode 100644 doc/salome/gui/GEOM/images/remove_extra_edges1.png create mode 100644 doc/salome/gui/GEOM/images/remove_extra_edges2.png create mode 100644 doc/salome/gui/GEOM/input/remove_extra_edges_operation.doc create mode 100644 resources/remove_extra_edges.png create mode 100644 src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx create mode 100644 src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h diff --git a/doc/salome/gui/GEOM/images/remove_extra_edges.png b/doc/salome/gui/GEOM/images/remove_extra_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..50538dd4b250310eb91c338a6e0cfb747a1ce961 GIT binary patch literal 5918 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 sg8u6cxs}D|d`rd$mg;QJo^L2pYR0kRTe8altu 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\ref check_free_boundaries_operation_page
  • \ref check_free_faces_operation_page
  • \ref change_orientation_operation_page
  • +
  • \ref remove_extra_edges_operation_page
  • \subpage using_measurement_tools_page
  • diff --git a/doc/salome/gui/GEOM/input/remove_extra_edges_operation.doc b/doc/salome/gui/GEOM/input/remove_extra_edges_operation.doc new file mode 100644 index 000000000..3be4c4d3b --- /dev/null +++ b/doc/salome/gui/GEOM/input/remove_extra_edges_operation.doc @@ -0,0 +1,24 @@ +/*! + +\page remove_extra_edges_operation_page Remove Extra Edges + +\n To Remove extra edges in the Main Menu select +Repair - > Remove extra edges. +\n This operation removes all seam and degenerated edges from a given +shape and unites faces and edges, sharing one surface. + +\n TUI Command: geompy.RemoveExtraEdges(theShape), +there theShape is a compound or a single solid to remove irregular edges from. +\n Arguments: Name + one shape. + +\image html remove_extra_edges.png + +\n Example: + +\image html remove_extra_edges1.png +
    Shape with extra edges
    + +\image html remove_extra_edges2.png +
    Improved shape
    + +*/ \ No newline at end of file diff --git a/doc/salome/gui/GEOM/input/repairing_operations.doc b/doc/salome/gui/GEOM/input/repairing_operations.doc index d7ac30e4c..cb41f8102 100644 --- a/doc/salome/gui/GEOM/input/repairing_operations.doc +++ b/doc/salome/gui/GEOM/input/repairing_operations.doc @@ -12,6 +12,7 @@
  • \subpage glue_faces_operation_page
  • \subpage add_point_on_edge_operation_page
  • \subpage change_orientation_operation_page
  • +
  • \subpage remove_extra_edges_operation_page
  • */ diff --git a/doc/salome/gui/GEOM/input/transforming_geom_objs.doc b/doc/salome/gui/GEOM/input/transforming_geom_objs.doc index f60ea193e..487387388 100644 --- a/doc/salome/gui/GEOM/input/transforming_geom_objs.doc +++ b/doc/salome/gui/GEOM/input/transforming_geom_objs.doc @@ -48,6 +48,7 @@
  • \ref check_free_boundaries_operation_page
  • \ref check_free_faces_operation_page
  • \ref change_orientation_operation_page
  • +
  • \ref remove_extra_edges_operation_page
  • diff --git a/resources/Makefile.am b/resources/Makefile.am index 2054b989b..8a7697f8c 100644 --- a/resources/Makefile.am +++ b/resources/Makefile.am @@ -195,6 +195,7 @@ propagate.png \ redo.png \ undo.png \ arccenter.png \ -glue2.png +glue2.png \ +remove_extra_edges.png nodist_salomeres_DATA = GEOMCatalog.xml diff --git a/resources/remove_extra_edges.png b/resources/remove_extra_edges.png new file mode 100644 index 0000000000000000000000000000000000000000..fedd8ae13e79b8634cb37e09f9f0b3b7cbac61e7 GIT binary patch literal 443 zcmV;s0Yv_ZP)*^)%(wsm0Z2(i zK~xx5t&~A-f*O$ zL-JwNU5D_6Fc4WQq_VvkZvF5r zb@(Ww4tGkiR|=KH+}im2c3+`61w-_IuqO|7n#5!u8355dBAkcQkzxGIb;U#kPdvmG z+hONzlCD_b2ZZyGzz=MR{FK*KSy7ZlzcGL*wp=Y8>!XM(c)mwOWVS3k@ep6wyl=*@ lFA*UiKt#-zg}$=7`~W{%X!8#wt#1GT002ovPDHLkV1i%ew(0-? literal 0 HcmV?d00001 diff --git a/src/GEOMGUI/GEOM_images.po b/src/GEOMGUI/GEOM_images.po index 157ec0807..387b20ec3 100644 --- a/src/GEOMGUI/GEOM_images.po +++ b/src/GEOMGUI/GEOM_images.po @@ -331,6 +331,10 @@ msgstr "sewing.png" msgid "ICON_DLG_CHANGE_ORIENTATION" msgstr "change_orientation.png" +#ChangeOrientationDlg +msgid "ICON_DLG_REMOVE_EXTRA_EDGES" +msgstr "remove_extra_edges.png" + #PipeDlg msgid "ICON_DLG_PIPE" msgstr "pipe.png" @@ -736,6 +740,9 @@ msgstr "free_faces.png" msgid "ICO_CHANGE_ORIENTATION" msgstr "change_orientation.png" +msgid "ICO_REMOVE_EXTRA_EDGES" +msgstr "remove_extra_edges.png" + msgid "ICO_POINT_COORDS" msgstr "point_coord.png" diff --git a/src/GEOMGUI/GEOM_msg_en.po b/src/GEOMGUI/GEOM_msg_en.po index 1bc11877f..fa302d3a0 100644 --- a/src/GEOMGUI/GEOM_msg_en.po +++ b/src/GEOMGUI/GEOM_msg_en.po @@ -1717,6 +1717,12 @@ msgstr "Change orientation" msgid "GEOM_CHANGE_ORIENTATION" msgstr "Objects to change orientation" +msgid "GEOM_REMOVE_EXTRA_EDGES_TITLE" +msgstr "Remove extra edges" + +msgid "GEOM_REMOVE_EXTRA_EDGES" +msgstr "Object to remove extra edges" + msgid "GEOM_BY_PARAMETER" msgstr "By parameter" @@ -2078,6 +2084,9 @@ msgstr "SupressFaces" msgid "CHANGE_ORIENTATION_NEW_OBJ_NAME" msgstr "Invert" +msgid "REMOVE_EXTRA_EDGES_NEW_OBJ_NAME" +msgstr "NoExtraEdges" + msgid "NON_GEOM_OBJECTS_SELECTED" msgstr "There are objects selected which do not belong to %1 component." @@ -2712,6 +2721,15 @@ msgstr "Change orientation" msgid "STB_CHANGE_ORIENTATION" msgstr "Change orientation" +msgid "TOP_REMOVE_EXTRA_EDGES" +msgstr "Remove extra edges" + +msgid "MEN_REMOVE_EXTRA_EDGES" +msgstr "Remove extra edges" + +msgid "STB_REMOVE_EXTRA_EDGES" +msgstr "Remove extra edges" + msgid "MEN_MEASURES" msgstr "Measures" diff --git a/src/GEOMGUI/GeometryGUI.cxx b/src/GEOMGUI/GeometryGUI.cxx index ec01947a8..a2ff2d479 100644 --- a/src/GEOMGUI/GeometryGUI.cxx +++ b/src/GEOMGUI/GeometryGUI.cxx @@ -516,7 +516,8 @@ void GeometryGUI::OnGUIEvent( int id ) id == 609 || // MENU MEASURE - FREE BOUNDARIES id == 610 || // MENU MEASURE - FREE FACES id == 611 || // MENU REPAIR - CHANGE ORIENTATION - id == 602 ) { // MENU REPAIR - GLUE FACES + id == 602 || // MENU REPAIR - GLUE FACES + id == 612 ) { // MENU REPAIR - REMOVE EXTRA EDGES #ifndef WNT library = getLibrary( "libRepairGUI.so" ); #else @@ -845,6 +846,7 @@ void GeometryGUI::initialize( CAM_Application* app ) createGeomAction( 609, "CHECK_FREE_BNDS" ); createGeomAction( 610, "CHECK_FREE_FACES" ); createGeomAction( 611, "CHANGE_ORIENTATION" ); + createGeomAction( 612, "REMOVE_EXTRA_EDGES" ); createGeomAction( 708, "POINT_COORDS" ); createGeomAction( 701, "BASIC_PROPS" ); @@ -1001,6 +1003,7 @@ void GeometryGUI::initialize( CAM_Application* app ) //createMenu( 609, repairId, -1 ); //createMenu( 610, repairId, -1 ); createMenu( 611, repairId, -1 ); + createMenu( 612, repairId, -1 ); int measurId = createMenu( tr( "MEN_MEASURES" ), -1, -1, 10 ); createMenu( 708, measurId, -1 ); diff --git a/src/RepairGUI/Makefile.am b/src/RepairGUI/Makefile.am index f406ab997..8dfb76e6c 100644 --- a/src/RepairGUI/Makefile.am +++ b/src/RepairGUI/Makefile.am @@ -47,7 +47,8 @@ dist_libRepairGUI_la_SOURCES = \ RepairGUI_FreeBoundDlg.cxx \ RepairGUI_FreeFacesDlg.cxx \ RepairGUI_ChangeOrientationDlg.cxx \ - RepairGUI_GlueDlg.cxx + RepairGUI_GlueDlg.cxx \ + RepairGUI_RemoveExtraEdgesDlg.cxx MOC_FILES = \ RepairGUI_SewingDlg_moc.cxx \ @@ -60,7 +61,8 @@ MOC_FILES = \ RepairGUI_FreeBoundDlg_moc.cxx \ RepairGUI_FreeFacesDlg_moc.cxx \ RepairGUI_ChangeOrientationDlg_moc.cxx \ - RepairGUI_GlueDlg_moc.cxx + RepairGUI_GlueDlg_moc.cxx \ + RepairGUI_RemoveExtraEdgesDlg_moc.cxx nodist_libRepairGUI_la_SOURCES= \ $(MOC_FILES) diff --git a/src/RepairGUI/RepairGUI.cxx b/src/RepairGUI/RepairGUI.cxx index 3631415bc..9ab000be2 100644 --- a/src/RepairGUI/RepairGUI.cxx +++ b/src/RepairGUI/RepairGUI.cxx @@ -44,6 +44,7 @@ #include "RepairGUI_FreeFacesDlg.h" // Method FREE FACES #include "RepairGUI_GlueDlg.h" // Method GLUE FACES #include "RepairGUI_ChangeOrientationDlg.h" // Method CHANGE ORIENTATION +#include "RepairGUI_RemoveExtraEdgesDlg.h" // Method REMOVE EXTRA EDGES #include "utilities.h" @@ -90,6 +91,7 @@ bool RepairGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) case 609: aDlg = new RepairGUI_FreeBoundDlg (getGeometryGUI(), parent, ""); break; case 610: aDlg = new RepairGUI_FreeFacesDlg (getGeometryGUI(), parent, ""); break; case 611: aDlg = new RepairGUI_ChangeOrientationDlg (getGeometryGUI(), parent, ""); break; + case 612: aDlg = new RepairGUI_RemoveExtraEdgesDlg (getGeometryGUI(), parent, ""); break; default: app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); break; diff --git a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx new file mode 100644 index 000000000..930fb95c4 --- /dev/null +++ b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx @@ -0,0 +1,279 @@ +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : RepairGUI_RemoveExtraEdgesDlg.cxx +// Author : Michael Zorin +// Module : GEOM +// $Header: + +#include "RepairGUI_RemoveExtraEdgesDlg.h" + +#include "SalomeApp_Application.h" +#include "LightApp_SelectionMgr.h" +#include "SUIT_Session.h" + +#include "GEOMImpl_Types.hxx" + +#include + +#include + +using namespace std; + +//================================================================================= +// class : RepairGUI_RemoveExtraEdgesDlg() +// purpose : Constructs a RepairGUI_RemoveExtraEdgesDlg which is a child of 'parent', with the +// name 'name' and widget flags set to 'f'. +// The dialog will by default be modeless, unless you set 'modal' to +// TRUE to construct a modal dialog. +//================================================================================= +RepairGUI_RemoveExtraEdgesDlg::RepairGUI_RemoveExtraEdgesDlg(GeometryGUI* theGeometryGUI, QWidget* parent, + const char* name, bool modal, WFlags fl) + :GEOMBase_Skeleton(theGeometryGUI, parent, name, modal, WStyle_Customize | + WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) +{ + QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_REMOVE_EXTRA_EDGES"))); + QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); + + setCaption(tr("GEOM_REMOVE_EXTRA_EDGES_TITLE")); + + /***************************************************************/ + GroupConstructors->setTitle(tr("GEOM_REMOVE_EXTRA_EDGES_TITLE")); + RadioButton1->setPixmap(image0); + RadioButton2->close(TRUE); + RadioButton3->close(TRUE); + + GroupPoints = new DlgRef_1Sel_QTD(this, "GroupPoints"); + GroupPoints->GroupBox1->setTitle(tr("GEOM_REMOVE_EXTRA_EDGES")); + GroupPoints->TextLabel1->setText(tr("GEOM_SELECTED_SHAPE")); + GroupPoints->PushButton1->setPixmap(image1); + GroupPoints->LineEdit1->setReadOnly( true ); + + Layout1->addWidget(GroupPoints, 2, 0); + /***************************************************************/ + + setHelpFileName("remove_extra_edges_operation_page.html"); + + Init(); +} + + +//================================================================================= +// function : ~RepairGUI_RemoveExtraEdgesDlg() +// purpose : Destroys the object and frees any allocated resources +//================================================================================= +RepairGUI_RemoveExtraEdgesDlg::~RepairGUI_RemoveExtraEdgesDlg() +{ +} + + +//================================================================================= +// function : Init() +// purpose : +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::Init() +{ + /* init variables */ + myEditCurrentArgument = GroupPoints->LineEdit1; + + myOkObject = false; + + activateSelection(); + + /* 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(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); + + connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + + initName( tr( "REMOVE_EXTRA_EDGES_NEW_OBJ_NAME" ) ); +} + + +//================================================================================= +// function : ClickOnOk() +// purpose : Same than click on apply but close this dialog. +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::ClickOnOk() +{ + if ( ClickOnApply() ) + ClickOnCancel(); +} + +//================================================================================= +// function : ClickOnApply() +// purpose : +//================================================================================= +bool RepairGUI_RemoveExtraEdgesDlg::ClickOnApply() +{ + if ( !onAccept() ) + return false; + + initName(); + + myEditCurrentArgument->setText(""); + myObject = GEOM::GEOM_Object::_nil(); + + activateSelection(); + + return true; +} + + +//================================================================================= +// function : SelectionIntoArgument() +// purpose : Called when selection as changed or other case +// : used only by SelectButtonC1A1 (LineEditC1A1) +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::SelectionIntoArgument() +{ + myEditCurrentArgument->setText(""); + QString aName; + + if(myEditCurrentArgument == GroupPoints->LineEdit1) { + if (IObjectCount() != 1) { + if (myEditCurrentArgument == GroupPoints->LineEdit1) + myOkObject = false; + return; + } + } + + // nbSel == 1 + Standard_Boolean testResult = Standard_False; + GEOM::GEOM_Object_ptr aSelectedObject = + GEOMBase::ConvertIOinGEOMObject( firstIObject(), testResult ); + + if (!testResult) + return; + + if (myEditCurrentArgument == GroupPoints->LineEdit1) { + myObject = aSelectedObject; + myOkObject = true; + } + + myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); +} + +//================================================================================= +// function : SetEditCurrentArgument() +// purpose : +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::SetEditCurrentArgument() +{ + if( sender() == GroupPoints->PushButton1 ) + { + GroupPoints->LineEdit1->setFocus(); + myEditCurrentArgument = GroupPoints->LineEdit1; + } + SelectionIntoArgument(); +} + + +//================================================================================= +// function : LineEditReturnPressed() +// purpose : +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::LineEditReturnPressed() +{ + if( sender() == GroupPoints->LineEdit1 ) + { + myEditCurrentArgument = GroupPoints->LineEdit1; + GEOMBase_Skeleton::LineEditReturnPressed(); + } +} + + +//================================================================================= +// function : ActivateThisDialog() +// purpose : +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::ActivateThisDialog() +{ + GEOMBase_Skeleton::ActivateThisDialog(); + connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + + activateSelection(); +} + + +//================================================================================= +// function : enterEvent() +// purpose : Mouse enter onto the dialog to activate it +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::enterEvent(QEvent* e) +{ + if ( !GroupConstructors->isEnabled() ) + ActivateThisDialog(); +} + + +//================================================================================= +// function : closeEvent() +// purpose : +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::closeEvent(QCloseEvent* e) +{ + GEOMBase_Skeleton::closeEvent( e ); +} + +//================================================================================= +// function : activateSelection +// purpose : activate selection of solids and compounds +//================================================================================= +void RepairGUI_RemoveExtraEdgesDlg::activateSelection() +{ + TColStd_MapOfInteger aTypes; + aTypes.Add( GEOM_SOLID ); + aTypes.Add( GEOM_COMPOUND ); + globalSelection( aTypes ); +} + +//================================================================================= +// function : createOperation +// purpose : +//================================================================================= +GEOM::GEOM_IOperations_ptr RepairGUI_RemoveExtraEdgesDlg::createOperation() +{ + return getGeomEngine()->GetIBlocksOperations( getStudyId() ); +} + +//================================================================================= +// function : isValid +// purpose : +//================================================================================= +bool RepairGUI_RemoveExtraEdgesDlg::isValid( QString& msg ) +{ + return myOkObject; +} + +//================================================================================= +// function : execute +// purpose : +//================================================================================= +bool RepairGUI_RemoveExtraEdgesDlg::execute( ObjectList& objects ) +{ + GEOM::GEOM_Object_var anObj; + + anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->RemoveExtraEdges(myObject); + + if ( !anObj->_is_nil() ) + objects.push_back( anObj._retn() ); + + return true; +} diff --git a/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h new file mode 100644 index 000000000..41c881eec --- /dev/null +++ b/src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.h @@ -0,0 +1,77 @@ +// GEOM GEOMGUI : GUI for Geometry component +// +// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// 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. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// +// +// +// File : RepairGUI_RemoveExtraEdgesDlg.h +// Author : Michael ZORIN +// Module : GEOM + +#ifndef DIALOGBOX_REMOVEEXTRAEDGES_H +#define DIALOGBOX_REMOVEEXTRAEDGES_H + +#include "GEOMBase_Skeleton.h" +#include "DlgRef_1Sel_QTD.h" + +//================================================================================= +// class : RepairGUI_RemoveExtraEdgesDlg +// purpose : Remove all seam and degenerated edges from a given shape. +//================================================================================= +class RepairGUI_RemoveExtraEdgesDlg : public GEOMBase_Skeleton +{ + Q_OBJECT + +public: + RepairGUI_RemoveExtraEdgesDlg(GeometryGUI* theGeometryGUI, QWidget* parent = 0, + const char* name = 0, bool modal = FALSE, WFlags fl = 0); + ~RepairGUI_RemoveExtraEdgesDlg(); + +protected: + // redefined from GEOMBase_Helper + virtual GEOM::GEOM_IOperations_ptr createOperation(); + virtual bool isValid( QString& ); + virtual bool execute( ObjectList& objects ); + +private : + void Init(); + void enterEvent(QEvent* e); + void closeEvent(QCloseEvent* e); + + void activateSelection(); + + GEOM::GEOM_Object_var myObject; + bool myOkObject; + + DlgRef_1Sel_QTD* GroupPoints; + + +private slots: + void ClickOnOk(); + bool ClickOnApply(); + + void ActivateThisDialog(); + + void LineEditReturnPressed(); + void SelectionIntoArgument(); + void SetEditCurrentArgument(); +}; + +#endif // DIALOGBOX_REMOVEEXTRAEDGES_H -- 2.39.2