diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2016-05-23 05:22:33 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2016-06-17 21:10:37 +0200 |
commit | 3189557e51acb782308fe716ba19137047e9f51c (patch) | |
tree | 26e316d1368fc9eb216a089984d0831168a56a02 | |
parent | 1e2c832f138d9c7faaa7dce4b8850e796ebc692f (diff) |
uitest: support more impress operations
Change-Id: I74ab526dabbee1f8c203274f187c065d9fb413fd
-rw-r--r-- | sd/source/ui/inc/uiobject.hxx | 11 | ||||
-rw-r--r-- | sd/source/ui/uitest/uiobject.cxx | 74 |
2 files changed, 82 insertions, 3 deletions
diff --git a/sd/source/ui/inc/uiobject.hxx b/sd/source/ui/inc/uiobject.hxx index f8b7e572899e..8e3d4796e83f 100644 --- a/sd/source/ui/inc/uiobject.hxx +++ b/sd/source/ui/inc/uiobject.hxx @@ -16,6 +16,9 @@ class DrawViewShell; } +class SdrObject; +class SdrPageView; + class ImpressWindowUIObject : public WindowUIObject { public: @@ -27,6 +30,8 @@ public: virtual void execute(const OUString& rAction, const StringMap& rParameters) override; + virtual std::set<OUString> get_children() const override; + static std::unique_ptr<UIObject> create(vcl::Window* pWindow); protected: @@ -37,7 +42,11 @@ private: VclPtr<sd::Window> mxWindow; - sd::DrawViewShell* getViewShell(); + sd::DrawViewShell* getViewShell() const; + + SdrObject* getObject(const OUString& rName); + + SdrPageView* getPageView(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/uitest/uiobject.cxx b/sd/source/ui/uitest/uiobject.cxx index 90535c6d66aa..a8c022705bb9 100644 --- a/sd/source/ui/uitest/uiobject.cxx +++ b/sd/source/ui/uitest/uiobject.cxx @@ -11,6 +11,7 @@ #include "Window.hxx" #include "DrawViewShell.hxx" +#include "sdpage.hxx" ImpressWindowUIObject::ImpressWindowUIObject(VclPtr<sd::Window> xWindow): WindowUIObject(xWindow), @@ -51,7 +52,53 @@ void ImpressWindowUIObject::execute(const OUString& rAction, getViewShell()->SwitchPage(nVal); } } - WindowUIObject::execute(rAction, rParameters); + else if (rAction == "SELECT") + { + if (rParameters.find("OBJECT") != rParameters.end()) + { + auto itr = rParameters.find("OBJECT"); + OUString aName = itr->second; + SdrObject* pObj = getObject(aName); + SdrPageView* pPageView = getPageView(); + getViewShell()->GetView()->MarkObj(pObj, pPageView); + } + } + else if (rAction == "DESELECT") + { + getViewShell()->GetView()->UnMarkAll(); + } + else + WindowUIObject::execute(rAction, rParameters); +} + +namespace { + +OUString getObjectName(SdrObject* pObject) +{ + if (pObject->GetName().isEmpty()) + return OUString("Unnamed Drawinglayer object ") + OUString::number(pObject->GetOrdNum()); + else + return pObject->GetName(); +} + +} + +std::set<OUString> ImpressWindowUIObject::get_children() const +{ + SdrPage* pPage = getViewShell()->getCurrentPage(); + + std::set<OUString> aRet; + if (!pPage) + return aRet; + + size_t nObjs = pPage->GetObjCount(); + for (size_t i = 0; i < nObjs; ++i) + { + SdrObject* pObject = pPage->GetObj(i); + aRet.insert(getObjectName(pObject)); + } + + return aRet; } OUString ImpressWindowUIObject::get_name() const @@ -66,7 +113,7 @@ std::unique_ptr<UIObject> ImpressWindowUIObject::create(vcl::Window* pWindow) return std::unique_ptr<UIObject>(new ImpressWindowUIObject(pWin)); } -sd::DrawViewShell* ImpressWindowUIObject::getViewShell() +sd::DrawViewShell* ImpressWindowUIObject::getViewShell() const { sd::DrawViewShell* pViewShell = dynamic_cast<sd::DrawViewShell*>(mxWindow->GetViewShell()); assert(pViewShell); @@ -74,4 +121,27 @@ sd::DrawViewShell* ImpressWindowUIObject::getViewShell() return pViewShell; } +SdrObject* ImpressWindowUIObject::getObject(const OUString& rName) +{ + SdrPage* pPage = getViewShell()->getCurrentPage(); + + if (!pPage) + return nullptr; + + size_t nObjs = pPage->GetObjCount(); + for (size_t i = 0; i < nObjs; ++i) + { + SdrObject* pObj = pPage->GetObj(i); + if (rName == getObjectName(pObj)) + return pObj; + } + + return nullptr; +} + +SdrPageView* ImpressWindowUIObject::getPageView() +{ + return getViewShell()->GetView()->GetSdrPageView(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |