1 // Copyright (C) 2007-2010 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 // signals and slots connections
166 connect(buttonOk(), SIGNAL(clicked()), this, SLOT(ClickOnOk() ));
167 connect(buttonApply(), SIGNAL(clicked()), this, SLOT(ClickOnApply()));
170 connect(this, SIGNAL(constructorsClicked(int)), this, SLOT(ConstructorsClicked(int)));
173 connect(Group1->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
174 connect(Group2->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
175 connect(Group3->PushButton1, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
176 connect(Group2->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
177 connect(Group3->PushButton2, SIGNAL(clicked()), this, SLOT(SetEditCurrentArgument()));
180 connect(Group1->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
181 connect(Group2->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
182 connect(Group3->LineEdit1, SIGNAL(returnPressed()), this, SLOT(LineEditReturnPressed()));
185 connect(Group1->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
186 connect(Group2->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
187 connect(Group2->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
188 connect(Group2->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
189 connect(Group3->SpinBox_DX, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
190 connect(Group3->SpinBox_DY, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
191 connect(Group3->SpinBox_DZ, SIGNAL(valueChanged(double)), this, SLOT(ValueChangedInSpinBox(double)));
194 connect(Group2->RadioButton1, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
195 connect(Group2->RadioButton2, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
196 connect(Group3->RadioButton1, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
197 connect(Group3->RadioButton2, SIGNAL(clicked()), this, SLOT(RadioButtonClicked()));
199 initName(tr("GEOM_FILLET"));
201 myConstructorId = -1;
202 ConstructorsClicked(0);
205 //=================================================================================
206 // function : ConstructorsClicked()
207 // purpose : Radio button management
208 //=================================================================================
209 void OperationGUI_FilletDlg::ConstructorsClicked (int constructorId)
211 if (myGeomGUI->getApp()->desktop()->activeWindow()->getViewManager()->getType()
212 != OCCViewer_Viewer::Type()) {
213 mainFrame()->RadioButton1->setChecked(true);
217 if (myConstructorId == constructorId)
220 // Get radius from previous widget
221 QString R = "5", R1 = "5", R2 = "5";
222 if (myConstructorId == 0) {
223 R = Group1->SpinBox_DX->text();
225 else if (myConstructorId == 1) {
226 R = Group2->SpinBox_DX->text();
227 R1 = Group2->SpinBox_DY->text();
228 R2 = Group2->SpinBox_DZ->text();
231 R = Group3->SpinBox_DX->text();
232 R1 = Group3->SpinBox_DY->text();
233 R2 = Group3->SpinBox_DZ->text();
236 myConstructorId = constructorId;
238 switch (constructorId) {
243 Group1->SpinBox_DX->setText(R);
249 Group2->SpinBox_DX->setText(R);
250 Group2->SpinBox_DY->setText(R1);
251 Group2->SpinBox_DZ->setText(R2);
257 Group3->SpinBox_DX->setText(R);
258 Group3->SpinBox_DY->setText(R1);
259 Group3->SpinBox_DZ->setText(R2);
265 if (constructorId == 0) Group1->PushButton1->click();
266 else if (constructorId == 1) Group2->PushButton1->click();
267 else Group3->PushButton1->click();
273 SelectionIntoArgument();
276 if (!myShape->_is_nil()) {
277 myEditCurrentArgument->setText(GEOMBase::GetName(myShape));
278 GEOMBase_Skeleton::LineEditReturnPressed();
279 switch (getConstructorId()) {
281 if (myEdges.Extent() == 0)
282 Group2->PushButton2->click();
285 if (myFaces.Extent() == 0)
286 Group3->PushButton2->click();
293 myEditCurrentArgument->setText("");
298 qApp->processEvents();
300 resize(minimumSizeHint());
303 //=================================================================================
304 // function : ClickOnOk()
306 //=================================================================================
307 void OperationGUI_FilletDlg::ClickOnOk()
313 //=================================================================================
314 // function : ClickOnApply()
316 //=================================================================================
317 bool OperationGUI_FilletDlg::ClickOnApply()
323 // activate selection and connect selection manager
324 ConstructorsClicked(getConstructorId());
328 //=================================================================================
329 // function : SelectionIntoArgument()
330 // purpose : Called when selection is changed or on dialog initialization or activation
331 //=================================================================================
332 void OperationGUI_FilletDlg::SelectionIntoArgument()
335 myEditCurrentArgument->setText("");
337 LightApp_SelectionMgr* aSelMgr = myGeomGUI->getApp()->selectionMgr();
338 SALOME_ListIO aSelList;
339 aSelMgr->selectedObjects(aSelList);
341 // If selection of main object is activated
342 if (myEditCurrentArgument == Group1->LineEdit1 ||
343 myEditCurrentArgument == Group2->LineEdit1 ||
344 myEditCurrentArgument == Group3->LineEdit1)
346 myShape = GEOM::GEOM_Object::_nil();
347 if (aSelList.Extent() == 1) {
348 Standard_Boolean aResult = Standard_False;
349 GEOM::GEOM_Object_var anObj =
350 GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult);
352 if (aResult && !anObj->_is_nil()) {
354 myEditCurrentArgument->setText(GEOMBase::GetName(anObj));
361 // If face or edge selection is activated
362 else if (myEditCurrentArgument == Group2->LineEdit2 ||
363 myEditCurrentArgument == Group3->LineEdit2)
365 if (myEditCurrentArgument == Group2->LineEdit2) myEdges.Clear();
366 else myFaces.Clear();
367 if (aSelList.Extent() == 1) {
368 Standard_Boolean aResult = Standard_False;
369 GEOM::GEOM_Object_var anObj =
370 GEOMBase::ConvertIOinGEOMObject(aSelList.First(), aResult);
372 if (aResult && !anObj->_is_nil()) {
373 TColStd_IndexedMapOfInteger anIndexes;
374 aSelMgr->GetIndexes(aSelList.First(), anIndexes);
376 if (anIndexes.Extent() > 0) {
378 if (anIndexes.Extent() == 1) {
379 int anIndex = anIndexes(1);
381 aName = QString(GEOMBase::GetName(anObj)) + QString(":%1").arg(anIndex);
384 aName = tr("GEOM_MEN_POPUP_NAME").arg(anIndexes.Extent());
387 myEditCurrentArgument->setText(aName);
389 if (myConstructorId == 1)
401 if (!(myEditCurrentArgument == Group2->LineEdit2 ||
402 myEditCurrentArgument == Group3->LineEdit2)) {
403 disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
404 myGeomGUI->getApp()->selectionMgr()->clearSelected();
405 connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
406 this, SLOT(SelectionIntoArgument()));
409 switch (getConstructorId()) {
411 if (myEditCurrentArgument == Group2->LineEdit1) {
412 if (!myShape->_is_nil() && myEdges.Extent() == 0)
413 Group2->PushButton2->click();
417 if (myEditCurrentArgument == Group3->LineEdit1) {
418 if (!myShape->_is_nil() && myFaces.Extent() == 0)
419 Group3->PushButton2->click();
427 //=================================================================================
428 // function : SetEditCurrentArgument()
430 //=================================================================================
431 void OperationGUI_FilletDlg::SetEditCurrentArgument()
433 QPushButton* send = (QPushButton*)sender();
435 if (send == Group1->PushButton1) {
436 myEditCurrentArgument = Group1->LineEdit1;
438 else if (send == Group2->PushButton1) {
439 myEditCurrentArgument = Group2->LineEdit1;
440 Group2->PushButton2->setDown(false);
441 Group2->LineEdit2->setEnabled(false);
443 else if (send == Group2->PushButton2) {
444 myEditCurrentArgument = Group2->LineEdit2;
445 Group2->PushButton1->setDown(false);
446 Group2->LineEdit1->setEnabled(false);
448 else if (send == Group3->PushButton1) {
449 myEditCurrentArgument = Group3->LineEdit1;
450 Group3->PushButton2->setDown(false);
451 Group3->LineEdit2->setEnabled(false);
453 else if (send == Group3->PushButton2) {
454 myEditCurrentArgument = Group3->LineEdit2;
455 Group3->PushButton1->setDown(false);
456 Group3->LineEdit1->setEnabled(false);
460 myEditCurrentArgument->setEnabled(true);
461 myEditCurrentArgument->setFocus();
462 // after setFocus(), because it will be setDown(false) when loses focus
467 // seems we need it only to avoid preview disappearing, caused by selection mode change
471 //=================================================================================
472 // function : LineEditReturnPressed()
474 //=================================================================================
475 void OperationGUI_FilletDlg::LineEditReturnPressed()
477 QLineEdit* send = (QLineEdit*)sender();
479 if (send == Group1->LineEdit1)
480 myEditCurrentArgument = Group1->LineEdit1;
481 else if (send == Group2->LineEdit1)
482 myEditCurrentArgument = Group2->LineEdit1;
483 else if (send == Group3->LineEdit1)
484 myEditCurrentArgument = Group3->LineEdit1;
488 GEOMBase_Skeleton::LineEditReturnPressed();
491 //=================================================================================
492 // function : ActivateThisDialog()
494 //=================================================================================
495 void OperationGUI_FilletDlg::ActivateThisDialog()
497 GEOMBase_Skeleton::ActivateThisDialog();
498 connect( myGeomGUI->getApp()->selectionMgr(), SIGNAL( currentSelectionChanged() ),
499 this, SLOT( SelectionIntoArgument() ) );
501 ConstructorsClicked( getConstructorId() );
504 //=================================================================================
505 // function : enterEvent()
507 //=================================================================================
508 void OperationGUI_FilletDlg::enterEvent (QEvent*)
510 if (!mainFrame()->GroupConstructors->isEnabled())
511 this->ActivateThisDialog();
514 //=================================================================================
515 // function : ValueChangedInSpinBox()
517 //=================================================================================
518 void OperationGUI_FilletDlg::ValueChangedInSpinBox (double)
523 //=================================================================================
524 // function : activateSelection
525 // purpose : Activate selection in accordance with myEditCurrentArgument
526 //=================================================================================
527 void OperationGUI_FilletDlg::activateSelection()
529 disconnect(myGeomGUI->getApp()->selectionMgr(), 0, this, 0);
531 if (!myShape->_is_nil() && myEditCurrentArgument == Group2->LineEdit2)
532 localSelection(myShape, TopAbs_EDGE);
533 else if (!myShape->_is_nil() && myEditCurrentArgument == Group3->LineEdit2)
534 localSelection(myShape, TopAbs_FACE);
536 TColStd_MapOfInteger aMap;
537 aMap.Add(GEOM_SHELL);
538 aMap.Add(GEOM_SOLID);
539 aMap.Add(GEOM_COMPOUND);
540 globalSelection(aMap);
543 connect(myGeomGUI->getApp()->selectionMgr(), SIGNAL(currentSelectionChanged()),
544 this, SLOT(SelectionIntoArgument()));
547 //=================================================================================
548 // function : enableWidgets
549 // purpose : Enable widgets of faces in accordance with value of main object
550 //=================================================================================
551 void OperationGUI_FilletDlg::enableWidgets()
553 int anId = getConstructorId();
555 bool toEnable = !myShape->_is_nil();
558 //Group2->LineEdit2->setEnabled(toEnable);
559 Group2->PushButton2->setEnabled(toEnable);
562 Group2->LineEdit2->setText("");
566 else if (anId == 2) {
567 //Group3->LineEdit2->setEnabled(toEnable);
568 Group3->PushButton2->setEnabled(toEnable);
571 Group3->LineEdit2->setText("");
577 //=================================================================================
578 // function : createOperation
580 //=================================================================================
581 GEOM::GEOM_IOperations_ptr OperationGUI_FilletDlg::createOperation()
583 return getGeomEngine()->GetILocalOperations(getStudyId());
586 //=================================================================================
587 // function : isValid()
588 // purpose : Verify validity of input data
589 //=================================================================================
590 bool OperationGUI_FilletDlg::isValid (QString& msg)
593 switch (getConstructorId())
596 ok = Group1->SpinBox_DX->isValid( msg, !IsPreview() ) && ok;
597 return !myShape->_is_nil() && ok;
599 if (Group2->RadioButton1->isChecked())
600 ok = Group2->SpinBox_DX->isValid( msg, !IsPreview() );
603 ok = Group2->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
604 ok = Group2->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
606 return !myShape->_is_nil() && myEdges.Extent() > 0 && ok;
608 if (Group3->RadioButton1->isChecked())
609 ok = Group3->SpinBox_DX->isValid( msg, !IsPreview() );
612 ok = Group3->SpinBox_DY->isValid( msg, !IsPreview() ) && ok;
613 ok = Group3->SpinBox_DZ->isValid( msg, !IsPreview() ) && ok;
615 return !myShape->_is_nil() && myFaces.Extent() > 0 && ok;
616 default: return false;
620 //=================================================================================
621 // function : execute
623 //=================================================================================
624 bool OperationGUI_FilletDlg::execute (ObjectList& objects)
626 QStringList aParameters;
627 GEOM::GEOM_Object_var anObj;
629 int anId = getConstructorId();
631 GEOM::GEOM_ILocalOperations_var anOper = GEOM::GEOM_ILocalOperations::_narrow(getOperation());
634 anObj = anOper->MakeFilletAll(myShape, getRadius());
635 if (!anObj->_is_nil())
636 aParameters << Group1->SpinBox_DX->text();
638 else if (anId == 1) {
639 GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
640 aList->length(myEdges.Extent());
642 for (int i = 1, n = myEdges.Extent(); i <= n; i++)
643 aList[ i - 1 ] = myEdges(i);
645 if (Group2->RadioButton1->isChecked())
647 anObj = anOper->MakeFilletEdges(myShape, getRadius(), aList);
648 if (!anObj->_is_nil())
649 aParameters << Group2->SpinBox_DX->text();
653 anObj = anOper->MakeFilletEdgesR1R2(myShape,
654 Group2->SpinBox_DY->value(),
655 Group2->SpinBox_DZ->value(),
657 if (!anObj->_is_nil())
659 aParameters << Group2->SpinBox_DY->text();
660 aParameters << Group2->SpinBox_DZ->text();
664 else if (anId == 2) {
665 GEOM::ListOfLong_var aList = new GEOM::ListOfLong;
666 aList->length(myFaces.Extent());
668 for (int i = 1, n = myFaces.Extent(); i <= n; i++)
669 aList[ i - 1 ] = myFaces(i);
671 if (Group3->RadioButton1->isChecked()) {
672 anObj = anOper->MakeFilletFaces(myShape, getRadius(), aList);
673 if (!anObj->_is_nil())
674 aParameters << Group3->SpinBox_DX->text();
677 anObj = anOper->MakeFilletFacesR1R2(myShape,
678 Group3->SpinBox_DY->value(),
679 Group3->SpinBox_DZ->value(), aList);
680 if (!anObj->_is_nil())
682 aParameters << Group3->SpinBox_DY->text();
683 aParameters << Group3->SpinBox_DZ->text();
688 if (!anObj->_is_nil())
691 anObj->SetParameters(aParameters.join(":").toLatin1().constData());
692 objects.push_back(anObj._retn());
698 //=================================================================================
699 // function : getRadius
700 // purpose : Get radius
701 //=================================================================================
702 double OperationGUI_FilletDlg::getRadius() const
704 int anId = getConstructorId();
705 if (anId == 0) return Group1->SpinBox_DX->value();
706 else if (anId == 1) return Group2->SpinBox_DX->value();
707 else return Group3->SpinBox_DX->value();
710 //=================================================================================
711 // function : RadiobuttonClicked
713 //=================================================================================
714 void OperationGUI_FilletDlg::RadioButtonClicked()
716 const QObject* s = sender();
718 bool flag = s == Group2->RadioButton1 || s == Group3->RadioButton1;
720 Group2->RadioButton1->blockSignals(true);
721 Group2->RadioButton2->blockSignals(true);
722 Group3->RadioButton1->blockSignals(true);
723 Group3->RadioButton2->blockSignals(true);
725 Group2->SpinBox_DX->setEnabled(flag);
726 Group2->SpinBox_DY->setEnabled(!flag);
727 Group2->SpinBox_DZ->setEnabled(!flag);
728 Group2->RadioButton1->setChecked(flag);
729 Group2->RadioButton2->setChecked(!flag);
730 Group3->SpinBox_DX->setEnabled(flag);
731 Group3->SpinBox_DY->setEnabled(!flag);
732 Group3->SpinBox_DZ->setEnabled(!flag);
733 Group3->RadioButton1->setChecked(flag);
734 Group3->RadioButton2->setChecked(!flag);
736 Group2->RadioButton1->blockSignals(false);
737 Group2->RadioButton2->blockSignals(false);
738 Group3->RadioButton1->blockSignals(false);
739 Group3->RadioButton2->blockSignals(false);