diff --git a/src/Mod/Part/Gui/DlgPrimitives.cpp b/src/Mod/Part/Gui/DlgPrimitives.cpp index cd2643be47..f2ed52c094 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.cpp +++ b/src/Mod/Part/Gui/DlgPrimitives.cpp @@ -208,7 +208,16 @@ bool AbstractPrimitive::hasValidPrimitive() const return (!featurePtr.expired()); } -void AbstractPrimitive::connectSignalMapper(QWidget *sender, const char *signal, QSignalMapper* mapper) +void AbstractPrimitive::connectSignalMapper(QSignalMapper* mapper) +{ +#if QT_VERSION < QT_VERSION_CHECK(5,15,0) + connect(mapper, qOverload(&QSignalMapper::mapped), this, &AbstractPrimitive::changeValue); +#else + connect(mapper, &QSignalMapper::mappedObject, this, &AbstractPrimitive::changeValue); +#endif +} + +void AbstractPrimitive::connectSignalMapper(QObject *sender, const char *signal, QSignalMapper* mapper) { connect(sender, signal, mapper, SLOT(map())); mapper->setMapping(sender, sender); @@ -230,7 +239,7 @@ PlanePrimitive::PlanePrimitive(std::shared_ptr ui, Part::Plane ui->planeWidth->bind(feature->Width); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->planeLength, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->planeWidth, SIGNAL(valueChanged(double)), mapper); } @@ -269,7 +278,7 @@ QString PlanePrimitive::change(const QString& objectName, const QString& placeme placement); } -void PlanePrimitive::changeValue(QWidget* widget) +void PlanePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -303,7 +312,7 @@ BoxPrimitive::BoxPrimitive(std::shared_ptr ui, Part::Box* feat ui->boxHeight->bind(feature->Height); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->boxLength, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->boxWidth, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->boxHeight, SIGNAL(valueChanged(double)), mapper); @@ -347,7 +356,7 @@ QString BoxPrimitive::change(const QString& objectName, const QString& placement placement); } -void BoxPrimitive::changeValue(QWidget* widget) +void BoxPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -388,7 +397,7 @@ CylinderPrimitive::CylinderPrimitive(std::shared_ptr ui, Part: ui->cylinderAngle->bind(feature->Angle); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->cylinderRadius, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->cylinderHeight, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->cylinderXSkew, SIGNAL(valueChanged(double)), mapper); @@ -438,7 +447,7 @@ QString CylinderPrimitive::change(const QString& objectName, const QString& plac placement); } -void CylinderPrimitive::changeValue(QWidget* widget) +void CylinderPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -484,7 +493,7 @@ ConePrimitive::ConePrimitive(std::shared_ptr ui, Part::Cone* f ui->coneAngle->bind(feature->Angle); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->coneRadius1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->coneRadius2, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->coneHeight, SIGNAL(valueChanged(double)), mapper); @@ -533,7 +542,7 @@ QString ConePrimitive::change(const QString& objectName, const QString& placemen placement); } -void ConePrimitive::changeValue(QWidget* widget) +void ConePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -576,7 +585,7 @@ SpherePrimitive::SpherePrimitive(std::shared_ptr ui, Part::Sph ui->sphereAngle3->bind(feature->Angle3); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->sphereRadius, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->sphereAngle1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->sphereAngle2, SIGNAL(valueChanged(double)), mapper); @@ -625,7 +634,7 @@ QString SpherePrimitive::change(const QString& objectName, const QString& placem placement); } -void SpherePrimitive::changeValue(QWidget* widget) +void SpherePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -674,7 +683,7 @@ EllipsoidPrimitive::EllipsoidPrimitive(std::shared_ptr ui, Par ui->ellipsoidAngle3->bind(feature->Angle3); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->ellipsoidRadius1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->ellipsoidRadius2, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->ellipsoidRadius3, SIGNAL(valueChanged(double)), mapper); @@ -734,7 +743,7 @@ QString EllipsoidPrimitive::change(const QString& objectName, const QString& pla placement); } -void EllipsoidPrimitive::changeValue(QWidget* widget) +void EllipsoidPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -786,7 +795,7 @@ TorusPrimitive::TorusPrimitive(std::shared_ptr ui, Part::Torus ui->torusAngle3->bind(feature->Angle3); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->torusRadius1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->torusRadius2, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->torusAngle1, SIGNAL(valueChanged(double)), mapper); @@ -840,7 +849,7 @@ QString TorusPrimitive::change(const QString& objectName, const QString& placeme placement); } -void TorusPrimitive::changeValue(QWidget* widget) +void TorusPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -885,7 +894,7 @@ PrismPrimitive::PrismPrimitive(std::shared_ptr ui, Part::Prism ui->prismYSkew->bind(feature->SecondAngle); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->prismPolygon, SIGNAL(valueChanged(int)), mapper); connectSignalMapper(ui->prismCircumradius, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->prismHeight, SIGNAL(valueChanged(double)), mapper); @@ -939,7 +948,7 @@ QString PrismPrimitive::change(const QString& objectName, const QString& placeme placement); } -void PrismPrimitive::changeValue(QWidget* widget) +void PrismPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1013,7 +1022,7 @@ WedgePrimitive::WedgePrimitive(std::shared_ptr ui, Part::Wedge ui->wedgeZ2max->bind(feature->Z2max); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->wedgeXmin, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->wedgeYmin, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->wedgeZmin, SIGNAL(valueChanged(double)), mapper); @@ -1092,7 +1101,7 @@ QString WedgePrimitive::change(const QString& objectName, const QString& placeme placement); } -void WedgePrimitive::changeValue(QWidget* widget) +void WedgePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1154,7 +1163,7 @@ HelixPrimitive::HelixPrimitive(std::shared_ptr ui, Part::Helix ui->helixLocalCS->setCurrentIndex(feature->LocalCoord.getValue()); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->helixPitch, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->helixHeight, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->helixRadius, SIGNAL(valueChanged(double)), mapper); @@ -1209,7 +1218,7 @@ QString HelixPrimitive::change(const QString& objectName, const QString& placeme placement); } -void HelixPrimitive::changeValue(QWidget* widget) +void HelixPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1251,7 +1260,7 @@ SpiralPrimitive::SpiralPrimitive(std::shared_ptr ui, Part::Spi ui->spiralRadius->bind(feature->Radius); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->spiralGrowth, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->spiralRotation, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->spiralRadius, SIGNAL(valueChanged(double)), mapper); @@ -1295,7 +1304,7 @@ QString SpiralPrimitive::change(const QString& objectName, const QString& placem placement); } -void SpiralPrimitive::changeValue(QWidget* widget) +void SpiralPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1332,7 +1341,7 @@ CirclePrimitive::CirclePrimitive(std::shared_ptr ui, Part::Cir ui->circleAngle2->bind(feature->Angle2); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->circleRadius, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->circleAngle1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->circleAngle2, SIGNAL(valueChanged(double)), mapper); @@ -1376,7 +1385,7 @@ QString CirclePrimitive::change(const QString& objectName, const QString& placem placement); } -void CirclePrimitive::changeValue(QWidget* widget) +void CirclePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1416,7 +1425,7 @@ EllipsePrimitive::EllipsePrimitive(std::shared_ptr ui, Part::E ui->ellipseAngle2->bind(feature->Angle2); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->ellipseMajorRadius, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->ellipseMinorRadius, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->ellipseAngle1, SIGNAL(valueChanged(double)), mapper); @@ -1465,7 +1474,7 @@ QString EllipsePrimitive::change(const QString& objectName, const QString& place placement); } -void EllipsePrimitive::changeValue(QWidget* widget) +void EllipsePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1500,7 +1509,7 @@ PolygonPrimitive::PolygonPrimitive(std::shared_ptr ui, Part::R ui->regularPolygonCircumradius->bind(feature->Circumradius); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->regularPolygonPolygon, SIGNAL(valueChanged(int)), mapper); connectSignalMapper(ui->regularPolygonCircumradius, SIGNAL(valueChanged(double)), mapper); } @@ -1539,7 +1548,7 @@ QString PolygonPrimitive::change(const QString& objectName, const QString& place placement); } -void PolygonPrimitive::changeValue(QWidget* widget) +void PolygonPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1588,7 +1597,7 @@ LinePrimitive::LinePrimitive(std::shared_ptr ui, Part::Line* f ui->edgeZ2->bind(feature->Z2); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->edgeX1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->edgeY1, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->edgeZ1, SIGNAL(valueChanged(double)), mapper); @@ -1647,7 +1656,7 @@ QString LinePrimitive::change(const QString& objectName, const QString& placemen placement); } -void LinePrimitive::changeValue(QWidget* widget) +void LinePrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1696,7 +1705,7 @@ VertexPrimitive::VertexPrimitive(std::shared_ptr ui, Part::Ver ui->vertexZ->bind(feature->Z); QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(changeValue(QWidget*))); + connectSignalMapper(mapper); connectSignalMapper(ui->vertexX, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->vertexY, SIGNAL(valueChanged(double)), mapper); connectSignalMapper(ui->vertexZ, SIGNAL(valueChanged(double)), mapper); @@ -1740,7 +1749,7 @@ QString VertexPrimitive::change(const QString& objectName, const QString& placem placement); } -void VertexPrimitive::changeValue(QWidget* widget) +void VertexPrimitive::changeValue(QObject* widget) { if (featurePtr.expired()) return; @@ -1803,12 +1812,6 @@ DlgPrimitives::~DlgPrimitives() { } -void DlgPrimitives::connectSignalMapper(QWidget *sender, const char *signal, QSignalMapper* mapper) -{ - connect(sender, signal, mapper, SLOT(map())); - mapper->setMapping(sender, sender); -} - void DlgPrimitives::activatePage() { int index = findIndexOfValidPrimitive(); @@ -1988,6 +1991,8 @@ Location::Location(QWidget* parent, Part::Feature* feature) { mode = 0; ui->setupUi(this); + connect(ui->viewPositionButton, &QPushButton::clicked, + this, &Location::onViewPositionButton); ui->XPositionQSB->setUnit(Base::Unit::Length); ui->YPositionQSB->setUnit(Base::Unit::Length); @@ -1996,40 +2001,9 @@ Location::Location(QWidget* parent, Part::Feature* feature) // fill location widget if object already exists if (feature) { - // get the placement values - auto placement = feature->Placement.getValue(); - - auto position = placement.getPosition(); - ui->XPositionQSB->setValue(position.x); - ui->YPositionQSB->setValue(position.y); - ui->ZPositionQSB->setValue(position.z); - - double rotationAngle; - Base::Vector3d rotationAxes; - auto rotation = placement.getRotation(); - rotation.getRawValue(rotationAxes, rotationAngle); - ui->XDirectionEdit->setValue(rotationAxes.x); - ui->YDirectionEdit->setValue(rotationAxes.y); - ui->ZDirectionEdit->setValue(rotationAxes.z); - // the angle is rad, transform it for display to degrees - ui->AngleQSB->setValue(Base::toDegrees(rotationAngle)); - - ui->XPositionQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Base.x"))); - ui->YPositionQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Base.y"))); - ui->ZPositionQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Base.z"))); - ui->XDirectionEdit->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Axis.x"))); - ui->YDirectionEdit->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Axis.y"))); - ui->ZDirectionEdit->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Axis.z"))); - ui->AngleQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Angle"))); - - //connect signals - connect(ui->XPositionQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); - connect(ui->YPositionQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); - connect(ui->ZPositionQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); - connect(ui->AngleQSB, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); - connect(ui->XDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); - connect(ui->YDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); - connect(ui->ZDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onChangePosRot())); + setPlacement(feature); + bindExpressions(feature); + connectSignals(); } } @@ -2048,7 +2022,50 @@ Location::~Location() } } -void Location::onChangePosRot() +void Location::setPlacement(Part::Feature* feature) +{ + // get the placement values + auto placement = feature->Placement.getValue(); + + auto position = placement.getPosition(); + ui->XPositionQSB->setValue(position.x); + ui->YPositionQSB->setValue(position.y); + ui->ZPositionQSB->setValue(position.z); + + double rotationAngle; + Base::Vector3d rotationAxes; + auto rotation = placement.getRotation(); + rotation.getRawValue(rotationAxes, rotationAngle); + ui->XDirectionEdit->setValue(rotationAxes.x); + ui->YDirectionEdit->setValue(rotationAxes.y); + ui->ZDirectionEdit->setValue(rotationAxes.z); + // the angle is rad, transform it for display to degrees + ui->AngleQSB->setValue(Base::toDegrees(rotationAngle)); +} + +void Location::bindExpressions(Part::Feature* feature) +{ + ui->XPositionQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Base.x"))); + ui->YPositionQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Base.y"))); + ui->ZPositionQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Base.z"))); + ui->XDirectionEdit->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Axis.x"))); + ui->YDirectionEdit->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Axis.y"))); + ui->ZDirectionEdit->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Axis.z"))); + ui->AngleQSB->bind(App::ObjectIdentifier::parse(feature, std::string("Placement.Rotation.Angle"))); +} + +void Location::connectSignals() +{ + connect(ui->XPositionQSB, qOverload(&Gui::QuantitySpinBox::valueChanged), this, &Location::onPlacementChanged); + connect(ui->YPositionQSB, qOverload(&Gui::QuantitySpinBox::valueChanged), this, &Location::onPlacementChanged); + connect(ui->ZPositionQSB, qOverload(&Gui::QuantitySpinBox::valueChanged), this, &Location::onPlacementChanged); + connect(ui->AngleQSB, qOverload(&Gui::QuantitySpinBox::valueChanged), this, &Location::onPlacementChanged); + connect(ui->XDirectionEdit, qOverload(&Gui::DoubleSpinBox::valueChanged), this, &Location::onPlacementChanged); + connect(ui->YDirectionEdit, qOverload(&Gui::DoubleSpinBox::valueChanged), this, &Location::onPlacementChanged); + connect(ui->ZDirectionEdit, qOverload(&Gui::DoubleSpinBox::valueChanged), this, &Location::onPlacementChanged); +} + +void Location::onPlacementChanged() { App::GeoFeature* geom = featurePtr.get(); if (!geom) @@ -2078,7 +2095,7 @@ void Location::onChangePosRot() geom->recomputeFeature(); } -void Location::on_viewPositionButton_clicked() +void Location::onViewPositionButton() { Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (!doc) { diff --git a/src/Mod/Part/Gui/DlgPrimitives.h b/src/Mod/Part/Gui/DlgPrimitives.h index 8d35b8cd87..c4bc9f8074 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.h +++ b/src/Mod/Part/Gui/DlgPrimitives.h @@ -91,12 +91,11 @@ public: virtual const char* getDefaultName() const = 0; virtual QString create(const QString& objectName, const QString& placement) const = 0; virtual QString change(const QString& objectName, const QString& placement) const = 0; - -public Q_SLOTS: - virtual void changeValue(QWidget*) = 0; + virtual void changeValue(QObject*) = 0; protected: - void connectSignalMapper(QWidget *sender, const char *signal, QSignalMapper* mapper); + void connectSignalMapper(QSignalMapper* mapper); + void connectSignalMapper(QObject *sender, const char *signal, QSignalMapper* mapper); protected: App::DocumentObjectWeakPtrT featurePtr; @@ -114,7 +113,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -132,7 +131,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -150,7 +149,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -168,7 +167,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -186,7 +185,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -204,7 +203,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -222,7 +221,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -240,7 +239,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -258,7 +257,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -276,7 +275,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -294,7 +293,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -312,7 +311,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -330,7 +329,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -348,7 +347,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -366,7 +365,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -384,7 +383,7 @@ public: const char* getDefaultName() const override; QString create(const QString& objectName, const QString& placement) const override; QString change(const QString& objectName, const QString& placement) const override; - void changeValue(QWidget*) override; + void changeValue(QObject*) override; private: std::shared_ptr ui; @@ -409,7 +408,6 @@ private: private: static void pickCallback(void * ud, SoEventCallback * n); void executeCallback(Picker*); - void connectSignalMapper(QWidget *sender, const char *signal, QSignalMapper* mapper); void acceptChanges(const QString&); void tryCreatePrimitive(const QString&); @@ -435,12 +433,16 @@ public: ~Location() override; QString toPlacement() const; -private Q_SLOTS: - void onChangePosRot(); - void on_viewPositionButton_clicked(); +private: + void onPlacementChanged(); + void onViewPositionButton(); private: + void setPlacement(Part::Feature* feature); + void bindExpressions(Part::Feature* feature); + void connectSignals(); static void pickCallback(void * ud, SoEventCallback * n); + int mode; QPointer activeView; std::unique_ptr ui;