1 // Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 // GEOM GEOMGUI : GUI for Geometry component
24 // File : OperationGUI_FilletDlg.cxx
25 // Author : Damien COQUERET, Open CASCADE S.A.S.
27 #include "OperationGUI_FilletDlg.h"
30 #include <GeometryGUI.h>
33 #include <SUIT_Desktop.h>
34 #include <SUIT_Session.h>
35 #include <SUIT_ResourceMgr.h>
36 #include <SUIT_ViewWindow.h>
37 #include <SUIT_ViewManager.h>
38 #include <SalomeApp_Application.h>
39 #include <LightApp_SelectionMgr.h>
40 #include <OCCViewer_ViewModel.h>
43 #include <TColStd_MapOfInteger.hxx>
44 #include <TColStd_IndexedMapOfInteger.hxx>
46 #include <GEOMImpl_Types.hxx>
48 //=================================================================================
49 // class : OperationGUI_FilletDlg()
50 // purpose : Constructs a OperationGUI_FilletDlg which is a child of 'parent', with the
51 // name 'name' and widget flags set to 'f'.
52 // The dialog will by default be modeless, unless you set 'modal' to
53 // TRUE to construct a modal dialog.
54 //=================================================================================
55 OperationGUI_FilletDlg::OperationGUI_FilletDlg (GeometryGUI* theGeometryGUI, QWidget* parent)
56 : GEOMBase_Skeleton(theGeometryGUI, parent, false),
59 SUIT_ResourceMgr* aResMgr = myGeomGUI->getApp()->resourceMgr();
60 QPixmap image0 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_FILLET_ALL")));
61 QPixmap image1 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_FILLET_EDGE")));
62 QPixmap image2 (aResMgr->loadPixmap("GEOM", tr("ICON_DLG_FILLET_FACE")));
64 QPixmap iconSelect (aResMgr->loadPixmap("GEOM", tr("ICON_SELECT")));
66 setWindowTitle(tr("GEOM_FILLET_TITLE"));
68 /***************************************************************/
69 mainFrame()->GroupConstructors->setTitle(tr("GEOM_FILLET"));
70 mainFrame()->RadioButton1->setIcon(image0);
71 mainFrame()->RadioButton2->setIcon(image1);
72 mainFrame()->RadioButton3->setIcon(image2);
74 Group1 = new DlgRef_1Sel1Spin(centralWidget());
75 Group1->GroupBox1->setTitle(tr("GEOM_FILLET_ALL"));
76 Group1->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
77 Group1->TextLabel2->setText(tr("GEOM_RADIUS"));
78 Group1->PushButton1->setIcon(iconSelect);
79 Group1->LineEdit1->setReadOnly(true);
81 Group2 = new DlgRef_2Sel3Spin2Rb(centralWidget());
82 Group2->GroupBox1->setTitle(tr("GEOM_FILLET_EDGES"));
83 Group2->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
84 Group2->TextLabel2->setText(tr("SELECTED_EDGES"));
85 Group2->TextLabel3->setText(tr("GEOM_RADIUS"));
86 Group2->TextLabel4->setText(tr("GEOM_R1"));
87 Group2->TextLabel5->setText(tr("GEOM_R2"));
88 Group2->PushButton1->setIcon(iconSelect);
89 Group2->PushButton2->setIcon(iconSelect);
90 Group2->LineEdit1->setReadOnly(true);
91 Group2->LineEdit2->setReadOnly(true);
93 Group3 = new DlgRef_2Sel3Spin2Rb(centralWidget());
94 Group3->GroupBox1->setTitle(tr("GEOM_FILLET_FACES"));
95 Group3->TextLabel1->setText(tr("GEOM_MAIN_OBJECT"));
96 Group3->TextLabel2->setText(tr("SELECTED_FACES"));
97 Group3->TextLabel3->setText(tr("GEOM_RADIUS"));
98 Group3->TextLabel4->setText(tr("GEOM_R1"));
99 Group3->TextLabel5->setText(tr("GEOM_R2"));
100 Group3->PushButton1->setIcon(iconSelect);
101 Group3->PushButton2->setIcon(iconSelect);
102 Group3->LineEdit1->setReadOnly(true);
103 Group3->LineEdit2->setReadOnly(true);
105 QVBoxLayout* layout = new QVBoxLayout(centralWidget());
106 layout->setMargin(0); layout->setSpacing(6);
107 layout->addWidget(Group1);
108 layout->addWidget(Group2);
109 layout->addWidget(Group3);
110 /***************************************************************/
112 // Set range of spinboxes
113 double SpecificStep = 10.0;
114 initSpinBox(Group1->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, "length_precision" );
115 initSpinBox(Group2->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, "length_precision" );
116 initSpinBox(Group2->SpinBox_DY, 0.001, COORD_MAX, SpecificStep, "length_precision" );
117 initSpinBox(Group2->SpinBox_DZ, 0.001, COORD_MAX, SpecificStep, "length_precision" );
118 initSpinBox(Group3->SpinBox_DX, 0.001, COORD_MAX, SpecificStep, "length_precision" );
119 initSpinBox(Group3->SpinBox_DY, 0.001, COORD_MAX, SpecificStep, "length_precision" );
120 initSpinBox(Group3->SpinBox_DZ, 0.001, COORD_MAX, SpecificStep, "length_precision" );
122 setHelpFileName("fillet_operation_page.html");
128 //=================================================================================
129 // function : ~OperationGUI_FilletDlg()
130 // purpose : Destroys the object and frees any allocated resources
131 //=================================================================================
132 OperationGUI_FilletDlg::~OperationGUI_FilletDlg()
136 //=================================================================================
139 //=================================================================================
140 void OperationGUI_FilletDlg::Init()
142 // Set Initial values of spinboxes
143 Group1->SpinBox_DX->setValue(5);
144 Group2->SpinBox_DX->setValue(5);
145 Group2->SpinBox_DY->setValue(5);
146 Group2->SpinBox_DZ->setValue(5);
147 Group3->SpinBox_DX->setValue(5);
148 Group3->SpinBox_DY->setValue(5);
149 Group3->SpinBox_DZ->setValue(5);
152 Group1->LineEdit1->setText("");
153 Group2->LineEdit1->setText("");
154 Group2->LineEdit2->setText("");
155 Group3->LineEdit1->setText("");
156 Group3->LineEdit2->setText("");
158 myShape = GEOM::GEOM_Object::_nil();
163 showOnlyPreviewControl();
165 // signals and slots connections
168 connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk() ));
169 connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
172 connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int)));
175 connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
176 connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
177 connect(Group3->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
178 connect(Group2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
179 connect(Group3->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
182 connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
183 connect(Group2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
184 connect(Group3->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
187 connect(Group1->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
188 connect(Group2->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
189 connect(Group2->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
190 connect(Group2->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
191 connect(Group3->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
192 connect(Group3->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
193 connect(Group3->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
196 connect(Group2->RadioButton1, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
197 connect(Group2->RadioButton2, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
198 connect(Group3->RadioButton1, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
199 connect(Group3->RadioButton2, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
201 initName(tr("GEOM_FILLET"));
203 myConstructorId = -1;
204 ConstructorsClicked(0);
207 //=================================================================================
208 // function : ConstructorsClicked()
209 // purpose : Radio button management
210 //=================================================================================
211 void OperationGUI_FilletDlg::ConstructorsClicked (int constructorId)
213 if (myGeomGUI->getApp()->desktop()->activeWindow()->getViewManager()->getType()
214 != OCCViewer_Viewer::Type()) {
215 mainFrame()->RadioButton1->setChecked(true);
219 if (myConstructorId == constructorId)
222 // Get radius from previous widget
223 QString R = "5", R1 = "5", R2 = "5";
224 if (myConstructorId == 0) {
225 R = Group1->SpinBox_DX->text();
227 else if (myConstructorId == 1) {
228 R = Group2->SpinBox_DX->text();
229 R1 = Group2->SpinBox_DY->text();
230 R2 = Group2->SpinBox_DZ->text();
233 R = Group3->SpinBox_DX->text();
234 R1 = Group3->SpinBox_DY->text();
235 R2 = Group3->SpinBox_DZ->text();
238 myConstructorId = constructorId;
240 switch (constructorId) {
245 Group1->SpinBox_DX->setText(R);
251 Group2->SpinBox_DX->setText(R);
252 Group2->SpinBox_DY->setText(R1);
253 Group2->SpinBox_DZ->setText(R2);
259 Group3->SpinBox_DX->setText(R);
260 Group3->SpinBox_DY->setText(R1);
261 Group3->SpinBox_DZ->setText(R2);
267 if (constructorId == 0) Group1->PushButton1->click();
268 else if (constructorId == 1) Group2->PushButton1->click();
269 else Group3->PushButton1->click();
275 SelectionIntoArgument();
278 if (!myShape->_is_nil()) {
279 myEditCurrentArgument->setText(GEOMBase::GetName(myShape));
280 GEOMBase_Skeleton::LineEditReturnPressed();
281 switch (getConstructorId()) {
283 if (myEdges.Extent() == 0)
284 Group2->PushButton2->click();
287 if (myFaces.Extent() == 0)
288 Group3->PushButton2->click();
295 myEditCurrentArgument->setText("");
300 qApp->processEvents();
302 resize(minimumSizeHint());
305 //=================================================================================
306 // function : ClickOnOk()
308 //=================================================================================
309 void OperationGUI_FilletDlg::ClickOnOk()
311 setIsApplyAndClose( true );
316 //=================================================================================
317 // function : ClickOnApply()
319 //=================================================================================
320 bool OperationGUI_FilletDlg::ClickOnApply()
326 // activate selection and connect selection manager
327 ConstructorsClicked(getConstructorId());
331 //=================================================================================
332 // function : SelectionIntoArgument()
333 // purpose : Called when selection is changed or on dialog initialization or activation
334 //=================================================================================
335 void OperationGUI_FilletDlg::SelectionIntoArgument()
338 myEditCurrentArgument->setText("");
340 LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
341 SALOME_ListIO aSelList;
342 aSelMgr->selectedObjects(aSelList);
344 // If selection of main object is activated
345 if (myEditCurrentArgument == Group1->LineEdit1 ||
346 myEditCurrentArgument == Group2->LineEdit1 ||
347 myEditCurrentArgument == Group3->LineEdit1)
349 myShape = GEOM::GEOM_Object::_nil();
350 if (aSelList.Extent() == 1) {
351 GEOM::GEOM_Object_var anObj =
352 GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
354 if ( !anObj->_is_nil() ) {
356 myEditCurrentArgument->setText(GEOMBase::GetName(anObj));
363 // If face or edge selection is activated
364 else if (myEditCurrentArgument == Group2->LineEdit2 ||
365 myEditCurrentArgument == Group3->LineEdit2)
367 if (myEditCurrentArgument == Group2->LineEdit2) myEdges.Clear();
368 else myFaces.Clear();
369 if (aSelList.Extent() == 1) {
370 GEOM::GEOM_Object_var anObj =
371 GEOMBase::ConvertIOinGEOMObject( aSelList.First() );
373 if ( !anObj->_is_nil() ) {
374 TColStd_IndexedMapOfInteger anIndexes;
375 aSelMgr->GetIndexes(aSelList.First(), anIndexes);
377 if (anIndexes.Extent() > 0) {
379 if (anIndexes.Extent() == 1) {
380 int anIndex = anIndexes(1);
382 aName = QString(GEOMBase::GetName(anObj)) + QString(":%1").arg(anIndex);
385 aName = tr("GEOM_MEN_POPUP_NAME").arg(anIndexes.Extent());
388 myEditCurrentArgument->setText(aName);
390 if (myConstructorId == 1)
401 // clear selection of the faces or edges
402 if (!(myEditCurrentArgument == Group2->LineEdit2 ||
403 myEditCurrentArgument == Group3->LineEdit2)) {
404 disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
405 myGeomGUI->getApp()->selectionMgr()->clearSelected();
406 connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
407 this, SLOT(SelectionIntoArgument()));
410 switch (getConstructorId()) {
412 if (myEditCurrentArgument == Group2->LineEdit1) {
413 if (!myShape->_is_nil() && myEdges.Extent() == 0)
414 Group2->PushButton2->click();
418 if (myEditCurrentArgument == Group3->LineEdit1) {
419 if (!myShape->_is_nil() && myFaces.Extent() == 0)
420 Group3->PushButton2->click();
427 //rnv: To fix the bug IPAL22041 TC5.1.5: "Fillet Construcion" dialog loses current selection.
428 // Restore selection of the main shape, if need,
429 // because it was canceled.
430 aSelMgr->selectedObjects(aSelList);
431 if (aSelList.Extent() == 0 && !myShape->_is_nil()) {
432 disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
434 list.push_back(myShape);
436 connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
437 this, SLOT(SelectionIntoArgument()));
441 //=================================================================================
442 // function : SetEditCurrentArgument()
444 //=================================================================================
445 void OperationGUI_FilletDlg::SetEditCurrentArgument()
447 QPushButton* send = (QPushButton*)sender();
449 if (send == Group1->PushButton1) {
450 myEditCurrentArgument = Group1->LineEdit1;
452 else if (send == Group2->PushButton1) {
453 myEditCurrentArgument = Group2->LineEdit1;
454 Group2->PushButton2->setDown(false);
455 Group2->LineEdit2->setEnabled(false);
457 else if (send == Group2->PushButton2) {
458 myEditCurrentArgument = Group2->LineEdit2;
459 Group2->PushButton1->setDown(false);
460 Group2->LineEdit1->setEnabled(false);
462 else if (send == Group3->PushButton1) {
463 myEditCurrentArgument = Group3->LineEdit1;
464 Group3->PushButton2->setDown(false);
465 Group3->LineEdit2->setEnabled(false);
467 else if (send == Group3->PushButton2) {
468 myEditCurrentArgument = Group3->LineEdit2;
469 Group3->PushButton1->setDown(false);
470 Group3->LineEdit1->setEnabled(false);
474 myEditCurrentArgument->setEnabled(true);
475 myEditCurrentArgument->setFocus();
476 // after setFocus(), because it will be setDown(false) when loses focus
481 // seems we need it only to avoid preview disappearing, caused by selection mode change
485 //=================================================================================
486 // function : LineEditReturnPressed()
488 //=================================================================================
489 void OperationGUI_FilletDlg::LineEditReturnPressed()
491 QLineEdit* send = (QLineEdit*)sender();
493 if (send == Group1->LineEdit1)
494 myEditCurrentArgument = Group1->LineEdit1;
495 else if (send == Group2->LineEdit1)
496 myEditCurrentArgument = Group2->LineEdit1;
497 else if (send == Group3->LineEdit1)
498 myEditCurrentArgument = Group3->LineEdit1;
502 GEOMBase_Skeleton::LineEditReturnPressed();
505 //=================================================================================
506 // function : ActivateThisDialog()
508 //=================================================================================
509 void OperationGUI_FilletDlg::ActivateThisDialog()
511 GEOMBase_Skeleton::ActivateThisDialog();
512 connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
513 this, SLOT( SelectionIntoArgument() ) );
515 ConstructorsClicked( getConstructorId() );
518 //=================================================================================
519 // function : enterEvent()
521 //=================================================================================
522 void OperationGUI_FilletDlg::enterEvent (QEvent*)
524 if (!mainFrame()->GroupConstructors->isEnabled())
525 this->ActivateThisDialog();
528 //=================================================================================
529 // function : ValueChangedInSpinBox()
531 //=================================================================================
532 void OperationGUI_FilletDlg::ValueChangedInSpinBox (double)
537 //=================================================================================
538 // function : activateSelection
539 // purpose : Activate selection in accordance with myEditCurrentArgument
540 //=================================================================================
541 void OperationGUI_FilletDlg::activateSelection()
543 disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
545 if (!myShape->_is_nil() && myEditCurrentArgument == Group2->LineEdit2)
546 localSelection(myShape, TopAbs_EDGE);
547 else if (!myShape->_is_nil() && myEditCurrentArgument == Group3->LineEdit2)
548 localSelection(myShape, TopAbs_FACE);
550 TColStd_MapOfInteger aMap;
551 aMap.Add(GEOM_SHELL);
552 aMap.Add(GEOM_SOLID);
553 aMap.Add(GEOM_COMPOUND);
554 globalSelection(aMap);
557 connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
558 this, SLOT(SelectionIntoArgument()));
561 //=================================================================================
562 // function : enableWidgets
563 // purpose : Enable widgets of faces in accordance with value of main object
564 //=================================================================================
565 void OperationGUI_FilletDlg::enableWidgets()
567 int anId = getConstructorId();
569 bool toEnable = !myShape->_is_nil();
572 //Group2->LineEdit2->setEnabled(toEnable);
573 Group2->PushButton2->setEnabled(toEnable);
576 Group2->LineEdit2->setText("");
580 else if (anId == 2) {
581 //Group3->LineEdit2->setEnabled(toEnable);
582 Group3->PushButton2->setEnabled(toEnable);
585 Group3->LineEdit2->setText("");
591 //=================================================================================
592 // function : createOperation
594 //=================================================================================
595 GEOM::GEOM_IOperations_ptr OperationGUI_FilletDlg::createOperation()
597 return getGeomEngine()->GetILocalOperations(getStudyId());
600 //=================================================================================
601 // function : isValid()
602 // purpose : Verify validity of input data
603 //=================================================================================
604 bool OperationGUI_FilletDlg::isValid (QString& msg)
607 switch (getConstructorId())
610 ok = Group1->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
611 return !myShape->_is_nil() && ok;
613 if (Group2->RadioButton1->isChecked())
614 ok = Group2->SpinBox_DX->isValid( msg, !IsPreview() );
617 ok = Group2->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
618 ok = Group2->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
620 return !myShape->_is_nil() && myEdges.Extent() > 0 && ok;
622 if (Group3->RadioButton1->isChecked())
623 ok = Group3->SpinBox_DX->isValid( msg, !IsPreview() );
626 ok = Group3->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
627 ok = Group3->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
629 return !myShape->_is_nil() && myFaces.Extent() > 0 && ok;
630 default: return false;
634 //=================================================================================
635 // function : execute
637 //=================================================================================
638 bool OperationGUI_FilletDlg::execute (ObjectList& objects)
640 QStringList aParameters;
641 GEOM::GEOM_Object_var anObj;
643 int anId = getConstructorId();
645 GEOM::GEOM_ILocalOperations_var anOper = GEOM::GEOM_ILocalOperations::_narrow(getOperation());
648 anObj = anOper->MakeFilletAll(myShape, getRadius());
649 if (!anObj->_is_nil())
650 aParameters << Group1->SpinBox_DX->text();
652 else if (anId == 1) {
653 GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
654 aList->length(myEdges.Extent());
656 for (int i = 1, n = myEdges.Extent(); i <= n; i++)
657 aList[ i - 1 ] = myEdges(i);
659 if (Group2->RadioButton1->isChecked())
661 anObj = anOper->MakeFilletEdges(myShape, getRadius(), aList);
662 if (!anObj->_is_nil())
663 aParameters << Group2->SpinBox_DX->text();
667 anObj = anOper->MakeFilletEdgesR1R2(myShape,
668 Group2->SpinBox_DY->value(),
669 Group2->SpinBox_DZ->value(),
671 if (!anObj->_is_nil())
673 aParameters << Group2->SpinBox_DY->text();
674 aParameters << Group2->SpinBox_DZ->text();
678 else if (anId == 2) {
679 GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
680 aList->length(myFaces.Extent());
682 for (int i = 1, n = myFaces.Extent(); i <= n; i++)
683 aList[ i - 1 ] = myFaces(i);
685 if (Group3->RadioButton1->isChecked()) {
686 anObj = anOper->MakeFilletFaces(myShape, getRadius(), aList);
687 if (!anObj->_is_nil())
688 aParameters << Group3->SpinBox_DX->text();
691 anObj = anOper->MakeFilletFacesR1R2(myShape,
692 Group3->SpinBox_DY->value(),
693 Group3->SpinBox_DZ->value(), aList);
694 if (!anObj->_is_nil())
696 aParameters << Group3->SpinBox_DY->text();
697 aParameters << Group3->SpinBox_DZ->text();
702 if (!anObj->_is_nil())
705 anObj->SetParameters(aParameters.join(":").toLatin1().constData());
706 objects.push_back(anObj._retn());
712 //=================================================================================
713 // function : getRadius
714 // purpose : Get radius
715 //=================================================================================
716 double OperationGUI_FilletDlg::getRadius() const
718 int anId = getConstructorId();
719 if (anId == 0) return Group1->SpinBox_DX->value();
720 else if (anId == 1) return Group2->SpinBox_DX->value();
721 else return Group3->SpinBox_DX->value();
724 //=================================================================================
725 // function : RadiobuttonClicked
727 //=================================================================================
728 void OperationGUI_FilletDlg::RadioButtonClicked()
730 const QObject* s = sender();
732 bool flag = s == Group2->RadioButton1 || s == Group3->RadioButton1;
734 Group2->RadioButton1->blockSignals(true);
735 Group2->RadioButton2->blockSignals(true);
736 Group3->RadioButton1->blockSignals(true);
737 Group3->RadioButton2->blockSignals(true);
739 Group2->SpinBox_DX->setEnabled(flag);
740 Group2->SpinBox_DY->setEnabled(!flag);
741 Group2->SpinBox_DZ->setEnabled(!flag);
742 Group2->RadioButton1->setChecked(flag);
743 Group2->RadioButton2->setChecked(!flag);
744 Group3->SpinBox_DX->setEnabled(flag);
745 Group3->SpinBox_DY->setEnabled(!flag);
746 Group3->SpinBox_DZ->setEnabled(!flag);
747 Group3->RadioButton1->setChecked(flag);
748 Group3->RadioButton2->setChecked(!flag);
750 Group2->RadioButton1->blockSignals(false);
751 Group2->RadioButton2->blockSignals(false);
752 Group3->RadioButton1->blockSignals(false);
753 Group3->RadioButton2->blockSignals(false);