X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGenerationGUI%2FGenerationGUI_PrismDlg.cxx;h=c1b1ffe5a1ae707bd58bff6ef9ebc8352be75ce2;hb=942885daf47fd2adae8ed36fd74f20599d585bdc;hp=54e4ad76b53696db865ebf64de5fcad5be8216d6;hpb=09a5f03f15d360d00910f080d2309b688d0fe516;p=modules%2Fgeom.git diff --git a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx index 54e4ad76b..c1b1ffe5a 100644 --- a/src/GenerationGUI/GenerationGUI_PrismDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_PrismDlg.cxx @@ -17,7 +17,7 @@ // 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -33,31 +33,29 @@ #include "SalomeApp_Application.h" #include "LightApp_SelectionMgr.h" -#include -#include -#include -#include "GEOMImpl_Types.hxx" - #include #include +#include "GEOMImpl_Types.hxx" + #include "utilities.h" //================================================================================= // class : GenerationGUI_PrismDlg() -// purpose : Constructs a GenerationGUI_PrismDlg which is a child of 'parent', with the +// purpose : Constructs a GenerationGUI_PrismDlg 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. //================================================================================= GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(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) + : 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_PRISM"))); - QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_SELECT"))); - QPixmap image2(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM",tr("ICON_DLG_PRISM_2P"))); + SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); + QPixmap image0(aResMgr->loadPixmap("GEOM", tr("ICON_DLG_PRISM"))); + QPixmap image1(aResMgr->loadPixmap("GEOM", tr("ICON_SELECT"))); + QPixmap image2(aResMgr->loadPixmap("GEOM", tr("ICON_DLG_PRISM_2P"))); setCaption(tr("GEOM_EXTRUSION_TITLE")); @@ -65,9 +63,10 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid GroupConstructors->setTitle(tr("GEOM_EXTRUSION")); RadioButton1->setPixmap(image0); RadioButton2->setPixmap(image2); - //RadioButton2->close(TRUE); RadioButton3->close(TRUE); + RadioButton1->setChecked(true); + GroupPoints = new DlgRef_2Sel1Spin2Check(this, "GroupPoints"); GroupPoints->CheckButton1->hide(); GroupPoints->GroupBox1->setTitle(tr("GEOM_EXTRUSION_BSV")); @@ -95,7 +94,6 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid setHelpFileName("extrusion.htm"); - /* Initialisations */ Init(); } @@ -105,8 +103,8 @@ GenerationGUI_PrismDlg::GenerationGUI_PrismDlg(GeometryGUI* theGeometryGUI, QWid // purpose : Destroys the object and frees any allocated resources //================================================================================= GenerationGUI_PrismDlg::~GenerationGUI_PrismDlg() -{ - /* no need to delete child widgets, Qt does it all for us */ +{ + // no need to delete child widgets, Qt does it all for us } @@ -125,15 +123,15 @@ void GenerationGUI_PrismDlg::Init() GroupPoints2->LineEdit2->setReadOnly( true ); GroupPoints2->LineEdit3->setReadOnly( true ); - //myOkBase = myOkVec = false; + myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil(); myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false; - + /* Get setting of step value from file configuration */ SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr(); double step = resMgr->doubleValue( "Geometry", "SettingsGeomStep", 100); /* min, max, step and decimals for spin boxes & initial values */ - GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3); + GroupPoints->SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, DBL_DIGITS_DISPLAY); GroupPoints->SpinBox_DX->SetValue(100.0); /* signals and slots connections */ @@ -149,9 +147,10 @@ void GenerationGUI_PrismDlg::Init() connect(GroupPoints->LineEdit2, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); connect(GroupPoints->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox())); - connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)), GroupPoints->SpinBox_DX, SLOT(SetStep(double))); + connect(myGeomGUI, SIGNAL(SignalDefaultStepValueChanged(double)), + GroupPoints->SpinBox_DX, SLOT(SetStep(double))); - connect(GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(onReverse())); + connect(GroupPoints->CheckButton2, SIGNAL(toggled(bool)), this, SLOT(onReverse())); connect(GroupPoints2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument())); @@ -163,12 +162,10 @@ void GenerationGUI_PrismDlg::Init() connect(GroupPoints2->LineEdit3, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed())); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())) ; + connect(myGeomGUI->getApp()->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); initName(tr("GEOM_EXTRUSION")); - - globalSelection( GEOM_ALLSHAPES ); ConstructorsClicked(0); } @@ -179,52 +176,52 @@ void GenerationGUI_PrismDlg::Init() //================================================================================= void GenerationGUI_PrismDlg::ConstructorsClicked(int constructorId) { - disconnect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), 0, this, 0); - + erasePreview(); + disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0); + switch (constructorId) + { + case 0: { - case 0: - { - globalSelection( GEOM_POINT ); - - GroupPoints2->hide(); - resize(0, 0); - GroupPoints->show(); - - //GroupPoints->LineEdit1->setFocus(); - //myEditCurrentArgument = GroupPoints->LineEdit1; - //displayPreview(); - - myEditCurrentArgument = GroupPoints->LineEdit1; - GroupPoints->LineEdit1->setText(""); - GroupPoints->LineEdit2->setText(""); - GroupPoints2->LineEdit1->setText(""); - GroupPoints2->LineEdit2->setText(""); - GroupPoints2->LineEdit3->setText(""); - myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil(); - myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false; - - break; - } - case 1: - { - GroupPoints->hide(); - resize(0, 0); - GroupPoints2->show(); - - myEditCurrentArgument = GroupPoints2->LineEdit1; - GroupPoints2->LineEdit1->setText(""); - GroupPoints2->LineEdit2->setText(""); - GroupPoints2->LineEdit3->setText(""); - myPoint1 = myPoint2 = myBase = myVec = GEOM::GEOM_Object::_nil(); - myOkBase = myOkVec = myOkPnt1 = myOkPnt2 = false; - GroupPoints->LineEdit1->setText(""); - GroupPoints->LineEdit2->setText(""); - - break; - } + globalSelection( GEOM_ALLSHAPES ); + + GroupPoints2->hide(); + resize(0, 0); + GroupPoints->show(); + + myEditCurrentArgument = GroupPoints->LineEdit1; + GroupPoints->LineEdit1->setText(GroupPoints2->LineEdit1->text()); // keep base + GroupPoints->LineEdit2->setText(""); + myVec = GEOM::GEOM_Object::_nil(); + myOkVec = false; + + break; } - displayPreview(); + case 1: + { + globalSelection( GEOM_ALLSHAPES ); + + GroupPoints->hide(); + resize(0, 0); + GroupPoints2->show(); + + myEditCurrentArgument = GroupPoints2->LineEdit1; + GroupPoints2->LineEdit1->setText(GroupPoints->LineEdit1->text()); // keep base + GroupPoints2->LineEdit2->setText(""); + GroupPoints2->LineEdit3->setText(""); + myPoint1 = myPoint2 = GEOM::GEOM_Object::_nil(); + myOkPnt1 = myOkPnt2 = false; + + break; + } + } + + myEditCurrentArgument->setFocus(); + connect(myGeomGUI->getApp()->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + + if (!myOkBase) + SelectionIntoArgument(); } @@ -262,8 +259,8 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() erasePreview(); myEditCurrentArgument->setText(""); - if ( getConstructorId()==0 ) { - + if (getConstructorId() == 0) + { if (IObjectCount() != 1) { if (myEditCurrentArgument == GroupPoints->LineEdit1) myOkBase = false; @@ -288,13 +285,11 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() myVec = aSelectedObject; myOkVec = true; } - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); - displayPreview(); + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); } - - else { // getConstructorId()==1 - extrusion using 2 points - + else // getConstructorId()==1 - extrusion using 2 points + { if (IObjectCount() != 1) { if (myEditCurrentArgument == GroupPoints2->LineEdit1) myOkBase = false; @@ -330,9 +325,28 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() myOkPnt2 = true; } - myEditCurrentArgument->setText( GEOMBase::GetName( aSelectedObject ) ); + myEditCurrentArgument->setText(GEOMBase::GetName(aSelectedObject)); + } + + displayPreview(); +} - displayPreview(); + +//================================================================================= +// function : LineEditReturnPressed() +// purpose : +//================================================================================= +void GenerationGUI_PrismDlg::LineEditReturnPressed() +{ + QLineEdit* send = (QLineEdit*)sender(); + if (send == GroupPoints->LineEdit1 || + send == GroupPoints->LineEdit2 || + send == GroupPoints2->LineEdit1 || + send == GroupPoints2->LineEdit2 || + send == GroupPoints2->LineEdit3 ) + { + myEditCurrentArgument = send; + GEOMBase_Skeleton::LineEditReturnPressed(); } } @@ -344,81 +358,64 @@ void GenerationGUI_PrismDlg::SelectionIntoArgument() void GenerationGUI_PrismDlg::SetEditCurrentArgument() { QPushButton* send = (QPushButton*)sender(); - globalSelection( GEOM_ALLSHAPES ); - if(send == GroupPoints->PushButton1) { + if (send == GroupPoints->PushButton1) { GroupPoints->LineEdit1->setFocus(); myEditCurrentArgument = GroupPoints->LineEdit1; + globalSelection( GEOM_ALLSHAPES ); } - else if(send == GroupPoints->PushButton2) { + else if (send == GroupPoints->PushButton2) { GroupPoints->LineEdit2->setFocus(); myEditCurrentArgument = GroupPoints->LineEdit2; globalSelection( GEOM_LINE ); } - else if(send == GroupPoints2->PushButton1) { + else if (send == GroupPoints2->PushButton1) { GroupPoints2->LineEdit1->setFocus(); myEditCurrentArgument = GroupPoints2->LineEdit1; + globalSelection( GEOM_ALLSHAPES ); } - else if(send == GroupPoints2->PushButton2) { + else if (send == GroupPoints2->PushButton2) { GroupPoints2->LineEdit2->setFocus(); myEditCurrentArgument = GroupPoints2->LineEdit2; globalSelection( GEOM_POINT ); } - else if(send == GroupPoints2->PushButton3) { + else if (send == GroupPoints2->PushButton3) { GroupPoints2->LineEdit3->setFocus(); myEditCurrentArgument = GroupPoints2->LineEdit3; globalSelection( GEOM_POINT ); } + + myEditCurrentArgument->setFocus(); SelectionIntoArgument(); } //================================================================================= -// function : LineEditReturnPressed() +// function : ActivateThisDialog() // purpose : //================================================================================= -void GenerationGUI_PrismDlg::LineEditReturnPressed() +void GenerationGUI_PrismDlg::ActivateThisDialog() { - QLineEdit* send = (QLineEdit*)sender(); - if(send == GroupPoints->LineEdit1 || - send == GroupPoints->LineEdit2 || - send == GroupPoints2->LineEdit1 || - send == GroupPoints2->LineEdit2 || - send == GroupPoints2->LineEdit3 ) - { - myEditCurrentArgument = send; - GEOMBase_Skeleton::LineEditReturnPressed(); - } + GEOMBase_Skeleton::ActivateThisDialog(); + + connect(myGeomGUI->getApp()->selectionMgr(), + SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); + + ConstructorsClicked( getConstructorId() ); } + //================================================================================= // function : enterEvent() // purpose : when mouse enter onto the QWidget //================================================================================= void GenerationGUI_PrismDlg::enterEvent(QEvent * e) { - if ( !GroupConstructors->isEnabled() ) + if (!GroupConstructors->isEnabled()) ActivateThisDialog(); } -//================================================================================= -// function : ActivateThisDialog() -// purpose : -//================================================================================= -void GenerationGUI_PrismDlg::ActivateThisDialog() -{ - GEOMBase_Skeleton::ActivateThisDialog(); - globalSelection( GEOM_ALLSHAPES ); - connect(((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr(), - SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument())); - //GroupPoints->LineEdit1->setFocus(); - //myEditCurrentArgument = GroupPoints->LineEdit1; - //displayPreview(); - ConstructorsClicked( getConstructorId() ); -} - - //================================================================================= // function : ValueChangedInSpinBox() // purpose : @@ -453,7 +450,12 @@ GEOM::GEOM_IOperations_ptr GenerationGUI_PrismDlg::createOperation() //================================================================================= bool GenerationGUI_PrismDlg::isValid( QString& ) { - return myOkBase && ( myOkVec || (myOkPnt1 && myOkPnt2) ); + if (getConstructorId() == 0) + // by vector and height + return (myOkBase && myOkVec); + + // by two points + return (myOkBase && myOkPnt1 && myOkPnt2); } //================================================================================= @@ -464,15 +466,15 @@ bool GenerationGUI_PrismDlg::execute( ObjectList& objects ) { GEOM::GEOM_Object_var anObj; - switch ( getConstructorId() ) + switch ( getConstructorId() ) { - case 0 : - { + case 0: + { anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())-> MakePrismVecH(myBase, myVec, getHeight()); break; } - case 1 : + case 1: { anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())-> MakePrismTwoPnt(myBase, myPoint1, myPoint2);