summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2021-05-23 15:40:08 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2021-06-08 14:50:33 +0200
commitc4f615b359be56e88e4fbf9aaaf30affb29d57e2 (patch)
tree484f1caaf27bc3cefc0d1a7e0614342927117440 /sd
parent064a13e94e9b38bc88381b5c497cf6c9ddbe93e4 (diff)
editengine-columns: Create document model and dialog page
Change-Id: I056aad9474ca18134d1f1686a53618cc9ab3d525 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116038 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/qa/uitest/impress_tests/textColumnsDialog.py53
-rw-r--r--sd/qa/unit/misc-tests.cxx49
2 files changed, 102 insertions, 0 deletions
diff --git a/sd/qa/uitest/impress_tests/textColumnsDialog.py b/sd/qa/uitest/impress_tests/textColumnsDialog.py
new file mode 100644
index 000000000000..d6ae7d248000
--- /dev/null
+++ b/sd/qa/uitest/impress_tests/textColumnsDialog.py
@@ -0,0 +1,53 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# 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/.
+#
+
+from uitest.uihelper.common import get_state_as_dict
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.uihelper.common import change_measurement_unit, select_pos
+from uitest.framework import UITestCase
+from uitest.uihelper import guarded
+
+class textColumnsDialog(UITestCase):
+
+ def test_textColumnsDialog(self):
+ with guarded.create_doc_in_start_center(self, "impress") as document:
+
+ xTemplateDlg = self.xUITest.getTopFocusWindow()
+ xCancelBtn = xTemplateDlg.getChild("close")
+ self.ui_test.close_dialog_through_button(xCancelBtn)
+
+ change_measurement_unit(self, 'Centimeter')
+
+ xImpressDoc = self.xUITest.getTopFocusWindow()
+
+ xEditWin = xImpressDoc.getChild("impress_win")
+ xEditWin.executeAction("SELECT", mkPropertyValues({"OBJECT":"Unnamed Drawinglayer object 1"}))
+ self.assertEqual("com.sun.star.drawing.SvxShapeCollection", document.CurrentSelection.getImplementationName())
+
+ # Test defaults and set some values
+ with guarded.execute_dialog_through_command(self, ".uno:TextAttributes") as xDialog:
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "2")
+ colNumber = xDialog.getChild('FLD_COL_NUMBER')
+ colSpacing = xDialog.getChild('MTR_FLD_COL_SPACING')
+ self.assertEqual('1', get_state_as_dict(colNumber)['Text'])
+ self.assertEqual('0.00 cm', get_state_as_dict(colSpacing)['Text'])
+ colNumber.executeAction("SET", mkPropertyValues({"TEXT": "3"}))
+ colSpacing.executeAction("SET", mkPropertyValues({"TEXT": "1.5"}))
+
+ # Test that settings persist
+ with guarded.execute_dialog_through_command(self, ".uno:TextAttributes") as xDialog:
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "2")
+ colNumber = xDialog.getChild('FLD_COL_NUMBER')
+ colSpacing = xDialog.getChild('MTR_FLD_COL_SPACING')
+ self.assertEqual('3', get_state_as_dict(colNumber)['Text'])
+ self.assertEqual('1.50 cm', get_state_as_dict(colSpacing)['Text'])
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sd/qa/unit/misc-tests.cxx b/sd/qa/unit/misc-tests.cxx
index 031aeca1f817..254fc46f69bb 100644
--- a/sd/qa/unit/misc-tests.cxx
+++ b/sd/qa/unit/misc-tests.cxx
@@ -58,6 +58,8 @@
#include <tools/gen.hxx>
#include <svx/view3d.hxx>
#include <svx/scene3d.hxx>
+#include <svx/sdmetitm.hxx>
+#include <svx/unoapi.hxx>
using namespace ::com::sun::star;
@@ -80,6 +82,7 @@ public:
void testTdf67248();
void testTdf119956();
void testTdf120527();
+ void testTextColumns();
void testTdf98839_ShearVFlipH();
void testTdf130988();
void testTdf131033();
@@ -102,6 +105,7 @@ public:
CPPUNIT_TEST(testTdf67248);
CPPUNIT_TEST(testTdf119956);
CPPUNIT_TEST(testTdf120527);
+ CPPUNIT_TEST(testTextColumns);
CPPUNIT_TEST(testTdf98839_ShearVFlipH);
CPPUNIT_TEST(testTdf130988);
CPPUNIT_TEST(testTdf131033);
@@ -472,6 +476,51 @@ void SdMiscTest::testTdf120527()
xDocShRef->DoClose();
}
+// Testing document model part of editengine-columns
+void SdMiscTest::testTextColumns()
+{
+ ::sd::DrawDocShellRef xDocShRef
+ = new ::sd::DrawDocShell(SfxObjectCreateMode::EMBEDDED, false, DocumentType::Impress);
+ uno::Reference<drawing::XDrawPagesSupplier> xDrawPagesSupplier = getDoc(xDocShRef);
+ uno::Reference<drawing::XDrawPages> xDrawPages = xDrawPagesSupplier->getDrawPages();
+ // Insert a new page.
+ uno::Reference<drawing::XDrawPage> xDrawPage(xDrawPages->insertNewByIndex(0),
+ uno::UNO_SET_THROW);
+ uno::Reference<drawing::XShapes> xShapes(xDrawPage, uno::UNO_QUERY_THROW);
+ uno::Reference<lang::XMultiServiceFactory> const xDoc(xDocShRef->GetDoc()->getUnoModel(),
+ uno::UNO_QUERY);
+
+ {
+ // Create a text shape
+ uno::Reference<drawing::XShape> xShape(
+ xDoc->createInstance("com.sun.star.drawing.TextShape"), uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xPropSet(xShape, uno::UNO_QUERY_THROW);
+
+ // Add the shape to the page.
+ xShapes->add(xShape);
+
+ // Set up columns
+ auto pTextObj = dynamic_cast<SdrTextObj*>(GetSdrObjectFromXShape(xShape));
+ CPPUNIT_ASSERT(pTextObj);
+ pTextObj->SetMergedItem(SfxInt16Item(SDRATTR_TEXTCOLUMNS_NUMBER, 2));
+ pTextObj->SetMergedItem(SdrMetricItem(SDRATTR_TEXTCOLUMNS_SPACING, 1000));
+ }
+
+ {
+ // Retrieve the shape and check columns
+ uno::Reference<container::XIndexAccess> xIndexAccess(xDrawPage, uno::UNO_QUERY_THROW);
+ uno::Reference<drawing::XShape> xShape(xIndexAccess->getByIndex(0), uno::UNO_QUERY_THROW);
+
+ auto pTextObj = dynamic_cast<SdrTextObj*>(GetSdrObjectFromXShape(xShape));
+ CPPUNIT_ASSERT(pTextObj);
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), pTextObj->GetTextColumnsNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1000), pTextObj->GetTextColumnsSpacing());
+ }
+
+ xDocShRef->DoClose();
+}
+
/// Draw miscellaneous tests.
// Since LO 6.2 the visible/printable/locked information for layers is always