diff --git a/src/Mod/Part/Gui/DlgPrimitives.cpp b/src/Mod/Part/Gui/DlgPrimitives.cpp index 6bdf27faad..99d782b4eb 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.cpp +++ b/src/Mod/Part/Gui/DlgPrimitives.cpp @@ -1605,15 +1605,13 @@ Location::Location(QWidget* parent, Part::Feature* feature) ui.AngleQSB->setValue(Base::toDegrees(rotationAngle)); //connect signals - QSignalMapper* mapper = new QSignalMapper(this); - connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(onChangePosRot(QWidget*))); - connectSignalMapper(ui.XPositionQSB, SIGNAL(valueChanged(double)), mapper); - connectSignalMapper(ui.YPositionQSB, SIGNAL(valueChanged(double)), mapper); - connectSignalMapper(ui.ZPositionQSB, SIGNAL(valueChanged(double)), mapper); - connectSignalMapper(ui.AngleQSB, SIGNAL(valueChanged(double)), mapper); - connectSignalMapper(ui.XDirectionEdit, SIGNAL(valueChanged(double)), mapper); - connectSignalMapper(ui.YDirectionEdit, SIGNAL(valueChanged(double)), mapper); - connectSignalMapper(ui.ZDirectionEdit, SIGNAL(valueChanged(double)), mapper); + 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())); } } @@ -1632,16 +1630,11 @@ Location::~Location() } } -void Location::connectSignalMapper(QWidget* sender, const char* signal, QSignalMapper* mapper) +void Location::onChangePosRot() { - connect(sender, signal, mapper, SLOT(map())); - mapper->setMapping(sender, sender); -} - -void Location::onChangePosRot(QWidget* widget) -{ - App::Document* doc = featurePtr->getDocument(); - Base::Type type = featurePtr->getTypeId(); + App::GeoFeature* geom = featurePtr.get(); + if (!geom) + return; // read dialog values Base::Vector3d loc; @@ -1663,87 +1656,8 @@ void Location::onChangePosRot(QWidget* widget) placement.setRotation(rotation); // apply new placement to the feature - - if (type == Part::Plane::getClassTypeId()) { - Part::Plane* plane = featurePtr.get(); - plane->Placement.setValue(placement); - plane->recomputeFeature(); - } - else if (type == Part::Box::getClassTypeId()) { - Part::Box* box = featurePtr.get(); - box->Placement.setValue(placement); - box->recomputeFeature(); - } - else if (type == Part::Cylinder::getClassTypeId()) { - Part::Cylinder* cylinder = featurePtr.get(); - cylinder->Placement.setValue(placement); - cylinder->recomputeFeature(); - } - else if (type == Part::Cone::getClassTypeId()) { - Part::Cone* cone = featurePtr.get(); - cone->Placement.setValue(placement); - cone->recomputeFeature(); - } - else if (type == Part::Sphere::getClassTypeId()) { - Part::Sphere* sphere = featurePtr.get(); - sphere->Placement.setValue(placement); - sphere->recomputeFeature(); - } - else if (type == Part::Ellipsoid::getClassTypeId()) { - Part::Ellipsoid* ellipsoid = featurePtr.get(); - ellipsoid->Placement.setValue(placement); - ellipsoid->recomputeFeature(); - } - else if (type == Part::Torus::getClassTypeId()) { - Part::Torus* torus = featurePtr.get(); - torus->Placement.setValue(placement); - torus->recomputeFeature(); - } - else if (type == Part::Prism::getClassTypeId()) { - Part::Prism* prism = featurePtr.get(); - prism->Placement.setValue(placement); - prism->recomputeFeature(); - } - else if (type == Part::Wedge::getClassTypeId()) { - Part::Wedge* wedge = featurePtr.get(); - wedge->Placement.setValue(placement); - wedge->recomputeFeature(); - } - else if (type == Part::Helix::getClassTypeId()) { - Part::Helix* helix = featurePtr.get(); - helix->Placement.setValue(placement); - helix->recomputeFeature(); - } - else if (type == Part::Spiral::getClassTypeId()) { - Part::Spiral* spiral = featurePtr.get(); - spiral->Placement.setValue(placement); - spiral->recomputeFeature(); - } - else if (type == Part::Circle::getClassTypeId()) { - Part::Circle* circle = featurePtr.get(); - circle->Placement.setValue(placement); - circle->recomputeFeature(); - } - else if (type == Part::Ellipse::getClassTypeId()) { - Part::Ellipse* ellipse = featurePtr.get(); - ellipse->Placement.setValue(placement); - ellipse->recomputeFeature(); - } - else if (type == Part::Vertex::getClassTypeId()) { - Part::Vertex* vertex = featurePtr.get(); - vertex->Placement.setValue(placement); - vertex->recomputeFeature(); - } - else if (type == Part::Line::getClassTypeId()) { - Part::Line* line = featurePtr.get(); - line->Placement.setValue(placement); - line->recomputeFeature(); - } - else if (type == Part::RegularPolygon::getClassTypeId()) { - Part::RegularPolygon* polygon = featurePtr.get(); - polygon->Placement.setValue(placement); - polygon->recomputeFeature(); - } + geom->Placement.setValue(placement); + geom->recomputeFeature(); } void Location::on_viewPositionButton_clicked() diff --git a/src/Mod/Part/Gui/DlgPrimitives.h b/src/Mod/Part/Gui/DlgPrimitives.h index d6752ace80..97d308f29c 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.h +++ b/src/Mod/Part/Gui/DlgPrimitives.h @@ -112,12 +112,9 @@ public: QString toPlacement() const; private Q_SLOTS: - void onChangePosRot(QWidget*); + void onChangePosRot(); void on_viewPositionButton_clicked(); -private: - void connectSignalMapper(QWidget* sender, const char* signal, QSignalMapper* mapper); - private: static void pickCallback(void * ud, SoEventCallback * n); int mode;