compilerplugins/clang/mergeclasses.results | 1 include/svx/uiobject.hxx | 17 --- sd/source/ui/uitest/uiobject.cxx | 153 +++++++++++++++++++++++++++-- svx/source/uitest/sdrobject.cxx | 142 -------------------------- 4 files changed, 147 insertions(+), 166 deletions(-)
New commits: commit 451745896de239a05c7239b11e1e7095ee335021 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Thu Aug 21 16:50:31 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Aug 21 18:55:43 2025 +0200 merge SdrUIObject with ImpressSdrObject Change-Id: I30fa8ccb627f1cd083906bef3f787ac331896272 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190003 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/compilerplugins/clang/mergeclasses.results b/compilerplugins/clang/mergeclasses.results index b8ca9446c8a4..553265f26d74 100644 --- a/compilerplugins/clang/mergeclasses.results +++ b/compilerplugins/clang/mergeclasses.results @@ -198,7 +198,6 @@ merge SdrPaintView with SdrSnapView merge SdrPolyEditView with SdrGlueEditView maybe merge SdrPowerPointImport with ImplSdPPTImport, in modules filter and sd merge SdrSnapView with SdrMarkView -maybe merge SdrUIObject with (anonymous namespace)::ImpressSdrObject, in modules svx and sd maybe merge SdrUndoAttrObj with sd::UndoAttrObject, in modules svx and sd maybe merge SdrUndoDelObj with sd::UndoDeleteObject, in modules svx and sd maybe merge SdrUndoGeoObj with sd::UndoGeoObject, in modules svx and sd diff --git a/include/svx/uiobject.hxx b/include/svx/uiobject.hxx index 4fd63c9d0d05..d1cc1c45377a 100644 --- a/include/svx/uiobject.hxx +++ b/include/svx/uiobject.hxx @@ -16,25 +16,8 @@ #include <vcl/uitest/uiobject.hxx> -class SdrObject; class SvxColorValueSet; -class SVXCORE_DLLPUBLIC SdrUIObject : public UIObject -{ -public: - - virtual ~SdrUIObject() override; - - virtual StringMap get_state() override; - - virtual void execute(const OUString& rAction, - const StringMap& rParameters) override; - - virtual OUString get_type() const override; - - virtual SdrObject* get_object() = 0; -}; - class SvxColorValueSetUIObject final : public DrawingAreaUIObject { SvxColorValueSet* mpColorSet; diff --git a/sd/source/ui/uitest/uiobject.cxx b/sd/source/ui/uitest/uiobject.cxx index 24d507efdc73..2142b132a137 100644 --- a/sd/source/ui/uitest/uiobject.cxx +++ b/sd/source/ui/uitest/uiobject.cxx @@ -16,21 +16,24 @@ #include <sfx2/sidebar/Sidebar.hxx> #include <sfx2/sfxsids.hrc> -#include <svx/uiobject.hxx> #include <tools/debug.hxx> #include <utility> namespace { -class ImpressSdrObject : public SdrUIObject +class ImpressSdrObject : public UIObject { public: ImpressSdrObject(const VclPtr<sd::Window>& xImpressWin, OUString aName); - SdrObject* get_object() override; - virtual bool equals(const UIObject& rOther) const override; + virtual StringMap get_state() override; + + virtual void execute(const OUString& rAction, const StringMap& rParameters) override; + + virtual OUString get_type() const override; + private: VclPtr<sd::Window> mxWindow; @@ -74,8 +77,6 @@ ImpressSdrObject::ImpressSdrObject(const VclPtr<sd::Window>& xImpressWin, OUStri { } -SdrObject* ImpressSdrObject::get_object() { return getObject(mxWindow, maName); } - bool ImpressSdrObject::equals(const UIObject& rOther) const { const ImpressSdrObject* pOther = dynamic_cast<const ImpressSdrObject*>(&rOther); @@ -84,6 +85,146 @@ bool ImpressSdrObject::equals(const UIObject& rOther) const return mxWindow.get() == pOther->mxWindow.get(); } +StringMap ImpressSdrObject::get_state() +{ + StringMap aMap; + SdrObject* pObject = getObject(mxWindow, maName); + + if (!pObject) + return aMap; + + aMap[u"Name"_ustr] = pObject->GetName(); + aMap[u"Description"_ustr] = pObject->GetDescription(); + aMap[u"Title"_ustr] = pObject->GetTitle(); + aMap[u"Z-Order"_ustr] = OUString::number(pObject->GetOrdNum()); + aMap[u"Layer"_ustr] = OUString::number(pObject->GetLayer().get()); + aMap[u"IsGroupObject"_ustr] = OUString::boolean(pObject->IsGroupObject()); + aMap[u"IsPolyObject"_ustr] = OUString::boolean(pObject->IsPolyObj()); + aMap[u"PointCount"_ustr] = OUString::number(pObject->GetPointCount()); + aMap[u"HasTextEdit"_ustr] = OUString::boolean(pObject->HasTextEdit()); + aMap[u"HasMacro"_ustr] = OUString::boolean(pObject->HasMacro()); + aMap[u"IsClosed"_ustr] = OUString::boolean(pObject->IsClosedObj()); + aMap[u"IsEdgeObject"_ustr] = OUString::boolean(pObject->IsEdgeObj()); + aMap[u"Is3DObject"_ustr] = OUString::boolean(pObject->Is3DObj()); + aMap[u"IsUNOObject"_ustr] = OUString::boolean(pObject->IsUnoObj()); + aMap[u"MoveProtected"_ustr] = OUString::boolean(pObject->IsMoveProtect()); + aMap[u"ResizeProtected"_ustr] = OUString::boolean(pObject->IsResizeProtect()); + aMap[u"Printable"_ustr] = OUString::boolean(pObject->IsPrintable()); + aMap[u"Visible"_ustr] = OUString::boolean(pObject->IsVisible()); + aMap[u"HasText"_ustr] = OUString::boolean(pObject->HasText()); + + return aMap; +} + +void ImpressSdrObject::execute(const OUString& rAction, const StringMap& rParameters) +{ + SdrObject* pObj = getObject(mxWindow, maName); + if (!pObj) + return; + + if (rAction == "MOVE") + { + auto itrNX = rParameters.find(u"X"_ustr); + if (itrNX == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter X"_ustr); + + auto itrNY = rParameters.find(u"Y"_ustr); + if (itrNY == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter Y"_ustr); + + tools::Long nX = itrNX->second.toInt32(); + tools::Long nY = itrNY->second.toInt32(); + Size aMoveRange(nX, nY); + pObj->Move(aMoveRange); + } + else if (rAction == "RESIZE") + { + auto itrNX = rParameters.find(u"X"_ustr); + if (itrNX == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter X"_ustr); + + auto itrNY = rParameters.find(u"Y"_ustr); + if (itrNY == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter Y"_ustr); + + tools::Long nX = itrNX->second.toInt32(); + tools::Long nY = itrNY->second.toInt32(); + Point aPos(nX, nY); + + auto itrFracX = rParameters.find(u"FRAC_X"_ustr); + if (itrFracX == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter FRAC_X"_ustr); + double nFracX = itrFracX->second.toDouble(); + Fraction aFracX(nFracX); + + auto itrFracY = rParameters.find(u"FRAC_Y"_ustr); + if (itrFracY == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter FRAC_Y"_ustr); + double nFracY = itrFracY->second.toDouble(); + Fraction aFracY(nFracY); + pObj->Resize(aPos, aFracX, aFracY, true /*bRelative*/); + } + else if (rAction == "CROP") + { + // RotateFlyFrame3: Note: Crop does nothing at SdrObject + // anymore, see comment at SdrObject::NbcCrop + auto itrNX = rParameters.find(u"X"_ustr); + if (itrNX == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter X"_ustr); + + auto itrNY = rParameters.find(u"Y"_ustr); + if (itrNY == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter Y"_ustr); + + const double fX(itrNX->second.toDouble()); + const double fY(itrNY->second.toDouble()); + const basegfx::B2DPoint aPos(fX, fY); + + auto itrFracX = rParameters.find(u"FRAC_X"_ustr); + if (itrFracX == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter FRAC_X"_ustr); + const double fFracX(itrFracX->second.toDouble()); + + auto itrFracY = rParameters.find(u"FRAC_Y"_ustr); + if (itrFracY == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter FRAC_Y"_ustr); + const double fFracY(itrFracY->second.toDouble()); + + pObj->Crop(aPos, fFracX, fFracY); + } + else if (rAction == "ROTATE") + { + auto itrNX = rParameters.find(u"X"_ustr); + if (itrNX == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter X"_ustr); + + auto itrNY = rParameters.find(u"Y"_ustr); + if (itrNY == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter Y"_ustr); + + tools::Long nX = itrNX->second.toInt32(); + tools::Long nY = itrNY->second.toInt32(); + Point aPos(nX, nY); + + auto itrAngle = rParameters.find(u"ANGLE"_ustr); + if (itrAngle == rParameters.end()) + throw css::uno::RuntimeException(u"missing parameter ANGLE"_ustr); + + double nAngle = itrAngle->second.toDouble(); + pObj->Rotate(aPos, Degree100(sal_Int32(nAngle)), 0, 0); + } + else if (rAction == "Mirror") + { + pObj->Mirror(Point(), Point()); + } + else if (rAction == "SHEAR") + { + pObj->Shear(Point(), 0_deg100 /*nAngle*/, 0, false); + } +} + +OUString ImpressSdrObject::get_type() const { return u"ImpressSdrObject"_ustr; } + ImpressWindowUIObject::ImpressWindowUIObject(const VclPtr<sd::Window>& xWindow) : WindowUIObject(xWindow) , mxWindow(xWindow) diff --git a/svx/source/uitest/sdrobject.cxx b/svx/source/uitest/sdrobject.cxx index 0c8d510f4d88..8838733630cf 100644 --- a/svx/source/uitest/sdrobject.cxx +++ b/svx/source/uitest/sdrobject.cxx @@ -14,148 +14,6 @@ #include <vcl/window.hxx> #include <memory> -SdrUIObject::~SdrUIObject() {} - -StringMap SdrUIObject::get_state() -{ - StringMap aMap; - SdrObject* pObject = get_object(); - - if (!pObject) - return aMap; - - aMap[u"Name"_ustr] = pObject->GetName(); - aMap[u"Description"_ustr] = pObject->GetDescription(); - aMap[u"Title"_ustr] = pObject->GetTitle(); - aMap[u"Z-Order"_ustr] = OUString::number(pObject->GetOrdNum()); - aMap[u"Layer"_ustr] = OUString::number(pObject->GetLayer().get()); - aMap[u"IsGroupObject"_ustr] = OUString::boolean(pObject->IsGroupObject()); - aMap[u"IsPolyObject"_ustr] = OUString::boolean(pObject->IsPolyObj()); - aMap[u"PointCount"_ustr] = OUString::number(pObject->GetPointCount()); - aMap[u"HasTextEdit"_ustr] = OUString::boolean(pObject->HasTextEdit()); - aMap[u"HasMacro"_ustr] = OUString::boolean(pObject->HasMacro()); - aMap[u"IsClosed"_ustr] = OUString::boolean(pObject->IsClosedObj()); - aMap[u"IsEdgeObject"_ustr] = OUString::boolean(pObject->IsEdgeObj()); - aMap[u"Is3DObject"_ustr] = OUString::boolean(pObject->Is3DObj()); - aMap[u"IsUNOObject"_ustr] = OUString::boolean(pObject->IsUnoObj()); - aMap[u"MoveProtected"_ustr] = OUString::boolean(pObject->IsMoveProtect()); - aMap[u"ResizeProtected"_ustr] = OUString::boolean(pObject->IsResizeProtect()); - aMap[u"Printable"_ustr] = OUString::boolean(pObject->IsPrintable()); - aMap[u"Visible"_ustr] = OUString::boolean(pObject->IsVisible()); - aMap[u"HasText"_ustr] = OUString::boolean(pObject->HasText()); - - return aMap; -} - -void SdrUIObject::execute(const OUString& rAction, const StringMap& rParameters) -{ - SdrObject* pObj = get_object(); - if (!pObj) - return; - - if (rAction == "MOVE") - { - auto itrNX = rParameters.find(u"X"_ustr); - if (itrNX == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter X"_ustr); - - auto itrNY = rParameters.find(u"Y"_ustr); - if (itrNY == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter Y"_ustr); - - tools::Long nX = itrNX->second.toInt32(); - tools::Long nY = itrNY->second.toInt32(); - Size aMoveRange(nX, nY); - pObj->Move(aMoveRange); - } - else if (rAction == "RESIZE") - { - auto itrNX = rParameters.find(u"X"_ustr); - if (itrNX == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter X"_ustr); - - auto itrNY = rParameters.find(u"Y"_ustr); - if (itrNY == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter Y"_ustr); - - tools::Long nX = itrNX->second.toInt32(); - tools::Long nY = itrNY->second.toInt32(); - Point aPos(nX, nY); - - auto itrFracX = rParameters.find(u"FRAC_X"_ustr); - if (itrFracX == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter FRAC_X"_ustr); - double nFracX = itrFracX->second.toDouble(); - Fraction aFracX(nFracX); - - auto itrFracY = rParameters.find(u"FRAC_Y"_ustr); - if (itrFracY == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter FRAC_Y"_ustr); - double nFracY = itrFracY->second.toDouble(); - Fraction aFracY(nFracY); - pObj->Resize(aPos, aFracX, aFracY, true /*bRelative*/); - } - else if (rAction == "CROP") - { - // RotateFlyFrame3: Note: Crop does nothing at SdrObject - // anymore, see comment at SdrObject::NbcCrop - auto itrNX = rParameters.find(u"X"_ustr); - if (itrNX == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter X"_ustr); - - auto itrNY = rParameters.find(u"Y"_ustr); - if (itrNY == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter Y"_ustr); - - const double fX(itrNX->second.toDouble()); - const double fY(itrNY->second.toDouble()); - const basegfx::B2DPoint aPos(fX, fY); - - auto itrFracX = rParameters.find(u"FRAC_X"_ustr); - if (itrFracX == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter FRAC_X"_ustr); - const double fFracX(itrFracX->second.toDouble()); - - auto itrFracY = rParameters.find(u"FRAC_Y"_ustr); - if (itrFracY == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter FRAC_Y"_ustr); - const double fFracY(itrFracY->second.toDouble()); - - pObj->Crop(aPos, fFracX, fFracY); - } - else if (rAction == "ROTATE") - { - auto itrNX = rParameters.find(u"X"_ustr); - if (itrNX == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter X"_ustr); - - auto itrNY = rParameters.find(u"Y"_ustr); - if (itrNY == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter Y"_ustr); - - tools::Long nX = itrNX->second.toInt32(); - tools::Long nY = itrNY->second.toInt32(); - Point aPos(nX, nY); - - auto itrAngle = rParameters.find(u"ANGLE"_ustr); - if (itrAngle == rParameters.end()) - throw css::uno::RuntimeException(u"missing parameter ANGLE"_ustr); - - double nAngle = itrAngle->second.toDouble(); - pObj->Rotate(aPos, Degree100(sal_Int32(nAngle)), 0, 0); - } - else if (rAction == "Mirror") - { - pObj->Mirror(Point(), Point()); - } - else if (rAction == "SHEAR") - { - pObj->Shear(Point(), 0_deg100 /*nAngle*/, 0, false); - } -} - -OUString SdrUIObject::get_type() const { return u"SdrUIObject"_ustr; } - SvxColorValueSetUIObject::SvxColorValueSetUIObject(vcl::Window* pColorSetWin) : DrawingAreaUIObject(pColorSetWin) , mpColorSet(static_cast<SvxColorValueSet*>(mpController))