DCQ: New Architecture

This commit is contained in:
dcq 2003-11-17 16:30:37 +00:00
parent d8cfb81717
commit 08ce9c6c99
2 changed files with 360 additions and 703 deletions

View File

@ -30,27 +30,11 @@ using namespace std;
#include "RepairGUI_SuppressHoleDlg.h" #include "RepairGUI_SuppressHoleDlg.h"
#include "DisplayGUI.h" #include "DisplayGUI.h"
#include "TopExp_Explorer.hxx"
#include "QAD_RightFrame.h" #include "QAD_RightFrame.h"
#include "OCCViewer_Viewer3d.h" #include "OCCViewer_Viewer3d.h"
#include <qapplication.h> #include <TopExp_Explorer.hxx>
#include <qbuttongroup.h>
#include <qcheckbox.h>
#include <qgroupbox.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qlayout.h>
#include <qvariant.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qimage.h>
#include <qpixmap.h>
//================================================================================= //=================================================================================
// class : RepairGUI_SuppressHoleDlg() // class : RepairGUI_SuppressHoleDlg()
@ -59,199 +43,43 @@ using namespace std;
// The dialog will by default be modeless, unless you set 'modal' to // The dialog will by default be modeless, unless you set 'modal' to
// TRUE to construct a modal dialog. // TRUE to construct a modal dialog.
//================================================================================= //=================================================================================
RepairGUI_SuppressHoleDlg::RepairGUI_SuppressHoleDlg( QWidget* parent, RepairGUI_SuppressHoleDlg::RepairGUI_SuppressHoleDlg(QWidget* parent, const char* name, RepairGUI* theRepairGUI, SALOME_Selection* Sel, Handle(AIS_InteractiveContext) ic, bool modal, WFlags fl)
const char* name, :GEOMBase_Skeleton(parent, name, Sel, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu)
RepairGUI* theRepairGUI,
SALOME_Selection* Sel,
Handle (AIS_InteractiveContext) ic,
bool modal,
WFlags fl )
: QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )
{ {
QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_DLG_SUPRESS_HOLE"))); QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_DLG_SUPRESS_HOLE")));
QPixmap image1(QAD_Desktop::getResourceManager()->loadPixmap( "GEOM",tr("ICON_SELECT"))); QPixmap image1(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_DLG_SUPRESS_HOLE_FACE_SHELL")));
QPixmap image2(QAD_Desktop::getResourceManager()->loadPixmap( "GEOM",tr("ICON_DLG_SUPRESS_HOLE_FACE_SHELL"))); QPixmap image2(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_SELECT")));
if ( !name )
setName( "RepairGUI_SuppressHoleDlg" );
resize( 303, 204 );
setCaption(tr("GEOM_SUPPRESSHOLE_TITLE")); setCaption(tr("GEOM_SUPPRESSHOLE_TITLE"));
setSizeGripEnabled( TRUE );
RepairGUI_SuppressHoleLayout = new QGridLayout( this );
RepairGUI_SuppressHoleLayout->setSpacing( 6 );
RepairGUI_SuppressHoleLayout->setMargin( 11 );
/***************************************************************/ /***************************************************************/
GroupConstructors = new QButtonGroup( this, "GroupConstructors" );
GroupConstructors->setTitle(tr("")); GroupConstructors->setTitle(tr(""));
GroupConstructors->setExclusive( TRUE ); RadioButton1->setPixmap(image0);
GroupConstructors->setColumnLayout(0, Qt::Vertical ); RadioButton2->setPixmap(image1);
GroupConstructors->layout()->setSpacing( 0 ); RadioButton3->close(TRUE);
GroupConstructors->layout()->setMargin( 0 );
GroupConstructorsLayout = new QGridLayout( GroupConstructors->layout() );
GroupConstructorsLayout->setAlignment( Qt::AlignTop );
GroupConstructorsLayout->setSpacing( 6 );
GroupConstructorsLayout->setMargin( 11 );
Constructor1 = new QRadioButton( GroupConstructors, "Constructor1" ); Group1 = new DlgRef_1Sel3Check_QTD(this, "Group1");
Constructor1->setText( tr( "" ) ); Group1->GroupBox1->setTitle(tr(""));
Constructor1->setPixmap( image0 ); Group1->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
Constructor1->setChecked( TRUE ); Group1->CheckButton1->setText(tr("GEOM_SUPPRESSHOLE_SELECTFACE"));
Constructor1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, Constructor1->sizePolicy().hasHeightForWidth() ) ); Group1->CheckButton2->setText(tr("GEOM_SUPPRESSHOLE_SELECTWIRE"));
Constructor1->setMinimumSize( QSize( 50, 0 ) ); Group1->CheckButton3->setText(tr("GEOM_SUPPRESSHOLE_SELECTFACE_END"));
GroupConstructorsLayout->addWidget( Constructor1, 0, 0 ); Group1->PushButton1->setPixmap(image2);
QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
GroupConstructorsLayout->addItem( spacer, 0, 1 );
Constructor2 = new QRadioButton( GroupConstructors, "Constructor2" );
Constructor2->setText( tr( "" ) );
Constructor2->setPixmap( image2 );
Constructor2->setChecked( TRUE );
Constructor2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, Constructor2->sizePolicy().hasHeightForWidth() ) );
Constructor2->setMinimumSize( QSize( 50, 0 ) );
GroupConstructorsLayout->addWidget( Constructor2, 0, 2 );
QSpacerItem* spacer_4 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
GroupConstructorsLayout->addItem( spacer_4, 0, 3 );
RepairGUI_SuppressHoleLayout->addWidget( GroupConstructors, 0, 0 );
Group2 = new DlgRef_1Sel1Check_QTD(this, "Group2");
Group2->GroupBox1->setTitle(tr(""));
Group2->TextLabel1->setText(tr("GEOM_SUPPRESSHOLE_FACE_SHELL"));
Group2->CheckButton1->setText(tr("GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE"));
Group2->PushButton1->setPixmap(image2);
Layout1->addWidget(Group1, 1, 0);
Layout1->addWidget(Group2, 1, 0);
/***************************************************************/ /***************************************************************/
GroupButtons = new QGroupBox( this, "GroupButtons" );
GroupButtons->setTitle( tr( "" ) );
GroupButtons->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, GroupButtons->sizePolicy().hasHeightForWidth() ) );
GroupButtons->setColumnLayout(0, Qt::Vertical );
GroupButtons->layout()->setSpacing( 0 );
GroupButtons->layout()->setMargin( 0 );
GroupButtonsLayout = new QHBoxLayout( GroupButtons->layout() );
GroupButtonsLayout->setAlignment( Qt::AlignTop );
GroupButtonsLayout->setSpacing( 6 );
GroupButtonsLayout->setMargin( 11 );
buttonOk = new QPushButton( GroupButtons, "buttonOk" );
buttonOk->setText( tr( "GEOM_BUT_OK" ) );
buttonOk->setAutoDefault( TRUE );
buttonOk->setDefault( TRUE );
buttonOk->setAccel( 276824143 );
GroupButtonsLayout->addWidget( buttonOk );
QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
GroupButtonsLayout->addItem( spacer_2 );
buttonApply = new QPushButton( GroupButtons, "buttonApply" );
buttonApply->setText( tr( "GEOM_BUT_APPLY" ) );
buttonApply->setAutoDefault( TRUE );
buttonApply->setDefault( TRUE );
GroupButtonsLayout->addWidget( buttonApply );
buttonClose = new QPushButton( GroupButtons, "buttonClose" );
buttonClose->setText( tr( "GEOM_BUT_CLOSE" ) );
buttonClose->setAutoDefault( TRUE );
GroupButtonsLayout->addWidget( buttonClose );
RepairGUI_SuppressHoleLayout->addWidget( GroupButtons, 2, 0 );
/* First constructor */
GroupC1 = new QGroupBox( this, "GroupC1" );
GroupC1->setTitle( tr( "" ) );
GroupC1->setMinimumSize( QSize( 0, 0 ) );
GroupC1->setFrameShape( QGroupBox::Box );
GroupC1->setFrameShadow( QGroupBox::Sunken );
GroupC1->setColumnLayout(0, Qt::Vertical );
GroupC1->layout()->setSpacing( 0 );
GroupC1->layout()->setMargin( 0 );
GroupC1Layout = new QGridLayout( GroupC1->layout() );
GroupC1Layout->setAlignment( Qt::AlignTop );
GroupC1Layout->setSpacing( 6 );
GroupC1Layout->setMargin( 11 );
Layout2 = new QHBoxLayout;
Layout2->setSpacing( 6 );
Layout2->setMargin( 0 );
TextLabelC1A1 = new QLabel( GroupC1, "TextLabelC1A1" );
TextLabelC1A1->setText( tr( "GEOM_MAIN_OBJECT" ) );
TextLabelC1A1->setMinimumSize( QSize( 50, 0 ) );
TextLabelC1A1->setFrameShape( QLabel::NoFrame );
TextLabelC1A1->setFrameShadow( QLabel::Plain );
Layout2->addWidget( TextLabelC1A1 );
SelectButtonC1A1 = new QPushButton( GroupC1, "SelectButtonC1A1" );
SelectButtonC1A1->setText( tr( "" ) );
SelectButtonC1A1->setPixmap( image1 );
SelectButtonC1A1->setToggleButton( FALSE );
SelectButtonC1A1->setMaximumSize( QSize( 28, 32767 ) );
Layout2->addWidget( SelectButtonC1A1 );
LineEditC1A1 = new QLineEdit( GroupC1, "LineEditC1A1" );
LineEditC1A1->setAlignment( int( QLineEdit::AlignLeft ) );
Layout2->addWidget( LineEditC1A1 );
GroupC1Layout->addLayout( Layout2, 0, 0 );
CheckBox1 = new QCheckBox( GroupC1, "CheckBox1" );
CheckBox1->setText( tr( "GEOM_SUPPRESSHOLE_SELECTFACE" ) );
CheckBox1->setChecked( FALSE );
GroupC1Layout->addWidget( CheckBox1, 1, 0 );
CheckBox2 = new QCheckBox( GroupC1, "CheckBox2" );
CheckBox2->setText( tr( "GEOM_SUPPRESSHOLE_SELECTWIRE" ) );
CheckBox2->setChecked( FALSE );
GroupC1Layout->addWidget( CheckBox2, 2, 0 );
CheckBox3 = new QCheckBox( GroupC1, "CheckBox3" );
CheckBox3->setText( tr( "GEOM_SUPPRESSHOLE_SELECTFACE_END" ) );
CheckBox3->setChecked( FALSE );
GroupC1Layout->addWidget( CheckBox3, 3, 0 );
RepairGUI_SuppressHoleLayout->addWidget( GroupC1, 1, 0 );
/* Second constructor */
GroupC2 = new QGroupBox( this, "GroupC2" );
GroupC2->setTitle( tr( "" ) );
GroupC2->setMinimumSize( QSize( 0, 0 ) );
GroupC2->setFrameShape( QGroupBox::Box );
GroupC2->setFrameShadow( QGroupBox::Sunken );
GroupC2->setColumnLayout(0, Qt::Vertical );
GroupC2->layout()->setSpacing( 0 );
GroupC2->layout()->setMargin( 0 );
GroupC2Layout = new QGridLayout( GroupC2->layout() );
GroupC2Layout->setAlignment( Qt::AlignTop );
GroupC2Layout->setSpacing( 6 );
GroupC2Layout->setMargin( 11 );
Layout3 = new QHBoxLayout;
Layout3->setSpacing( 6 );
Layout3->setMargin( 0 );
TextLabelC2A1 = new QLabel( GroupC2, "TextLabelC2A1" );
TextLabelC2A1->setText( tr( "GEOM_SUPPRESSHOLE_FACE_SHELL" ) );
TextLabelC2A1->setMinimumSize( QSize( 50, 0 ) );
TextLabelC2A1->setFrameShape( QLabel::NoFrame );
TextLabelC2A1->setFrameShadow( QLabel::Plain );
Layout3->addWidget( TextLabelC2A1 );
SelectButtonC2A1 = new QPushButton( GroupC2, "SelectButtonC2A1" );
SelectButtonC2A1->setText( tr( "" ) );
SelectButtonC2A1->setPixmap( image1 );
SelectButtonC2A1->setToggleButton( FALSE );
SelectButtonC2A1->setMaximumSize( QSize( 28, 32767 ) );
Layout3->addWidget( SelectButtonC2A1 );
LineEditC2A1 = new QLineEdit( GroupC2, "LineEditC2A1" );
LineEditC2A1->setAlignment( int( QLineEdit::AlignLeft ) );
Layout3->addWidget( LineEditC2A1 );
GroupC2Layout->addLayout( Layout3, 0, 0 );
QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
GroupC2Layout->addItem( spacer_3, 2, 0 );
CheckBoxC2_1 = new QCheckBox( GroupC2, "CheckBoxC2_1" );
CheckBoxC2_1->setText( tr( "GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE" ) );
CheckBoxC2_1->setChecked( FALSE );
GroupC2Layout->addWidget( CheckBoxC2_1, 1, 0 );
RepairGUI_SuppressHoleLayout->addWidget( GroupC2, 1, 0 );
myRepairGUI = theRepairGUI;
/* Initialisations */ /* Initialisations */
Init(Sel, ic) ; myRepairGUI = theRepairGUI;
Init(ic);
} }
@ -265,26 +93,19 @@ RepairGUI_SuppressHoleDlg::~RepairGUI_SuppressHoleDlg()
} }
//================================================================================= //=================================================================================
// function : Init() // function : Init()
// purpose : // purpose :
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::Init( SALOME_Selection* Sel, Handle (AIS_InteractiveContext) ic ) void RepairGUI_SuppressHoleDlg::Init(Handle (AIS_InteractiveContext) ic)
{ {
GroupC1->show(); /* init variables */
GroupC2->hide();
myConstructorId = 0; myConstructorId = 0;
Constructor1->setChecked( TRUE ); myEditCurrentArgument = Group1->LineEdit1;
myEditCurrentArgument = LineEditC1A1 ;
mySelection = Sel;
myShape.Nullify() ;
myIC = ic; myIC = ic;
myUseLocalContext = false ; myUseLocalContext = myOkShape = myOkSelectFace = false;
myOkShape = false ; myLocalContextId = -1;
myOkSelectFace = false ;
myListOfIdFace = new GEOM::GEOM_Shape::ListOfSubShapeID; myListOfIdFace = new GEOM::GEOM_Shape::ListOfSubShapeID;
myListOfIdWire = new GEOM::GEOM_Shape::ListOfSubShapeID; myListOfIdWire = new GEOM::GEOM_Shape::ListOfSubShapeID;
@ -294,50 +115,32 @@ void RepairGUI_SuppressHoleDlg::Init( SALOME_Selection* Sel, Handle (AIS_Interac
myListOfIdWire->length(0); myListOfIdWire->length(0);
myListOfIdEndFace->length(0); myListOfIdEndFace->length(0);
myGeomBase = new GEOMBase() ;
myGeomGUI = GEOMContext::GetGeomGUI() ;
/* Select sub modes not checked */
CheckBox1->setChecked( FALSE ); /* sub mode GEOM::FACE */
CheckBox2->setChecked( FALSE ); /* sub mode GEOM::WIRE */
CheckBox3->setChecked( FALSE ); /* sub mode END GEOM::FACE */
CheckBoxC2_1->setChecked( FALSE ); /* sub mode GEOM::WIRE(S) */
// TODO : previous selection into argument ?
/* Filter definitions */
Engines::Component_var comp = QAD_Application::getDesktop()->getEngine("FactoryServer", "GEOM");
myGeom = GEOM::GEOM_Gen::_narrow(comp);
/* signals and slots connections */ /* signals and slots connections */
connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
connect(myGeomGUI, SIGNAL(SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
connect(myGeomGUI, SIGNAL(SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
connect( buttonClose, SIGNAL( clicked() ), this, SLOT( ClickOnClose() ) );
connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int))); connect(GroupConstructors, SIGNAL(clicked(int)), this, SLOT(ConstructorsClicked(int)));
connect( SelectButtonC1A1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() )); connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect( SelectButtonC2A1, SIGNAL( clicked() ), this, SLOT( SetEditCurrentArgument() )); connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect(Group2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
connect( CheckBox1, SIGNAL( stateChanged(int) ), this, SLOT( ActivateUserFaceSelection() )); connect(Group1->CheckButton1, SIGNAL(stateChanged(int)), this, SLOT(ActivateUserFaceSelection()));
connect( CheckBox2, SIGNAL( stateChanged(int) ), this, SLOT( ActivateUserWireSelection() )); connect(Group1->CheckButton2, SIGNAL(stateChanged(int)), this, SLOT(ActivateUserWireSelection()));
connect( CheckBox3, SIGNAL( stateChanged(int) ), this, SLOT( ActivateUserEndFaceSelection() )); connect(Group1->CheckButton3, SIGNAL(stateChanged(int)), this, SLOT(ActivateUserEndFaceSelection()));
connect(Group2->CheckButton1, SIGNAL(stateChanged(int)), this, SLOT(ActivateUserWiresOnFaceShellSelection()));
connect( LineEditC1A1, SIGNAL ( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ) ;
connect( LineEditC2A1, SIGNAL ( returnPressed() ), this, SLOT( LineEditReturnPressed() ) ) ;
/* for the second constructor */
connect( CheckBoxC2_1, SIGNAL( stateChanged(int) ), this, SLOT( ActivateUserWiresOnFaceShellSelection() ));
connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
connect( myGeomGUI, SIGNAL( SignalDeactivateActiveDialog() ), this, SLOT( DeactivateActiveDialog() ) ) ;
connect( myGeomGUI, SIGNAL( SignalCloseAllDialogs() ), this, SLOT( ClickOnClose() ));
/* Move widget on the botton right corner of main widget */ /* displays Dialog */
int x, y ; Group2->hide();
myGeomBase->DefineDlgPosition( this, x, y ) ; Group1->show();
this->move( x, y ) ; this->show();
this->show() ; /* display Dialog */
return; return;
} }
@ -348,29 +151,42 @@ void RepairGUI_SuppressHoleDlg::Init( SALOME_Selection* Sel, Handle (AIS_Interac
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::ConstructorsClicked(int constructorId) void RepairGUI_SuppressHoleDlg::ConstructorsClicked(int constructorId)
{ {
myConstructorId = constructorId;
disconnect(mySelection, 0, this, 0);
myOkShape = false;
if(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() == VIEW_OCC && myUseLocalContext) {
myIC->CloseLocalContext(myLocalContextId);
DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true);
myUseLocalContext = false;
}
switch (constructorId) switch (constructorId)
{ {
case 0: case 0:
{ {
GroupC1->show(); Group2->hide();
GroupC2->hide(); resize(0, 0);
myConstructorId = constructorId ; Group1->show();
myEditCurrentArgument = LineEditC1A1 ;
LineEditC1A1->setText(tr("")) ; myEditCurrentArgument = Group1->LineEdit1;
myOkShape = false ; Group1->LineEdit1->setText("");
connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
myOkSelectFace = false; myOkSelectFace = false;
this->ResetPartial(); this->ResetPartial();
connect ( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
break; break;
} }
case 1: case 1:
{ {
GroupC1->hide(); Group1->hide();
GroupC2->show(); resize(0, 0);
myConstructorId = constructorId ; Group2->show();
myEditCurrentArgument = LineEditC2A1 ;
LineEditC2A1->setText(tr("")) ; myEditCurrentArgument = Group2->LineEdit1;
myOkShape = false ; Group2->LineEdit1->setText("");
this->ResetPartial(); this->ResetPartial();
connect ( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) ); connect ( mySelection, SIGNAL( currentSelectionChanged() ), this, SLOT( SelectionIntoArgument() ) );
this->ResetPartial(); this->ResetPartial();
@ -388,13 +204,11 @@ void RepairGUI_SuppressHoleDlg::ConstructorsClicked(int constructorId)
void RepairGUI_SuppressHoleDlg::ClickOnOk() void RepairGUI_SuppressHoleDlg::ClickOnOk()
{ {
this->ClickOnApply(); this->ClickOnApply();
accept(); this->ClickOnCancel();
return; return;
} }
//================================================================================= //=================================================================================
// function : ClickOnApply() // function : ClickOnApply()
// purpose : // purpose :
@ -406,6 +220,7 @@ void RepairGUI_SuppressHoleDlg::ClickOnApply()
if(!myOkShape) if(!myOkShape)
return; return;
switch (myConstructorId) switch (myConstructorId)
{ {
case 0: /* default constructor */ case 0: /* default constructor */
@ -413,17 +228,17 @@ void RepairGUI_SuppressHoleDlg::ClickOnApply()
if(!myOkSelectFace) if(!myOkSelectFace)
return; return;
if( CheckBox2->isChecked() ) { if(Group1->CheckButton2->isChecked()) {
if(!Group1->CheckButton3->isChecked()) {
if( !CheckBox3->isChecked() ) {
/* Call method to get sub shape selection of GEOM::WIRE */ /* Call method to get sub shape selection of GEOM::WIRE */
bool aTest = this->GetIndexSubShapeSelected(myFace, int(TopAbs_WIRE), myListOfIdWire, myLocalContextId, myUseLocalContext); bool aTest = this->GetIndexSubShapeSelected(myFace, int(TopAbs_WIRE), myListOfIdWire, myLocalContextId, myUseLocalContext);
/* Display all objects so that next method using ic can memorize them */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ;/* Display all objects so that next method using ic can memorize them */ myDisplayGUI->OnDisplayAll(true);
if(!aTest || myListOfIdWire->length() != 1) { if(!aTest || myListOfIdWire->length() != 1) {
CheckBox2->setChecked(FALSE) ; Group1->CheckButton2->setChecked(FALSE);
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT"));
} }
else { else {
@ -433,15 +248,17 @@ void RepairGUI_SuppressHoleDlg::ClickOnApply()
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
} }
} }
else { /* CheckBox3->isChecked() */ else { /* Group1->CheckButton3->isChecked() */
/* Call method to get sub shape selection of END GEOM::FACE */ /* Call method to get sub shape selection of END GEOM::FACE */
bool aTest = this->GetIndexSubShapeSelected(myShape, int(TopAbs_FACE), myListOfIdEndFace, myLocalContextId, myUseLocalContext); bool aTest = this->GetIndexSubShapeSelected(myShape, int(TopAbs_FACE), myListOfIdEndFace, myLocalContextId, myUseLocalContext);
/* Display all objects so that next method using ic can memorize them */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ; /* Display all objects so that next method using ic can memorize them */ myDisplayGUI->OnDisplayAll(true);
if(!aTest || myListOfIdEndFace->length() != 1) { if(!aTest || myListOfIdEndFace->length() != 1) {
CheckBox3->setChecked(FALSE) ; Group1->CheckButton3->setChecked(FALSE);
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT"));
} }
else { else {
@ -453,19 +270,18 @@ void RepairGUI_SuppressHoleDlg::ClickOnApply()
} }
break; break;
} }
case 1: /* second constructor */ case 1: /* second constructor */
{ {
if( CheckBoxC2_1->isChecked() ) { if(Group2->CheckButton1->isChecked()) {
/* Call method to get sub shape selection of one or more GEOM::WIRE(s) on a face or a shell */ /* Call method to get sub shape selection of one or more GEOM::WIRE(s) on a face or a shell */
bool aTest = this->GetIndexSubShapeSelected(myShape, int(TopAbs_WIRE), myListOfIdWire, myLocalContextId, myUseLocalContext); bool aTest = this->GetIndexSubShapeSelected(myShape, int(TopAbs_WIRE), myListOfIdWire, myLocalContextId, myUseLocalContext);
/* Display all objects so that next method using ic can memorize them */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ; /* Display all objects so that next method using ic can memorize them */ myDisplayGUI->OnDisplayAll(true);
if(!aTest || myListOfIdWire->length() < 1) { if(!aTest || myListOfIdWire->length() < 1) {
CheckBoxC2_1->setChecked(FALSE) ; Group2->CheckButton1->setChecked(FALSE);
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT"));
} }
else { else {
@ -490,28 +306,14 @@ void RepairGUI_SuppressHoleDlg::ClickOnApply()
} }
//================================================================================= //=================================================================================
// function : ClickOnClose() // function : ClickOnCancel()
// purpose : // purpose :
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::ClickOnClose() void RepairGUI_SuppressHoleDlg::ClickOnCancel()
{ {
disconnect( mySelection, 0, this, 0 ); this->ResetStateOfDialog();
//myGeomGUI->ResetState() ; GEOMBase_Skeleton::ClickOnCancel();
if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() == VIEW_OCC ) {
OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer();
myIC = v3d->getAISContext(); // myIC = QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getViewerOCC()->getAISContext();
if(myUseLocalContext) {
myIC->CloseLocalContext(myLocalContextId) ;
this->myUseLocalContext = false ;
DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ;
}
}
reject() ;
return; return;
} }
@ -523,11 +325,9 @@ void RepairGUI_SuppressHoleDlg::ClickOnClose()
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::SelectionIntoArgument() void RepairGUI_SuppressHoleDlg::SelectionIntoArgument()
{ {
myEditCurrentArgument->setText("");
/* Reset argument and local context when selection as changed */
this->ResetStateOfDialog(); this->ResetStateOfDialog();
QString aString = ""; /* name of selection */
QString aString = ""; /* Name of selection */
int nbSel = myGeomBase->GetNameOfSelectedIObjects(mySelection, aString); int nbSel = myGeomBase->GetNameOfSelectedIObjects(mySelection, aString);
if(nbSel != 1) if(nbSel != 1)
@ -540,14 +340,12 @@ void RepairGUI_SuppressHoleDlg::SelectionIntoArgument()
if(!myGeomBase->GetTopoFromSelection(mySelection, S)) if(!myGeomBase->GetTopoFromSelection(mySelection, S))
return; return;
if ( S.IsNull() || S.ShapeType() == TopAbs_VERTEX || S.ShapeType() == TopAbs_EDGE || S.ShapeType() == TopAbs_WIRE ) { if(S.IsNull() || S.ShapeType() == TopAbs_VERTEX || S.ShapeType() == TopAbs_EDGE || S.ShapeType() == TopAbs_WIRE)
return; return;
}
/* Test the exact type of topology to suppress faces into. */ /* Test the exact type of topology to suppress faces into. */
/* For the second constructor a face or shell selection is needed */ /* For the second constructor a face or shell selection is needed */
if(myConstructorId == 0 || (myConstructorId == 1 && (S.ShapeType() == TopAbs_FACE || S.ShapeType() == TopAbs_SHELL))) { if(myConstructorId == 0 || (myConstructorId == 1 && (S.ShapeType() == TopAbs_FACE || S.ShapeType() == TopAbs_SHELL))) {
if(IO->IsInstance(STANDARD_TYPE(GEOM_InteractiveObject))) { if(IO->IsInstance(STANDARD_TYPE(GEOM_InteractiveObject))) {
Handle(GEOM_InteractiveObject) GIObject = Handle(GEOM_InteractiveObject)::DownCast(IO); Handle(GEOM_InteractiveObject) GIObject = Handle(GEOM_InteractiveObject)::DownCast(IO);
@ -588,27 +386,16 @@ void RepairGUI_SuppressHoleDlg::SelectionIntoArgument()
void RepairGUI_SuppressHoleDlg::SetEditCurrentArgument() void RepairGUI_SuppressHoleDlg::SetEditCurrentArgument()
{ {
QPushButton* send = (QPushButton*)sender(); QPushButton* send = (QPushButton*)sender();
switch (myConstructorId)
{ if(send == Group1->PushButton1) {
case 0: /* default constructor */ Group1->LineEdit1->setFocus();
{ myEditCurrentArgument = Group1->LineEdit1;
if(send == SelectButtonC1A1) {
LineEditC1A1->setFocus() ;
myEditCurrentArgument = LineEditC1A1;
SelectionIntoArgument() ;
}
break;
}
case 1:
{
if(send == SelectButtonC2A1) {
LineEditC2A1->setFocus() ;
myEditCurrentArgument = LineEditC2A1;
SelectionIntoArgument() ;
}
break;
} }
else if(send == Group2->PushButton1) {
Group2->LineEdit1->setFocus();
myEditCurrentArgument = Group2->LineEdit1;
} }
this->SelectionIntoArgument();
return; return;
} }
@ -620,22 +407,14 @@ void RepairGUI_SuppressHoleDlg::SetEditCurrentArgument()
void RepairGUI_SuppressHoleDlg::LineEditReturnPressed() void RepairGUI_SuppressHoleDlg::LineEditReturnPressed()
{ {
QLineEdit* send = (QLineEdit*)sender(); QLineEdit* send = (QLineEdit*)sender();
if( send == LineEditC1A1 ) if(send == Group1->LineEdit1)
myEditCurrentArgument = LineEditC1A1 ; myEditCurrentArgument = Group1->LineEdit1;
else if ( send == LineEditC2A1) else if (send == Group2->LineEdit1)
myEditCurrentArgument = LineEditC2A1; myEditCurrentArgument = Group2->LineEdit1;
else else
return; return;
/* User name of object input management */ GEOMBase_Skeleton::LineEditReturnPressed();
/* If successfull the selection is changed and signal emitted... */
/* so SelectionIntoArgument() is automatically called. */
const QString objectUserName = myEditCurrentArgument->text() ;
QWidget* thisWidget = (QWidget*)this ;
if( myGeomBase->SelectionByNameInDialogs( thisWidget, objectUserName, mySelection ) ) {
myEditCurrentArgument->setText( objectUserName ) ;
}
return; return;
} }
@ -646,21 +425,8 @@ void RepairGUI_SuppressHoleDlg::LineEditReturnPressed()
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::DeactivateActiveDialog() void RepairGUI_SuppressHoleDlg::DeactivateActiveDialog()
{ {
if ( GroupConstructors->isEnabled() ) {
this->ResetStateOfDialog(); this->ResetStateOfDialog();
GEOMBase_Skeleton::DeactivateActiveDialog();
disconnect( mySelection, 0, this, 0 );
GroupConstructors->setEnabled(false) ;
GroupC1->setEnabled(false) ;
GroupC2->setEnabled(false) ;
GroupButtons->setEnabled(false) ;
//myGeomGUI->ResetState() ;
myGeomGUI->SetActiveDialogBox(0) ;
DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ;
}
return; return;
} }
@ -671,16 +437,8 @@ void RepairGUI_SuppressHoleDlg::DeactivateActiveDialog()
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::ActivateThisDialog() void RepairGUI_SuppressHoleDlg::ActivateThisDialog()
{ {
/* Emit a signal to deactivate other active dialog */ GEOMBase_Skeleton::ActivateThisDialog();
myGeomGUI->EmitSignalDeactivateDialog() ;
GroupConstructors->setEnabled(true) ;
GroupC1->setEnabled(true) ;
GroupC2->setEnabled(true) ;
GroupButtons->setEnabled(true) ;
connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
myGeomGUI->SetActiveDialogBox( (QDialog*)this ) ;
return; return;
} }
@ -693,7 +451,7 @@ void RepairGUI_SuppressHoleDlg::enterEvent(QEvent* e)
{ {
if(GroupConstructors->isEnabled()) if(GroupConstructors->isEnabled())
return; return;
ActivateThisDialog() ; this->ActivateThisDialog();
return; return;
} }
@ -705,7 +463,7 @@ void RepairGUI_SuppressHoleDlg::enterEvent(QEvent* e)
void RepairGUI_SuppressHoleDlg::closeEvent(QCloseEvent* e) void RepairGUI_SuppressHoleDlg::closeEvent(QCloseEvent* e)
{ {
/* same than click on cancel button */ /* same than click on cancel button */
this->ClickOnClose() ; this->ClickOnCancel();
return; return;
} }
@ -723,24 +481,15 @@ void RepairGUI_SuppressHoleDlg::ActivateUserFaceSelection()
return; return;
} }
/* Test the viewer type VTK */ if(Group1->CheckButton1->isChecked()) {
if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() > VIEW_OCC ) {
QAD_Application::getDesktop()->putInfo( tr("GEOM_PRP_NOT_FOR_VTK_VIEWER") ) ;
this->ResetStateOfDialog() ;
return;
}
if( CheckBox1->isChecked() ) {
/* local context is opened into the method : Prepare GEOM::FACE sub selection */ /* local context is opened into the method : Prepare GEOM::FACE sub selection */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->PrepareSubShapeSelection( int(TopAbs_FACE), this->myLocalContextId ) ; myDisplayGUI->PrepareSubShapeSelection(int(TopAbs_FACE), myLocalContextId);
myUseLocalContext = true; myUseLocalContext = true;
QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECTFACE")); QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECTFACE"));
} }
else { else
this->ResetPartial(); this->ResetPartial();
}
return; return;
} }
@ -754,60 +503,49 @@ void RepairGUI_SuppressHoleDlg::ActivateUserFaceSelection()
void RepairGUI_SuppressHoleDlg::ActivateUserWireSelection() void RepairGUI_SuppressHoleDlg::ActivateUserWireSelection()
{ {
if( !this->myOkShape ) { if(!myOkShape) {
this->ResetStateOfDialog(); this->ResetStateOfDialog();
QAD_Application::getDesktop()->putInfo(tr("GEOM_MAIN_OBJECT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_MAIN_OBJECT"));
return; return;
} }
/* Test the type of viewer VTK */ if(Group1->CheckButton1->isChecked()) {
if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() > VIEW_OCC ) {
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_NOT_FOR_VTK_VIEWER") ) ;
this->ResetStateOfDialog() ;
return;
}
if( CheckBox1->isChecked() ) {
/* Get sub shape selection GEOM::FACE : local context is closed */ /* Get sub shape selection GEOM::FACE : local context is closed */
bool aTest = this->GetIndexSubShapeSelected(myShape, int(TopAbs_FACE), myListOfIdFace, myLocalContextId, myUseLocalContext); bool aTest = this->GetIndexSubShapeSelected(myShape, int(TopAbs_FACE), myListOfIdFace, myLocalContextId, myUseLocalContext);
/* Display all objects so that next method using ic can memorize them */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ; /* Display all objects so that next method using ic can memorize them */ myDisplayGUI->OnDisplayAll(true);
if(!aTest || myListOfIdFace->length() != 1) { if(!aTest || myListOfIdFace->length() != 1) {
CheckBox1->setChecked(FALSE) ; Group1->CheckButton1->setChecked(FALSE);
myOkSelectFace = false; myOkSelectFace = false;
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT"));
} }
else { else
myOkSelectFace = true; myOkSelectFace = true;
} }
}
else { else {
this->ResetPartial(); this->ResetPartial();
return; return;
} }
if( CheckBox2->isChecked() ) { if(Group1->CheckButton2->isChecked()) {
/* Get the face selection */ /* Get the face selection */
this->myFace = FaceFromList(myShape, myListOfIdFace) ; myFace = FaceFromList(myShape, myListOfIdFace);
/* Local context is opened into the method : Prepare GEOM::WIRE sub selection into a face */ /* Local context is opened into the method : Prepare GEOM::WIRE sub selection into a face */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->PrepareSubShapeSelectionArgumentShape( this->myFace, int(TopAbs_WIRE), this->myLocalContextId ) ; myDisplayGUI->PrepareSubShapeSelectionArgumentShape(myFace, int(TopAbs_WIRE), myLocalContextId);
myUseLocalContext = true; myUseLocalContext = true;
QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECTWIRE")); QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECTWIRE"));
} }
else { else {
this->ResetPartial(); this->ResetPartial();
} }
return; return;
} }
//================================================================================= //=================================================================================
// function : ActivateUserlEndFaceSelection() // function : ActivateUserlEndFaceSelection()
// purpose : Called when CheckBox3 state has changed. ( Optional End Face selection ) // purpose : Called when CheckBox3 state has changed. ( Optional End Face selection )
@ -816,30 +554,23 @@ void RepairGUI_SuppressHoleDlg::ActivateUserWireSelection()
void RepairGUI_SuppressHoleDlg::ActivateUserEndFaceSelection() void RepairGUI_SuppressHoleDlg::ActivateUserEndFaceSelection()
{ {
if( !this->myOkShape ) { if(!myOkShape) {
this->ResetStateOfDialog(); this->ResetStateOfDialog();
QAD_Application::getDesktop()->putInfo(tr("GEOM_MAIN_OBJECT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_MAIN_OBJECT"));
return; return;
} }
/* Test the type of viewer VTK */ if(Group1->CheckButton2->isChecked()) {
if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() > VIEW_OCC ) {
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_NOT_FOR_VTK_VIEWER") ) ;
this->ResetStateOfDialog() ;
return;
}
if( CheckBox2->isChecked() ) {
/* Call method to get sub shape selection for the GEOM::WIRE into myFace : local context is closed */ /* Call method to get sub shape selection for the GEOM::WIRE into myFace : local context is closed */
bool aTest = this->GetIndexSubShapeSelected(this->myFace, int(TopAbs_WIRE), myListOfIdWire, myLocalContextId, myUseLocalContext) ; bool aTest = this->GetIndexSubShapeSelected(myFace, int(TopAbs_WIRE), myListOfIdWire, myLocalContextId, myUseLocalContext);
/* Display all objects so that next method using ic can memorize them */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true) ; /* Display all objects so that next method using ic can memorize them */ myDisplayGUI->OnDisplayAll(true);
if(!aTest || myListOfIdWire->length() != 1) { if(!aTest || myListOfIdWire->length() != 1) {
CheckBox2->setChecked(FALSE) ; Group1->CheckButton2->setChecked(FALSE);
CheckBox3->setChecked(FALSE) ; Group1->CheckButton3->setChecked(FALSE);
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_ABORT"));
return; return;
} }
@ -850,22 +581,19 @@ void RepairGUI_SuppressHoleDlg::ActivateUserEndFaceSelection()
} }
if( CheckBox3->isChecked() ) { if(Group1->CheckButton3->isChecked()) {
/* Local context is opened into the method : prepare GEOM::FACE(end) into myShape sub selection */ /* Local context is opened into the method : prepare GEOM::FACE(end) into myShape sub selection */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->PrepareSubShapeSelectionArgumentShape( this->myShape, int(TopAbs_FACE), this->myLocalContextId ) ; myDisplayGUI->PrepareSubShapeSelectionArgumentShape(myShape, int(TopAbs_FACE), myLocalContextId);
myUseLocalContext = true; myUseLocalContext = true;
QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECTFACE_END")); QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECTFACE_END"));
} }
else { else
this->ResetPartial(); this->ResetPartial();
}
return; return;
} }
//================================================================================= //=================================================================================
// function : ActivateUserWiresOnFaceShellSelection() // function : ActivateUserWiresOnFaceShellSelection()
// purpose : Called when CheckBoxC2_1 state has changed. // purpose : Called when CheckBoxC2_1 state has changed.
@ -875,34 +603,25 @@ void RepairGUI_SuppressHoleDlg::ActivateUserEndFaceSelection()
void RepairGUI_SuppressHoleDlg::ActivateUserWiresOnFaceShellSelection() void RepairGUI_SuppressHoleDlg::ActivateUserWiresOnFaceShellSelection()
{ {
if( !this->myOkShape ) { if(!myOkShape) {
this->ResetStateOfDialog(); this->ResetStateOfDialog();
QAD_Application::getDesktop()->putInfo(tr("GEOM_MAIN_OBJECT")); QAD_Application::getDesktop()->putInfo(tr("GEOM_MAIN_OBJECT"));
return; return;
} }
/* Test the type of viewer VTK */ if(Group2->CheckButton1->isChecked()) {
if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() > VIEW_OCC ) {
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_NOT_FOR_VTK_VIEWER") ) ;
this->ResetStateOfDialog() ;
return;
}
if( CheckBoxC2_1->isChecked() ) {
/* Local context is opened to prepare GEOM::WIRE(S) selection into 'myShape' that is a (main) face */ /* Local context is opened to prepare GEOM::WIRE(S) selection into 'myShape' that is a (main) face */
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->PrepareSubShapeSelectionArgumentShape( this->myShape, int(TopAbs_WIRE), this->myLocalContextId ) ; myDisplayGUI->PrepareSubShapeSelectionArgumentShape(myShape, int(TopAbs_WIRE), myLocalContextId);
myUseLocalContext = true; myUseLocalContext = true;
QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE")); QAD_Application::getDesktop()->putInfo(tr("GEOM_SUPPRESSHOLE_SELECT_HOLES_ON_FACE"));
} }
else { else
this->ResetPartial(); this->ResetPartial();
}
return; return;
} }
//================================================================================= //=================================================================================
// function : FaceFromList() // function : FaceFromList()
// purpose : Return the face (selected by user) that is a sub shape of 'aShape' // purpose : Return the face (selected by user) that is a sub shape of 'aShape'
@ -930,16 +649,15 @@ TopoDS_Shape RepairGUI_SuppressHoleDlg::FaceFromList( const TopoDS_Shape& aShape
} }
//================================================================================= //=================================================================================
// function : ResetStateOfDialog() // function : ResetStateOfDialog()
// purpose : Completely reset the state of method including local context // purpose : Completely reset the state of method including local context
//================================================================================= //=================================================================================
void RepairGUI_SuppressHoleDlg::ResetStateOfDialog() void RepairGUI_SuppressHoleDlg::ResetStateOfDialog()
{ {
this->myOkShape = false ; myOkShape = false;
this->myEditCurrentArgument->setText("") ; myEditCurrentArgument->setText("");
QApplication::restoreOverrideCursor();
/* Partial reset and more ...*/ /* Partial reset and more ...*/
this->ResetPartial(); this->ResetPartial();
@ -955,28 +673,23 @@ void RepairGUI_SuppressHoleDlg::ResetStateOfDialog()
void RepairGUI_SuppressHoleDlg::ResetPartial() void RepairGUI_SuppressHoleDlg::ResetPartial()
{ {
/* Select sub shape modes not checked */ /* Select sub shape modes not checked */
this->myOkSelectFace = false ; myOkSelectFace = false ;
this->CheckBox1->setChecked( FALSE ); Group1->CheckButton1->setChecked(FALSE);
this->CheckBox2->setChecked( FALSE ); Group1->CheckButton2->setChecked(FALSE);
this->CheckBox3->setChecked( FALSE ); Group1->CheckButton3->setChecked(FALSE);
this->CheckBoxC2_1->setChecked( FALSE ); Group2->CheckButton1->setChecked(FALSE);
myListOfIdFace->length(0); myListOfIdFace->length(0);
myListOfIdWire->length(0); myListOfIdWire->length(0);
myListOfIdEndFace->length(0); myListOfIdEndFace->length(0);
/* Close its local contact if opened */ /* Close its local contact if opened */
if ( QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() == VIEW_OCC ) { if(QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getTypeView() == VIEW_OCC && myUseLocalContext) {
OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer(); myIC->CloseLocalContext(myLocalContextId);
myIC = v3d->getAISContext(); // myIC = QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->getViewerOCC()->getAISContext(); myUseLocalContext = false;
if( this->myUseLocalContext ) {
myIC->CloseLocalContext(this->myLocalContextId) ;
this->myUseLocalContext = false ;
DisplayGUI* myDisplayGUI = new DisplayGUI(); DisplayGUI* myDisplayGUI = new DisplayGUI();
myDisplayGUI->OnDisplayAll(true); myDisplayGUI->OnDisplayAll(true);
} }
}
return; return;
} }

View File

@ -29,53 +29,36 @@
#ifndef GEOMETRYGUI_SUPPRESSHOLE_H #ifndef GEOMETRYGUI_SUPPRESSHOLE_H
#define GEOMETRYGUI_SUPPRESSHOLE_H #define GEOMETRYGUI_SUPPRESSHOLE_H
#include "GEOMBase_Skeleton.h"
#include "DlgRef_1Sel1Check_QTD.h"
#include "DlgRef_1Sel3Check_QTD.h"
#include "RepairGUI.h" #include "RepairGUI.h"
#include <qvariant.h>
#include <qdialog.h>
#include <AIS_InteractiveContext.hxx>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QButtonGroup;
class QCheckBox;
class QGroupBox;
class QLabel;
class QLineEdit;
class QPushButton;
class QRadioButton;
class RepairGUI;
//================================================================================= //=================================================================================
// class : RepairGUI_SuppressHoleDlg // class : RepairGUI_SuppressHoleDlg
// purpose : // purpose :
//================================================================================= //=================================================================================
class RepairGUI_SuppressHoleDlg : public QDialog class RepairGUI_SuppressHoleDlg : public GEOMBase_Skeleton
{ {
Q_OBJECT Q_OBJECT
public: public:
RepairGUI_SuppressHoleDlg( QWidget* parent = 0, RepairGUI_SuppressHoleDlg(QWidget* parent = 0, const char* name = 0, RepairGUI* theRepairGUI = 0, SALOME_Selection* Sel = 0, Handle(AIS_InteractiveContext) ic = 0, bool modal = FALSE, WFlags fl = 0);
const char* name = 0,
RepairGUI* theRepairGUI = 0,
SALOME_Selection* Sel = 0,
Handle (AIS_InteractiveContext) ic = 0,
bool modal = FALSE,
WFlags fl = 0 );
~RepairGUI_SuppressHoleDlg(); ~RepairGUI_SuppressHoleDlg();
private : private :
RepairGUI* myRepairGUI; void Init(Handle(AIS_InteractiveContext) ic);
void Init( SALOME_Selection* Sel, Handle (AIS_InteractiveContext) ic ) ; void enterEvent(QEvent* e);
void closeEvent(QCloseEvent* e); void closeEvent(QCloseEvent* e);
void enterEvent ( QEvent * ) ; /* Mouse enter the QWidget (to reactivate it) */
void ResetStateOfDialog(); void ResetStateOfDialog();
void ResetPartial(); void ResetPartial();
RepairGUI* myRepairGUI;
int myConstructorId; /* Current constructor id = radio button id */
/* Define a list of indices of sub shapes selected in a local context */ /* Define a list of indices of sub shapes selected in a local context */
bool GetIndexSubShapeSelected(const TopoDS_Shape& ShapeTopo, const int SubShapeType, bool GetIndexSubShapeSelected(const TopoDS_Shape& ShapeTopo, const int SubShapeType,
GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID, GEOM::GEOM_Shape::ListOfSubShapeID& ListOfID,
@ -85,15 +68,11 @@ private :
TopoDS_Shape FaceFromList(const TopoDS_Shape& aShape, TopoDS_Shape FaceFromList(const TopoDS_Shape& aShape,
const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfSub); const GEOM::GEOM_Shape::ListOfSubShapeID& ListOfSub);
/* Interactive and local context management see also : bool myUseLocalContext() */
Handle(AIS_InteractiveContext) myIC; /* Interactive context */ Handle(AIS_InteractiveContext) myIC; /* Interactive context */
Standard_Integer myLocalContextId; /* identify a local context used by this method */ Standard_Integer myLocalContextId; /* identify a local context used by this method */
bool myUseLocalContext; /* true when this method as opened a local context */ bool myUseLocalContext; /* true when this method as opened a local context */
GEOM::GEOM_Gen_var myGeom ; /* Current Geom object */
GEOMBase* myGeomBase ; /* Current GeomGUI object */
GEOMContext* myGeomGUI ; /* Current GeomGUI object */
SALOME_Selection* mySelection ; /* User shape selection */
TopoDS_Shape myShape; /* Main shape selected */ TopoDS_Shape myShape; /* Main shape selected */
TopoDS_Shape myFace; /* Face selected */ TopoDS_Shape myFace; /* Face selected */
@ -103,48 +82,24 @@ private :
bool myOkSelectFace; /* true = sub mode GEOM::FACE selection done */ bool myOkSelectFace; /* true = sub mode GEOM::FACE selection done */
bool myOkSelectWire; /* true = sub mode GEOM::WIRE selection done (first wire) */ bool myOkSelectWire; /* true = sub mode GEOM::WIRE selection done (first wire) */
GEOM::GEOM_Shape::ListOfSubShapeID_var myListOfIdFace ; /* After selection contains index of face into myShape */ /* After selection contains index of face into myShape, wire into myFace, end face into myShape*/
GEOM::GEOM_Shape::ListOfSubShapeID_var myListOfIdWire ; /* After selection contains index of wire into myFace */ GEOM::GEOM_Shape::ListOfSubShapeID_var myListOfIdFace;
GEOM::GEOM_Shape::ListOfSubShapeID_var myListOfIdEndFace ; /* After selection contains index of end face into myShape */ GEOM::GEOM_Shape::ListOfSubShapeID_var myListOfIdWire;
GEOM::GEOM_Shape::ListOfSubShapeID_var myListOfIdEndFace;
QLineEdit* myEditCurrentArgument; /* Current LineEdit */
int myConstructorId ; /* Current constructor id = radio button id */
QButtonGroup* GroupConstructors;
QRadioButton* Constructor1;
QGroupBox* GroupButtons;
QPushButton* buttonOk;
QPushButton* buttonApply;
QPushButton* buttonClose;
QGroupBox* GroupC1;
QLabel* TextLabelC1A1;
QPushButton* SelectButtonC1A1;
QLineEdit* LineEditC1A1;
QCheckBox* CheckBox1;
QCheckBox* CheckBox2;
QCheckBox* CheckBox3;
/* Second constructor */
QRadioButton* Constructor2;
QGroupBox* GroupC2;
QLabel* TextLabelC2A1;
QPushButton* SelectButtonC2A1;
QLineEdit* LineEditC2A1;
QCheckBox* CheckBoxC2_1;
DlgRef_1Sel3Check_QTD* Group1;
DlgRef_1Sel1Check_QTD* Group2;
private slots: private slots:
void ConstructorsClicked(int constructorId);
void ClickOnOk(); void ClickOnOk();
void ClickOnApply(); void ClickOnApply();
void ClickOnClose(); void ClickOnCancel();
void LineEditReturnPressed() ;
void SetEditCurrentArgument() ;
void SelectionIntoArgument() ;
void DeactivateActiveDialog() ;
void ActivateThisDialog(); void ActivateThisDialog();
void DeactivateActiveDialog();
void LineEditReturnPressed();
void SelectionIntoArgument();
void SetEditCurrentArgument();
void ConstructorsClicked(int constructorId);
void ActivateUserFaceSelection(); void ActivateUserFaceSelection();
void ActivateUserWireSelection(); void ActivateUserWireSelection();
void ActivateUserEndFaceSelection(); void ActivateUserEndFaceSelection();
@ -152,17 +107,6 @@ private slots:
/* For the second constructor */ /* For the second constructor */
void ActivateUserWiresOnFaceShellSelection() ; void ActivateUserWiresOnFaceShellSelection() ;
protected:
QGridLayout* RepairGUI_SuppressHoleLayout;
QGridLayout* GroupConstructorsLayout;
QHBoxLayout* GroupButtonsLayout;
QGridLayout* GroupC1Layout;
QHBoxLayout* Layout2;
QGridLayout* GroupC2Layout;
QHBoxLayout* Layout3;
}; };
#endif // GEOMETRYGUI_SUPPRESSHOLE_H #endif // GEOMETRYGUI_SUPPRESSHOLE_H