X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBuildGUI%2FBuildGUI_FaceDlg.cxx;h=dc1d3cd4ed59adb91c39fea969e46ef9233f623c;hb=46b338c04592e735f8da37ac2095105fea715eb1;hp=340519af3269ebc13c96755cc0554faafeb3bd59;hpb=c577ca78d7a6e286526662cf54df6de1f4f2f449;p=modules%2Fgeom.git diff --git a/src/BuildGUI/BuildGUI_FaceDlg.cxx b/src/BuildGUI/BuildGUI_FaceDlg.cxx index 340519af3..dc1d3cd4e 100644 --- a/src/BuildGUI/BuildGUI_FaceDlg.cxx +++ b/src/BuildGUI/BuildGUI_FaceDlg.cxx @@ -28,6 +28,15 @@ using namespace std; #include "BuildGUI_FaceDlg.h" +#include "GEOMImpl_Types.hxx" + +#include "SUIT_Session.h" +#include "SalomeApp_Application.h" +#include "SalomeApp_SelectionMgr.h" + +//Qt includes +#include +#include //================================================================================= // class : BuildGUI_FaceDlg() @@ -36,11 +45,11 @@ using namespace std; // The dialog will by default be modeless, unless you set 'modal' to // TRUE to construct a modal dialog. //================================================================================= -BuildGUI_FaceDlg::BuildGUI_FaceDlg(QWidget* parent, const char* name, BuildGUI* theBuildGUI, SALOME_Selection* Sel, bool modal, WFlags fl) - :GEOMBase_Skeleton(parent, name, Sel, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) +BuildGUI_FaceDlg::BuildGUI_FaceDlg(QWidget* parent, const char* name, bool modal, WFlags fl) + :GEOMBase_Skeleton(parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu) { - QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_FACE"))); - QPixmap image1(QAD_Desktop::getResourceManager()->loadPixmap("GEOM",tr("ICON_SELECT"))); + QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_BUILD_FACE"))); + QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); setCaption(tr("GEOM_FACE_TITLE")); @@ -50,17 +59,16 @@ BuildGUI_FaceDlg::BuildGUI_FaceDlg(QWidget* parent, const char* name, BuildGUI* RadioButton2->close(TRUE); RadioButton3->close(TRUE); - GroupPoints = new DlgRef_1Sel1Check_QTD(this, "GroupPoints"); - GroupPoints->GroupBox1->setTitle(tr("GEOM_FACE_FFW")); - GroupPoints->TextLabel1->setText(tr("GEOM_WIRE")); - GroupPoints->CheckButton1->setText(tr("GEOM_FACE_OPT")); - GroupPoints->PushButton1->setPixmap(image1); + GroupWire = new DlgRef_1Sel1Check_QTD(this, "GroupWire"); + GroupWire->GroupBox1->setTitle(tr("GEOM_FACE_FFW")); + GroupWire->TextLabel1->setText(tr("GEOM_WIRES")); + GroupWire->CheckButton1->setText(tr("GEOM_FACE_OPT")); + GroupWire->PushButton1->setPixmap(image1); - Layout1->addWidget(GroupPoints, 1, 0); + Layout1->addWidget(GroupWire, 2, 0); /***************************************************************/ /* Initialisations */ - myBuildGUI = theBuildGUI; Init(); } @@ -82,26 +90,22 @@ BuildGUI_FaceDlg::~BuildGUI_FaceDlg() void BuildGUI_FaceDlg::Init() { /* init variables */ - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->CheckButton1->setChecked(TRUE); + myEditCurrentArgument = GroupWire->LineEdit1; + GroupWire->LineEdit1->setReadOnly( true ); - myOkShape = false; + GroupWire->CheckButton1->setChecked(TRUE); - myWireFilter = new GEOM_ShapeTypeFilter(TopAbs_WIRE, myGeom); - mySelection->AddFilter(myWireFilter); /* first filter used */ + globalSelection( GEOM_WIRE ); /* signals and slots connections */ connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk())); connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply())); - connect(GroupPoints->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(GroupPoints->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - - /* displays Dialog */ - GroupPoints->show(); - this->show(); + connect(GroupWire->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); + connect(GroupWire->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); + connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; - return; + initName(tr("GEOM_FACE")); } @@ -111,9 +115,8 @@ void BuildGUI_FaceDlg::Init() //================================================================================= void BuildGUI_FaceDlg::ClickOnOk() { - this->ClickOnApply(); - ClickOnCancel(); - return; + if ( ClickOnApply() ) + ClickOnCancel(); } @@ -121,12 +124,13 @@ void BuildGUI_FaceDlg::ClickOnOk() // function : ClickOnApply() // purpose : //================================================================================= -void BuildGUI_FaceDlg::ClickOnApply() +bool BuildGUI_FaceDlg::ClickOnApply() { - QAD_Application::getDesktop()->putInfo(tr("")); - if(myOkShape) - myBuildGUI->MakeFaceAndDisplay(myGeomShape, GroupPoints->CheckButton1->isChecked()); - return; + if ( !onAccept() ) + return false; + + initName(); + return true; } @@ -137,28 +141,25 @@ void BuildGUI_FaceDlg::ClickOnApply() void BuildGUI_FaceDlg::SelectionIntoArgument() { myEditCurrentArgument->setText(""); - QString aString = ""; /* name of selection */ - - myOkShape = false; - int nbSel = myGeomBase->GetNameOfSelectedIObjects(mySelection, aString); - if(nbSel != 1) { - return; - } + QString aName; - // nbSel == 1! - Standard_Boolean testResult; - Handle(SALOME_InteractiveObject) IO = mySelection->firstIObject(); - if(!myGeomBase->GetTopoFromSelection(mySelection, myShape)) - return; - - myGeomShape = myGeomBase->ConvertIOinGEOMShape(IO, testResult); - if(!testResult) + int aNbSel = GEOMBase::GetNameOfSelectedIObjects(selectedIO(), aName); + + if(aNbSel < 1) + { + myWires.length(0); + return; + } + + GEOMBase::ConvertListOfIOInListOfGO(selectedIO(), myWires); + if (!myWires.length()) return; - - myEditCurrentArgument->setText(aString); - myOkShape = true; - /* no simulation */ - return; + if(aNbSel != 1) + aName = tr("%1_wires").arg(aNbSel); + + myEditCurrentArgument->setText( aName ); + + myEditCurrentArgument->setText( aName ); } @@ -168,28 +169,15 @@ void BuildGUI_FaceDlg::SelectionIntoArgument() //================================================================================= void BuildGUI_FaceDlg::SetEditCurrentArgument() { - GroupPoints->LineEdit1->setFocus(); - mySelection->ClearFilters(); - mySelection->AddFilter(myWireFilter); - this->SelectionIntoArgument(); - return; -} - - -//================================================================================= -// function : LineEditReturnPressed() -// purpose : -//================================================================================= -void BuildGUI_FaceDlg::LineEditReturnPressed() -{ - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1) - myEditCurrentArgument = GroupPoints->LineEdit1; - else + QPushButton* send = (QPushButton*)sender(); + if (send != GroupWire->PushButton1) return; + + globalSelection( GEOM_WIRE ); + myEditCurrentArgument = GroupWire->LineEdit1; - GEOMBase_Skeleton::LineEditReturnPressed(); - return; + myEditCurrentArgument->setFocus(); + SelectionIntoArgument(); } @@ -200,9 +188,9 @@ void BuildGUI_FaceDlg::LineEditReturnPressed() void BuildGUI_FaceDlg::ActivateThisDialog() { GEOMBase_Skeleton::ActivateThisDialog(); - connect(mySelection, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - mySelection->AddFilter(myWireFilter); - return; + connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; + globalSelection( GEOM_WIRE ); } @@ -212,8 +200,43 @@ void BuildGUI_FaceDlg::ActivateThisDialog() //================================================================================= void BuildGUI_FaceDlg::enterEvent(QEvent* e) { - if (GroupConstructors->isEnabled()) - return; - this->ActivateThisDialog(); - return; + if ( !GroupConstructors->isEnabled() ) + ActivateThisDialog(); } + +//================================================================================= +// function : createOperation +// purpose : +//================================================================================= +GEOM::GEOM_IOperations_ptr BuildGUI_FaceDlg::createOperation() +{ + return getGeomEngine()->GetIShapesOperations( getStudyId() ); +} + +//================================================================================= +// function : isValid +// purpose : +//================================================================================= +bool BuildGUI_FaceDlg::isValid( QString& ) +{ + return (myWires.length() != 0); +} + +//================================================================================= +// function : execute +// purpose : +//================================================================================= +bool BuildGUI_FaceDlg::execute( ObjectList& objects ) +{ + GEOM::GEOM_Object_var anObj; + + bool isPlanarWanted = GroupWire->CheckButton1->isChecked(); + anObj = GEOM::GEOM_IShapesOperations::_narrow( + getOperation() )->MakeFaceWires( myWires, isPlanarWanted ); + + if ( !anObj->_is_nil() ) + objects.push_back( anObj._retn() ); + + return true; +} +