From d45b760938e98b786a297c3c35f737ec3e674946 Mon Sep 17 00:00:00 2001 From: jfa Date: Fri, 21 Dec 2012 13:13:33 +0000 Subject: [PATCH] Mantis issue 0021852: EDF 1680 GEOM: Publish 'Check free boundaries' results in the Object Browser --- doc/salome/gui/GEOM/images/repair9.png | Bin 9949 -> 15492 bytes doc/salome/gui/GEOM/input/boudaries.doc | 6 +- src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx | 2 +- src/BlocksGUI/BlocksGUI_ExplodeDlg.h | 2 +- src/EntityGUI/EntityGUI_SubShapeDlg.cxx | 2 +- src/EntityGUI/EntityGUI_SubShapeDlg.h | 2 +- src/GEOMBase/GEOMBase_Helper.cxx | 11 +- src/GEOMBase/GEOMBase_Helper.h | 45 ++- src/GEOMBase/GEOMBase_Skeleton.cxx | 5 +- src/GEOMBase/GEOMBase_Skeleton.h | 5 +- src/GEOMGUI/GEOM_images.ts | 4 + src/GEOMGUI/GEOM_msg_en.ts | 8 + src/RepairGUI/RepairGUI_FreeBoundDlg.cxx | 332 ++++++++++------------- src/RepairGUI/RepairGUI_FreeBoundDlg.h | 41 ++- 14 files changed, 220 insertions(+), 245 deletions(-) diff --git a/doc/salome/gui/GEOM/images/repair9.png b/doc/salome/gui/GEOM/images/repair9.png index 72b7d32afd0c9807c62ffb31f536120270360847..04c3035f2f9254ee86ad8a3a356b92d5ceca8ca7 100755 GIT binary patch literal 15492 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 literal 9949 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 l`;pIZZJIAu#{| diff --git a/doc/salome/gui/GEOM/input/boudaries.doc b/doc/salome/gui/GEOM/input/boudaries.doc index 65acdc06a..de1e84a73 100644 --- a/doc/salome/gui/GEOM/input/boudaries.doc +++ b/doc/salome/gui/GEOM/input/boudaries.doc @@ -2,8 +2,10 @@ \page boundaries_page Check Free Boundaries -Detects and highlights wires and edges that are not shared between +Detects and highlights wires and edges that are not shared between two faces and are considered a shape's boundary. +
Creates corresponding objects and publishes them into the study on +"Apply" or "Apply and Close". TUI Command: (NoError, ClosedWires, OpenWires) = geompy.GetFreeBoundary(Shape), where \em Shape is a shape to be @@ -15,4 +17,4 @@ See also a \ref tui_free_boundaries_page "TUI example". \image html repair9.png -*/ \ No newline at end of file +*/ diff --git a/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx b/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx index a03687eab..c50811b82 100644 --- a/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx +++ b/src/BlocksGUI/BlocksGUI_ExplodeDlg.cxx @@ -509,7 +509,7 @@ GEOM::GEOM_Object_ptr BlocksGUI_ExplodeDlg::getFather( GEOM::GEOM_Object_ptr ) // Function : getNewObjectName // Purpose : Redefine this method to return proper name for a new object //================================================================ -QString BlocksGUI_ExplodeDlg::getNewObjectName() const +QString BlocksGUI_ExplodeDlg::getNewObjectName (int) const { return QString::null; } diff --git a/src/BlocksGUI/BlocksGUI_ExplodeDlg.h b/src/BlocksGUI/BlocksGUI_ExplodeDlg.h index 6be87bef4..1f396ccc5 100644 --- a/src/BlocksGUI/BlocksGUI_ExplodeDlg.h +++ b/src/BlocksGUI/BlocksGUI_ExplodeDlg.h @@ -50,7 +50,7 @@ protected: virtual bool execute( ObjectList& ); virtual GEOM::GEOM_Object_ptr getFather( GEOM::GEOM_Object_ptr ); - virtual QString getNewObjectName() const; + virtual QString getNewObjectName (int CurrObj = -1) const; private: void Init(); diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx index 5facd0411..3de5f8e89 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx @@ -831,7 +831,7 @@ GEOM::GEOM_Object_ptr EntityGUI_SubShapeDlg::getFather(GEOM::GEOM_Object_ptr) // Function : getNewObjectName // Purpose : //================================================================ -QString EntityGUI_SubShapeDlg::getNewObjectName() const +QString EntityGUI_SubShapeDlg::getNewObjectName (int) const { return QString::null; } diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.h b/src/EntityGUI/EntityGUI_SubShapeDlg.h index d9bf30a3f..816059e86 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.h +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.h @@ -51,7 +51,7 @@ protected: virtual bool isValid (QString&); virtual bool execute (ObjectList&); virtual GEOM::GEOM_Object_ptr getFather (GEOM::GEOM_Object_ptr); - virtual QString getNewObjectName() const; + virtual QString getNewObjectName (int CurrObj = -1) const; void closeEvent (QCloseEvent*); diff --git a/src/GEOMBase/GEOMBase_Helper.cxx b/src/GEOMBase/GEOMBase_Helper.cxx index 53d2c0ecc..912dd15f6 100755 --- a/src/GEOMBase/GEOMBase_Helper.cxx +++ b/src/GEOMBase/GEOMBase_Helper.cxx @@ -18,12 +18,11 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// // GEOM GEOMGUI : GUI for Geometry component // File : GEOMBase_Helper.cxx // Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com) -// + #include "GEOMBase_Helper.h" #include "GEOMBase.h" #include "GEOM_Operation.h" @@ -858,11 +857,11 @@ bool GEOMBase_Helper::onAccept( const bool publish, const bool useTransaction, b addSubshapesToStudy(); // add Sub-shapes if local selection const int nbObjs = objects.size(); QStringList anEntryList; - int aNumber = 1; - for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it ) { + int currObj = 1, aNumber = 1; + for ( ObjectList::iterator it = objects.begin(); it != objects.end(); ++it, currObj++ ) { GEOM::GEOM_Object_var obj=*it; if ( publish ) { - QString aName = getNewObjectName(); + QString aName = getNewObjectName(currObj); if ( nbObjs > 1 ) { if (aName.isEmpty()) aName = getPrefix(obj); @@ -1006,7 +1005,7 @@ GEOM::GEOM_Object_ptr GEOMBase_Helper::getFather( GEOM::GEOM_Object_ptr theObj ) // Function : getNewObjectName // Purpose : Redefine this method to return proper name for a new object //================================================================ -QString GEOMBase_Helper::getNewObjectName() const +QString GEOMBase_Helper::getNewObjectName (int) const { return QString::null; } diff --git a/src/GEOMBase/GEOMBase_Helper.h b/src/GEOMBase/GEOMBase_Helper.h index 5d32fd268..87d96cfd4 100755 --- a/src/GEOMBase/GEOMBase_Helper.h +++ b/src/GEOMBase/GEOMBase_Helper.h @@ -18,12 +18,11 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// // GEOM GEOMGUI : GUI for Geometry component // File : GEOMBase_Helper.h // Author : Sergey ANIKIN, Open CASCADE S.A.S. (sergey.anikin@opencascade.com) -// + #ifndef GEOMBASE_HELPER_H #define GEOMBASE_HELPER_H @@ -51,7 +50,7 @@ class TColStd_MapOfInteger; //================================================================ // Class : GEOMBase_Helper -// Description : Helper class for dialog box development, can be used as +// Description : Helper class for dialog box development, can be used as // the second base class for dialog boxes. Contains convenient methods // performing common operations (display/erase, selection activation, // publication in a study, transaction management) @@ -73,24 +72,24 @@ protected: void redisplay ( GEOM::GEOM_Object_ptr, const bool = true, const bool = true ); virtual void displayPreview ( const bool display, - const bool activate = false, + const bool activate = false, const bool update = true, const bool toRemoveFromEngine = true, - const double lineWidth = -1, + const double lineWidth = -1, const int displayMode = -1, const int color = -1 ); // This is the easiest way to show preview. It is based on execute() method. // It removes temporary GEOM::GEOM_Objects automatically. - virtual void displayPreview ( GEOM::GEOM_Object_ptr obj, - const bool append = false, - const bool activate = false, + virtual void displayPreview ( GEOM::GEOM_Object_ptr obj, + const bool append = false, + const bool activate = false, const bool update = true, - const double lineWidth = -1, + const double lineWidth = -1, const int displayMode = -1, const int color = -1 ); - void displayPreview ( const SALOME_Prs* prs, - const bool append = false, + void displayPreview ( const SALOME_Prs* prs, + const bool append = false, const bool = true ); void erasePreview ( const bool = true ); @@ -105,7 +104,7 @@ protected: void prepareSelection( const ObjectList&, const int ); void prepareSelection( GEOM::GEOM_Object_ptr, const int ); - QString addInStudy ( GEOM::GEOM_Object_ptr, const char* theName ); + QString addInStudy ( GEOM::GEOM_Object_ptr, const char* theName ); bool openCommand (); bool abortCommand (); @@ -119,7 +118,7 @@ protected: bool onAccept( const bool publish = true, const bool useTransaction = true, bool erasePreviewFlag = true); // This method should be called from "OK" button handler. - // == true means that objects returned by execute() + // == true means that objects returned by execute() // should be published in a study. void showError(); @@ -134,16 +133,16 @@ protected: inline void setPrefix( const QString& prefix ) { myPrefix = prefix; } QString getPrefix( GEOM::GEOM_Object_ptr = GEOM::GEOM_Object::_nil() ) const; - + bool selectObjects( ObjectList& objects ); - // Selects list of objects + // Selects list of objects //////////////////////////////////////////////////////////////////////////// // Virtual methods, to be redefined in dialog classes //////////////////////////////////////////////////////////////////////////// virtual GEOM::GEOM_IOperations_ptr createOperation(); - // This method should be redefined in dialog boxes so as to return + // This method should be redefined in dialog boxes so as to return // proper GEOM_IOperation interface. // Returns nil reference by default @@ -151,9 +150,9 @@ protected: // Called by onAccept(). Redefine this method to check validity of user input in dialog boxes. virtual bool execute( ObjectList& objects ); - // This method is called by onAccept(). - // It should perform the required operation and put all new or modified objects into - // argument.Should return if some error occurs during its execution. + // This method is called by onAccept(). + // It should perform the required operation and put all new or modified objects into + // argument.Should return if some error occurs during its execution. virtual void restoreSubShapes( SALOMEDS::Study_ptr theStudy, SALOMEDS::SObject_ptr theSObject ); // This method is called by addInStudy(). @@ -163,7 +162,7 @@ protected: // for or a nil reference if should be published // as a top-level object. - virtual QString getNewObjectName() const; + virtual QString getNewObjectName (int CurrObj = -1) const; virtual bool extractPrefix() const; virtual void addSubshapesToStudy(); @@ -187,12 +186,11 @@ protected: virtual void setIsOptimizedBrowsing( const bool theFlag ); virtual bool isOptimizedBrowsing() const; - + virtual void setIsWaitCursorEnabled( const bool theFlag ) {myIsWaitCursorEnabled = theFlag;} virtual bool isWaitCursorEnabled() const {return myIsWaitCursorEnabled ;} virtual void setIsDisableBrowsing( const bool theFlag ) { myIsDisableBrowsing = theFlag; } virtual bool isDisableBrowsing() const { return myIsDisableBrowsing; } - private: QString getEntry( GEOM::GEOM_Object_ptr ) const; @@ -213,9 +211,8 @@ private: bool myIsApplyAndClose; bool myIsOptimizedBrowsing; bool myIsWaitCursorEnabled; - bool myIsDisableBrowsing; //This flag enable/disable selection + bool myIsDisableBrowsing; //This flag enable/disable selection //in the Object Browser newly created objects. - }; #endif // GEOMBASE_HELPER_H diff --git a/src/GEOMBase/GEOMBase_Skeleton.cxx b/src/GEOMBase/GEOMBase_Skeleton.cxx index 57be34955..d6f286425 100644 --- a/src/GEOMBase/GEOMBase_Skeleton.cxx +++ b/src/GEOMBase/GEOMBase_Skeleton.cxx @@ -18,12 +18,11 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// // GEOM GEOMGUI : GUI for Geometry component // File : GEOMBase_Skeleton.cxx // Author : Damien COQUERET, Open CASCADE S.A.S. -// + #include "GEOMBase_Skeleton.h" #include "GEOMBase.h" @@ -293,7 +292,7 @@ void GEOMBase_Skeleton::initName( const QString& thePrefix ) // function : getNewObjectName() // purpose : returns contents of Name field //================================================================================= -QString GEOMBase_Skeleton::getNewObjectName() const +QString GEOMBase_Skeleton::getNewObjectName (int) const { return myMainFrame->ResultName->text(); } diff --git a/src/GEOMBase/GEOMBase_Skeleton.h b/src/GEOMBase/GEOMBase_Skeleton.h index bb6d75434..73bf0d2a2 100644 --- a/src/GEOMBase/GEOMBase_Skeleton.h +++ b/src/GEOMBase/GEOMBase_Skeleton.h @@ -18,12 +18,11 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// // GEOM GEOMGUI : GUI for Geometry component // File : GEOMBase_Skeleton.h // Author : Damine COQUERET, Open CASCADE S.A.S. -// + #ifndef GEOMBASE_SKELETON_H #define GEOMBASE_SKELETON_H @@ -74,7 +73,7 @@ protected: /*! returns contents of "Name" field */ - virtual QString getNewObjectName() const; + virtual QString getNewObjectName (int CurrObj = -1) const; /*! returns id of a selected "constructor" radio button or '-1' in case of error */ diff --git a/src/GEOMGUI/GEOM_images.ts b/src/GEOMGUI/GEOM_images.ts index 9cd7e615e..e375fc5d5 100644 --- a/src/GEOMGUI/GEOM_images.ts +++ b/src/GEOMGUI/GEOM_images.ts @@ -259,6 +259,10 @@ ICON_DLG_FREE_FACES free_faces.png + + ICON_DLG_FREE_BOUNDS + free_bound.png + ICON_DLG_FUSE fuse.png diff --git a/src/GEOMGUI/GEOM_msg_en.ts b/src/GEOMGUI/GEOM_msg_en.ts index 9abe92cbc..064abaa7f 100644 --- a/src/GEOMGUI/GEOM_msg_en.ts +++ b/src/GEOMGUI/GEOM_msg_en.ts @@ -5414,6 +5414,14 @@ Number of sketch points too small NUMBER_OPEN Number of open free boundaries: + + NAME_CLOSED + Closed_Free_Boundary_%1 + + + NAME_OPEN + Open_Free_Boundary_%1 + RepairGUI_GlueDlg diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx index 3ef492fcc..6f76359f6 100644 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx +++ b/src/RepairGUI/RepairGUI_FreeBoundDlg.cxx @@ -18,15 +18,16 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// // GEOM GEOMGUI : GUI for Geometry component // File : RepairGUI_FreeBoundDlg.cxx // Author : Sergey LITONIN, Open CASCADE S.A.S. (sergey.litonin@opencascade.com) -// + #include "RepairGUI_FreeBoundDlg.h" #include +#include + #include #include #include @@ -51,7 +52,7 @@ #include #define SPACING 6 -#define MARGIN 9 +#define MARGIN 0 /*! Class : RepairGUI_FreeBoundDlg @@ -62,59 +63,55 @@ // function : RepairGUI_FreeBoundDlg // purpose : Constructor //================================================================================= -RepairGUI_FreeBoundDlg::RepairGUI_FreeBoundDlg( GeometryGUI* theGUI, QWidget* theParent ) - : QDialog( theParent, 0 ), - GEOMBase_Helper( dynamic_cast( theParent ) ), - myGeomGUI( theGUI ) +RepairGUI_FreeBoundDlg::RepairGUI_FreeBoundDlg (GeometryGUI* theGUI, QWidget* theParent) + : GEOMBase_Skeleton(theGUI, theParent) { - setAttribute( Qt::WA_DeleteOnClose ); - - setWindowTitle( tr( "CAPTION" ) ); - - QPixmap iconSelect( SUIT_Session::session()->resourceMgr()->loadPixmap( "GEOM", tr( "ICON_SELECT" ) ) ); - - QGroupBox* aMainGrp = new QGroupBox( tr( "FREE_BOUND" ), this ); - - QLabel* lab = new QLabel( tr( "GEOM_OBJECT" ), aMainGrp ); - QPushButton* btn = new QPushButton( aMainGrp ); - btn->setIcon( iconSelect ); - myEdit = new QLineEdit( aMainGrp ); - myEdit->setReadOnly( true ); - myEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); - - myClosedLbl = new QLabel( tr( "NUMBER_CLOSED" ), aMainGrp ); - myOpenLbl = new QLabel( tr( "NUMBER_OPEN" ), aMainGrp ); - myClosedLbl->setMinimumWidth( 150 ); - myOpenLbl->setMinimumWidth( 150 ); - - QGridLayout* aMainGrpLayout = new QGridLayout( aMainGrp ); - aMainGrpLayout->setMargin( MARGIN ); aMainGrpLayout->setSpacing( SPACING ); - aMainGrpLayout->addWidget( lab, 0, 0 ); - aMainGrpLayout->addWidget( btn, 0, 1 ); - aMainGrpLayout->addWidget( myEdit, 0, 2 ); - aMainGrpLayout->addWidget( myClosedLbl, 1, 0, 1, 3 ); - aMainGrpLayout->addWidget( myOpenLbl, 2, 0, 1, 3 ); - - QFrame* aFrame = new QFrame( this ); - aFrame->setFrameStyle( QFrame::Box | QFrame::Sunken ); - QPushButton* aCloseBtn = new QPushButton( tr( "GEOM_BUT_CLOSE" ), aFrame ); - QPushButton* aHelpBtn = new QPushButton( tr( "GEOM_BUT_HELP" ), aFrame ); - QHBoxLayout* aBtnLay = new QHBoxLayout( aFrame ); - aBtnLay->setMargin( MARGIN ); aBtnLay->setSpacing( SPACING ); - aBtnLay->addWidget( aCloseBtn ); - aBtnLay->addSpacing( SPACING ); aBtnLay->addStretch(); - aBtnLay->addWidget( aHelpBtn ); - - QVBoxLayout* aLay = new QVBoxLayout( this ); - aLay->setSpacing( SPACING ); - aLay->setMargin( MARGIN ); - aLay->addWidget( aMainGrp ); - aLay->addWidget( aFrame ); - - myHelpFileName = "using_measurement_tools_page.html#boundaries_anchor"; - - connect( aCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) ); - connect( aHelpBtn, SIGNAL( clicked() ), SLOT( onHelp() ) ); + QPixmap image0 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_FREE_BOUNDS"))); + QPixmap image1 (SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT"))); + + setWindowTitle(tr("CAPTION")); + + /***************************************************************/ + + mainFrame()->GroupConstructors->setTitle(tr("FREE_BOUND")); + mainFrame()->RadioButton1->setIcon(image0); + mainFrame()->RadioButton2->setAttribute(Qt::WA_DeleteOnClose); + mainFrame()->RadioButton2->close(); + mainFrame()->RadioButton3->setAttribute(Qt::WA_DeleteOnClose); + mainFrame()->RadioButton3->close(); + + mainFrame()->GroupBoxName->hide(); + + QGroupBox* aMainGrp = new QGroupBox (tr("FREE_BOUND"), this); + + QLabel* lab = new QLabel (tr("GEOM_OBJECT"), aMainGrp); + QPushButton* btn = new QPushButton (aMainGrp); + btn->setIcon(image1); + myEdit = new QLineEdit (aMainGrp); + myEdit->setReadOnly(true); + myEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); + + myClosedLbl = new QLabel (tr("NUMBER_CLOSED"), aMainGrp); + myOpenLbl = new QLabel (tr("NUMBER_OPEN"), aMainGrp); + myClosedLbl->setMinimumWidth(150); + myOpenLbl->setMinimumWidth(150); + + QGridLayout* aMainGrpLayout = new QGridLayout (aMainGrp); + aMainGrpLayout->addWidget(lab, 0, 0); + aMainGrpLayout->addWidget(btn, 0, 1); + aMainGrpLayout->addWidget(myEdit, 0, 2); + aMainGrpLayout->addWidget(myClosedLbl, 1, 0, 1, 3); + aMainGrpLayout->addWidget(myOpenLbl, 2, 0, 1, 3); + + QVBoxLayout* aLay = new QVBoxLayout (centralWidget()); + aLay->setSpacing(SPACING); + aLay->setMargin(MARGIN); + aLay->addWidget(aMainGrp); + + resize(minimumSizeHint()); + /***************************************************************/ + + myHelpFileName = "boundaries_page.html"; Init(); } @@ -128,126 +125,99 @@ RepairGUI_FreeBoundDlg::~RepairGUI_FreeBoundDlg() } //================================================================================= -// function : onClose -// purpose : SLOT. Called when "close" button pressed. Close dialog +// function : Init +// purpose : Initialize dialog fields //================================================================================= -void RepairGUI_FreeBoundDlg::onClose() +void RepairGUI_FreeBoundDlg::Init() { - globalSelection(); - disconnect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), 0, this, 0 ); - myGeomGUI->SetActiveDialogBox( 0 ); - reject(); - erasePreview(); + myNbClosed = myNbOpen = 0; + myObj = GEOM::GEOM_Object::_nil(); + + myEditCurrentArgument = myEdit; + + connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk())); + connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply())); + + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(SelectionIntoArgument())); + + activateSelection(); + SelectionIntoArgument(); } //================================================================================= -// function : onHelp() +// function : ClickOnOk() // purpose : //================================================================================= -void RepairGUI_FreeBoundDlg::onHelp() +void RepairGUI_FreeBoundDlg::ClickOnOk() { - LightApp_Application* app = (LightApp_Application*)( SUIT_Session::session()->activeApplication() ); - if ( app ) - app->onHelpContextModule( myGeomGUI ? app->moduleName( myGeomGUI->moduleName() ) : QString(""), myHelpFileName ); - else { - QString platform; -#ifdef WIN32 - platform = "winapplication"; -#else - platform = "application"; -#endif - SUIT_MessageBox::warning( this, - tr( "WRN_WARNING" ), - tr( "EXTERNAL_BROWSER_CANNOT_SHOW_PAGE"). - arg( app->resourceMgr()->stringValue( "ExternalBrowser", - platform ) ).arg( myHelpFileName ) ); - } + if (ClickOnApply()) + ClickOnCancel(); } //================================================================================= -// function : onDeactivate -// purpose : Deactivate this dialog +// function : ClickOnApply() +// purpose : //================================================================================= -void RepairGUI_FreeBoundDlg::onDeactivate() +bool RepairGUI_FreeBoundDlg::ClickOnApply() { - setEnabled( false ); - globalSelection(); - disconnect( myGeomGUI->getApp()->selectionMgr(), 0, this, 0 ); - myGeomGUI->SetActiveDialogBox( 0 ); + if (!onAccept()) + return false; + return true; } //================================================================================= -// function : onActivate -// purpose : Activate this dialog +// function : ActivateThisDialog() +// purpose : //================================================================================= -void RepairGUI_FreeBoundDlg::onActivate() +void RepairGUI_FreeBoundDlg::ActivateThisDialog() { - myGeomGUI->EmitSignalDeactivateDialog(); - setEnabled( true ); - myGeomGUI->SetActiveDialogBox( this ); - connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), - SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) ); + GEOMBase_Skeleton::ActivateThisDialog(); + + connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()), + this, SLOT(SelectionIntoArgument())); + activateSelection(); - onSelectionDone(); + displayPreview(true); } //================================================================================= -// function : onSelectionDone -// purpose : SLOT. Called when selection changed. +// function : enterEvent() +// purpose : //================================================================================= -void RepairGUI_FreeBoundDlg::onSelectionDone() +void RepairGUI_FreeBoundDlg::enterEvent(QEvent*) { - LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); - SALOME_ListIO aSelList; - aSelMgr->selectedObjects(aSelList); - - if ( aSelList.Extent() != 1 ) - return; - - GEOM::GEOM_Object_var anObj = - GEOMBase::ConvertIOinGEOMObject( aSelList.First() ); - - if ( !GEOMBase::IsShape( anObj ) ) - return; - else { - myObj = anObj; - displayPreview( true, false, true, true, 3 ); - } + if (!mainFrame()->GroupConstructors->isEnabled()) + ActivateThisDialog(); } //================================================================================= -// function : Init -// purpose : Initialize dialog fields +// function : SelectionIntoArgument +// purpose : SLOT. Called when selection changed. //================================================================================= -void RepairGUI_FreeBoundDlg::Init() +void RepairGUI_FreeBoundDlg::SelectionIntoArgument() { - myNbClosed = myNbOpen = 0; + myEditCurrentArgument->setText(""); + myClosedLbl->setText(tr("NUMBER_CLOSED")); + myOpenLbl->setText(tr("NUMBER_OPEN")); myObj = GEOM::GEOM_Object::_nil(); + erasePreview(); - connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), SLOT ( onDeactivate() ) ); - connect( ( (SalomeApp_Application*)( SUIT_Session::session()->activeApplication() ) )->selectionMgr(), - SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) ); + LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr(); + SALOME_ListIO aSelList; + aSelMgr->selectedObjects(aSelList); - activateSelection(); - onSelectionDone(); -} + if (aSelList.Extent() != 1) + return; -//================================================================================= -// function : enterEvent -// purpose : Activate dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::enterEvent( QEvent* ) -{ - onActivate(); -} + GEOM::GEOM_Object_var anObj = GEOMBase::ConvertIOinGEOMObject(aSelList.First()); -//================================================================================= -// function : closeEvent -// purpose : Close dialog -//================================================================================= -void RepairGUI_FreeBoundDlg::closeEvent( QCloseEvent* ) -{ - onClose(); + if (!GEOMBase::IsShape(anObj)) + return; + + myObj = anObj; + myEditCurrentArgument->setText(GEOMBase::GetName(myObj)); + displayPreview(true, false, true, true, 3); } //================================================================================= @@ -257,11 +227,11 @@ void RepairGUI_FreeBoundDlg::closeEvent( QCloseEvent* ) void RepairGUI_FreeBoundDlg::activateSelection() { TColStd_MapOfInteger aMap; - aMap.Add( GEOM_FACE ); - aMap.Add( GEOM_SHELL ); - aMap.Add( GEOM_SOLID ); - aMap.Add( GEOM_COMPOUND ); - globalSelection( aMap ); + aMap.Add(GEOM_FACE); + aMap.Add(GEOM_SHELL); + aMap.Add(GEOM_SOLID); + aMap.Add(GEOM_COMPOUND); + globalSelection(aMap); } //================================================================================= @@ -270,14 +240,14 @@ void RepairGUI_FreeBoundDlg::activateSelection() //================================================================================= GEOM::GEOM_IOperations_ptr RepairGUI_FreeBoundDlg::createOperation() { - return getGeomEngine()->GetIHealingOperations( getStudyId() ); + return getGeomEngine()->GetIHealingOperations(getStudyId()); } //================================================================================= // function : isValid // purpose : //================================================================================= -bool RepairGUI_FreeBoundDlg::isValid( QString& ) +bool RepairGUI_FreeBoundDlg::isValid (QString&) { return !myObj->_is_nil(); } @@ -286,52 +256,50 @@ bool RepairGUI_FreeBoundDlg::isValid( QString& ) // function : execute // purpose : Get free boundaries //================================================================================= -bool RepairGUI_FreeBoundDlg::execute( ObjectList& objects ) +bool RepairGUI_FreeBoundDlg::execute (ObjectList& objects) { - if ( !IsPreview() || myObj->_is_nil() ) - return false; - GEOM::ListOfGO_var aClosed, anOpen; - GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() ); - bool result = anOper->GetFreeBoundary( myObj, aClosed, anOpen ); + GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation()); + bool result = anOper->GetFreeBoundary(myObj, aClosed, anOpen); - if ( result ) { + if (result) { myNbClosed = aClosed->length(); myNbOpen = anOpen->length(); int i; - for ( i = 0; i < myNbClosed; i++ ) - objects.push_back( aClosed[i]._retn() ); - for ( i = 0; i < myNbOpen; i++ ) - objects.push_back( anOpen[i]._retn() ); - - myEdit->setText( GEOMBase::GetName( myObj ) ); - QString aLabelText = tr( "NUMBER_CLOSED" ) + QString( "%1" ).arg( myNbClosed ); - myClosedLbl->setText( aLabelText ); - aLabelText = tr( "NUMBER_OPEN" ) + QString( "%1" ).arg( myNbOpen ); - myOpenLbl->setText( aLabelText ); - } - else { - myEdit->setText( GEOMBase::GetName( myObj ) ); - myClosedLbl->setText( tr( "NUMBER_CLOSED" ) ); - myOpenLbl->setText( tr( "NUMBER_OPEN" ) ); + for (i = 0; i < myNbClosed; i++) + objects.push_back(aClosed[i]._retn()); + for (i = 0; i < myNbOpen; i++) + objects.push_back(anOpen[i]._retn()); + + QString aLabelText = tr("NUMBER_CLOSED") + QString("%1").arg(myNbClosed); + myClosedLbl->setText(aLabelText); + aLabelText = tr("NUMBER_OPEN") + QString("%1").arg(myNbOpen); + myOpenLbl->setText(aLabelText); } + myCurrObj = 1; return result; } -//================================================================================= -// function : keyPressEvent() -// purpose : -//================================================================================= -void RepairGUI_FreeBoundDlg::keyPressEvent( QKeyEvent* e ) +//================================================================ +// Function : getNewObjectName +// Purpose : Redefine this method to return proper name for a new object +//================================================================ +QString RepairGUI_FreeBoundDlg::getNewObjectName (int currObj) const { - QDialog::keyPressEvent( e ); - if ( e->isAccepted() ) - return; + QString aName = tr("NAME_CLOSED").arg(currObj); + if (currObj > myNbClosed) + aName = tr("NAME_OPEN").arg(currObj); + return aName; +} - if ( e->key() == Qt::Key_F1 ) { - e->accept(); - onHelp(); - } +//================================================================ +// Function : getFather +// Purpose : Get father object for object to be added in study +// (called with addInStudy method) +//================================================================ +GEOM::GEOM_Object_ptr RepairGUI_FreeBoundDlg::getFather (GEOM::GEOM_Object_ptr) +{ + return myObj; } diff --git a/src/RepairGUI/RepairGUI_FreeBoundDlg.h b/src/RepairGUI/RepairGUI_FreeBoundDlg.h index af65e1602..f9ac7bc7c 100644 --- a/src/RepairGUI/RepairGUI_FreeBoundDlg.h +++ b/src/RepairGUI/RepairGUI_FreeBoundDlg.h @@ -18,17 +18,16 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -// // GEOM GEOMGUI : GUI for Geometry component // File : RepairGUI_FreeBoundDlg.h // Author : Sergey LITONIN, Open CASCADE S.A.S. (sergey.litonin@opencascade.com) -// + #ifndef REPAIRGUI_FREEBOUNDDLG_H #define REPAIRGUI_FREEBOUNDDLG_H #include -#include +#include class QLineEdit; class QLabel; @@ -38,42 +37,42 @@ class GeometryGUI; // class : RepairGUI_FreeBoundDlg // purpose : Dialog for displaying free boundaries of selected face, shell or solid //================================================================================= -class RepairGUI_FreeBoundDlg : public QDialog, - public GEOMBase_Helper +class RepairGUI_FreeBoundDlg : public GEOMBase_Skeleton { Q_OBJECT public: - RepairGUI_FreeBoundDlg( GeometryGUI*, QWidget* ); + RepairGUI_FreeBoundDlg (GeometryGUI*, QWidget*); ~RepairGUI_FreeBoundDlg(); -private slots: - void onClose(); - void onHelp(); - void onDeactivate(); - void onActivate(); - void onSelectionDone(); +protected: + // redefined from GEOMBase_Helper + virtual GEOM::GEOM_IOperations_ptr createOperation(); + virtual bool isValid (QString&); + virtual bool execute (ObjectList&); + virtual GEOM::GEOM_Object_ptr getFather (GEOM::GEOM_Object_ptr); + virtual QString getNewObjectName (int CurrObj = -1) const; private: void Init(); - void enterEvent( QEvent* ); - void closeEvent( QCloseEvent* ); - void keyPressEvent( QKeyEvent* ); + void enterEvent (QEvent*); void activateSelection(); - - virtual GEOM::GEOM_IOperations_ptr createOperation(); - virtual bool execute( ObjectList& ); - virtual bool isValid( QString& ); private: QLineEdit* myEdit; QLabel* myClosedLbl; QLabel* myOpenLbl; + GEOM::GEOM_Object_var myObj; - GeometryGUI* myGeomGUI; int myNbClosed; int myNbOpen; - QString myHelpFileName; + int myCurrObj; + +private slots: + void ClickOnOk(); + bool ClickOnApply(); + void SelectionIntoArgument(); + void ActivateThisDialog(); }; #endif // REPAIRGUI_FREEBOUNDDLG_H -- 2.39.2