Merge lp:~fboucault/camera-app/camera-app-gridlines into lp:camera-app

Proposed by Florian Boucault
Status: Merged
Approved by: Bill Filler
Approved revision: 437
Merged at revision: 441
Proposed branch: lp:~fboucault/camera-app/camera-app-gridlines
Merge into: lp:camera-app
Diff against target: 452 lines (+299/-20)
7 files modified
ViewFinderOverlay.qml (+25/-0)
ViewFinderOverlayLoader.qml (+1/-0)
ViewFinderView.qml (+41/-1)
assets/grid_lines.svg (+181/-0)
po/camera-app.pot (+20/-19)
tests/autopilot/camera_app/emulators/main_window.py (+4/-0)
tests/autopilot/camera_app/tests/test_options.py (+27/-0)
To merge this branch: bzr merge lp:~fboucault/camera-app/camera-app-gridlines
Reviewer Review Type Date Requested Status
Bill Filler (community) Approve
Arthur Mello (community) Approve
PS Jenkins bot continuous-integration Needs Fixing
Florian Boucault Pending
Review via email: mp+243421@code.launchpad.net

This proposal supersedes a proposal from 2014-11-27.

Commit message

Add gridlines to the viewfinder controlled by a new settings option

Description of the change

Add gridlines to the viewfinder controlled by a new settings option

To post a comment you must log in.
Revision history for this message
Florian Boucault (fboucault) wrote : Posted in a previous version of this proposal

- making the grid of options 4 columns does not really solve the problem of too many options long term (especially with your other MR coming in); thankfully this was solved already in another branch's commit. I think we should merge the specific commit that fixes it: commit 428 from lp:~fboucault/camera-app/jpeg_quality
Merge command: bzr merge -c428 lp:~fboucault/camera-app/jpeg_quality
- icon "view-grid-symbolic" is not good enough. I asked Matthieu (tiheum) from design to provide a better one.
- visually the grid should not have lines around the picture, only the 4 lines inside it; these lines outside are not useful and they create a boxing feel to the UI
- no need to use a Binding object (I understand the consistency reason, but it won't work out for other settings)
- better to not instantiate the Rectangles at all when the grid is disabled; "Repeater.model: settings.gridEnabled ? gridlines.columns * gridlines.rows : 0" will do the trick
- using Rectangle.border to draw is slightly more expensive than using Rectangle.color

review: Needs Fixing
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote : Posted in a previous version of this proposal
review: Needs Fixing (continuous-integration)
429. By Florian Boucault

Proper UI for grid lines.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Bill Filler (bfiller) wrote :

need some tests

review: Needs Fixing
Revision history for this message
Bill Filler (bfiller) wrote :

Other problems:
1) first time you launch the app you see the gridlines briefly visible until the viewfinder is initialized
2) on N4, the grid lines are not aligned properly with the viewfinder, they start at the left edge of the screen, not on the left edge of the viewfinder. And they don't expand all the way to the right edge of the viewfinder.
3) switching to front camera with gridlines on will make the gridlines disappear until you tap on the screen
4) same problem when switching back to back camera

review: Needs Fixing
430. By Florian Boucault

Merged from trunk

431. By Florian Boucault

Center grid lines horizontally.

432. By Florian Boucault

Do not display until we confirmed settings' value.

433. By Florian Boucault

Merged from trunk

434. By Florian Boucault

update pot

435. By Florian Boucault

Added AP test

Revision history for this message
Florian Boucault (fboucault) wrote :

> Other problems:
> 1) first time you launch the app you see the gridlines briefly visible until
> the viewfinder is initialized

Fixed.

> 2) on N4, the grid lines are not aligned properly with the viewfinder, they
> start at the left edge of the screen, not on the left edge of the viewfinder.

Fixed.

> And they don't expand all the way to the right edge of the viewfinder.
> 3) switching to front camera with gridlines on will make the gridlines
> disappear until you tap on the screen
> 4) same problem when switching back to back camera

Both 3) and 4) are exactly https://bugs.launchpad.net/camera-app/+bug/1373607
Not a new bug unfortunately.

Revision history for this message
Florian Boucault (fboucault) wrote :

> need some tests

Fixed.

Revision history for this message
Arthur Mello (artmello) wrote :

lgtm

review: Approve
436. By Florian Boucault

Listing bug

437. By Florian Boucault

Better visuals

Revision history for this message
Bill Filler (bfiller) wrote :

approved

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ViewFinderOverlay.qml'
2--- ViewFinderOverlay.qml 2014-12-05 18:43:54 +0000
3+++ ViewFinderOverlay.qml 2014-12-08 15:17:35 +0000
4@@ -29,6 +29,7 @@
5 property bool touchAcquired: bottomEdge.pressed || zoomPinchArea.active
6 property real revealProgress: bottomEdge.progress
7 property var controls: controls
8+ property var settings: settings
9
10 function showFocusRing(x, y) {
11 focusRing.center = Qt.point(x, y);
12@@ -44,6 +45,7 @@
13 property int videoFlashMode: Camera.FlashOff
14 property int selfTimerDelay: 0
15 property int encodingQuality: 2 // QMultimedia.NormalQuality
16+ property bool gridEnabled: false
17 }
18
19 Binding {
20@@ -271,6 +273,29 @@
21 label: QT_TR_NOOP("Basic Quality")
22 value: 1 // QMultimedia.LowQuality
23 }
24+ },
25+ ListModel {
26+ id: gridOptionsModel
27+
28+ property string settingsProperty: "gridEnabled"
29+ property string icon: ""
30+ property string iconSource: "assets/grid_lines.svg"
31+ property string label: ""
32+ property bool isToggle: true
33+ property int selectedIndex: bottomEdge.indexForValue(gridOptionsModel, settings.gridEnabled)
34+ property bool available: true
35+ property bool visible: true
36+
37+ ListElement {
38+ icon: ""
39+ label: QT_TR_NOOP("On")
40+ value: true
41+ }
42+ ListElement {
43+ icon: ""
44+ label: QT_TR_NOOP("Off")
45+ value: false
46+ }
47 }
48 ]
49
50
51=== modified file 'ViewFinderOverlayLoader.qml'
52--- ViewFinderOverlayLoader.qml 2014-12-03 12:56:42 +0000
53+++ ViewFinderOverlayLoader.qml 2014-12-08 15:17:35 +0000
54@@ -23,6 +23,7 @@
55 property bool touchAcquired: loader.item ? loader.item.touchAcquired : false
56 property real revealProgress: loader.item ? loader.item.revealProgress : 0
57 property var controls: loader.item ? loader.item.controls : null
58+ property var settings: loader.item.settings
59
60 function showFocusRing(x, y) {
61 loader.item.showFocusRing(x, y);
62
63=== modified file 'ViewFinderView.qml'
64--- ViewFinderView.qml 2014-12-05 18:43:54 +0000
65+++ ViewFinderView.qml 2014-12-08 15:17:35 +0000
66@@ -133,7 +133,7 @@
67 id: viewFinderSwitcher
68 anchors.fill: parent
69 visible: !viewFinderSwitcherBlurred.visible
70-
71+
72 ShaderEffectSource {
73 id: viewFinderGrab
74 live: false
75@@ -250,6 +250,46 @@
76 }
77 }
78
79+ Item {
80+ id: gridlines
81+ objectName: "gridlines"
82+ anchors.horizontalCenter: parent.horizontalCenter
83+ width: viewFinderGeometry.width
84+ height: viewFinderGeometry.height
85+ visible: viewFinderOverlay.settings != undefined && viewFinderOverlay.settings.gridEnabled
86+
87+ property color color: Qt.rgba(0.8, 0.8, 0.8, 0.8)
88+ property real thickness: units.dp(1)
89+
90+ Rectangle {
91+ y: parent.height / 3
92+ width: parent.width
93+ height: gridlines.thickness
94+ color: gridlines.color
95+ }
96+
97+ Rectangle {
98+ y: 2 * parent.height / 3
99+ width: parent.width
100+ height: gridlines.thickness
101+ color: gridlines.color
102+ }
103+
104+ Rectangle {
105+ x: parent.width / 3
106+ width: gridlines.thickness
107+ height: parent.height
108+ color: gridlines.color
109+ }
110+
111+ Rectangle {
112+ x: 2 * parent.width / 3
113+ width: gridlines.thickness
114+ height: parent.height
115+ color: gridlines.color
116+ }
117+ }
118+
119 Connections {
120 target: viewFinderView
121 onInViewChanged: if (!viewFinderView.inView) viewFinderOverlay.controls.cancelTimedShoot()
122
123=== added file 'assets/grid_lines.svg'
124--- assets/grid_lines.svg 1970-01-01 00:00:00 +0000
125+++ assets/grid_lines.svg 2014-12-08 15:17:35 +0000
126@@ -0,0 +1,181 @@
127+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
128+<!-- Created with Inkscape (http://www.inkscape.org/) -->
129+
130+<svg
131+ xmlns:dc="http://purl.org/dc/elements/1.1/"
132+ xmlns:cc="http://creativecommons.org/ns#"
133+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
134+ xmlns:svg="http://www.w3.org/2000/svg"
135+ xmlns="http://www.w3.org/2000/svg"
136+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
137+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
138+ width="90"
139+ height="90"
140+ id="svg4874"
141+ version="1.1"
142+ inkscape:version="0.91+devel r"
143+ viewBox="0 0 90 90.000001"
144+ sodipodi:docname="camera-grid01.svg">
145+ <defs
146+ id="defs4876">
147+ <clipPath
148+ id="clipPath2991-6"
149+ clipPathUnits="userSpaceOnUse">
150+ <path
151+ sodipodi:nodetypes="cccsssssssccc"
152+ style="color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
153+ d="m 0,968.36224 0,83.99996 16.375,0 c -1.525081,-1.7576 -2.659363,-3.8737 -3.25,-6 -0.996189,-3.5863 -1.09375,-7.3341 -1.09375,-12 l 0,-35.99996 c 0,-4.66586 0.09756,-8.41372 1.09375,-12 0.996189,-3.58628 3.508218,-7.14653 6.90625,-9 C 26.827314,973.6553 34.5,974.39349 48,974.39349 l 6,0 c 10.951245,0 18.075349,-0.45164 24,1.34375 l 0,-7.375 z"
154+ id="path2993-6"
155+ inkscape:connector-curvature="0" />
156+ </clipPath>
157+ </defs>
158+ <sodipodi:namedview
159+ id="base"
160+ pagecolor="#ffffff"
161+ bordercolor="#666666"
162+ borderopacity="1.0"
163+ inkscape:pageopacity="0.0"
164+ inkscape:pageshadow="2"
165+ inkscape:zoom="5.0931703"
166+ inkscape:cx="-12.526581"
167+ inkscape:cy="23.286085"
168+ inkscape:document-units="px"
169+ inkscape:current-layer="g4122"
170+ showgrid="true"
171+ showborder="true"
172+ fit-margin-top="0"
173+ fit-margin-left="0"
174+ fit-margin-right="0"
175+ fit-margin-bottom="0"
176+ inkscape:snap-bbox="true"
177+ inkscape:bbox-paths="true"
178+ inkscape:bbox-nodes="true"
179+ inkscape:snap-bbox-edge-midpoints="true"
180+ inkscape:snap-bbox-midpoints="true"
181+ inkscape:object-paths="true"
182+ inkscape:snap-intersection-paths="true"
183+ inkscape:object-nodes="true"
184+ inkscape:snap-smooth-nodes="true"
185+ inkscape:snap-midpoints="true"
186+ inkscape:snap-object-midpoints="true"
187+ inkscape:snap-center="true"
188+ showguides="true"
189+ inkscape:guide-bbox="true"
190+ inkscape:snap-global="true">
191+ <inkscape:grid
192+ type="xygrid"
193+ id="grid5451"
194+ empspacing="6" />
195+ <sodipodi:guide
196+ orientation="1,0"
197+ position="6,77"
198+ id="guide4063" />
199+ <sodipodi:guide
200+ orientation="1,0"
201+ position="3,78"
202+ id="guide4065" />
203+ <sodipodi:guide
204+ orientation="0,1"
205+ position="55,84"
206+ id="guide4067" />
207+ <sodipodi:guide
208+ orientation="0,1"
209+ position="53,87"
210+ id="guide4069" />
211+ <sodipodi:guide
212+ orientation="0,1"
213+ position="20,3"
214+ id="guide4071" />
215+ <sodipodi:guide
216+ orientation="0,1"
217+ position="20,6"
218+ id="guide4073" />
219+ <sodipodi:guide
220+ orientation="1,0"
221+ position="87,7"
222+ id="guide4075" />
223+ <sodipodi:guide
224+ orientation="1,0"
225+ position="84,7"
226+ id="guide4077" />
227+ <sodipodi:guide
228+ orientation="0,1"
229+ position="58,81"
230+ id="guide4074" />
231+ <sodipodi:guide
232+ orientation="1,0"
233+ position="9,74"
234+ id="guide4076" />
235+ <sodipodi:guide
236+ orientation="0,1"
237+ position="21,9"
238+ id="guide4078" />
239+ <sodipodi:guide
240+ orientation="1,0"
241+ position="81,4"
242+ id="guide4080" />
243+ </sodipodi:namedview>
244+ <metadata
245+ id="metadata4879">
246+ <rdf:RDF>
247+ <cc:Work
248+ rdf:about="">
249+ <dc:format>image/svg+xml</dc:format>
250+ <dc:type
251+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
252+ <dc:title></dc:title>
253+ </cc:Work>
254+ </rdf:RDF>
255+ </metadata>
256+ <g
257+ inkscape:label="Layer 1"
258+ inkscape:groupmode="layer"
259+ id="layer1"
260+ transform="translate(67.857146,-84.50504)">
261+ <path
262+ sodipodi:nodetypes="cssssssccccccccccc"
263+ inkscape:connector-curvature="0"
264+ style="fill:#808080;fill-opacity:1;display:none"
265+ id="path5335"
266+ d="m -49.85715,117.50504 0,35.99992 c 0,18 3,18 30,18 l 6,0 c 27,0 30,0 30,-18 l 0,-35.99992 c 0,-18 -3,-18 -30,-18 l -6,0 c -27,0 -30,0 -30,18 z m 30,-12 6,0 c 24,0 24,0 24,12 l 0,35.99992 c 0,12 0,12 -24,12 l -6,0 c -24,0 -24,0 -24,-12 l 0,-35.99992 c 0,-12 0,-12 24,-12 z" />
267+ <path
268+ transform="translate(-67.85715,-880.85714)"
269+ clip-path="url(#clipPath2991-6)"
270+ d="m 6,986.36218 0,35.99992 c 0,18 3,18 30,18 l 6,0 c 27,0 30,0 30,-18 l 0,-35.99992 c 0,-18 -3,-18 -30,-18 l -6,0 c -27,0 -30,0 -30,18 z m 30,-12 6,0 c 24,0 24,0 24,12 l 0,35.99992 c 0,12 0,12 -24,12 l -6,0 c -24,0 -24,0 -24,-12 l 0,-35.99992 c 0,-12 0,-12 24,-12 z"
271+ id="path5337"
272+ style="fill:#808080;fill-opacity:1;display:none"
273+ inkscape:connector-curvature="0"
274+ sodipodi:nodetypes="cssssssccccccccccc" />
275+ <g
276+ id="g4122">
277+ <rect
278+ y="84.505043"
279+ x="-67.857147"
280+ height="90"
281+ width="90"
282+ id="rect4120"
283+ style="opacity:0.02999998;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
284+ <path
285+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
286+ d="m -40.857146,93.505041 0,71.999999"
287+ id="path4345"
288+ inkscape:connector-curvature="0" />
289+ <path
290+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
291+ d="m -4.857146,93.505041 0,71.999999"
292+ id="path4347"
293+ inkscape:connector-curvature="0" />
294+ <path
295+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
296+ d="m -64.857146,144.50504 84,0"
297+ id="path4349"
298+ inkscape:connector-curvature="0"
299+ sodipodi:nodetypes="cc" />
300+ <path
301+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
302+ d="m -64.857146,114.50504 84,0"
303+ id="path4351"
304+ inkscape:connector-curvature="0" />
305+ </g>
306+ </g>
307+</svg>
308
309=== modified file 'po/camera-app.pot'
310--- po/camera-app.pot 2014-12-05 01:21:37 +0000
311+++ po/camera-app.pot 2014-12-08 15:17:35 +0000
312@@ -8,7 +8,7 @@
313 msgstr ""
314 "Project-Id-Version: camera-app\n"
315 "Report-Msgid-Bugs-To: \n"
316-"POT-Creation-Date: 2014-12-04 23:20-0200\n"
317+"POT-Creation-Date: 2014-12-08 09:47-0200\n"
318 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
319 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
320 "Language-Team: LANGUAGE <LL@li.org>\n"
321@@ -21,7 +21,7 @@
322 msgid "Delete media?"
323 msgstr ""
324
325-#: ../DeleteDialog.qml:34 ../GalleryView.qml:50 ../SlideshowView.qml:41
326+#: ../DeleteDialog.qml:34 ../PhotogridView.qml:50 ../SlideshowView.qml:41
327 msgid "Delete"
328 msgstr ""
329
330@@ -29,11 +29,7 @@
331 msgid "Cancel"
332 msgstr ""
333
334-#: ../GalleryView.qml:41 ../SlideshowView.qml:36
335-msgid "Share"
336-msgstr ""
337-
338-#: ../GalleryView.qml:199
339+#: ../GalleryView.qml:180
340 msgid "No media available."
341 msgstr ""
342
343@@ -49,42 +45,47 @@
344 msgid "Swipe left for photo roll"
345 msgstr ""
346
347-#: ../ViewFinderOverlay.qml:138 ../ViewFinderOverlay.qml:161
348-#: ../ViewFinderOverlay.qml:189 ../ViewFinderOverlay.qml:212
349+#: ../PhotogridView.qml:41 ../SlideshowView.qml:36
350+msgid "Share"
351+msgstr ""
352+
353+#: ../ViewFinderOverlay.qml:140 ../ViewFinderOverlay.qml:163
354+#: ../ViewFinderOverlay.qml:191 ../ViewFinderOverlay.qml:214
355+#: ../ViewFinderOverlay.qml:291
356 msgid "On"
357 msgstr ""
358
359-#: ../ViewFinderOverlay.qml:143 ../ViewFinderOverlay.qml:171
360-#: ../ViewFinderOverlay.qml:194 ../ViewFinderOverlay.qml:217
361-#: ../ViewFinderOverlay.qml:235
362+#: ../ViewFinderOverlay.qml:145 ../ViewFinderOverlay.qml:173
363+#: ../ViewFinderOverlay.qml:196 ../ViewFinderOverlay.qml:219
364+#: ../ViewFinderOverlay.qml:238 ../ViewFinderOverlay.qml:296
365 msgid "Off"
366 msgstr ""
367
368-#: ../ViewFinderOverlay.qml:166
369+#: ../ViewFinderOverlay.qml:168
370 msgid "Auto"
371 msgstr ""
372
373-#: ../ViewFinderOverlay.qml:203
374+#: ../ViewFinderOverlay.qml:205
375 msgid "HDR"
376 msgstr ""
377
378-#: ../ViewFinderOverlay.qml:240
379+#: ../ViewFinderOverlay.qml:243
380 msgid "5 seconds"
381 msgstr ""
382
383-#: ../ViewFinderOverlay.qml:245
384+#: ../ViewFinderOverlay.qml:248
385 msgid "15 seconds"
386 msgstr ""
387
388-#: ../ViewFinderOverlay.qml:262
389+#: ../ViewFinderOverlay.qml:265
390 msgid "Fine Quality"
391 msgstr ""
392
393-#: ../ViewFinderOverlay.qml:266
394+#: ../ViewFinderOverlay.qml:269
395 msgid "Normal Quality"
396 msgstr ""
397
398-#: ../ViewFinderOverlay.qml:270
399+#: ../ViewFinderOverlay.qml:273
400 msgid "Basic Quality"
401 msgstr ""
402
403
404=== modified file 'tests/autopilot/camera_app/emulators/main_window.py'
405--- tests/autopilot/camera_app/emulators/main_window.py 2014-12-03 18:18:05 +0000
406+++ tests/autopilot/camera_app/emulators/main_window.py 2014-12-08 15:17:35 +0000
407@@ -73,6 +73,10 @@
408 """Returns the encoding quality button of the camera"""
409 return self.get_option_button("encodingQuality")
410
411+ def get_grid_lines_button(self):
412+ """Returns the grid lines toggle button of the camera"""
413+ return self.get_option_button("gridEnabled")
414+
415 def get_stop_watch(self):
416 """Returns the stop watch when using the record button of the camera"""
417 return self.app.wait_select_single("StopWatch")
418
419=== modified file 'tests/autopilot/camera_app/tests/test_options.py'
420--- tests/autopilot/camera_app/tests/test_options.py 2014-07-29 16:40:16 +0000
421+++ tests/autopilot/camera_app/tests/test_options.py 2014-12-08 15:17:35 +0000
422@@ -40,3 +40,30 @@
423
424 # check overlay is closed
425 self.assertThat(bottom_edge.opened, Eventually(Equals(False)))
426+
427+ """Test toggling on/off grid lines option"""
428+ def test_toggle_grid_lines(self):
429+ gridlines = self.app.wait_select_single("QQuickItem", objectName="gridlines")
430+ self.set_grid_lines_value("On")
431+ self.assertEquals(gridlines.visible, True)
432+ self.set_grid_lines_value("Off")
433+ self.assertEquals(gridlines.visible, False)
434+
435+ def set_grid_lines_value(self, value="On"):
436+ # open bottom edge
437+ bottom_edge = self.main_window.get_bottom_edge()
438+ bottom_edge.open()
439+
440+ # open grid lines option value selector showing the possible values
441+ grid_lines_button = self.main_window.get_grid_lines_button()
442+ self.pointing_device.move_to_object(grid_lines_button)
443+ self.pointing_device.click()
444+ option_value_selector = self.main_window.get_option_value_selector()
445+ self.assertThat(option_value_selector.visible, Eventually(Equals(True)))
446+
447+ # tap on chosen value
448+ option = self.main_window.get_option_value_button(value)
449+ self.pointing_device.move_to_object(option)
450+ self.pointing_device.click()
451+
452+ bottom_edge.close()

Subscribers

People subscribed via source and target branches