summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-05-23 05:22:33 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-06-17 21:10:37 +0200
commit3189557e51acb782308fe716ba19137047e9f51c (patch)
tree26e316d1368fc9eb216a089984d0831168a56a02
parent1e2c832f138d9c7faaa7dce4b8850e796ebc692f (diff)
uitest: support more impress operations
Change-Id: I74ab526dabbee1f8c203274f187c065d9fb413fd
-rw-r--r--sd/source/ui/inc/uiobject.hxx11
-rw-r--r--sd/source/ui/uitest/uiobject.cxx74
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: */