Kaydet (Commit) 187445b2 authored tarafından Laurent Godard's avatar Laurent Godard Kaydeden (comit) Tomaž Vajngerl

Uno api sidebar unit test tdf#91806

- python test subsequentcheck
- correct deck setTitle APi (UI update)
- enhance UnoInProcess for flexiility in loading parameter

Change-Id: Id04cb78c6162ac84fb3bfd8577f84763109d993e
Reviewed-on: https://gerrit.libreoffice.org/16180Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarTomaž Vajngerl <quikee@gmail.com>
üst 77cc7147
......@@ -58,6 +58,8 @@ public:
*/
void SetIsDeckEnabled(const OUString& rsDeckId, const bool bIsEnabled);
void SetDeckTitle(const OUString& rsDeckId, const OUString& sTitle);
void SetDeckToDescriptor(const OUString& rsDeckId, VclPtr<Deck> aDeck);
void SetDeckOrderIndex(const OUString& rsDeckId, const sal_Int32 orderIndex);
......
......@@ -154,6 +154,8 @@ public:
ResourceManager::DeckContextDescriptorContainer GetMatchingDecks();
ResourceManager::PanelContextDescriptorContainer GetMatchingPanels( const ::rtl::OUString& rDeckId);
void notifyDeckTitle(const OUString& targetDeckId);
private:
typedef ::std::map<
const css::uno::Reference<css::frame::XFrame>,
......
......@@ -40,6 +40,12 @@ $(eval $(call gb_Module_add_subsequentcheck_targets,sfx2,\
))
endif
ifneq ($(DISABLE_PYTHON),TRUE)
$(eval $(call gb_Module_add_subsequentcheck_targets,sfx2,\
PythonTest_sfx2_python \
))
endif
ifneq (,$(filter LINUX DRAGONFLY OPENBSD FREEBSD NETBSD SOLARIS, $(OS)))
ifeq ($(ENABLE_SYSTRAY_GTK),TRUE)
$(eval $(call gb_Module_add_targets,sfx2,\
......
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_PythonTest_PythonTest,sfx2_python))
$(eval $(call gb_PythonTest_set_defs,sfx2_python,\
TDOC="$(SRCDIR)/sfx2/qa/python/testdocuments" \
))
$(eval $(call gb_PythonTest_add_modules,sfx2_python,$(SRCDIR)/sfx2/qa/python,\
check_sidebar \
))
# vim: set noet sw=4 ts=4:
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
import unittest
import unohelper
import os
from org.libreoffice.unotest import UnoInProcess
from com.sun.star.ui import XSidebarProvider
from com.sun.star.ui import XDecks
from com.sun.star.ui import XDeck
from com.sun.star.ui import XPanels
from com.sun.star.ui import XPanel
class CheckSidebar(unittest.TestCase):
_uno = None
_xDoc = None
@classmethod
def setUpClass(cls):
cls._uno = UnoInProcess()
cls._uno.setUp()
cls._xDoc = cls._uno.openEmptyDoc( url = "private:factory/scalc", bHidden = False, bReadOnly = False)
@classmethod
def tearDownClass(cls):
cls._uno.tearDown()
def test_check_sidebar(self):
xDoc = self.__class__._xDoc
xController = xDoc.getCurrentController()
xSidebar = xController.getSidebar()
assert(xSidebar)
xSidebar.setVisible(True)
isVisible = xSidebar.isVisible()
self.assertTrue ( xSidebar.isVisible() )
# TODO: does not work in unit test context
# xSidebar.setVisible(False)
# isVisible = xSidebar.isVisible()
# assert( not isVisible )
# xSidebar.setVisible(True)
xSidebar.showDecks(False)
xSidebar.showDecks(True)
xDecks = xSidebar.getDecks()
firstDeckName = "PropertyDeck";
deckElementNames = xDecks.getElementNames()
assert ( firstDeckName in deckElementNames )
assert ( xDecks.hasByName(firstDeckName) )
decksCount = xDecks.getCount()
self.assertEqual ( 5, decksCount )
xDeck = xDecks.getByName(firstDeckName)
assert ( xDeck )
assert ( xDeck.getId() == firstDeckName )
newDeckTitle = "New title"
xDeck.setTitle(newDeckTitle)
assert ( xDeck.getTitle() == newDeckTitle )
xDeck.moveFirst()
initialIndex = xDeck.getOrderIndex()
self.assertEqual(100, initialIndex)
xDeck.moveLast()
assert ( xDeck.getOrderIndex() > initialIndex )
initialIndex = xDeck.getOrderIndex()
xDeck.moveFirst()
assert ( xDeck.getOrderIndex() < initialIndex )
initialIndex = xDeck.getOrderIndex()
xDeck.moveDown()
assert ( xDeck.getOrderIndex() > initialIndex )
initialIndex = xDeck.getOrderIndex()
xDeck.moveUp()
assert ( xDeck.getOrderIndex() < initialIndex )
xPanels = xDeck.getPanels()
panelsCount = xPanels.getCount()
self.assertEqual ( panelsCount, 4 )
firstPanelName = "TextPropertyPanel"
panelElementNames = xPanels.getElementNames()
assert ( firstPanelName in panelElementNames )
assert ( xPanels.hasByName(firstPanelName) )
xPanel = xPanels.getByName(firstPanelName)
assert ( xPanel )
assert ( xPanel.getId() == firstPanelName )
newTitle = "New title"
xPanel.setTitle(newTitle)
assert ( xPanel.getTitle() == newTitle )
xPanel.moveFirst()
initialIndex = xPanel.getOrderIndex()
assert ( initialIndex == 120 )
xPanel.moveLast()
assert ( xPanel.getOrderIndex() > initialIndex )
initialIndex = xPanel.getOrderIndex()
xPanel.moveFirst()
assert ( xPanel.getOrderIndex() < initialIndex )
initialIndex = xPanel.getOrderIndex()
xPanel.moveDown()
assert ( xPanel.getOrderIndex() > initialIndex )
initialIndex = xPanel.getOrderIndex()
xPanel.moveUp()
assert ( xPanel.getOrderIndex() < initialIndex )
xPanel.collapse()
assert( not xPanel.isExpanded() )
otherPanel = xPanels.getByName("NumberFormatPropertyPanel")
otherPanel.expand(False)
assert( otherPanel.isExpanded() )
xPanel.expand(True)
assert( xPanel.isExpanded() )
assert( not otherPanel.isExpanded() )
# close the document
xDoc.dispose()
if __name__ == "__main__":
unittest.main()
# vim: set noet sw=4 ts=4:
\ No newline at end of file
......@@ -114,6 +114,22 @@ void ResourceManager::SetIsDeckEnabled(const OUString& rsDeckId, const bool bIsE
}
}
void ResourceManager::SetDeckTitle(const OUString& rsDeckId, const OUString& sTitle)
{
DeckContainer::iterator iDeck;
for (iDeck = maDecks.begin(); iDeck != maDecks.end(); ++iDeck)
{
if (iDeck->mbExperimental && !maMiscOptions.IsExperimentalMode())
continue;
if (iDeck->msId.equals(rsDeckId))
{
iDeck->msTitle = sTitle;
iDeck->msHelpText = sTitle;
return;
}
}
}
void ResourceManager::SetDeckToDescriptor(const OUString& rsDeckId, VclPtr<Deck> aDeck)
{
DeckContainer::iterator iDeck;
......
......@@ -249,6 +249,8 @@ void SAL_CALL SidebarController::notifyContextChangeEvent (const css::ui::Contex
{
maAsynchronousDeckSwitch.CancelRequest();
maContextChangeUpdate.RequestCall();
// TODO: this call is redundant but mandatory for unit test to update context on document loading
UpdateConfigurations();
}
}
......@@ -710,6 +712,16 @@ void SidebarController::SwitchToDeck (
UpdateTitleBarIcons();
}
void SidebarController::notifyDeckTitle(const OUString& targetDeckId)
{
if (msCurrentDeckId == targetDeckId)
{
maFocusManager.SetDeckTitle(mpCurrentDeck->GetTitleBar());
mpTabBar->UpdateFocusManager(maFocusManager);
UpdateTitleBarIcons();
}
}
VclPtr<Panel> SidebarController::CreatePanel (
const OUString& rsPanelId,
vcl::Window* pParentWindow,
......
......@@ -71,6 +71,11 @@ void SAL_CALL SfxUnoDeck::setTitle( const OUString& newTitle )
DeckTitleBar* pTitleBar = pDeck->GetTitleBar();
pTitleBar->SetTitle(newTitle);
// update the ResourceManager
pSidebarController->GetResourceManager()->SetDeckTitle(mDeckId, newTitle);
pSidebarController->notifyDeckTitle(mDeckId);
}
sal_Bool SAL_CALL SfxUnoDeck::isActive()
......@@ -94,6 +99,9 @@ void SAL_CALL SfxUnoDeck::activate( const sal_Bool bActivate )
pSidebarController->SwitchToDeck(mDeckId);
else
pSidebarController->SwitchToDefaultDeck();
// update the sidebar
pSidebarController->NotifyResize();
}
uno::Reference<ui::XPanels> SAL_CALL SfxUnoDeck::getPanels()
......@@ -123,6 +131,7 @@ void SAL_CALL SfxUnoDeck::setOrderIndex( const sal_Int32 newOrderIndex )
pSidebarController->GetResourceManager()->SetDeckOrderIndex(mDeckId, newOrderIndex);
// update the sidebar
pSidebarController->NotifyResize();
}
......
......@@ -186,6 +186,20 @@ class UnoInProcess:
assert(self.xDoc)
return self.xDoc
def openEmptyCalcDoc(self):
self.xDoc = self.openEmptyDoc("private:factory/scalc")
return self.xDoc
def openEmptyDoc(self, url, bHidden = True, bReadOnly = False):
assert(self.xContext)
smgr = self.getContext().ServiceManager
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", self.getContext())
props = [("Hidden", bHidden), ("ReadOnly", bReadOnly)]
loadProps = tuple([mkPropertyValue(name, value) for (name, value) in props])
self.xDoc = desktop.loadComponentFromURL(url, "_blank", 0, loadProps)
assert(self.xDoc)
return self.xDoc
def openWriterTemplateDoc(self, file):
assert(self.xContext)
smgr = self.getContext().ServiceManager
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment