diff --git a/src/Mod/Sketcher/Gui/CommandConstraints.cpp b/src/Mod/Sketcher/Gui/CommandConstraints.cpp index a05d08e69e..4c57a524f5 100644 --- a/src/Mod/Sketcher/Gui/CommandConstraints.cpp +++ b/src/Mod/Sketcher/Gui/CommandConstraints.cpp @@ -687,51 +687,14 @@ public: Gui::Selection().rmvSelectionGate(); } - virtual void activated(ViewProviderSketch *) - { - selFilterGate = new GenericConstraintSelection(sketchgui->getObject()); + virtual void mouseMove(Base::Vector2d /*onSketchPos*/) override {} - resetOngoingSequences(); - - selSeq.clear(); - - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(selFilterGate); - - // Constrain icon size in px - qreal pixelRatio = devicePixelRatio(); - const unsigned long defaultCrosshairColor = 0xFFFFFF; - unsigned long color = getCrosshairColor(); - auto colorMapping = std::map(); - colorMapping[defaultCrosshairColor] = color; - - qreal fullIconWidth = 32 * pixelRatio; - qreal iconWidth = 16 * pixelRatio; - QPixmap cursorPixmap = Gui::BitmapFactory().pixmapFromSvg("Sketcher_Crosshair", QSizeF(fullIconWidth, fullIconWidth), colorMapping), - icon = Gui::BitmapFactory().pixmapFromSvg(cmd->getPixmap(), QSizeF(iconWidth, iconWidth)); - QPainter cursorPainter; - cursorPainter.begin(&cursorPixmap); - cursorPainter.drawPixmap(16 * pixelRatio, 16 * pixelRatio, icon); - cursorPainter.end(); - int hotX = 8; - int hotY = 8; - cursorPixmap.setDevicePixelRatio(pixelRatio); - // only X11 needs hot point coordinates to be scaled - if (qGuiApp->platformName() == QLatin1String("xcb")) { - hotX *= pixelRatio; - hotY *= pixelRatio; - } - setCursor(cursorPixmap, hotX, hotY, false); - } - - virtual void mouseMove(Base::Vector2d /*onSketchPos*/) {} - - virtual bool pressButton(Base::Vector2d /*onSketchPos*/) + virtual bool pressButton(Base::Vector2d /*onSketchPos*/) override { return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { SelIdPair selIdPair; selIdPair.GeoId = GeoEnum::GeoUndef; @@ -821,6 +784,44 @@ public: return true; } +private: + virtual void activated() override + { + selFilterGate = new GenericConstraintSelection(sketchgui->getObject()); + + resetOngoingSequences(); + + selSeq.clear(); + + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(selFilterGate); + + // Constrain icon size in px + qreal pixelRatio = devicePixelRatio(); + const unsigned long defaultCrosshairColor = 0xFFFFFF; + unsigned long color = getCrosshairColor(); + auto colorMapping = std::map(); + colorMapping[defaultCrosshairColor] = color; + + qreal fullIconWidth = 32 * pixelRatio; + qreal iconWidth = 16 * pixelRatio; + QPixmap cursorPixmap = Gui::BitmapFactory().pixmapFromSvg("Sketcher_Crosshair", QSizeF(fullIconWidth, fullIconWidth), colorMapping), + icon = Gui::BitmapFactory().pixmapFromSvg(cmd->getPixmap(), QSizeF(iconWidth, iconWidth)); + QPainter cursorPainter; + cursorPainter.begin(&cursorPixmap); + cursorPainter.drawPixmap(16 * pixelRatio, 16 * pixelRatio, icon); + cursorPainter.end(); + int hotX = 8; + int hotY = 8; + cursorPixmap.setDevicePixelRatio(pixelRatio); + // only X11 needs hot point coordinates to be scaled + if (qGuiApp->platformName() == QLatin1String("xcb")) { + hotX *= pixelRatio; + hotY *= pixelRatio; + } + setCursor(cursorPixmap, hotX, hotY, false); + } + protected: CmdSketcherConstraint* cmd; @@ -1788,26 +1789,15 @@ public: Gui::Selection().rmvSelectionGate(); } - virtual void activated(ViewProviderSketch *) - { - Gui::Selection().rmvSelectionGate(); - GenericConstraintSelection* selFilterGate = new GenericConstraintSelection(sketchgui->getObject()); - selFilterGate->setAllowedSelTypes(SelVertex|SelRoot); - Gui::Selection().addSelectionGate(selFilterGate); - int hotX = 8; - int hotY = 8; - setCursor(QPixmap(cursor_createcoincident), hotX, hotY); - } + virtual void mouseMove(Base::Vector2d onSketchPos) override {Q_UNUSED(onSketchPos);} - virtual void mouseMove(Base::Vector2d onSketchPos) {Q_UNUSED(onSketchPos);} - - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { int VtId = getPreselectPoint(); int CrsId = getPreselectCross(); @@ -1867,6 +1857,18 @@ public: return true; } +private: + virtual void activated() override + { + Gui::Selection().rmvSelectionGate(); + GenericConstraintSelection* selFilterGate = new GenericConstraintSelection(sketchgui->getObject()); + selFilterGate->setAllowedSelTypes(SelVertex|SelRoot); + Gui::Selection().addSelectionGate(selFilterGate); + int hotX = 8; + int hotY = 8; + setCursor(QPixmap(cursor_createcoincident), hotX, hotY); + } + protected: int GeoId1, GeoId2; Sketcher::PointPos PosId1, PosId2; diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 03cb1b20f7..d26ca58072 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -223,12 +223,7 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Line"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -254,7 +249,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ EditCurve[0] = onSketchPos; @@ -268,7 +263,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode==STATUS_End){ @@ -328,6 +323,14 @@ public: } return true; } + +private: + + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Line"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -398,12 +401,9 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Box"); - } +public: - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { @@ -450,7 +450,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ if(constructionMethod == Diagonal) { @@ -484,7 +484,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode==STATUS_End){ @@ -631,6 +631,13 @@ public: } return true; } + +private: + + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Box"); + } protected: BoxMode Mode; std::vector EditCurve; @@ -741,12 +748,7 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch*) - { - setCrosshairCursor("Sketcher_Pointer_Oblong"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { @@ -820,7 +822,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { StartPos = onSketchPos; @@ -833,7 +835,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode == STATUS_End) { @@ -997,6 +999,13 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Oblong"); + } + protected: BoxMode Mode; Base::Vector2d StartPos, EndPos; @@ -1208,7 +1217,7 @@ public: SNAP_MODE_45Degree }; - virtual void registerPressedKey(bool pressed, int key) + virtual void registerPressedKey(bool pressed, int key) override { if (Mode != STATUS_SEEK_Second) return; // SegmentMode can be changed only in STATUS_SEEK_Second mode @@ -1287,12 +1296,7 @@ public: } } - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Lineset"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { suppressTransition = false; if (Mode==STATUS_SEEK_First) { @@ -1418,7 +1422,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { @@ -1514,7 +1518,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { if (Mode == STATUS_Do || Mode == STATUS_Close) { bool addedGeometry = true; @@ -1716,7 +1720,7 @@ public: return true; } - virtual void quit(void) { + virtual void quit(void) override { // We must see if we need to create a B-spline before cancelling everything // and now just like any other Handler, @@ -1753,6 +1757,12 @@ public: } } +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Lineset"); + } + protected: SELECT_MODE Mode; SEGMENT_MODE SegmentMode; @@ -1870,12 +1880,7 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Arc"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -1939,7 +1944,7 @@ public: } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ CenterPoint = onSketchPos; @@ -1978,7 +1983,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode==STATUS_End) { @@ -2041,6 +2046,12 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Arc"); + } protected: SelectMode Mode; std::vector EditCurve; @@ -2099,12 +2110,7 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_3PointArc"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -2219,7 +2225,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ // 32 point curve + center + endpoint @@ -2247,7 +2253,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); // Need to look at. rx might need fixing. @@ -2310,6 +2316,13 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_3PointArc"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -2461,12 +2474,7 @@ public: STATUS_Close }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Circle"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -2504,7 +2512,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ EditCurve[0] = onSketchPos; @@ -2516,7 +2524,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode==STATUS_Close) { @@ -2574,6 +2582,13 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Circle"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -2676,28 +2691,11 @@ public: PERIAPSIS_APOAPSIS_B /**< enum value, click on periapsis, then apoapsis, then b point. */ }; - /** - * @brief Slot called when the create ellipse command is activated - * @param sketchgui A pointer to the active sketch - */ - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Ellipse"); - if (constrMethod == 0) { - method = CENTER_PERIAPSIS_B; - mode = STATUS_SEEK_CENTROID; - } else { - method = PERIAPSIS_APOAPSIS_B; - mode = STATUS_SEEK_PERIAPSIS; - } - } - - /** * @brief Updates the ellipse when the cursor moves * @param onSketchPos the position of the cursor on the sketch */ - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (method == PERIAPSIS_APOAPSIS_B) { if (mode == STATUS_SEEK_PERIAPSIS) { @@ -2789,7 +2787,7 @@ public: * @param onSketchPos the position of the cursor on the sketch * @return */ - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (method == PERIAPSIS_APOAPSIS_B) { if (mode == STATUS_SEEK_PERIAPSIS) { @@ -2824,7 +2822,7 @@ public: * @param onSketchPos the position of the cursor on the sketch * @return */ - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (mode == STATUS_Close) { @@ -2844,6 +2842,24 @@ public: } return true; } + +private: + /** + * @brief Slot called when the create ellipse command is activated + * @param sketchgui A pointer to the active sketch + */ + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Ellipse"); + if (constrMethod == 0) { + method = CENTER_PERIAPSIS_B; + mode = STATUS_SEEK_CENTROID; + } else { + method = PERIAPSIS_APOAPSIS_B; + mode = STATUS_SEEK_PERIAPSIS; + } + } + protected: std::vector sugConstr1, sugConstr2, sugConstr3; private: @@ -3454,12 +3470,7 @@ public: STATUS_Close }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_ArcOfEllipse"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -3569,7 +3580,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ EditCurve[0] = onSketchPos; @@ -3595,7 +3606,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode==STATUS_Close) { @@ -3728,6 +3739,13 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_ArcOfEllipse"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -3783,12 +3801,7 @@ public: STATUS_Close }; - virtual void activated(ViewProviderSketch * /*sketchgui*/) - { - setCrosshairCursor("Sketcher_Pointer_Create_ArcOfHyperbola"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -3899,7 +3912,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ EditCurve[0] = onSketchPos; @@ -3927,7 +3940,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d /*onSketchPos*/) + virtual bool releaseButton(Base::Vector2d /*onSketchPos*/) override { if (Mode==STATUS_Close) { unsetCursor(); @@ -4071,6 +4084,13 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_ArcOfHyperbola"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -4128,12 +4148,7 @@ public: STATUS_Close }; - virtual void activated(ViewProviderSketch * /*sketchgui*/) - { - setCrosshairCursor("Sketcher_Pointer_Create_ArcOfParabola"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -4371,6 +4386,12 @@ public: return true; } +private: + virtual void activated(ViewProviderSketch * /*sketchgui*/) + { + setCrosshairCursor("Sketcher_Pointer_Create_ArcOfParabola"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -4576,12 +4597,7 @@ public: STATUS_CLOSE }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_BSpline"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_FIRST_CONTROLPOINT) { setPositionText(onSketchPos); @@ -4612,7 +4628,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_FIRST_CONTROLPOINT) { @@ -4729,7 +4745,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d /*onSketchPos*/) + virtual bool releaseButton(Base::Vector2d /*onSketchPos*/) override { if (Mode==STATUS_CLOSE) { unsetCursor(); @@ -4855,7 +4871,7 @@ public: return true; } - virtual void quit(void) { + virtual void quit(void) override { // We must see if we need to create a B-spline before cancelling everything // and now just like any other Handler, @@ -4902,6 +4918,12 @@ public: } } +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_BSpline"); + } + protected: SELECT_MODE Mode; @@ -5115,12 +5137,7 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_3PointCircle"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { setPositionText(onSketchPos); @@ -5179,7 +5196,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { // N point curve + center + endpoint @@ -5204,7 +5221,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); // Need to look at. rx might need fixing. @@ -5267,6 +5284,13 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_3PointCircle"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -5411,12 +5435,7 @@ public: DrawSketchHandlerPoint() : selectionDone(false) {} virtual ~DrawSketchHandlerPoint() {} - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Create_Point"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { setPositionText(onSketchPos); if (seekAutoConstraint(sugConstr, onSketchPos, Base::Vector2d(0.f,0.f))) { @@ -5426,14 +5445,14 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { EditPoint = onSketchPos; selectionDone = true; return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (selectionDone){ @@ -5477,6 +5496,12 @@ public: return true; } +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Create_Point"); + } + protected: bool selectionDone; Base::Vector2d EditPoint; @@ -5629,25 +5654,18 @@ public: STATUS_SEEK_Second }; - virtual void activated(ViewProviderSketch *) - { - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(new FilletSelection(sketchgui->getObject())); - setCrosshairCursor("Sketcher_Pointer_Create_Fillet"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { bool construction=false; int VtId = getPreselectPoint(); @@ -5814,6 +5832,14 @@ public: return true; } +private: + virtual void activated() override + { + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(new FilletSelection(sketchgui->getObject())); + setCrosshairCursor("Sketcher_Pointer_Create_Fillet"); + } + protected: int filletType; SelectMode Mode; @@ -6024,15 +6050,7 @@ public: Gui::Selection().rmvSelectionGate(); } - virtual void activated(ViewProviderSketch *sketchgui) - { - Gui::Selection().clearSelection(); - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(new TrimmingSelection(sketchgui->getObject())); - setCrosshairCursor("Sketcher_Pointer_Trimming"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); @@ -6071,13 +6089,13 @@ public: } } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { int GeoId = getPreselectCurve(); if (GeoId > -1) { @@ -6107,6 +6125,16 @@ public: return true; } + +private: + virtual void activated() override + { + Gui::Selection().clearSelection(); + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(new TrimmingSelection(sketchgui->getObject())); + setCrosshairCursor("Sketcher_Pointer_Trimming"); + } + private: std::vector EditMarkers; }; @@ -6201,17 +6229,7 @@ public: STATUS_SEEK_Second, }; - virtual void activated(ViewProviderSketch *sketchgui) - { - Q_UNUSED(sketchgui) - Gui::Selection().clearSelection(); - Gui::Selection().rmvSelectionGate(); - filterGate = new ExtendSelection(sketchgui->getObject()); - Gui::Selection().addSelectionGate(filterGate); - setCrosshairCursor("Sketcher_Pointer_Extension"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode == STATUS_SEEK_Second) { @@ -6324,13 +6342,13 @@ public: } } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode == STATUS_SEEK_First) { @@ -6408,6 +6426,17 @@ public: return true; } +private: + virtual void activated() override + { + Q_UNUSED(sketchgui) + Gui::Selection().clearSelection(); + Gui::Selection().rmvSelectionGate(); + filterGate = new ExtendSelection(sketchgui->getObject()); + Gui::Selection().addSelectionGate(filterGate); + setCrosshairCursor("Sketcher_Pointer_Extension"); + } + protected: SelectMode Mode; std::vector EditCurve; @@ -6495,26 +6524,18 @@ public: Gui::Selection().rmvSelectionGate(); } - virtual void activated(ViewProviderSketch *sketchgui) - { - Gui::Selection().clearSelection(); - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(new SplittingSelection(sketchgui->getObject())); - setCrosshairCursor("Sketcher_Pointer_Splitting"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { int GeoId = getPreselectCurve(); if (GeoId >= 0) { @@ -6541,6 +6562,15 @@ public: return true; } + +private: + virtual void activated() override + { + Gui::Selection().clearSelection(); + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(new SplittingSelection(sketchgui->getObject())); + setCrosshairCursor("Sketcher_Pointer_Splitting"); + } }; DEF_STD_CMD_A(CmdSketcherSplit) @@ -6641,42 +6671,20 @@ public: Gui::Selection().rmvSelectionGate(); } - virtual void activated(ViewProviderSketch *sketchgui) - { - setAxisPickStyle(false); - Gui::MDIView *mdi = Gui::Application::Instance->activeDocument()->getActiveView(); - Gui::View3DInventorViewer *viewer; - viewer = static_cast(mdi)->getViewer(); - - SoNode* root = viewer->getSceneGraph(); - static_cast(root)->selectionRole.setValue(true); - - Gui::Selection().clearSelection(); - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(new ExternalSelection(sketchgui->getObject())); - setCrosshairCursor("Sketcher_Pointer_External"); - } - - virtual void deactivated(ViewProviderSketch *sketchgui) - { - Q_UNUSED(sketchgui); - setAxisPickStyle(true); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Gui::Selection().getPreselection().pObjectName) applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); /* this is ok not to call to purgeHandler @@ -6686,7 +6694,7 @@ public: return true; } - virtual bool onSelectionChanged(const Gui::SelectionChanges& msg) + virtual bool onSelectionChanged(const Gui::SelectionChanges& msg) override { if (msg.Type == Gui::SelectionChanges::AddSelection) { App::DocumentObject* obj = sketchgui->getObject()->getDocument()->getObject(msg.pObjectName); @@ -6727,6 +6735,29 @@ public: } return false; } + +private: + virtual void activated() override + { + setAxisPickStyle(false); + Gui::MDIView *mdi = Gui::Application::Instance->activeDocument()->getActiveView(); + Gui::View3DInventorViewer *viewer; + viewer = static_cast(mdi)->getViewer(); + + SoNode* root = viewer->getSceneGraph(); + static_cast(root)->selectionRole.setValue(true); + + Gui::Selection().clearSelection(); + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(new ExternalSelection(sketchgui->getObject())); + setCrosshairCursor("Sketcher_Pointer_External"); + } + + virtual void deactivated() override + { + Q_UNUSED(sketchgui); + setAxisPickStyle(true); + } }; DEF_STD_CMD_A(CmdSketcherExternal) @@ -6826,43 +6857,20 @@ public: Gui::Selection().rmvSelectionGate(); } - - virtual void activated(ViewProviderSketch *sketchgui) - { - setAxisPickStyle(false); - Gui::MDIView *mdi = Gui::Application::Instance->activeDocument()->getActiveView(); - Gui::View3DInventorViewer *viewer; - viewer = static_cast(mdi)->getViewer(); - - SoNode* root = viewer->getSceneGraph(); - static_cast(root)->selectionRole.setValue(true); - - Gui::Selection().clearSelection(); - Gui::Selection().rmvSelectionGate(); - Gui::Selection().addSelectionGate(new CarbonCopySelection(sketchgui->getObject())); - setCrosshairCursor("Sketcher_Pointer_CarbonCopy"); - } - - virtual void deactivated(ViewProviderSketch *sketchgui) - { - Q_UNUSED(sketchgui); - setAxisPickStyle(true); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Gui::Selection().getPreselection().pObjectName) applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); /* this is ok not to call to purgeHandler @@ -6872,7 +6880,7 @@ public: return true; } - virtual bool onSelectionChanged(const Gui::SelectionChanges& msg) + virtual bool onSelectionChanged(const Gui::SelectionChanges& msg) override { if (msg.Type == Gui::SelectionChanges::AddSelection) { App::DocumentObject* obj = sketchgui->getObject()->getDocument()->getObject(msg.pObjectName); @@ -6905,6 +6913,29 @@ public: } return false; } + +private: + virtual void activated() override + { + setAxisPickStyle(false); + Gui::MDIView *mdi = Gui::Application::Instance->activeDocument()->getActiveView(); + Gui::View3DInventorViewer *viewer; + viewer = static_cast(mdi)->getViewer(); + + SoNode* root = viewer->getSceneGraph(); + static_cast(root)->selectionRole.setValue(true); + + Gui::Selection().clearSelection(); + Gui::Selection().rmvSelectionGate(); + Gui::Selection().addSelectionGate(new CarbonCopySelection(sketchgui->getObject())); + setCrosshairCursor("Sketcher_Pointer_CarbonCopy"); + } + + virtual void deactivated() override + { + Q_UNUSED(sketchgui); + setAxisPickStyle(true); + } }; DEF_STD_CMD_AU(CmdSketcherCarbonCopy) @@ -6983,12 +7014,7 @@ public: SNAP_DIR_Vert }; - virtual void activated(ViewProviderSketch*) - { - setCrosshairCursor("Sketcher_Pointer_Slot"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { @@ -7058,7 +7084,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { StartPos = onSketchPos; @@ -7070,7 +7096,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode == STATUS_End) { @@ -7208,6 +7234,12 @@ public: } return true; } +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Slot"); + } + protected: BoxMode Mode; SNAP_MODE SnapMode; @@ -7281,12 +7313,7 @@ public: STATUS_End }; - virtual void activated(ViewProviderSketch *) - { - setCrosshairCursor("Sketcher_Pointer_Regular_Polygon"); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { @@ -7327,7 +7354,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d onSketchPos) + virtual bool pressButton(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First){ StartPos = onSketchPos; @@ -7339,7 +7366,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode==STATUS_End){ @@ -7400,6 +7427,12 @@ public: } return true; } + +private: + virtual void activated() override + { + setCrosshairCursor("Sketcher_Pointer_Regular_Polygon"); + } protected: const size_t Corners; const double AngleOfSeparation; diff --git a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp index a8aa4ae1e2..1feb04e0a6 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp @@ -1319,14 +1319,7 @@ public: Snap5Degree }; - virtual void activated(ViewProviderSketch *sketchgui) - { - setCursor(QPixmap(cursor_createcopy), 7, 7); - Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); - EditCurve[0] = Base::Vector2d(Origin.x, Origin.y); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode == STATUS_SEEK_First) { @@ -1359,7 +1352,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d) + virtual bool pressButton(Base::Vector2d) override { if (Mode == STATUS_SEEK_First) { drawEdit(EditCurve); @@ -1368,7 +1361,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode == STATUS_End) @@ -1422,6 +1415,13 @@ public: } return true; } +private: + virtual void activated() override + { + setCursor(QPixmap(cursor_createcopy), 7, 7); + Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); + EditCurve[0] = Base::Vector2d(Origin.x, Origin.y); + } protected: SelectMode Mode; SnapMode snapMode; @@ -1868,14 +1868,7 @@ public: Snap5Degree }; - virtual void activated(ViewProviderSketch *sketchgui) - { - setCursor(QPixmap(cursor_createrectangulararray), 7, 7); - Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); - EditCurve[0] = Base::Vector2d(Origin.x, Origin.y); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) + virtual void mouseMove(Base::Vector2d onSketchPos) override { if (Mode==STATUS_SEEK_First) { @@ -1910,7 +1903,7 @@ public: applyCursor(); } - virtual bool pressButton(Base::Vector2d) + virtual bool pressButton(Base::Vector2d) override { if (Mode == STATUS_SEEK_First) { drawEdit(EditCurve); @@ -1919,7 +1912,7 @@ public: return true; } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) override { Q_UNUSED(onSketchPos); if (Mode == STATUS_End) { @@ -1959,6 +1952,13 @@ public: } return true; } +private: + virtual void activated() override + { + setCursor(QPixmap(cursor_createrectangulararray), 7, 7); + Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); + EditCurve[0] = Base::Vector2d(Origin.x, Origin.y); + } protected: SelectMode Mode; SnapMode snapMode; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index 55c3a7a177..89eab813df 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -121,14 +121,25 @@ DrawSketchHandler::DrawSketchHandler() : sketchgui(0) {} DrawSketchHandler::~DrawSketchHandler() {} -void DrawSketchHandler::preActivated(ViewProviderSketch* vp) +void DrawSketchHandler::activate(ViewProviderSketch * vp) { - ViewProviderSketchDrawSketchHandlerAttorney::setConstraintSelectability(*vp, false); + sketchgui = vp; + + this->preActivated(); + this->activated(); } -void DrawSketchHandler::postDeactivatedAlwaysRun(ViewProviderSketch* vp) +void DrawSketchHandler::deactivate() { - ViewProviderSketchDrawSketchHandlerAttorney::setConstraintSelectability(*vp, true); + this->deactivated(); + this->postDeactivated(); + ViewProviderSketchDrawSketchHandlerAttorney::setConstraintSelectability(*sketchgui, true); + unsetCursor(); +} + +void DrawSketchHandler::preActivated() +{ + ViewProviderSketchDrawSketchHandlerAttorney::setConstraintSelectability(*sketchgui, false); } void DrawSketchHandler::quit(void) diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.h b/src/Mod/Sketcher/Gui/DrawSketchHandler.h index aad1a11a8a..1b46cdad7f 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.h @@ -97,11 +97,9 @@ public: DrawSketchHandler(); virtual ~DrawSketchHandler(); - virtual void preActivated(ViewProviderSketch *); - virtual void activated(ViewProviderSketch *){} - virtual void deactivated(ViewProviderSketch *){} - virtual void postDeactivated(ViewProviderSketch *){} - static void postDeactivatedAlwaysRun(ViewProviderSketch *); + void activate(ViewProviderSketch *); + void deactivate(); + virtual void mouseMove(Base::Vector2d onSketchPos)=0; virtual bool pressButton(Base::Vector2d onSketchPos)=0; virtual bool releaseButton(Base::Vector2d onSketchPos)=0; @@ -130,6 +128,12 @@ public: void resetPositionText(void); void renderSuggestConstraintsCursor(std::vector &suggestedConstraints); +private: + virtual void preActivated(); + virtual void activated(){} + virtual void deactivated(){} + virtual void postDeactivated(){} + protected: // helpers /** diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index d22e91b267..cd5aed7ab7 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -363,9 +363,7 @@ void ViewProviderSketch::activateHandler(DrawSketchHandler *newHandler) sketchHandler = std::unique_ptr(newHandler); Mode = STATUS_SKETCH_UseHandler; - sketchHandler->sketchgui = this; - sketchHandler->preActivated(this); - sketchHandler->activated(this); + sketchHandler->activate(this); // make sure receiver has focus so immediately pressing Escape will be handled by // ViewProviderSketch::keyPressed() and dismiss the active handler, and not the entire @@ -382,12 +380,9 @@ void ViewProviderSketch::deactivateHandler() editCurve.clear(); drawEdit(editCurve); // erase any line resetPositionText(); - sketchHandler->deactivated(this); - sketchHandler->postDeactivated(this); - sketchHandler->unsetCursor(); + sketchHandler->deactivate(); sketchHandler = nullptr; } - DrawSketchHandler::postDeactivatedAlwaysRun(this); Mode = STATUS_NONE; } @@ -467,11 +462,13 @@ bool ViewProviderSketch::keyPressed(bool pressed, int key) } return false; } + break; case SoKeyboardEvent::LEFT_SHIFT: if (Mode < STATUS_SKETCH_UseHandler) { editCoinManager->setConstraintSelectability(!pressed); return true; } + [[fallthrough]]; default: { if (isInEditMode() && sketchHandler)