summaryrefslogtreecommitdiffstats
path: root/sc/qa/uitest/chart
diff options
context:
space:
mode:
Diffstat (limited to 'sc/qa/uitest/chart')
-rw-r--r--sc/qa/uitest/chart/chartArea.py155
-rw-r--r--sc/qa/uitest/chart/chartAxes.py59
-rw-r--r--sc/qa/uitest/chart/chartDataLabels.py290
-rw-r--r--sc/qa/uitest/chart/chartGrid.py200
-rw-r--r--sc/qa/uitest/chart/chartGrids.py83
-rw-r--r--sc/qa/uitest/chart/chartLegend.py125
-rw-r--r--sc/qa/uitest/chart/chartTitles.py119
-rw-r--r--sc/qa/uitest/chart/chartWall.py170
-rw-r--r--sc/qa/uitest/chart/chartXAxis.py242
-rw-r--r--sc/qa/uitest/chart/chartYAxis.py243
-rw-r--r--sc/qa/uitest/chart/copyPaste.py70
-rw-r--r--sc/qa/uitest/chart/formatDataSeries.py96
-rw-r--r--sc/qa/uitest/chart/tdf122011.py51
-rw-r--r--sc/qa/uitest/chart/tdf43175.py43
-rw-r--r--sc/qa/uitest/chart/tdf46885.py46
-rw-r--r--sc/qa/uitest/chart/tdf62057.py56
-rw-r--r--sc/qa/uitest/chart/tdf62349.py38
-rw-r--r--sc/qa/uitest/chart/tdf64086.py33
-rw-r--r--sc/qa/uitest/chart/tdf93506_trendline.py433
-rw-r--r--sc/qa/uitest/chart/tdf96432.py71
-rw-r--r--sc/qa/uitest/chart/tdf98690.py42
-rw-r--r--sc/qa/uitest/chart/tdf99069.py65
22 files changed, 2730 insertions, 0 deletions
diff --git a/sc/qa/uitest/chart/chartArea.py b/sc/qa/uitest/chart/chartArea.py
new file mode 100644
index 000000000..44040f8e8
--- /dev/null
+++ b/sc/qa/uitest/chart/chartArea.py
@@ -0,0 +1,155 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit, select_pos
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart Area dialog
+class chartArea(UITestCase):
+ def test_chart_area_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("chartArea.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ xArea = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().Area
+ self.assertEqual(xArea.LineWidth, 0)
+ self.assertEqual(xArea.LineTransparence, 0)
+ self.assertEqual(hex(xArea.FillColor), '0xffffff')
+ self.assertEqual(xArea.FillTransparence, 0)
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramArea"})) as xDialog:
+ #Click on tab "Borders".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ self.assertEqual(xArea.LineWidth, 100)
+ self.assertEqual(xArea.LineTransparence, 5)
+ self.assertEqual(hex(xArea.FillColor), '0xffffff')
+ self.assertEqual(xArea.FillTransparence, 0)
+
+ #reopen and verify tab "Borders".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramArea"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+ #Click on tab "Area"
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ btncolor = xDialog.getChild("btncolor")
+ btncolor.executeAction("CLICK", tuple())
+
+ rCustom = xDialog.getChild("R_custom")
+ gCustom = xDialog.getChild("G_custom")
+ bCustom = xDialog.getChild("B_custom")
+
+ rCustom.executeAction("CLEAR", tuple())
+ rCustom.executeAction("TYPE", mkPropertyValues({"TEXT":"35"}))
+ rCustom.executeAction("UP", tuple())
+ rCustom.executeAction("DOWN", tuple()) #without this save data doesn't works
+ self.assertEqual(get_state_as_dict(rCustom)["Text"], "35")
+ gCustom.executeAction("CLEAR", tuple())
+ gCustom.executeAction("TYPE", mkPropertyValues({"TEXT":"169"}))
+ gCustom.executeAction("UP", tuple())
+ gCustom.executeAction("DOWN", tuple()) #without this save data doesn't works
+ bCustom.executeAction("CLEAR", tuple())
+ bCustom.executeAction("TYPE", mkPropertyValues({"TEXT":"211"}))
+ bCustom.executeAction("UP", tuple())
+ bCustom.executeAction("DOWN", tuple()) #without this save data doesn't works
+
+ self.assertEqual(xArea.LineWidth, 100)
+ self.assertEqual(xArea.LineTransparence, 5)
+ self.assertEqual(hex(xArea.FillColor), '0x23a9d3')
+ self.assertEqual(xArea.FillTransparence, 0)
+
+ #reopen and verify tab "Area".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramArea"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ rCustom = xDialog.getChild("R_custom")
+ gCustom = xDialog.getChild("G_custom")
+ bCustom = xDialog.getChild("B_custom")
+
+ self.assertEqual(get_state_as_dict(rCustom)["Text"], "35")
+ self.assertEqual(get_state_as_dict(gCustom)["Text"], "169")
+ self.assertEqual(get_state_as_dict(bCustom)["Text"], "211")
+
+ #change tab "Transparency"
+ select_pos(tabcontrol, "2")
+ transparency = xDialog.getChild("RBT_TRANS_LINEAR")
+ transparencyPercent = xDialog.getChild("MTR_TRANSPARENT") #51%
+
+ transparency.executeAction("CLICK", tuple())
+ transparencyPercent.executeAction("UP", tuple())
+
+
+ self.assertEqual(xArea.LineWidth, 100)
+ self.assertEqual(xArea.LineTransparence, 5)
+ self.assertEqual(hex(xArea.FillColor), '0x23a9d3')
+ self.assertEqual(xArea.FillTransparence, 51)
+
+ #reopen and verify tab "Transparency"
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramArea"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "2")
+
+ transparency = xDialog.getChild("RBT_TRANS_LINEAR")
+ transparencyPercent = xDialog.getChild("MTR_TRANSPARENT") #51%
+
+ self.assertEqual(get_state_as_dict(transparency)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(transparencyPercent)["Text"], "51%")
+
+
+ self.assertEqual(xArea.LineWidth, 100)
+ self.assertEqual(xArea.LineTransparence, 5)
+ self.assertEqual(hex(xArea.FillColor), '0x23a9d3')
+ self.assertEqual(xArea.FillTransparence, 51)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartAxes.py b/sc/qa/uitest/chart/chartAxes.py
new file mode 100644
index 000000000..a4ca1d8a1
--- /dev/null
+++ b/sc/qa/uitest/chart/chartAxes.py
@@ -0,0 +1,59 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart Enable Axes dialog
+class chartAxes(UITestCase):
+ def test_chart_enable_grids_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98390.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuAxes"})) as xDialog:
+
+ primaryX = xDialog.getChild("primaryX")
+ primaryY = xDialog.getChild("primaryY")
+ secondaryX = xDialog.getChild("secondaryX")
+ secondaryY = xDialog.getChild("secondaryY")
+
+ primaryX.executeAction("CLICK", tuple())
+ primaryY.executeAction("CLICK", tuple())
+ secondaryX.executeAction("CLICK", tuple())
+ secondaryY.executeAction("CLICK", tuple())
+
+
+ #reopen and verify Grids dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuAxes"})) as xDialog:
+
+ primaryX = xDialog.getChild("primaryX")
+ primaryY = xDialog.getChild("primaryY")
+ secondaryX = xDialog.getChild("secondaryX")
+ secondaryY = xDialog.getChild("secondaryY")
+
+ self.assertEqual(get_state_as_dict(primaryX)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(primaryY)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(secondaryX)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(secondaryY)["Selected"], "true")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartDataLabels.py b/sc/qa/uitest/chart/chartDataLabels.py
new file mode 100644
index 000000000..132f7ae2c
--- /dev/null
+++ b/sc/qa/uitest/chart/chartDataLabels.py
@@ -0,0 +1,290 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+from uitest.uihelper.common import select_by_text, select_pos
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+from com.sun.star.lang import Locale
+
+
+# Chart Display Data Labels dialog
+class chartDataLabels(UITestCase):
+ def test_chart_data_labels_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98390.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+
+ xDataSeries = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertFalse(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowCategoryName)
+ self.assertFalse(xDataSeries[0].Label.ShowLegendSymbol)
+ self.assertEqual(xDataSeries[0].LabelSeparator, " ")
+
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuDataLabels"})) as xDialog:
+
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "1")
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowCategoryName)
+ self.assertFalse(xDataSeries[0].Label.ShowLegendSymbol)
+ self.assertEqual(xDataSeries[0].LabelSeparator, " ")
+
+ category = xDialog.getChild("CB_CATEGORY")
+ legend = xDialog.getChild("CB_SYMBOL")
+ wrapText = xDialog.getChild("CB_WRAP_TEXT")
+ separator = xDialog.getChild("LB_TEXT_SEPARATOR")
+ placement = xDialog.getChild("LB_LABEL_PLACEMENT")
+ degrees = xDialog.getChild("NF_LABEL_DEGREES")
+ textDirection = xDialog.getChild("LB_LABEL_TEXTDIR")
+
+ #valueAsNumber.executeAction("CLICK", tuple())
+ category.executeAction("CLICK", tuple())
+ legend.executeAction("CLICK", tuple())
+ wrapText.executeAction("CLICK", tuple())
+ select_by_text(separator, "Comma")
+
+ select_by_text(placement, "Below")
+ degrees.executeAction("UP", tuple())
+ select_by_text(textDirection, "Right-to-left")
+
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertTrue(xDataSeries[0].Label.ShowCategoryName)
+ self.assertTrue(xDataSeries[0].Label.ShowLegendSymbol)
+ self.assertEqual(xDataSeries[0].LabelSeparator, ", ")
+
+ #reopen and verify InsertMenuDataLabels dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuDataLabels"})) as xDialog:
+
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "1")
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertTrue(xDataSeries[0].Label.ShowCategoryName)
+ self.assertTrue(xDataSeries[0].Label.ShowLegendSymbol)
+ self.assertEqual(xDataSeries[0].LabelSeparator, ", ")
+
+ valueAsNumber = xDialog.getChild("CB_VALUE_AS_NUMBER")
+ category = xDialog.getChild("CB_CATEGORY")
+ legend = xDialog.getChild("CB_SYMBOL")
+ wrapText = xDialog.getChild("CB_WRAP_TEXT")
+ separator = xDialog.getChild("LB_TEXT_SEPARATOR")
+ placement = xDialog.getChild("LB_LABEL_PLACEMENT")
+ degrees = xDialog.getChild("NF_LABEL_DEGREES")
+ textDirection = xDialog.getChild("LB_LABEL_TEXTDIR")
+
+ self.assertEqual(get_state_as_dict(valueAsNumber)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(category)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(legend)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(wrapText)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(separator)["SelectEntryText"], "Comma")
+ self.assertEqual(get_state_as_dict(placement)["SelectEntryText"], "Below")
+ self.assertEqual(get_state_as_dict(degrees)["Text"], "1°")
+ self.assertEqual(get_state_as_dict(textDirection)["SelectEntryText"], "Right-to-left")
+
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertTrue(xDataSeries[0].Label.ShowCategoryName)
+ self.assertTrue(xDataSeries[0].Label.ShowLegendSymbol)
+ self.assertEqual(xDataSeries[0].LabelSeparator, ", ")
+
+ def test_chart_data_labels_percentage_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("dataLabels.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+
+ xDataSeries = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertIsNone(xDataSeries[0].PercentageNumberFormat)
+
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataLabels"})) as xDialog:
+
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "1")
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertIsNone(xDataSeries[0].PercentageNumberFormat)
+
+ valueAsNumber = xDialog.getChild("CB_VALUE_AS_NUMBER")
+ valueAsPercentage = xDialog.getChild("CB_VALUE_AS_PERCENTAGE")
+ buttonPercentage = xDialog.getChild("PB_PERCENT_NUMBERFORMAT")
+
+ valueAsNumber.executeAction("CLICK", tuple())
+ valueAsPercentage.executeAction("CLICK", tuple())
+ #button Percentage format
+
+ with self.ui_test.execute_blocking_action(buttonPercentage.executeAction, args=('CLICK', ())) as dialog:
+ sourceformat = dialog.getChild("sourceformat")
+ decimalsed = dialog.getChild("decimalsed")
+ leadzerosed = dialog.getChild("leadzerosed")
+ negnumred = dialog.getChild("negnumred")
+ thousands = dialog.getChild("thousands")
+ formatted = dialog.getChild("formatted")
+
+ sourceformat.executeAction("CLICK", tuple())
+ decimalsed.executeAction("UP", tuple())
+ leadzerosed.executeAction("UP", tuple())
+ negnumred.executeAction("CLICK", tuple())
+ thousands.executeAction("CLICK", tuple())
+ self.assertEqual(get_state_as_dict(formatted)["Text"], "#,#00.0%;[RED]-#,#00.0%")
+
+ self.assertEqual(get_state_as_dict(valueAsNumber)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(valueAsPercentage)["Selected"], "true")
+
+
+ xNumberFormats = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getNumberFormats()
+ xLocale = Locale('en', 'US', '')
+ xFormat = xNumberFormats.queryKey("#,#00.0%;[RED]-#,#00.0%", xLocale, True)
+
+ self.assertFalse(xDataSeries[0].Label.ShowNumber)
+ self.assertTrue(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertEqual(xDataSeries[0].PercentageNumberFormat, xFormat)
+
+ #reopen and verify Percentage dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataLabels"})) as xDialog:
+
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "1")
+
+ self.assertFalse(xDataSeries[0].Label.ShowNumber)
+ self.assertTrue(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertEqual(xDataSeries[0].PercentageNumberFormat, xFormat)
+
+ valueAsNumber = xDialog.getChild("CB_VALUE_AS_NUMBER")
+ valueAsPercentage = xDialog.getChild("CB_VALUE_AS_PERCENTAGE")
+
+ self.assertEqual(get_state_as_dict(valueAsNumber)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(valueAsPercentage)["Selected"], "true")
+
+ self.assertFalse(xDataSeries[0].Label.ShowNumber)
+ self.assertTrue(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertEqual(xDataSeries[0].PercentageNumberFormat, xFormat)
+
+ def test_tdf131291(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf131291.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+
+ xDataSeries = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataLabels"})) as xDialog:
+
+ xTabs = xDialog.getChild("tabcontrol")
+ select_pos(xTabs, "1")
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+
+ xNumberFormatBtn = xDialog.getChild("PB_NUMBERFORMAT")
+
+ with self.ui_test.execute_blocking_action(xNumberFormatBtn.executeAction, args=('CLICK', ())) as dialog:
+ categoryformat = dialog.getChild("categorylb")
+ formatted = dialog.getChild("formatted")
+ sourceformat = dialog.getChild("sourceformat")
+
+ # Select currency
+ sourceformat.executeAction("CLICK", tuple());
+ categoryformat.getChild("4").executeAction("SELECT", tuple());
+
+ self.assertEqual(get_state_as_dict(categoryformat)["SelectEntryText"], "Currency")
+
+ self.assertEqual(get_state_as_dict(formatted)["Text"], "[$$-409]#,##0.00;[RED]-[$$-409]#,##0.00")
+
+
+ xNumberFormats = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getNumberFormats()
+ xLocale = Locale()
+ xFormat = xNumberFormats.queryKey("[$$-409]#,##0.00;[RED]-[$$-409]#,##0.00", xLocale, True)
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertEqual(xDataSeries[0].NumberFormat, xFormat)
+
+ #reopen and verify the previous changes
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataLabels"})) as xDialog:
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+ # tdf#131291: it would fail here: AssertionError: 0 != 104
+ self.assertEqual(xDataSeries[0].NumberFormat, xFormat)
+
+
+ self.assertTrue(xDataSeries[0].Label.ShowNumber)
+ self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
+ self.assertEqual(xDataSeries[0].NumberFormat, xFormat)
+
+ def test_tdf136573(self):
+ with self.ui_test.load_file(get_url_for_data_file("dataLabels.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ # Select the first label
+ xDataLabel = xChartMain.getChild("CID/MultiClick/CID/D=0:CS=0:CT=0:Series=0:DataLabels=:DataLabel=0")
+ xDataLabel.executeAction("SELECT", tuple())
+
+ with self.ui_test.execute_dialog_through_action(xDataLabel, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
+
+ self.assertEqual("0.5", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
+ self.assertEqual("2.89", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+
+ # Use OK button in order to test tdf#137165
+
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "UP"}))
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "LEFT"}))
+
+ with self.ui_test.execute_dialog_through_action(xDataLabel, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
+
+ # Check the position has changed after moving the label using the arrows keys
+ self.assertEqual("0.4", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
+ self.assertEqual("2.79", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartGrid.py b/sc/qa/uitest/chart/chartGrid.py
new file mode 100644
index 000000000..c54e03637
--- /dev/null
+++ b/sc/qa/uitest/chart/chartGrid.py
@@ -0,0 +1,200 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit, select_pos
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart Grid dialog
+# Bug 98390 - Crash when modifying minor grid
+class chartGrid(UITestCase):
+ def test_tdf98390_chart_grid_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98390.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ #X Axis Major Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridYMain"})) as xDialog:
+ #tab "Line".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify X Axis Major Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridYMain"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+ #Y Axis Major Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridXMain"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify Y Axis Major Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridXMain"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+
+ #Y Axis Minor Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridXHelp"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify Y Axis Minor Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridXHelp"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+
+ #X Axis Minor Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridYHelp"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify X Axis Minor Grid
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridYHelp"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+
+ #All Grids
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridAll"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify X Axis Minor Grid (changed in All Grids)
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramGridYHelp"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.20 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "10%")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartGrids.py b/sc/qa/uitest/chart/chartGrids.py
new file mode 100644
index 000000000..781486b15
--- /dev/null
+++ b/sc/qa/uitest/chart/chartGrids.py
@@ -0,0 +1,83 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart Enable Grids dialog
+class chartGrids(UITestCase):
+ def test_chart_enable_grids_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98390.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuGrids"})) as xDialog:
+
+ primaryX = xDialog.getChild("primaryX")
+ primaryY = xDialog.getChild("primaryY")
+ secondaryX = xDialog.getChild("secondaryX")
+ secondaryY = xDialog.getChild("secondaryY")
+
+ primaryX.executeAction("CLICK", tuple())
+ primaryY.executeAction("CLICK", tuple())
+ secondaryX.executeAction("CLICK", tuple())
+ secondaryY.executeAction("CLICK", tuple())
+
+
+ #reopen and verify Grids dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuGrids"})) as xDialog:
+
+ primaryX = xDialog.getChild("primaryX")
+ primaryY = xDialog.getChild("primaryY")
+ secondaryX = xDialog.getChild("secondaryX")
+ secondaryY = xDialog.getChild("secondaryY")
+
+ self.assertEqual(get_state_as_dict(primaryX)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(primaryY)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(secondaryX)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(secondaryY)["Selected"], "false")
+
+ primaryX.executeAction("CLICK", tuple())
+ primaryY.executeAction("CLICK", tuple())
+ secondaryX.executeAction("CLICK", tuple())
+ secondaryY.executeAction("CLICK", tuple())
+
+
+ #reopen and verify Grids dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuGrids"})) as xDialog:
+
+ primaryX = xDialog.getChild("primaryX")
+ primaryY = xDialog.getChild("primaryY")
+ secondaryX = xDialog.getChild("secondaryX")
+ secondaryY = xDialog.getChild("secondaryY")
+
+ self.assertEqual(get_state_as_dict(primaryX)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(primaryY)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(secondaryX)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(secondaryY)["Selected"], "true")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartLegend.py b/sc/qa/uitest/chart/chartLegend.py
new file mode 100644
index 000000000..45938e230
--- /dev/null
+++ b/sc/qa/uitest/chart/chartLegend.py
@@ -0,0 +1,125 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart Display Legend dialog
+class chartLegend(UITestCase):
+ def test_chart_display_legend_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98390.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuLegend"})) as xDialog:
+ left = xDialog.getChild("left")
+
+ left.executeAction("CLICK", tuple())
+
+ #reopen and verify InsertMenuLegend dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuLegend"})) as xDialog:
+ left = xDialog.getChild("left")
+ right = xDialog.getChild("right")
+ top = xDialog.getChild("top")
+ bottom = xDialog.getChild("bottom")
+ show = xDialog.getChild("show")
+
+ self.assertEqual(get_state_as_dict(left)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(right)["Checked"], "false")
+ self.assertEqual(get_state_as_dict(top)["Checked"], "false")
+ self.assertEqual(get_state_as_dict(bottom)["Checked"], "false")
+
+ show.executeAction("CLICK", tuple())
+
+ #reopen and verify InsertMenuLegend dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuLegend"})) as xDialog:
+ left = xDialog.getChild("left")
+ right = xDialog.getChild("right")
+ top = xDialog.getChild("top")
+ bottom = xDialog.getChild("bottom")
+ show = xDialog.getChild("show")
+
+ self.assertEqual(get_state_as_dict(left)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(right)["Checked"], "false")
+ self.assertEqual(get_state_as_dict(top)["Checked"], "false")
+ self.assertEqual(get_state_as_dict(bottom)["Checked"], "false")
+
+ self.assertEqual(get_state_as_dict(show)["Selected"], "false")
+
+ def test_legends_move_with_arrows_keys(self):
+
+ with self.ui_test.load_file(get_url_for_data_file("dataLabels.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ # Select the legends
+ xLegends = xChartMain.getChild("CID/D=0:Legend=")
+ xLegends.executeAction("SELECT", tuple())
+
+ with self.ui_test.execute_dialog_through_action(xLegends, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
+ self.assertEqual("4.61", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
+ self.assertEqual("1.54", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "UP"}))
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "LEFT"}))
+
+ # Check the position has changed after moving the label using the arrows keys
+ with self.ui_test.execute_dialog_through_action(xLegends, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
+ self.assertEqual("4.51", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
+ self.assertEqual("1.44", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+
+ def test_Tdf147394(self):
+
+ with self.ui_test.load_file(get_url_for_data_file("dataLabels.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ xLegend = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().Legend
+ self.assertTrue(xLegend.Show)
+
+ # Select the legends
+ xLegends = xChartMain.getChild("CID/D=0:Legend=")
+ xLegends.executeAction("SELECT", tuple())
+
+ # Without the fix in place, this test would have crashed here
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "DELETE"}))
+
+ self.assertFalse(xLegend.Show)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartTitles.py b/sc/qa/uitest/chart/chartTitles.py
new file mode 100644
index 000000000..cd1955b67
--- /dev/null
+++ b/sc/qa/uitest/chart/chartTitles.py
@@ -0,0 +1,119 @@
+# -*- 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.framework import UITestCase
+
+from uitest.uihelper.common import change_measurement_unit
+
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+#Chart Display Titles dialog
+
+class chartTitles(UITestCase):
+ def test_chart_display_titles_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98390.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ xCS = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().FirstDiagram.CoordinateSystems[0]
+
+ self.assertFalse(calc_doc.Sheets[0].Charts[0].getEmbeddedObject().HasMainTitle)
+ self.assertFalse(calc_doc.Sheets[0].Charts[0].getEmbeddedObject().HasSubTitle)
+ self.assertIsNone(xCS.getAxisByDimension(0, 0).TitleObject)
+ self.assertIsNone(xCS.getAxisByDimension(1, 0).TitleObject)
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuTitles"})) as xDialog:
+
+ maintitle = xDialog.getChild("maintitle")
+ subtitle = xDialog.getChild("subtitle")
+ primaryXaxis = xDialog.getChild("primaryXaxis")
+ primaryYaxis = xDialog.getChild("primaryYaxis")
+ secondaryXaxis = xDialog.getChild("secondaryXaxis")
+ secondaryYaxis = xDialog.getChild("secondaryYaxis")
+
+ maintitle.executeAction("TYPE", mkPropertyValues({"TEXT":"A"}))
+ subtitle.executeAction("TYPE", mkPropertyValues({"TEXT":"B"}))
+ primaryXaxis.executeAction("TYPE", mkPropertyValues({"TEXT":"C"}))
+ primaryYaxis.executeAction("TYPE", mkPropertyValues({"TEXT":"D"}))
+ secondaryXaxis.executeAction("TYPE", mkPropertyValues({"TEXT":"E"}))
+ secondaryYaxis.executeAction("TYPE", mkPropertyValues({"TEXT":"F"}))
+
+
+ self.assertTrue(calc_doc.Sheets[0].Charts[0].getEmbeddedObject().HasMainTitle)
+ self.assertTrue(calc_doc.Sheets[0].Charts[0].getEmbeddedObject().HasSubTitle)
+ self.assertEqual("A", calc_doc.Sheets[0].Charts[0].getEmbeddedObject().Title.String)
+ self.assertEqual("B", calc_doc.Sheets[0].Charts[0].getEmbeddedObject().SubTitle.String)
+ self.assertEqual("C", xCS.getAxisByDimension(0, 0).TitleObject.Text[0].String)
+ self.assertEqual("D", xCS.getAxisByDimension(1, 0).TitleObject.Text[0].String)
+ self.assertEqual("E", xCS.getAxisByDimension(0, 1).TitleObject.Text[0].String)
+ self.assertEqual("F", xCS.getAxisByDimension(1, 1).TitleObject.Text[0].String)
+
+ #reopen and verify InsertMenuTitles dialog
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "InsertMenuTitles"})) as xDialog:
+
+ maintitle = xDialog.getChild("maintitle")
+ subtitle = xDialog.getChild("subtitle")
+ primaryXaxis = xDialog.getChild("primaryXaxis")
+ primaryYaxis = xDialog.getChild("primaryYaxis")
+ secondaryXaxis = xDialog.getChild("secondaryXaxis")
+ secondaryYaxis = xDialog.getChild("secondaryYaxis")
+
+ self.assertEqual(get_state_as_dict(maintitle)["Text"], "A")
+ self.assertEqual(get_state_as_dict(subtitle)["Text"], "B")
+ self.assertEqual(get_state_as_dict(primaryXaxis)["Text"], "C")
+ self.assertEqual(get_state_as_dict(primaryYaxis)["Text"], "D")
+ self.assertEqual(get_state_as_dict(secondaryXaxis)["Text"], "E")
+ self.assertEqual(get_state_as_dict(secondaryYaxis)["Text"], "F")
+
+
+ def test_title_move_with_arrows_keys(self):
+
+ with self.ui_test.load_file(get_url_for_data_file("chartArea.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ # Select the title
+ xTitle = xChartMain.getChild("CID/Title=")
+ xTitle.executeAction("SELECT", tuple())
+
+ with self.ui_test.execute_dialog_through_action(xTitle, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
+
+ self.assertEqual("3.52", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
+ self.assertEqual("0.3", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+
+
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "UP"}))
+ xChartMain.executeAction("TYPE", mkPropertyValues({"KEYCODE": "LEFT"}))
+
+ with self.ui_test.execute_dialog_through_action(xTitle, "COMMAND", mkPropertyValues({"COMMAND": "TransformDialog"})) as xDialog:
+
+ # Check the position has changed after moving the title using the arrows keys
+ self.assertEqual("3.42", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_X"))['Value'])
+ self.assertEqual("0.2", get_state_as_dict(xDialog.getChild("MTR_FLD_POS_Y"))['Value'])
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartWall.py b/sc/qa/uitest/chart/chartWall.py
new file mode 100644
index 000000000..4ca6d240d
--- /dev/null
+++ b/sc/qa/uitest/chart/chartWall.py
@@ -0,0 +1,170 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit, select_pos
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart Wall dialog
+class chartWall(UITestCase):
+ def test_chart_wall_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf122398.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ xWall = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().Wall
+ self.assertEqual(xWall.LineWidth, 0)
+ self.assertEqual(xWall.LineTransparence, 0)
+ self.assertEqual(hex(xWall.FillColor), '0xe6e6e6')
+ self.assertEqual(xWall.FillTransparence, 0)
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramWall"})) as xDialog:
+ #Click on tab "Borders".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0xe6e6e6')
+ self.assertEqual(xWall.FillTransparence, 0)
+
+ #reopen and verify tab "Borders".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramWall"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0xe6e6e6')
+ self.assertEqual(xWall.FillTransparence, 0)
+
+ #Click on tab "Area"
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ btncolor = xDialog.getChild("btncolor")
+ btncolor.executeAction("CLICK", tuple())
+
+ rCustom = xDialog.getChild("R_custom")
+ gCustom = xDialog.getChild("G_custom")
+ bCustom = xDialog.getChild("B_custom")
+
+ rCustom.executeAction("CLEAR", tuple())
+ rCustom.executeAction("TYPE", mkPropertyValues({"TEXT":"35"}))
+ rCustom.executeAction("UP", tuple())
+ rCustom.executeAction("DOWN", tuple()) #without this save data doesn't works
+ self.assertEqual(get_state_as_dict(rCustom)["Text"], "35")
+ gCustom.executeAction("CLEAR", tuple())
+ gCustom.executeAction("TYPE", mkPropertyValues({"TEXT":"169"}))
+ gCustom.executeAction("UP", tuple())
+ gCustom.executeAction("DOWN", tuple()) #without this save data doesn't works
+ bCustom.executeAction("CLEAR", tuple())
+ bCustom.executeAction("TYPE", mkPropertyValues({"TEXT":"211"}))
+ bCustom.executeAction("UP", tuple())
+ bCustom.executeAction("DOWN", tuple()) #without this save data doesn't works
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0x23a9d3')
+ self.assertEqual(xWall.FillTransparence, 0)
+
+ #reopen and verify tab "Area".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramWall"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ rCustom = xDialog.getChild("R_custom")
+ gCustom = xDialog.getChild("G_custom")
+ bCustom = xDialog.getChild("B_custom")
+
+ self.assertEqual(get_state_as_dict(rCustom)["Text"], "35")
+ self.assertEqual(get_state_as_dict(gCustom)["Text"], "169")
+ self.assertEqual(get_state_as_dict(bCustom)["Text"], "211")
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0x23a9d3')
+ self.assertEqual(xWall.FillTransparence, 0)
+
+ #change tab "Transparency"
+ select_pos(tabcontrol, "2")
+ transparency = xDialog.getChild("RBT_TRANS_LINEAR")
+ transparencyPercent = xDialog.getChild("MTR_TRANSPARENT") #51%
+
+ transparency.executeAction("CLICK", tuple())
+ transparencyPercent.executeAction("UP", tuple())
+
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0x23a9d3')
+ self.assertEqual(xWall.FillTransparence, 51)
+
+ #reopen and verify tab "Transparency"
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramWall"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "2")
+
+ transparency = xDialog.getChild("RBT_TRANS_LINEAR")
+ transparencyPercent = xDialog.getChild("MTR_TRANSPARENT") #51%
+
+ self.assertEqual(get_state_as_dict(transparency)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(transparencyPercent)["Text"], "51%")
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0x23a9d3')
+ self.assertEqual(xWall.FillTransparence, 51)
+
+
+ self.assertEqual(xWall.LineWidth, 100)
+ self.assertEqual(xWall.LineTransparence, 5)
+ self.assertEqual(hex(xWall.FillColor), '0x23a9d3')
+ self.assertEqual(xWall.FillTransparence, 51)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartXAxis.py b/sc/qa/uitest/chart/chartXAxis.py
new file mode 100644
index 000000000..ea1878e48
--- /dev/null
+++ b/sc/qa/uitest/chart/chartXAxis.py
@@ -0,0 +1,242 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+from uitest.uihelper.common import select_by_text, select_pos
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart - X Axis
+class chartXAxis(UITestCase):
+ def test_chart_x_axis_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf122398.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisX"})) as xDialog:
+ #Click on tab "Scale".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ reverseDirection = xDialog.getChild("CBX_REVERSE")
+ logarithmicScale = xDialog.getChild("CBX_LOGARITHM")
+ autoMinimum = xDialog.getChild("CBX_AUTO_MIN")
+ autoMaximum = xDialog.getChild("CBX_AUTO_MAX")
+ majorInterval = xDialog.getChild("CBX_AUTO_STEP_MAIN")
+ minorInterval = xDialog.getChild("CBX_AUTO_STEP_HELP")
+ minimum = xDialog.getChild("EDT_MIN")
+ maximum = xDialog.getChild("EDT_MAX")
+ major = xDialog.getChild("EDT_STEP_MAIN")
+ minor = xDialog.getChild("MT_STEPHELP")
+
+ reverseDirection.executeAction("CLICK", tuple())
+ logarithmicScale.executeAction("CLICK", tuple())
+ autoMinimum.executeAction("CLICK", tuple())
+ autoMaximum.executeAction("CLICK", tuple())
+ majorInterval.executeAction("CLICK", tuple())
+ minorInterval.executeAction("CLICK", tuple())
+
+ minimum.executeAction("DOWN", tuple()) #10.12.2017
+ maximum.executeAction("DOWN", tuple()) #29.04.2018
+ major.executeAction("DOWN", tuple()) #19
+ minor.executeAction("UP", tuple()) #3
+
+ #reopen and verify
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisX"})) as xDialog:
+ #Click on tab "Scale".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ reverseDirection = xDialog.getChild("CBX_REVERSE")
+ logarithmicScale = xDialog.getChild("CBX_LOGARITHM")
+ autoMinimum = xDialog.getChild("CBX_AUTO_MIN")
+ autoMaximum = xDialog.getChild("CBX_AUTO_MAX")
+ majorInterval = xDialog.getChild("CBX_AUTO_STEP_MAIN")
+ minorInterval = xDialog.getChild("CBX_AUTO_STEP_HELP")
+ minimum = xDialog.getChild("EDT_MIN")
+ maximum = xDialog.getChild("EDT_MAX")
+ major = xDialog.getChild("EDT_STEP_MAIN")
+ minor = xDialog.getChild("MT_STEPHELP")
+
+ self.assertEqual(get_state_as_dict(reverseDirection)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(logarithmicScale)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(autoMinimum)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(autoMaximum)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(majorInterval)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(minorInterval)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(minimum)["Text"], "10.12.2017")
+ self.assertEqual(get_state_as_dict(maximum)["Text"], "29.04.2018")
+ self.assertEqual(get_state_as_dict(major)["Text"], "19")
+ self.assertEqual(get_state_as_dict(minor)["Text"], "3")
+
+ #Click on tab "positioning".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ crossAxis = xDialog.getChild("LB_CROSSES_OTHER_AXIS_AT")
+ crossAxisValue = xDialog.getChild("EDT_CROSSES_OTHER_AXIS_AT") #only available when crossAxis = Value
+ placeLabels = xDialog.getChild("LB_PLACE_LABELS")
+ innerMajorTick = xDialog.getChild("CB_TICKS_INNER")
+ outerMajorTick = xDialog.getChild("CB_TICKS_OUTER")
+ innerMinorTick = xDialog.getChild("CB_MINOR_INNER")
+ outerMinorTick = xDialog.getChild("CB_MINOR_OUTER")
+ placeMarks = xDialog.getChild("LB_PLACE_TICKS")
+
+ select_by_text(crossAxis, "Start")
+ select_by_text(placeLabels, "Outside end")
+ innerMajorTick.executeAction("CLICK", tuple())
+ outerMajorTick.executeAction("CLICK", tuple())
+ innerMinorTick.executeAction("CLICK", tuple())
+ outerMinorTick.executeAction("CLICK", tuple())
+ select_by_text(placeMarks, "At axis")
+
+
+ #reopen and verify tab "positioning".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisX"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ crossAxis = xDialog.getChild("LB_CROSSES_OTHER_AXIS_AT")
+ crossAxisValue = xDialog.getChild("EDT_CROSSES_OTHER_AXIS_AT") #only available when crossAxis = Value
+ placeLabels = xDialog.getChild("LB_PLACE_LABELS")
+ innerMajorTick = xDialog.getChild("CB_TICKS_INNER")
+ outerMajorTick = xDialog.getChild("CB_TICKS_OUTER")
+ innerMinorTick = xDialog.getChild("CB_MINOR_INNER")
+ outerMinorTick = xDialog.getChild("CB_MINOR_OUTER")
+ placeMarks = xDialog.getChild("LB_PLACE_TICKS")
+
+ self.assertEqual(get_state_as_dict(crossAxis)["SelectEntryText"], "Start")
+ self.assertEqual(get_state_as_dict(placeLabels)["SelectEntryText"], "Outside end")
+ self.assertEqual(get_state_as_dict(innerMajorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMajorTick)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(innerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(placeMarks)["SelectEntryText"], "At axis")
+ #change tab "positioning".
+ select_by_text(crossAxis, "Value")
+ crossAxisValue.executeAction("UP", tuple()) #1
+
+
+ #reopen and verify tab "positioning".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisX"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ crossAxis = xDialog.getChild("LB_CROSSES_OTHER_AXIS_AT")
+ crossAxisValue = xDialog.getChild("EDT_CROSSES_OTHER_AXIS_AT") #only available when crossAxis = Value
+ placeLabels = xDialog.getChild("LB_PLACE_LABELS")
+ innerMajorTick = xDialog.getChild("CB_TICKS_INNER")
+ outerMajorTick = xDialog.getChild("CB_TICKS_OUTER")
+ innerMinorTick = xDialog.getChild("CB_MINOR_INNER")
+ outerMinorTick = xDialog.getChild("CB_MINOR_OUTER")
+ placeMarks = xDialog.getChild("LB_PLACE_TICKS")
+
+ self.assertEqual(get_state_as_dict(crossAxis)["SelectEntryText"], "Value")
+ self.assertEqual(get_state_as_dict(crossAxisValue)["Text"], "1")
+ self.assertEqual(get_state_as_dict(placeLabels)["SelectEntryText"], "Outside end")
+ self.assertEqual(get_state_as_dict(innerMajorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMajorTick)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(innerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(placeMarks)["SelectEntryText"], "At axis")
+ #change tab "Line".
+ select_pos(tabcontrol, "2")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify tab "Line".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisX"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "2")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+ #change tab "Label"
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "3")
+
+ tile = xDialog.getChild("tile")
+ overlapCB = xDialog.getChild("overlapCB")
+ breakCB = xDialog.getChild("breakCB")
+ stackedCB = xDialog.getChild("stackedCB")
+ textdirLB = xDialog.getChild("textdirLB")
+
+ tile.executeAction("CLICK", tuple())
+ overlapCB.executeAction("CLICK", tuple())
+ breakCB.executeAction("CLICK", tuple())
+ stackedCB.executeAction("CLICK", tuple())
+ select_by_text(textdirLB, "Right-to-left")
+
+
+ #reopen and verify tab "Label".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisX"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "3")
+
+ tile = xDialog.getChild("tile")
+ overlapCB = xDialog.getChild("overlapCB")
+ breakCB = xDialog.getChild("breakCB")
+ stackedCB = xDialog.getChild("stackedCB")
+ textdirLB = xDialog.getChild("textdirLB")
+
+ self.assertEqual(get_state_as_dict(tile)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(overlapCB)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(breakCB)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(stackedCB)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(textdirLB)["SelectEntryText"], "Right-to-left")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/chartYAxis.py b/sc/qa/uitest/chart/chartYAxis.py
new file mode 100644
index 000000000..ba1dbeb75
--- /dev/null
+++ b/sc/qa/uitest/chart/chartYAxis.py
@@ -0,0 +1,243 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit, select_by_text, select_pos
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Chart - Y Axis
+class chartYAxis(UITestCase):
+ def test_chart_y_axis_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf122398.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisY"})) as xDialog:
+ #Click on tab "Scale".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+
+ reverseDirection = xDialog.getChild("CBX_REVERSE")
+ logarithmicScale = xDialog.getChild("CBX_LOGARITHM")
+ autoMinimum = xDialog.getChild("CBX_AUTO_MIN")
+ autoMaximum = xDialog.getChild("CBX_AUTO_MAX")
+ majorInterval = xDialog.getChild("CBX_AUTO_STEP_MAIN")
+ minorInterval = xDialog.getChild("CBX_AUTO_STEP_HELP")
+ minimum = xDialog.getChild("EDT_MIN")
+ maximum = xDialog.getChild("EDT_MAX")
+ major = xDialog.getChild("EDT_STEP_MAIN")
+ minor = xDialog.getChild("MT_STEPHELP")
+
+ reverseDirection.executeAction("CLICK", tuple())
+ logarithmicScale.executeAction("CLICK", tuple())
+ autoMinimum.executeAction("CLICK", tuple())
+ autoMaximum.executeAction("CLICK", tuple())
+ majorInterval.executeAction("CLICK", tuple())
+ minorInterval.executeAction("CLICK", tuple())
+
+ minimum.executeAction("UP", tuple()) #1
+ maximum.executeAction("DOWN", tuple()) #17
+ major.executeAction("DOWN", tuple()) #1
+ minor.executeAction("UP", tuple()) #3
+
+ #reopen and verify
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisY"})) as xDialog:
+ #Click on tab "Scale".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ reverseDirection = xDialog.getChild("CBX_REVERSE")
+ logarithmicScale = xDialog.getChild("CBX_LOGARITHM")
+ autoMinimum = xDialog.getChild("CBX_AUTO_MIN")
+ autoMaximum = xDialog.getChild("CBX_AUTO_MAX")
+ majorInterval = xDialog.getChild("CBX_AUTO_STEP_MAIN")
+ minorInterval = xDialog.getChild("CBX_AUTO_STEP_HELP")
+ minimum = xDialog.getChild("EDT_MIN")
+ maximum = xDialog.getChild("EDT_MAX")
+ major = xDialog.getChild("EDT_STEP_MAIN")
+ minor = xDialog.getChild("MT_STEPHELP")
+
+ self.assertEqual(get_state_as_dict(reverseDirection)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(logarithmicScale)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(autoMinimum)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(autoMaximum)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(majorInterval)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(minorInterval)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(minimum)["Text"], "1")
+ self.assertEqual(get_state_as_dict(maximum)["Text"], "17")
+ self.assertEqual(get_state_as_dict(major)["Text"], "1")
+ self.assertEqual(get_state_as_dict(minor)["Text"], "3")
+
+ #Click on tab "positioning".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ crossAxis = xDialog.getChild("LB_CROSSES_OTHER_AXIS_AT")
+ crossAxisValue = xDialog.getChild("EDT_CROSSES_OTHER_AXIS_AT") #only available when crossAxis = Value
+ placeLabels = xDialog.getChild("LB_PLACE_LABELS")
+ innerMajorTick = xDialog.getChild("CB_TICKS_INNER")
+ outerMajorTick = xDialog.getChild("CB_TICKS_OUTER")
+ innerMinorTick = xDialog.getChild("CB_MINOR_INNER")
+ outerMinorTick = xDialog.getChild("CB_MINOR_OUTER")
+ placeMarks = xDialog.getChild("LB_PLACE_TICKS")
+
+ select_by_text(crossAxis, "Start")
+ select_by_text(placeLabels, "Outside end")
+ innerMajorTick.executeAction("CLICK", tuple())
+ outerMajorTick.executeAction("CLICK", tuple())
+ innerMinorTick.executeAction("CLICK", tuple())
+ outerMinorTick.executeAction("CLICK", tuple())
+ select_by_text(placeMarks, "At axis")
+
+
+ #reopen and verify tab "positioning".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisY"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ crossAxis = xDialog.getChild("LB_CROSSES_OTHER_AXIS_AT")
+ crossAxisValue = xDialog.getChild("EDT_CROSSES_OTHER_AXIS_AT") #only available when crossAxis = Value
+ placeLabels = xDialog.getChild("LB_PLACE_LABELS")
+ innerMajorTick = xDialog.getChild("CB_TICKS_INNER")
+ outerMajorTick = xDialog.getChild("CB_TICKS_OUTER")
+ innerMinorTick = xDialog.getChild("CB_MINOR_INNER")
+ outerMinorTick = xDialog.getChild("CB_MINOR_OUTER")
+ placeMarks = xDialog.getChild("LB_PLACE_TICKS")
+
+ self.assertEqual(get_state_as_dict(crossAxis)["SelectEntryText"], "Start")
+ self.assertEqual(get_state_as_dict(placeLabels)["SelectEntryText"], "Outside end")
+ self.assertEqual(get_state_as_dict(innerMajorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMajorTick)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(innerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(placeMarks)["SelectEntryText"], "At axis")
+ #change tab "positioning".
+ select_by_text(crossAxis, "Value")
+ crossAxisValue.executeAction("CLEAR", tuple())
+ crossAxisValue.executeAction("TYPE", mkPropertyValues({"TEXT":"19.01.2018"})) #19.01.2018
+
+
+ #reopen and verify tab "positioning".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisY"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+
+ crossAxis = xDialog.getChild("LB_CROSSES_OTHER_AXIS_AT")
+ crossAxisValue = xDialog.getChild("EDT_CROSSES_OTHER_AXIS_AT") #only available when crossAxis = Value
+ placeLabels = xDialog.getChild("LB_PLACE_LABELS")
+ innerMajorTick = xDialog.getChild("CB_TICKS_INNER")
+ outerMajorTick = xDialog.getChild("CB_TICKS_OUTER")
+ innerMinorTick = xDialog.getChild("CB_MINOR_INNER")
+ outerMinorTick = xDialog.getChild("CB_MINOR_OUTER")
+ placeMarks = xDialog.getChild("LB_PLACE_TICKS")
+
+ self.assertEqual(get_state_as_dict(crossAxis)["SelectEntryText"], "Value")
+ #self.assertEqual(get_state_as_dict(crossAxisValue)["Text"], "19.01.2018") #bug 123520
+ self.assertEqual(get_state_as_dict(placeLabels)["SelectEntryText"], "Outside end")
+ self.assertEqual(get_state_as_dict(innerMajorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMajorTick)["Selected"], "false")
+ self.assertEqual(get_state_as_dict(innerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(outerMinorTick)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(placeMarks)["SelectEntryText"], "At axis")
+ #change tab "Line".
+ select_pos(tabcontrol, "2")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ transparency.executeAction("UP", tuple())
+
+
+ #reopen and verify tab "Line".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisY"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "2")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ transparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(transparency)["Text"], "5%")
+
+ #change tab "Label"
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "3")
+
+ tile = xDialog.getChild("tile")
+ overlapCB = xDialog.getChild("overlapCB")
+ breakCB = xDialog.getChild("breakCB")
+ stackedCB = xDialog.getChild("stackedCB")
+ textdirLB = xDialog.getChild("textdirLB")
+
+ tile.executeAction("CLICK", tuple())
+ overlapCB.executeAction("CLICK", tuple())
+ breakCB.executeAction("CLICK", tuple())
+ stackedCB.executeAction("CLICK", tuple())
+ select_by_text(textdirLB, "Right-to-left")
+
+
+ #reopen and verify tab "Label".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DiagramAxisY"})) as xDialog:
+
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "3")
+
+ tile = xDialog.getChild("tile")
+ overlapCB = xDialog.getChild("overlapCB")
+ breakCB = xDialog.getChild("breakCB")
+ stackedCB = xDialog.getChild("stackedCB")
+ textdirLB = xDialog.getChild("textdirLB")
+
+ self.assertEqual(get_state_as_dict(tile)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(overlapCB)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(breakCB)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(stackedCB)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(textdirLB)["SelectEntryText"], "Right-to-left")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/copyPaste.py b/sc/qa/uitest/chart/copyPaste.py
new file mode 100644
index 000000000..fe58d5991
--- /dev/null
+++ b/sc/qa/uitest/chart/copyPaste.py
@@ -0,0 +1,70 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+class CopyPaste(UITestCase):
+
+ def test_copy_paste_chart_with_dot_in_sheet_name(self):
+ with self.ui_test.load_file(get_url_for_data_file("chartWithDotInSheetName.ods")) as calc_doc:
+
+ xChart = calc_doc.Sheets[0].Charts[0]
+ xDataSeries = xChart.getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+
+ self.assertEqual(4, len(xDataSeries))
+
+ xOldSheetRanges = []
+ for i in range(4):
+ xRow = []
+ xDS = xDataSeries[i].DataSequences
+
+ self.assertEqual(1, len(xDS))
+ xRow.append(xDS[0].Values.SourceRangeRepresentation)
+ xOldSheetRanges.append(xRow)
+
+ self.xUITest.executeCommand(".uno:SelectAll")
+
+ self.xUITest.executeCommand(".uno:Copy")
+
+ with self.ui_test.load_empty_file("calc") as calc_document:
+
+ # Rename the sheet to match the same name as the first document
+ with self.ui_test.execute_dialog_through_command(".uno:RenameTable") as xDialog:
+ xname_entry = xDialog.getChild("name_entry")
+
+ xname_entry.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
+ xname_entry.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
+ xname_entry.executeAction("TYPE", mkPropertyValues({"TEXT":"Sheet.1"}))
+
+ self.xUITest.executeCommand(".uno:Paste")
+
+ xChart = calc_document.Sheets[0].Charts[0]
+ xDataSeries = xChart.getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+
+ self.assertEqual(4, len(xDataSeries))
+
+ xNewSheetRanges = []
+ for i in range(4):
+ xRow = []
+ xDS = xDataSeries[i].DataSequences
+
+ self.assertEqual(1, len(xDS))
+ xRow.append(xDS[0].Values.SourceRangeRepresentation)
+ xNewSheetRanges.append(xRow)
+
+ # Without the fix in place, this test would have failed with
+ # ["$'Sheet.1'.$B$12:$B$18"]
+ # ["'file:///home/<user>/Documents/Sheet.1'#$Sheet1.$B$12:$B$18"]
+ self.assertEqual(xOldSheetRanges, xNewSheetRanges)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/formatDataSeries.py b/sc/qa/uitest/chart/formatDataSeries.py
new file mode 100644
index 000000000..f21c3076f
--- /dev/null
+++ b/sc/qa/uitest/chart/formatDataSeries.py
@@ -0,0 +1,96 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit, select_pos
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# test Chart - Data series dialog /core/chart2/uiconfig/ui/tp_SeriesToAxis.ui
+class chartFormatDataSeries(UITestCase):
+ def test_chart_format_data_series_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf93506.ods")):
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataSeries"})) as xDialog:
+ #Click on tab "Options".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ secondaryYAxis = xDialog.getChild("RBT_OPT_AXIS_2")
+ leaveGap = xDialog.getChild("RB_DONT_PAINT")
+ includeHiddenCells = xDialog.getChild("CB_INCLUDE_HIDDEN_CELLS")
+ hideLegend = xDialog.getChild("CB_LEGEND_ENTRY_HIDDEN")
+
+ secondaryYAxis.executeAction("CLICK", tuple())
+ leaveGap.executeAction("CLICK", tuple())
+ includeHiddenCells.executeAction("CLICK", tuple())
+ hideLegend.executeAction("CLICK", tuple())
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+
+ xWidth = xDialog.getChild("MF_SYMBOL_WIDTH")
+ xHeight = xDialog.getChild("MF_SYMBOL_HEIGHT")
+ xKeep = xDialog.getChild("CB_SYMBOL_RATIO")
+
+ xKeep.executeAction("CLICK", tuple())
+ xWidth.executeAction("UP", tuple())
+ xWidth.executeAction("UP", tuple())
+ xHeight.executeAction("UP", tuple())
+
+
+ #reopen and verify
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataSeries"})) as xDialog:
+ #Click on tab "Options".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ secondaryYAxis = xDialog.getChild("RBT_OPT_AXIS_2")
+ leaveGap = xDialog.getChild("RB_DONT_PAINT")
+ includeHiddenCells = xDialog.getChild("CB_INCLUDE_HIDDEN_CELLS")
+ hideLegend = xDialog.getChild("CB_LEGEND_ENTRY_HIDDEN")
+
+ self.assertEqual(get_state_as_dict(secondaryYAxis)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(leaveGap)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(includeHiddenCells)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(hideLegend)["Selected"], "true")
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+
+ xWidth = xDialog.getChild("MF_SYMBOL_WIDTH")
+ xHeight = xDialog.getChild("MF_SYMBOL_HEIGHT")
+ xKeep = xDialog.getChild("CB_SYMBOL_RATIO")
+
+ self.assertEqual(get_state_as_dict(xKeep)["Selected"], "true") #checked as default even after reopen
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.35 cm")
+ self.assertEqual(get_state_as_dict(xHeight)["Text"], "0.30 cm")
+ #click up, should up both values, because Keep ratio is checked
+ xWidth.executeAction("UP", tuple())
+ xHeight.executeAction("UP", tuple())
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.41 cm")
+ self.assertEqual(get_state_as_dict(xHeight)["Text"], "0.35 cm")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf122011.py b/sc/qa/uitest/chart/tdf122011.py
new file mode 100644
index 000000000..478c44a3a
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf122011.py
@@ -0,0 +1,51 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.calc import enter_text_to_cell
+from uitest.uihelper.common import get_url_for_data_file
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+class tdf122011(UITestCase):
+
+ def test_tdf122011(self):
+
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ # FIXME: tdf#148166
+ enter_text_to_cell(gridwin, "A2", "4")
+
+ # use an existing document
+ xReference = "'" + get_url_for_data_file("tdf119954.ods") + "'#$Sheet1.$A$1"
+
+ with self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart", close_button="finish") as xChartDlg:
+ xNextBtn = xChartDlg.getChild("next")
+ xNextBtn.executeAction("CLICK", tuple())
+
+ xRange = xChartDlg.getChild("ED_RANGE")
+ xRange.executeAction("TYPE", mkPropertyValues({"KEYCODE":"CTRL+A"}))
+ xRange.executeAction("TYPE", mkPropertyValues({"KEYCODE":"BACKSPACE"}))
+ xRange.executeAction("TYPE", mkPropertyValues({"TEXT": xReference}))
+
+ # Without the fix in place, this test would have gotten stack here because the dialog is not closed
+ # as the reference to an external file is incorrect
+
+ xChart = document.Sheets[0].Charts[0]
+ xDataSeries = xChart.getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+
+ self.assertEqual(1, len(xDataSeries))
+
+ xDS = xDataSeries[0].DataSequences
+
+ self.assertEqual(1, len(xDS))
+ self.assertEqual(xReference, xDS[0].Values.SourceRangeRepresentation)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf43175.py b/sc/qa/uitest/chart/tdf43175.py
new file mode 100644
index 000000000..9851515da
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf43175.py
@@ -0,0 +1,43 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_url_for_data_file
+
+class Tdf43175(UITestCase):
+
+ def test_tdf43175(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf43175.ods")) as document:
+
+ self.xUITest.executeCommand(".uno:TableSelectAll")
+
+ with self.ui_test.execute_dialog_through_command(".uno:Move") as xDialog:
+ insertBefore = xDialog.getChild("insertBefore")
+
+ # Select - move to end position -
+ xTreeEntry = insertBefore.getChild('2')
+ xTreeEntry.executeAction("SELECT", tuple())
+
+
+ aSheetNames = ['Blad1', 'Blad2', 'Blad1_2', 'Blad2_2']
+
+ self.assertEqual(4, document.Sheets.getCount())
+ for i in range(4):
+ self.assertEqual(aSheetNames[i], document.Sheets[i].Name)
+
+ xChart = document.Sheets[i].Charts[0]
+ xDataSeries = xChart.getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertEqual(1, len(xDataSeries))
+
+ # Without the fix in place, this test would have failed with
+ # AssertionError: '$Blad1_2.$A$1:$A$5' != '$Blad1.$A$1:$A$5'
+ aExpectedRangeName = '$' + aSheetNames[i] + '.$A$1:$A$5'
+ self.assertEqual(aExpectedRangeName, xDataSeries[0].DataSequences[0].Values.SourceRangeRepresentation)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf46885.py b/sc/qa/uitest/chart/tdf46885.py
new file mode 100644
index 000000000..6c3c0d3dc
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf46885.py
@@ -0,0 +1,46 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.calc import enter_text_to_cell
+
+from libreoffice.calc.document import get_cell_by_position
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Bug 46885 - LibO crash when creating chart with no cells selected
+class tdf46885(UITestCase):
+ def test_tdf46885_crash_chart_no_cell_selected_nextButton(self):
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+ enter_text_to_cell(gridwin, "A10", "col1")
+ #When you start a new chart and have one empty cell selected LibO will crash when you select the Next>> button.
+ with self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart", close_button="finish") as xChartDlg:
+ xNextBtn = xChartDlg.getChild("next")
+ xNextBtn.executeAction("CLICK", tuple())
+
+ #verify, we didn't crash
+ self.assertEqual(get_cell_by_position(document, 0, 0, 9).getString(), "col1")
+
+
+ def test_tdf46885_crash_chart_multiple_empty_cells_selected(self):
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+ enter_text_to_cell(gridwin, "A10", "col1")
+ #If you select multiple empty cells and then start a new chart LibO will crash immediately.
+ gridwin.executeAction("SELECT", mkPropertyValues({"RANGE": "A1:C4"}))
+ with self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart", close_button="finish") as xChartDlg:
+ xNextBtn = xChartDlg.getChild("next")
+ xNextBtn.executeAction("CLICK", tuple())
+
+ #verify, we didn't crash
+ self.assertEqual(get_cell_by_position(document, 0, 0, 9).getString(), "col1")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf62057.py b/sc/qa/uitest/chart/tdf62057.py
new file mode 100644
index 000000000..b11dd1c5d
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf62057.py
@@ -0,0 +1,56 @@
+# -*- 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.framework import UITestCase
+from libreoffice.calc.document import get_cell_by_position
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.uihelper.common import get_url_for_data_file
+
+class tdf62057(UITestCase):
+
+ def test_tdf62057(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf62057.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+
+ xDataMatrix = []
+ for column in range(1, 3):
+ xColumn = []
+ for row in range(0, 6):
+ xColumn.append(round(get_cell_by_position(calc_doc, 0, column, row).getValue(), 5))
+ xDataMatrix.append(xColumn)
+
+ xRowDescriptions = []
+ for row in range(0, 6):
+ xRowDescriptions.append(get_cell_by_position(calc_doc, 0, 0, row).getString())
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+
+ self.xUITest.executeCommand(".uno:Copy")
+
+ with self.ui_test.load_empty_file("calc") as calc_document:
+
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ self.xUITest.executeCommand(".uno:Paste")
+
+ xData = calc_document.Sheets[0].Charts[0].getEmbeddedObject().Data
+
+ xNewDataMatrix = []
+ xNewDataMatrix.append([round(item[0], 5) for item in xData.Data])
+ xNewDataMatrix.append([round(item[1], 5) for item in xData.Data])
+
+ # Without the fix in place, this test would have failed with
+ # AssertionError: Lists differ: ['10m', '11v', '12m', '13m', '14m', '15v'] != ['55.3796', '35.0989']
+ self.assertEqual(xRowDescriptions, list(xData.RowDescriptions))
+
+ self.assertEqual(xDataMatrix, xNewDataMatrix)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf62349.py b/sc/qa/uitest/chart/tdf62349.py
new file mode 100644
index 000000000..f6cbc0261
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf62349.py
@@ -0,0 +1,38 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_url_for_data_file
+
+from libreoffice.calc.document import get_cell_by_position
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Bug 62349 - Calc crashes when a newly created chart copied to clipboard
+class tdf62349(UITestCase):
+ def test_tdf62349_crash_copy_chart_clipboard(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf62349.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+ #3: select all data cells C5:H9
+ gridwin.executeAction("SELECT", mkPropertyValues({"RANGE": "C5:H9"}))
+ # 4: create a chart with insert/chart menu
+ with self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart", close_button="finish"):
+ pass
+
+ # 5: (single) click to an empty cell to finalize the chart
+ gridwin.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""}))
+ # 6: (single) click back inside the chart to select it
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ # 7: press CTRL-C
+ self.xUITest.executeCommand(".uno:Copy")
+ self.xUITest.executeCommand(".uno:Paste")
+ #check we didn't crash
+ self.assertEqual(get_cell_by_position(calc_doc, 0, 2, 5).getString(), "group1")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf64086.py b/sc/qa/uitest/chart/tdf64086.py
new file mode 100644
index 000000000..463b7ae78
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf64086.py
@@ -0,0 +1,33 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_url_for_data_file
+
+class NamedRangesChart(UITestCase):
+
+ def test_chart_series_ranges_with_named_ranges_as_datasource(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf64086.xlsx")) as calc_doc:
+
+ xChart = calc_doc.Sheets[0].Charts[0]
+ xDataSeries = xChart.getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+
+ self.assertEqual(3, len(xDataSeries))
+
+ test_range1 = calc_doc.Sheets[0].NamedRanges.getByName("Local_sheet_name")
+ self.assertEqual(xDataSeries[0].DataSequences[0].Values.SourceRangeRepresentation, test_range1.Name)
+
+ test_range2 = calc_doc.NamedRanges.getByName("global_name")
+ self.assertEqual(xDataSeries[1].DataSequences[0].Values.SourceRangeRepresentation, test_range2.Name)
+
+ test_range3 = calc_doc.Sheets[1].NamedRanges.getByName("other_sheet_name")
+ test_range3_Name = calc_doc.Sheets[1].Name + '.' + test_range3.Name
+ self.assertEqual(xDataSeries[2].DataSequences[0].Values.SourceRangeRepresentation, test_range3_Name)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf93506_trendline.py b/sc/qa/uitest/chart/tdf93506_trendline.py
new file mode 100644
index 000000000..2c4ba7206
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf93506_trendline.py
@@ -0,0 +1,433 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import change_measurement_unit, select_by_text, select_pos
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Bug 93506 - Crash when selecting chart containing a trend line
+# test all dialog items - trend Line dialog
+class tdf93506(UITestCase):
+ def test_tdf93506_chart_trendline_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf93506.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ change_measurement_unit(self, "Centimeter")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ logarithmic.executeAction("CLICK", tuple())
+ xentryname.executeAction("TYPE", mkPropertyValues({"TEXT":"Name"}))
+ extrapolateForward.executeAction("UP", tuple())
+ extrapolateBackward.executeAction("UP", tuple())
+ showEquation.executeAction("CLICK", tuple())
+ showCorrelationCoefficient.executeAction("CLICK", tuple())
+ xVarname.executeAction("CLEAR", tuple())
+ xVarname.executeAction("TYPE", mkPropertyValues({"TEXT":"a"}))
+ yVarName.executeAction("CLEAR", tuple())
+ yVarName.executeAction("TYPE", mkPropertyValues({"TEXT":"f(a)"}))
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ xWidth.executeAction("UP", tuple())
+ xTransparent.executeAction("UP", tuple())
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #reopen and verify
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ self.assertEqual(get_state_as_dict(logarithmic)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(xentryname)["Text"], "Name")
+ self.assertEqual(get_state_as_dict(extrapolateForward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(extrapolateBackward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showEquation)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(showCorrelationCoefficient)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(xVarname)["Text"], "a")
+ self.assertEqual(get_state_as_dict(yVarName)["Text"], "f(a)")
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #Now change regression Type to Exponential
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ exponential.executeAction("CLICK", tuple()) #set exponential
+ #set Force intercept
+ setIntercept.executeAction("CLICK", tuple())
+ interceptValue.executeAction("UP", tuple())
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #reopen and verify Exponential
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ self.assertEqual(get_state_as_dict(exponential)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(xentryname)["Text"], "Name")
+ self.assertEqual(get_state_as_dict(extrapolateForward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(extrapolateBackward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showEquation)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(setIntercept)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(interceptValue)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showCorrelationCoefficient)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(xVarname)["Text"], "a")
+ self.assertEqual(get_state_as_dict(yVarName)["Text"], "f(a)")
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #Now change regression Type to Power
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ power = xDialog.getChild("exponential") #type regression power
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ power.executeAction("CLICK", tuple()) #set power
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #reopen and verify Power
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ power = xDialog.getChild("exponential") #type regression power
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ self.assertEqual(get_state_as_dict(power)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(xentryname)["Text"], "Name")
+ self.assertEqual(get_state_as_dict(extrapolateForward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(extrapolateBackward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showEquation)["Selected"], "true")
+ # self.assertEqual(get_state_as_dict(setIntercept)["Selected"], "true")
+ # self.assertEqual(get_state_as_dict(interceptValue)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showCorrelationCoefficient)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(xVarname)["Text"], "a")
+ self.assertEqual(get_state_as_dict(yVarName)["Text"], "f(a)")
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #Now change regression Type to Polynomial
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ power = xDialog.getChild("exponential") #type regression power
+ polynomial = xDialog.getChild("polynomial") #type regression polynomial
+ degree = xDialog.getChild("degree")
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ polynomial.executeAction("CLICK", tuple()) #set polynomial
+ degree.executeAction("UP", tuple())
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #reopen and verify Polynomial
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ power = xDialog.getChild("exponential") #type regression power
+ polynomial = xDialog.getChild("polynomial") #type regression polynomial
+ degree = xDialog.getChild("degree")
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ self.assertEqual(get_state_as_dict(polynomial)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(degree)["Text"], "3")
+ self.assertEqual(get_state_as_dict(xentryname)["Text"], "Name")
+ self.assertEqual(get_state_as_dict(extrapolateForward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(extrapolateBackward)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showEquation)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(setIntercept)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(interceptValue)["Text"], "1")
+ self.assertEqual(get_state_as_dict(showCorrelationCoefficient)["Selected"], "true")
+ self.assertEqual(get_state_as_dict(xVarname)["Text"], "a")
+ self.assertEqual(get_state_as_dict(yVarName)["Text"], "f(a)")
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #Now change regression Type to Moving average
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ power = xDialog.getChild("exponential") #type regression power
+ movingAverage = xDialog.getChild("movingAverage") #type regression Moving average
+ movingAverageType = xDialog.getChild("combo_moving_type") #type regression Moving average type
+ period = xDialog.getChild("period")
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ movingAverage.executeAction("CLICK", tuple()) #set polynomial
+ select_by_text(movingAverageType, "Averaged Abscissa")
+ period.executeAction("UP", tuple())
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+ #reopen and verify Moving average
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatTrendline"})) as xDialog:
+ #Click on tab "Type".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "0")
+
+ logarithmic = xDialog.getChild("logarithmic") #type regression logarithmic
+ exponential = xDialog.getChild("exponential") #type regression exponential
+ power = xDialog.getChild("exponential") #type regression power
+ polynomial = xDialog.getChild("polynomial") #type regression polynomial
+ movingAverage = xDialog.getChild("movingAverage") #type regression Moving average
+ movingAverageType = xDialog.getChild("combo_moving_type") #type regression Moving average type
+ degree = xDialog.getChild("degree")
+ period = xDialog.getChild("period")
+ xentryname = xDialog.getChild("entry_name") #add name
+ extrapolateForward = xDialog.getChild("extrapolateForward")
+ extrapolateBackward = xDialog.getChild("extrapolateBackward")
+ setIntercept = xDialog.getChild("setIntercept")
+ interceptValue = xDialog.getChild("interceptValue")
+ showEquation = xDialog.getChild("showEquation")
+ showCorrelationCoefficient = xDialog.getChild("showCorrelationCoefficient")
+ xVarname = xDialog.getChild("entry_Xname")
+ yVarName = xDialog.getChild("entry_Yname")
+
+ self.assertEqual(get_state_as_dict(movingAverage)["Checked"], "true")
+ self.assertEqual(get_state_as_dict(movingAverageType)["SelectEntryText"], "Averaged Abscissa")
+ self.assertEqual(get_state_as_dict(period)["Text"], "3")
+ self.assertEqual(get_state_as_dict(xentryname)["Text"], "Name")
+
+ #Click on tab "Line".
+ select_pos(tabcontrol, "1")
+ xWidth = xDialog.getChild("MTR_FLD_LINE_WIDTH")
+ xTransparent = xDialog.getChild("MTR_LINE_TRANSPARENT")
+
+ self.assertEqual(get_state_as_dict(xWidth)["Text"], "0.10 cm")
+ self.assertEqual(get_state_as_dict(xTransparent)["Text"], "5%")
+
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf96432.py b/sc/qa/uitest/chart/tdf96432.py
new file mode 100644
index 000000000..cb4ed86e6
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf96432.py
@@ -0,0 +1,71 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file
+from uitest.uihelper.common import select_pos
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+#Bug 96432 - FORMATTING: Crash when transparency is applied to an error bar
+
+class tdf96432(UITestCase):
+ def test_tdf96432_chart_crash_transparency_error_bar_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf96432.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ xDataSeries = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertEqual(0, xDataSeries[0].ErrorBarY.LineTransparence)
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ #Right-click on the chart; from the pop-up menu select "Format Y bars
+ # The program presents dialog "Format Y bars", tab "Line".
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatYErrorBars"})) as xDialog:
+ #Click on tab "Line".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+ #Type a non-zero integer into the "Transparency:" Edit Field, or use the up arrow to select one
+ xTransparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+ xTransparency.executeAction("UP", tuple())
+
+ #verify - we didn't crash
+ gridwin.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""}))
+
+ xDataSeries = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertEqual(5, xDataSeries[0].ErrorBarY.LineTransparence)
+
+ #reopen and try again
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ #Right-click on the chart; from the pop-up menu select "Format Y bars
+ # The program presents dialog "Format Y bars", tab "Line".
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatYErrorBars"})) as xDialog:
+ #Click on tab "Line".
+ tabcontrol = xDialog.getChild("tabcontrol")
+ select_pos(tabcontrol, "1")
+ #Type a non-zero integer into the "Transparency:" Edit Field, or use the up arrow to select one
+ xTransparency = xDialog.getChild("MTR_LINE_TRANSPARENT")
+ self.assertEqual(get_state_as_dict(xTransparency)["Text"][0], "5")
+ xTransparency.executeAction("UP", tuple())
+
+ #verify - we didn't crash
+ gridwin.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""}))
+
+ xDataSeries = calc_doc.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
+ self.assertEqual(10, xDataSeries[0].ErrorBarY.LineTransparence)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf98690.py b/sc/qa/uitest/chart/tdf98690.py
new file mode 100644
index 000000000..f772c4e6d
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf98690.py
@@ -0,0 +1,42 @@
+# -*- 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.framework import UITestCase
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.uihelper.common import get_url_for_data_file
+
+class tdf98690(UITestCase):
+
+ def test_tdf98690(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf98690.xlsx")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Chart 2"}))
+
+ self.xUITest.executeCommand(".uno:Copy")
+
+ with self.ui_test.load_empty_file("calc") as calc_document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+
+ self.xUITest.executeCommand(".uno:Paste")
+
+ xData = calc_document.Sheets[0].Charts[0].getEmbeddedObject().Data
+
+ aExpectedRowDescriptions = tuple(str(i) for i in range(1, 14))
+ aExpectedColumnDescriptions = ('Column D Column D', 'cc_girder2', 'Column S Column S',
+ 'Column S Column S', 'Column D Column D', 'clexrfdon', 'Column S Column S',
+ 'Column S Column S', 'Column D', 'clexrfdoff', 'Column S Column S', 'Column S Column S')
+
+ # Without the fix in place, this test would have failed here,
+ # since the pasted chart wouldn't have had any data
+ self.assertEqual(aExpectedRowDescriptions, xData.RowDescriptions)
+ self.assertEqual(aExpectedColumnDescriptions, xData.ColumnDescriptions)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/chart/tdf99069.py b/sc/qa/uitest/chart/tdf99069.py
new file mode 100644
index 000000000..6af886944
--- /dev/null
+++ b/sc/qa/uitest/chart/tdf99069.py
@@ -0,0 +1,65 @@
+# -*- 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.framework import UITestCase
+from uitest.uihelper.common import get_url_for_data_file
+from uitest.uihelper.common import select_pos
+
+from libreoffice.calc.document import get_cell_by_position
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+
+# Bug 99069 - assertion "SolarMutex not locked" from <Cancel> Data Ranges dialog
+class tdf99069(UITestCase):
+ def test_tdf99069_chart_cancel_data_ranges_dialog(self):
+ with self.ui_test.load_file(get_url_for_data_file("tdf99069.ods")) as calc_doc:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ gridwin = xCalcDoc.getChild("grid_window")
+ #(1) Download and open example.ods attached to tdf#97266 with cell B1 active.
+ #(2) In tool bar, click the chart icon. Program presents Chart Wizard.
+ with self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart", close_button="finish"):
+ # the chart shows a border with handles on each side and at each corner.
+ pass
+
+ for _ in range(0,5):
+ #(4) Click outside the chart, for example in cell C23. The borders
+ #disappear from the chart and the program restores the menubar to
+ #the window. (Yes, this step is necessary to the crash.)
+ gridwin.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""}))
+ gridwin.executeAction("SELECT", mkPropertyValues({"CELL": "C23"}))
+ #(5) Double-click on the chart. The program shows a border around the
+ # chart. (It may be necessary to do this a second time before the
+ # pop-up menu will offer "Data Ranges...".
+ gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
+ gridwin.executeAction("ACTIVATE", tuple())
+ xChartMainTop = self.xUITest.getTopFocusWindow()
+ xChartMain = xChartMainTop.getChild("chart_window")
+
+ #(6) Right-click on the chart; from the pop-up menu select "Data
+ # Ranges...". The program presents dialog "Data Ranges", tab "Data Range".
+ xSeriesObj = xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")
+ with self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "DataRanges"}), close_button="cancel") as xDialog:
+
+ #(7) Click on tab "Data Series". (Actually, tab "Data Range" crashes,
+ # too. This step is just a remnant of what I was doing when I
+ # stumbled over the bug.)
+ notebook = xDialog.getChild("tabcontrol")
+ select_pos(notebook, "0")
+ select_pos(notebook, "1")
+
+ #(8) Click <Cancel>. In the versions that I deemed bad while
+ # bibisecting, the program crashed here five times out of seven.
+ # The other two attempts, both on daily bibisect version 2016-02-18,
+ # crashed after I closed the Data Ranges dialog an additional three
+ # times, one of those times using by typing <Esc>.
+
+ #verify - we didn't crash
+ gridwin.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""}))
+ self.assertEqual(get_cell_by_position(calc_doc, 0, 0, 0).getValue(), 0.529084)
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab: