1#
2# This Source Code Form is subject to the terms of the Mozilla Public
3# License, v. 2.0. If a copy of the MPL was not distributed with this
4# file, You can obtain one at http://mozilla.org/MPL/2.0/.
5#
6
7from uitest.framework import UITestCase
8from uitest.uihelper.common import select_pos, get_state_as_dict
9from com.sun.star.uno import RuntimeException
10from com.sun.star.awt.GradientStyle import LINEAR
11from com.sun.star.drawing.HatchStyle import SINGLE
12from com.sun.star.drawing.BitmapMode import REPEAT
13from com.sun.star.drawing.RectanglePoint import MIDDLE_MIDDLE
14
15from libreoffice.uno.propertyvalue import mkPropertyValues
16
17class WriterPageDialog(UITestCase):
18
19    def launch_dialog_and_select_tab(self, tab):
20        self.ui_test.execute_dialog_through_command(".uno:PageDialog")
21
22        xDialog = self.xUITest.getTopFocusWindow()
23        tabcontrol = xDialog.getChild("tabcontrol")
24        select_pos(tabcontrol, str(tab))
25
26        return xDialog
27
28    def click_button(self, dialog, button):
29        xButton = dialog.getChild(button)
30        xButton.executeAction("CLICK", tuple())
31
32    def check_default_area(self, btn):
33        document = self.ui_test.get_component()
34        if btn == 'btnnone':
35            self.assertEqual(
36                document.StyleFamilies.PageStyles.Standard.BackColor, -1)
37        elif btn == 'btncolor':
38            self.assertEqual(
39                document.StyleFamilies.PageStyles.Standard.BackColor, 7512015)
40            self.assertEqual(
41                document.StyleFamilies.PageStyles.Standard.FillColor, 7512015)
42            self.assertEqual(
43                document.StyleFamilies.PageStyles.Standard.FillColor, 7512015)
44        elif btn == 'btngradient':
45            self.assertEqual(
46                document.StyleFamilies.PageStyles.Standard.FillGradient.Style, LINEAR)
47            self.assertEqual(
48                document.StyleFamilies.PageStyles.Standard.FillGradient.StartColor, 14543051)
49            self.assertEqual(
50                document.StyleFamilies.PageStyles.Standard.FillGradient.Angle, 300)
51            self.assertEqual(
52                document.StyleFamilies.PageStyles.Standard.FillGradient.Border, 0)
53            self.assertEqual(
54                document.StyleFamilies.PageStyles.Standard.FillGradient.XOffset, 0)
55            self.assertEqual(
56                document.StyleFamilies.PageStyles.Standard.FillGradient.YOffset, 0)
57            self.assertEqual(
58                document.StyleFamilies.PageStyles.Standard.FillGradient.StartIntensity, 100)
59            self.assertEqual(
60                document.StyleFamilies.PageStyles.Standard.FillGradient.EndIntensity, 100)
61            self.assertEqual(
62                document.StyleFamilies.PageStyles.Standard.FillGradientName, 'Pastel Bouquet')
63        elif btn == 'btnhatch':
64            self.assertEqual(
65                document.StyleFamilies.PageStyles.Standard.FillHatch.Style, SINGLE )
66            self.assertEqual(
67                document.StyleFamilies.PageStyles.Standard.FillHatch.Color, 0)
68            self.assertEqual(
69                document.StyleFamilies.PageStyles.Standard.FillHatch.Distance, 102)
70            self.assertEqual(
71                document.StyleFamilies.PageStyles.Standard.FillHatch.Angle, 0)
72            self.assertEqual(
73                document.StyleFamilies.PageStyles.Standard.FillHatchName, 'Black 0 Degrees')
74        elif btn == 'btnbitmap':
75            self.assertEqual(
76                document.StyleFamilies.PageStyles.Standard.FillBitmapMode, REPEAT)
77            self.assertEqual(
78                document.StyleFamilies.PageStyles.Standard.FillBitmapPositionOffsetX, 0)
79            self.assertEqual(
80                document.StyleFamilies.PageStyles.Standard.FillBitmapPositionOffsetY, 0)
81            self.assertEqual(
82                document.StyleFamilies.PageStyles.Standard.FillBitmapRectanglePoint, MIDDLE_MIDDLE)
83            self.assertEqual(
84                document.StyleFamilies.PageStyles.Standard.FillBitmapStretch, False)
85            self.assertEqual(
86                document.StyleFamilies.PageStyles.Standard.FillBitmapTile, True)
87            self.assertEqual(
88                document.StyleFamilies.PageStyles.Standard.FillBitmapOffsetX, 0)
89            self.assertEqual(
90                document.StyleFamilies.PageStyles.Standard.FillBitmapOffsetY, 0)
91            self.assertEqual(
92                document.StyleFamilies.PageStyles.Standard.FillBitmapLogicalSize, True)
93            self.assertEqual(
94                document.StyleFamilies.PageStyles.Standard.FillBitmapSizeX, 0)
95            self.assertEqual(
96                document.StyleFamilies.PageStyles.Standard.FillBitmapSizeY, 0)
97            self.assertEqual(
98                document.StyleFamilies.PageStyles.Standard.FillBitmapName, 'Painted White')
99        elif btn == 'btnpattern':
100            self.assertEqual(
101                document.StyleFamilies.PageStyles.Standard.FillBitmapMode, REPEAT)
102            self.assertEqual(
103                document.StyleFamilies.PageStyles.Standard.FillBitmapPositionOffsetX, 0)
104            self.assertEqual(
105                document.StyleFamilies.PageStyles.Standard.FillBitmapPositionOffsetY, 0)
106            self.assertEqual(
107                document.StyleFamilies.PageStyles.Standard.FillBitmapRectanglePoint, MIDDLE_MIDDLE)
108            self.assertEqual(
109                document.StyleFamilies.PageStyles.Standard.FillBitmapStretch, False)
110            self.assertEqual(
111                document.StyleFamilies.PageStyles.Standard.FillBitmapTile, True)
112            self.assertEqual(
113                document.StyleFamilies.PageStyles.Standard.FillBitmapOffsetX, 0)
114            self.assertEqual(
115                document.StyleFamilies.PageStyles.Standard.FillBitmapOffsetY, 0)
116            self.assertEqual(
117                document.StyleFamilies.PageStyles.Standard.FillBitmapLogicalSize, True)
118            self.assertEqual(
119                document.StyleFamilies.PageStyles.Standard.FillBitmapSizeX, 0)
120            self.assertEqual(
121                document.StyleFamilies.PageStyles.Standard.FillBitmapSizeY, 0)
122            self.assertEqual(
123                document.StyleFamilies.PageStyles.Standard.FillBitmapName, '5 Percent')
124
125    def test_area_tab(self):
126
127        self.ui_test.create_doc_in_start_center("writer")
128
129        buttons = ['btnbitmap', 'btncolor', 'btngradient', 'btnhatch', 'btnpattern']
130        for index, button in enumerate(buttons):
131
132            xDialog = self.launch_dialog_and_select_tab(2)
133
134            self.click_button(xDialog, button)
135
136            self.click_button(xDialog, 'ok')
137
138            self.check_default_area(button)
139
140            xDialog = self.launch_dialog_and_select_tab(2)
141
142            self.click_button(xDialog, 'btnnone')
143
144            self.click_button(xDialog, 'ok')
145
146            self.check_default_area('btnnone')
147
148        self.ui_test.close_doc()
149
150    def test_paper_format(self):
151
152        lPaperFormat = ["A6", "A5", "A4", "A3", "B6 (ISO)", "B5 (ISO)", "B4 (ISO)", "Letter",
153            "Legal", "Long Bond", "Tabloid", "B6 (JIS)", "B5 (JIS)", "B4 (JIS)", "16 Kai",
154            "32 Kai", "Big 32 Kai", "User", "DL Envelope", "C6 Envelope", "C6/5 Envelope",
155            "C5 Envelope", "C4 Envelope", "#6¾ Envelope", "#7¾ (Monarch) Envelope",
156            "#9 Envelope", "#10 Envelope", "#11 Envelope", "#12 Envelope", "Japanese Postcard"]
157
158        self.ui_test.create_doc_in_start_center("writer")
159
160        for i in range(30):
161            with self.subTest(i=i):
162                xDialog = self.launch_dialog_and_select_tab(1)
163
164                xFormatList = xDialog.getChild("comboPageFormat")
165                select_pos(xFormatList, str(i))
166
167                self.assertEqual(
168                    get_state_as_dict(xFormatList)["SelectEntryText"], lPaperFormat[i])
169
170                self.click_button(xDialog, 'ok')
171
172        self.ui_test.close_doc()
173
174    def test_orientation(self):
175
176        self.ui_test.create_doc_in_start_center("writer")
177
178        document = self.ui_test.get_component()
179
180        self.assertEqual(
181            document.StyleFamilies.PageStyles.Standard.IsLandscape, False)
182
183        xDialog = self.launch_dialog_and_select_tab(1)
184
185        self.click_button(xDialog, 'radiobuttonLandscape')
186
187        self.click_button(xDialog, 'ok')
188
189        self.assertEqual(
190            document.StyleFamilies.PageStyles.Standard.IsLandscape, True)
191
192        xDialog = self.launch_dialog_and_select_tab(1)
193
194        self.click_button(xDialog, 'radiobuttonPortrait')
195
196        self.click_button(xDialog, 'ok')
197
198        self.assertEqual(
199            document.StyleFamilies.PageStyles.Standard.IsLandscape, False)
200
201        self.ui_test.close_doc()
202
203    def test_text_direction(self):
204
205        lTextDirection = ['Left-to-right (horizontal)', 'Right-to-left (horizontal)',
206            'Right-to-left (vertical)', 'Left-to-right (vertical)']
207
208        self.ui_test.create_doc_in_start_center("writer")
209
210        document = self.ui_test.get_component()
211
212        for i in range(4):
213            with self.subTest(i=i):
214                xDialog = self.launch_dialog_and_select_tab(1)
215
216                xTextDirectionList = xDialog.getChild("comboTextFlowBox")
217                select_pos(xTextDirectionList, str(i))
218
219                self.assertEqual(
220                    get_state_as_dict(xTextDirectionList)["SelectEntryText"], lTextDirection[i])
221
222                self.click_button(xDialog, 'ok')
223
224                self.assertEqual(
225                    document.StyleFamilies.PageStyles.Standard.WritingMode, i)
226
227        self.ui_test.close_doc()
228
229    def test_cancel_button_page_dialog(self):
230        self.ui_test.create_doc_in_start_center("writer")
231
232        self.ui_test.execute_dialog_through_command(".uno:PageDialog")
233        xDialog = self.xUITest.getTopFocusWindow()
234        xCancelBtn = xDialog.getChild("cancel")
235        self.ui_test.close_dialog_through_button(xCancelBtn)
236
237        self.ui_test.close_doc()
238
239# vim: set shiftwidth=4 softtabstop=4 expandtab:
240