From a40a5dd12dbd379340ac4c82b9f49e07a9626a1b Mon Sep 17 00:00:00 2001 From: Gavin Swanson Date: Fri, 7 Feb 2014 22:10:31 -0800 Subject: [PATCH] Add fancy unit/math input to pad tool Pad tool does not currently save the units, so the result is still in mm. --- src/Mod/PartDesign/Gui/TaskPadParameters.cpp | 64 ++++++++++---------- src/Mod/PartDesign/Gui/TaskPadParameters.ui | 11 +++- 2 files changed, 41 insertions(+), 34 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp index f3c213a29f3b..d30b88720ed5 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp @@ -61,13 +61,13 @@ TaskPadParameters::TaskPadParameters(ViewProviderPad *PadView,QWidget *parent) ui->setupUi(proxy); QMetaObject::connectSlotsByName(this); - connect(ui->doubleSpinBox, SIGNAL(valueChanged(double)), + connect(ui->lengthEdit, SIGNAL(valueChanged(double)), this, SLOT(onLengthChanged(double))); connect(ui->checkBoxMidplane, SIGNAL(toggled(bool)), this, SLOT(onMidplane(bool))); connect(ui->checkBoxReversed, SIGNAL(toggled(bool)), this, SLOT(onReversed(bool))); - connect(ui->doubleSpinBox2, SIGNAL(valueChanged(double)), + connect(ui->lengthEdit2, SIGNAL(valueChanged(double)), this, SLOT(onLength2Changed(double))); connect(ui->changeMode, SIGNAL(currentIndexChanged(int)), this, SLOT(onModeChanged(int))); @@ -81,8 +81,8 @@ TaskPadParameters::TaskPadParameters(ViewProviderPad *PadView,QWidget *parent) this->groupLayout()->addWidget(proxy); // Temporarily prevent unnecessary feature recomputes - ui->doubleSpinBox->blockSignals(true); - ui->doubleSpinBox2->blockSignals(true); + ui->lengthEdit->blockSignals(true); + ui->lengthEdit2->blockSignals(true); ui->checkBoxMidplane->blockSignals(true); ui->checkBoxReversed->blockSignals(true); ui->buttonFace->blockSignals(true); @@ -106,12 +106,12 @@ TaskPadParameters::TaskPadParameters(ViewProviderPad *PadView,QWidget *parent) } // Fill data into dialog elements - ui->doubleSpinBox->setMinimum(0); - ui->doubleSpinBox->setMaximum(INT_MAX); - ui->doubleSpinBox->setValue(l); - ui->doubleSpinBox2->setMinimum(0); - ui->doubleSpinBox2->setMaximum(INT_MAX); - ui->doubleSpinBox2->setValue(l2); + ui->lengthEdit->setMinimum(0); + ui->lengthEdit->setMaximum(INT_MAX); + ui->lengthEdit->setValue(l); + ui->lengthEdit2->setMinimum(0); + ui->lengthEdit2->setMaximum(INT_MAX); + ui->lengthEdit2->setValue(l2); ui->checkBoxMidplane->setChecked(midplane); // According to bug #0000521 the reversed option // shouldn't be de-activated if the pad has a support face @@ -129,8 +129,8 @@ TaskPadParameters::TaskPadParameters(ViewProviderPad *PadView,QWidget *parent) ui->changeMode->setCurrentIndex(index); // activate and de-activate dialog elements as appropriate - ui->doubleSpinBox->blockSignals(false); - ui->doubleSpinBox2->blockSignals(false); + ui->lengthEdit->blockSignals(false); + ui->lengthEdit2->blockSignals(false); ui->checkBoxMidplane->blockSignals(false); ui->checkBoxReversed->blockSignals(false); ui->buttonFace->blockSignals(false); @@ -142,32 +142,32 @@ TaskPadParameters::TaskPadParameters(ViewProviderPad *PadView,QWidget *parent) void TaskPadParameters::updateUI(int index) { if (index == 0) { // dimension - ui->doubleSpinBox->setEnabled(true); - ui->doubleSpinBox->selectAll(); + ui->lengthEdit->setEnabled(true); + ui->lengthEdit->selectAll(); // Make sure that the spin box has the focus to get key events // Calling setFocus() directly doesn't work because the spin box is not // yet visible. - QMetaObject::invokeMethod(ui->doubleSpinBox, "setFocus", Qt::QueuedConnection); + QMetaObject::invokeMethod(ui->lengthEdit, "setFocus", Qt::QueuedConnection); ui->checkBoxMidplane->setEnabled(true); // Reverse only makes sense if Midplane is not true ui->checkBoxReversed->setEnabled(!ui->checkBoxMidplane->isChecked()); - ui->doubleSpinBox2->setEnabled(false); + ui->lengthEdit2->setEnabled(false); ui->buttonFace->setEnabled(false); ui->lineFaceName->setEnabled(false); onButtonFace(false); } else if (index == 1 || index == 2) { // up to first/last - ui->doubleSpinBox->setEnabled(false); + ui->lengthEdit->setEnabled(false); ui->checkBoxMidplane->setEnabled(false); ui->checkBoxReversed->setEnabled(true); - ui->doubleSpinBox2->setEnabled(false); + ui->lengthEdit2->setEnabled(false); ui->buttonFace->setEnabled(false); ui->lineFaceName->setEnabled(false); onButtonFace(false); } else if (index == 3) { // up to face - ui->doubleSpinBox->setEnabled(false); + ui->lengthEdit->setEnabled(false); ui->checkBoxMidplane->setEnabled(false); ui->checkBoxReversed->setEnabled(false); - ui->doubleSpinBox2->setEnabled(false); + ui->lengthEdit2->setEnabled(false); ui->buttonFace->setEnabled(true); ui->lineFaceName->setEnabled(true); QMetaObject::invokeMethod(ui->lineFaceName, "setFocus", Qt::QueuedConnection); @@ -175,12 +175,12 @@ void TaskPadParameters::updateUI(int index) if (ui->lineFaceName->text().isEmpty()) onButtonFace(true); } else { // two dimensions - ui->doubleSpinBox->setEnabled(true); - ui->doubleSpinBox->selectAll(); - QMetaObject::invokeMethod(ui->doubleSpinBox, "setFocus", Qt::QueuedConnection); + ui->lengthEdit->setEnabled(true); + ui->lengthEdit->selectAll(); + QMetaObject::invokeMethod(ui->lengthEdit, "setFocus", Qt::QueuedConnection); ui->checkBoxMidplane->setEnabled(false); ui->checkBoxReversed->setEnabled(false); - ui->doubleSpinBox2->setEnabled(true); + ui->lengthEdit2->setEnabled(true); ui->buttonFace->setEnabled(false); ui->lineFaceName->setEnabled(false); onButtonFace(false); @@ -273,8 +273,8 @@ void TaskPadParameters::onModeChanged(int index) case 0: pcPad->Type.setValue("Length"); // Avoid error message - if (ui->doubleSpinBox->value() < Precision::Confusion()) - ui->doubleSpinBox->setValue(5.0); + if (ui->lengthEdit->getQuantity() < Precision::Confusion()) + ui->lengthEdit->setValue(5.0); break; case 1: pcPad->Type.setValue("UpToLast"); break; case 2: pcPad->Type.setValue("UpToFirst"); break; @@ -357,7 +357,7 @@ void TaskPadParameters::onUpdateView(bool on) double TaskPadParameters::getLength(void) const { - return ui->doubleSpinBox->value(); + return ui->lengthEdit->getQuantity().getValue(); } bool TaskPadParameters::getReversed(void) const @@ -372,7 +372,7 @@ bool TaskPadParameters::getMidplane(void) const double TaskPadParameters::getLength2(void) const { - return ui->doubleSpinBox2->value(); + return ui->lengthEdit2->getQuantity().getValue(); } int TaskPadParameters::getMode(void) const @@ -399,8 +399,8 @@ void TaskPadParameters::changeEvent(QEvent *e) { TaskBox::changeEvent(e); if (e->type() == QEvent::LanguageChange) { - ui->doubleSpinBox->blockSignals(true); - ui->doubleSpinBox2->blockSignals(true); + ui->lengthEdit->blockSignals(true); + ui->lengthEdit2->blockSignals(true); ui->lineFaceName->blockSignals(true); ui->changeMode->blockSignals(true); int index = ui->changeMode->currentIndex(); @@ -422,8 +422,8 @@ void TaskPadParameters::changeEvent(QEvent *e) ui->lineFaceName->setText(ok ? tr("Face") + QString::number(faceId) : tr("No face selected")); - ui->doubleSpinBox->blockSignals(false); - ui->doubleSpinBox2->blockSignals(false); + ui->lengthEdit->blockSignals(false); + ui->lengthEdit2->blockSignals(false); ui->lineFaceName->blockSignals(false); ui->changeMode->blockSignals(false); } diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.ui b/src/Mod/PartDesign/Gui/TaskPadParameters.ui index 69e85d4f809b..c9544c795c70 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.ui +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.ui @@ -44,7 +44,7 @@ - + 0.000000000000000 @@ -88,7 +88,7 @@ - + 0.000000000000000 @@ -139,5 +139,12 @@ + + + Gui::InputField + QLineEdit +
Gui/InputField.h
+
+