Merge lp:~googol-deactivatedaccount/openlp/bug-856296 into lp:openlp

Proposed by Andreas Preikschat
Status: Merged
Approved by: Tim Bentley
Approved revision: 1774
Merged at revision: 1769
Proposed branch: lp:~googol-deactivatedaccount/openlp/bug-856296
Merge into: lp:openlp
Diff against target: 588 lines (+56/-231)
12 files modified
copyright.txt (+1/-1)
openlp/core/lib/eventreceiver.py (+0/-11)
openlp/core/lib/renderer.py (+2/-1)
openlp/core/resources.py (+34/-130)
openlp/core/ui/maindisplay.py (+2/-6)
openlp/core/ui/slidecontroller.py (+8/-71)
openlp/core/ui/themeform.py (+1/-1)
resources/images/openlp-2.qrc (+0/-2)
scripts/check_dependencies.py (+1/-1)
scripts/generate_resources.sh (+5/-5)
testing/conftest.py (+1/-1)
testing/test_app.py (+1/-1)
To merge this branch: bzr merge lp:~googol-deactivatedaccount/openlp/bug-856296
Reviewer Review Type Date Requested Status
Tim Bentley Approve
Review via email: mp+78289@code.launchpad.net

This proposal supersedes a proposal from 2011-10-03.

Description of the change

Hello,

1) I improved the preview frame display performance (the frame showing the preview/live display). Instead of using a QImage I use a QPixmap. We don't have to convert the QImage to a QPixmap, but we also have the advantage which comes with using the QPixmaps.

"QImage is designed and optimized for I/O, and for direct pixel access and manipulation, while QPixmap is designed and optimized for showing images on screen." http://doc.trolltech.com/4.6/qpixmap.html#details

Sample times:

Update Themes Image (default theme + four sample themes):
Branch vs Trunk
0:00:00.952184 vs 0:00:01.352197
0:00:00.949896 vs 0:00:01.031343
0:00:00.369395 vs 0:00:00.273413
0:00:00.893812 vs 0:00:00.931930
0:00:00.936217 vs 0:00:01.297820

2) Removed dead code.
- See http://bazaar.launchpad.net/~openlp-core/openlp/trunk/revision/997#openlp/core/ui/slidecontroller.py
- Code added here: http://bazaar.launchpad.net/~openlp-core/openlp/trunk/revision/799.2.5

To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'copyright.txt'
2--- copyright.txt 2011-06-12 16:14:04 +0000
3+++ copyright.txt 2011-10-05 17:23:25 +0000
4@@ -7,7 +7,7 @@
5 # Copyright (c) 2008-2011 Raoul Snyman #
6 # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
7 # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
8-# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
9+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
10 # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
11 # Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
12 # --------------------------------------------------------------------------- #
13
14=== modified file 'openlp/core/lib/eventreceiver.py'
15--- openlp/core/lib/eventreceiver.py 2011-08-12 13:38:05 +0000
16+++ openlp/core/lib/eventreceiver.py 2011-10-05 17:23:25 +0000
17@@ -51,9 +51,6 @@
18 ``config_screen_changed``
19 The display monitor has been changed
20
21- ``slidecontroller_{live|preview}_first``
22- Moves to the first slide
23-
24 ``slidecontroller_{live|preview}_next``
25 Moves to the next slide
26
27@@ -66,9 +63,6 @@
28 ``slidecontroller_{live|preview}_previous_noloop``
29 Moves to the previous slide, without auto advance
30
31- ``slidecontroller_{live|preview}_last``
32- Moves to the last slide
33-
34 ``slidecontroller_{live|preview}_set``
35 Moves to a specific slide, by index
36
37@@ -82,11 +76,6 @@
38 ``slidecontroller_{live|preview}_changed``
39 Broadcasts that the slidecontroller has changed the current slide
40
41- ``slidecontroller_{live|preview}_text_request``
42- Request the text for the current item in the controller
43- Returns a slidecontroller_{live|preview}_text_response with an
44- array of dictionaries with the tag and verse text
45-
46 ``slidecontroller_{live|preview}_blank``
47 Request that the output screen is blanked
48
49
50=== modified file 'openlp/core/lib/renderer.py'
51--- openlp/core/lib/renderer.py 2011-09-26 18:48:47 +0000
52+++ openlp/core/lib/renderer.py 2011-10-05 17:23:25 +0000
53@@ -201,7 +201,8 @@
54 if not self.force_page:
55 self.display.buildHtml(serviceItem)
56 raw_html = serviceItem.get_rendered_frame(0)
57- preview = self.display.text(raw_html)
58+ self.display.text(raw_html)
59+ preview = self.display.preview()
60 # Reset the real screen size for subsequent render requests
61 self._calculate_default()
62 return preview
63
64=== modified file 'openlp/core/resources.py'
65--- openlp/core/resources.py 2011-07-08 07:46:25 +0000
66+++ openlp/core/resources.py 2011-10-05 17:23:25 +0000
67@@ -80624,50 +80624,6 @@
68 \xed\x04\xf9\x30\x17\xe5\xa2\x7c\xe8\x04\x85\x01\xee\x1f\x8d\x42\
69 \x66\xb3\xf5\x8b\xfe\x99\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
70 \x60\x82\
71-\x00\x00\x02\x9a\
72-\x89\
73-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
74-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
75-\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
76-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
77-\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
78-\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
79-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x17\x49\x44\
80-\x41\x54\x78\xda\xa5\x53\xcf\x6b\x13\x41\x18\x7d\xb3\x3b\x3b\xdb\
81-\x4d\x37\x92\x1f\xd5\xaa\xa1\x50\x88\xe0\x21\x15\xd4\xa3\xb6\x2a\
82-\xb4\x6b\xf1\x64\x3c\x78\xd0\x8b\xde\xfc\x07\xbc\x4a\xa1\x17\x3d\
83-\x15\xb4\x3d\x8a\xe0\xc5\x93\x7a\xf5\xe0\xa1\x27\x2d\x28\xad\x0a\
84-\x95\xe2\x41\x0f\x92\x60\x6a\x6b\xb2\x89\xc9\xe6\xc7\xee\xe6\xf3\
85-\x73\x09\x2d\xa1\xa6\x1e\xfa\x86\xc7\x37\x0f\xe6\x7b\xf3\x06\xbe\
86-\x11\x44\x84\x83\x40\x03\x43\xfc\xc5\x55\x71\x5f\x38\x22\xd5\xa7\
87-\xa7\x59\xff\x07\x51\x02\x71\x4d\x58\x93\xd9\x49\xcf\x6d\xb8\x95\
88-\xf5\xc2\xfa\x65\x48\x7c\x76\xce\x38\x5e\xd9\x2d\x97\x57\x37\x56\
89-\x1d\x7a\x45\x6b\x83\x13\xf4\x10\x6a\x21\x66\x2e\xcc\x24\xa6\x4e\
90-\x4f\xbd\x01\xe1\x96\x2f\x7c\xe4\xf3\xf9\xa4\x73\xde\x59\xe1\x34\
91-\xb7\x31\x00\x12\x3d\xd4\x79\x95\xdc\x92\x18\xcf\x8e\x2b\x7b\xc4\
92-\x5e\xe2\x34\x28\x55\x4b\x22\x77\x36\xa7\xe2\xc9\xf8\x63\xeb\xba\
93-\x75\xae\x35\xd1\xba\x43\x73\x44\xff\x7c\x42\xf6\x64\xd6\x1b\x4b\
94-\x8e\x41\xda\x12\xc6\x90\x01\xc3\x34\x20\x25\xef\x35\xae\xbc\x1a\
95-\x6e\x23\x5c\x7e\xbb\xfc\xa1\x5a\xac\xce\xd2\x6b\x2a\xef\x31\xc8\
96-\xe4\x32\x9e\x2d\x6d\xc8\x43\xdc\x14\xe3\x26\x53\x42\x49\x05\x29\
97-\x58\x87\xac\x03\x09\xf2\x28\xfc\xb8\xf1\xa9\xf2\x73\x73\x73\x96\
98-\x5e\xd0\x5a\xdf\x13\x5a\x5a\x0b\x5e\xc7\x8b\x0e\xea\xa4\x47\x94\
99-\xc4\x26\xa4\xa0\x02\x05\xa3\xcd\x26\x6d\xa9\x9f\x38\x9e\x4d\x5b\
100-\xc6\xd0\x8a\xb8\x29\x6e\xd0\x33\x7a\xb9\x63\xe0\xe9\x4d\x34\xbb\
101-\x1e\xa0\xf7\x6c\x15\x10\xa1\xc3\xac\x03\xc2\x15\x40\x05\xd0\x7e\
102-\x69\x88\x59\xc3\x04\x43\xd7\xfb\x12\xe8\x26\x6b\x03\x40\x9c\x99\
103-\x64\xda\x4c\xc1\xf4\x10\x81\x3a\x04\xcb\xb7\x02\xc3\x34\x6b\xb5\
104-\xad\xc6\x15\x7a\x1a\xbc\xeb\x37\x90\xbc\xed\x02\x30\x99\xc3\x5c\
105-\xd2\x26\xda\x5a\x3b\xba\x15\x4d\x20\x11\x4b\x06\x61\xa3\xfb\xa5\
106-\xe6\xb9\x97\xe8\x09\x6d\xef\x99\x03\xa9\xf5\x0c\x98\xa8\x68\x61\
107-\x62\x3b\x15\xd9\x0b\x12\x38\x16\x66\xc2\x76\xd9\x7f\xfe\x5b\x54\
108-\x4f\xd1\xc2\x6e\x73\x7f\x82\xae\x0e\xe5\x2b\xea\xd4\x83\x00\x3f\
109-\x70\x8f\x0c\x7a\x60\x96\x4c\x1a\xdd\x3a\x1a\x16\xbe\x15\xef\x86\
110-\x73\xfe\xc3\x7d\x27\x31\x65\xa5\x91\x1a\x39\xc2\xf3\xa4\x4d\xe3\
111-\x7d\xf7\x51\xaa\x93\x46\xba\x30\x5a\xff\xfe\xb5\x78\x31\x6a\x1e\
112-\x84\xde\x6f\x14\xfa\x92\x5a\xc4\x3c\x0e\xef\xe8\x85\x5d\xbd\x1f\
113-\x0f\xfc\x9d\xff\x00\x31\x95\xf8\x05\x21\xa4\x9a\x59\x00\x00\x00\
114-\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
115 \x00\x00\x01\xf5\
116 \x89\
117 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
118@@ -80702,49 +80658,6 @@
119 \x23\xab\xe7\xf3\xa3\xf9\x51\x3d\x6f\x64\xcd\x9a\x10\x42\xfc\x07\
120 \x7b\x2d\x6e\x9f\x2f\x2d\x37\x8c\x00\x00\x00\x00\x49\x45\x4e\x44\
121 \xae\x42\x60\x82\
122-\x00\x00\x02\x8d\
123-\x89\
124-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
125-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
126-\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
127-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
128-\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
129-\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
130-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x0a\x49\x44\
131-\x41\x54\x78\xda\xa5\x53\xcf\x6b\x13\x41\x14\xfe\x66\x67\x93\xdd\
132-\xa4\x84\xee\x6e\x76\x5b\x25\x98\xa0\x1e\xa4\x58\x51\xd3\x9b\x50\
133-\x6b\x7f\xe4\x90\x53\x4b\x3c\xe9\x45\xf1\x5f\xf0\x28\x52\xf4\xe2\
134-\xad\xa0\xf6\xe2\x45\xf0\xe4\x41\xc1\x73\xcd\xb5\x22\xe8\x41\x10\
135-\x2f\x82\x07\xd1\x96\x34\x5a\x53\xdb\x4d\x93\x6c\x66\x36\xcf\xe9\
136-\x06\xdb\x86\x68\x7b\xe8\x7b\x3c\x78\xdf\xcc\xfb\xbe\xf7\x06\xde\
137-\x30\x22\xc2\x51\x4c\xc3\x21\xc6\xa6\x99\xc3\x66\xd9\x03\xa6\x2c\
138-\xc2\x85\x5e\x7c\xe0\x04\xac\xc8\xf2\x63\x23\x63\x65\xc7\x72\x9c\
139-\xf2\x87\x72\x12\x12\x67\x47\xb3\xa3\xaf\xad\xa4\x65\x2f\x7f\x59\
140-\x4e\xd2\x2b\x6a\xfe\x77\x02\xd5\xe5\x66\xe1\x52\xe1\xed\xdc\xec\
141-\x9c\x2d\x98\x00\x08\x37\xc6\xf3\xe3\x6f\x66\xae\xcc\x58\x61\x2c\
142-\xdc\xad\xd3\xfb\x88\xf7\x18\x33\x3f\x99\x4f\x4a\x53\xa5\x5b\xd9\
143-\xd3\x59\xbe\xb6\xb9\x86\x80\x07\x28\x4e\x15\x17\x5d\xc7\x8d\x70\
144-\x5d\x79\x9f\xc0\xdf\xf7\x0d\x1e\x1b\x5c\x9a\x9c\x98\xbc\x98\xb0\
145-\x13\xbc\xb2\x55\x81\x50\xee\xe5\x3c\x08\x21\x78\xa5\x51\x81\x6c\
146-\x4a\x34\xf4\x46\xbf\x00\xbb\xca\xf2\x43\x27\x87\x97\x2e\x9c\x3a\
147-\x6f\x37\x59\x93\xfb\xdb\x3e\x84\x2e\x20\x35\x89\xb6\x72\x29\xa5\
148-\x12\x51\x38\x90\x68\xe9\xad\x5e\x01\x76\x9d\x95\x72\x5e\xee\x79\
149-\xc6\xca\xc4\x6a\xad\x1a\x93\x4c\x15\x27\x05\xda\xa4\xa8\x31\x45\
150-\x56\x38\xdc\x71\x0a\x21\x43\x09\x4d\xd7\x7a\x05\x10\xe3\xbc\xb6\
151-\xbd\x41\x2b\x5f\x57\xd0\x71\x3b\x40\x1a\x20\x9b\x00\x7b\xe7\x6e\
152-\x5f\x90\x8a\x00\x48\x84\xc9\xde\x3d\xa0\x67\xf2\x85\x1f\x6b\x5e\
153-\x1e\x18\x49\x6d\x98\x29\x53\x92\x41\xc0\x00\x80\x14\xba\x22\x9e\
154-\x0a\x37\xca\xa3\x33\x9e\xe0\xfd\x8b\x44\x4f\xdb\xef\xb6\xd8\xef\
155-\x33\xba\x17\xff\x6c\xa5\x6c\x19\x75\x34\xbb\x04\xc3\x33\x00\x07\
156-\x5d\x51\x95\x72\x5d\xff\xf7\x26\xd2\x02\xad\xfb\x7c\xf3\x5c\x00\
157-\xf1\xf2\xb8\x99\x09\x19\xb1\x68\x6c\xeb\xa7\x62\xff\xd0\x42\x10\
158-\x80\x0e\xa0\x6b\xfd\x02\x7b\x22\xf3\x44\x8d\xbb\xfe\xb5\x6a\xb5\
159-\x7a\xfb\x44\x90\x95\x86\x6f\x10\xf9\x04\x7c\xc4\x1d\xac\x6a\x22\
160-\x1e\xc4\x89\x87\xfc\xf0\xbf\x10\xce\x8b\x87\xdf\xbe\xaf\x4e\xa4\
161-\x7f\x0d\xd7\xd3\x6d\x17\x78\xdf\x79\x84\x75\x6d\xda\xd1\x87\xea\
162-\x69\xc3\xdd\xd7\x91\xe8\xc0\xc0\x7d\x78\x7c\x21\xfe\x18\x00\xdb\
163-\xc5\x8b\x7b\xf8\xc8\xdf\xf9\x0f\x44\x6e\xe9\xd5\x53\xa5\xc0\x5a\
164-\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
165 \x00\x00\x02\x0f\
166 \x89\
167 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
168@@ -82368,19 +82281,11 @@
169 \x00\x6d\
170 \x00\x65\x00\x64\x00\x69\x00\x61\x00\x5f\x00\x70\x00\x6c\x00\x61\x00\x79\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x5f\x00\x73\x00\x74\
171 \x00\x6f\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\
172-\x00\x0e\
173-\x0d\x52\x2d\x87\
174-\x00\x73\
175-\x00\x6c\x00\x69\x00\x64\x00\x65\x00\x5f\x00\x6c\x00\x61\x00\x73\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
176 \x00\x18\
177 \x07\xc2\xc7\xc7\
178 \x00\x6d\
179 \x00\x65\x00\x64\x00\x69\x00\x61\x00\x5f\x00\x70\x00\x6c\x00\x61\x00\x79\x00\x62\x00\x61\x00\x63\x00\x6b\x00\x5f\x00\x73\x00\x74\
180 \x00\x61\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
181-\x00\x0f\
182-\x06\xf0\x05\xe7\
183-\x00\x73\
184-\x00\x6c\x00\x69\x00\x64\x00\x65\x00\x5f\x00\x66\x00\x69\x00\x72\x00\x73\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
185 \x00\x0e\
186 \x09\x02\x2d\x47\
187 \x00\x73\
188@@ -82490,15 +82395,15 @@
189
190 qt_resource_struct = "\
191 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x01\
192-\x00\x00\x00\xb0\x00\x02\x00\x00\x00\x06\x00\x00\x00\x82\
193-\x00\x00\x00\x52\x00\x02\x00\x00\x00\x04\x00\x00\x00\x7e\
194-\x00\x00\x01\x1e\x00\x02\x00\x00\x00\x03\x00\x00\x00\x7b\
195-\x00\x00\x00\x76\x00\x02\x00\x00\x00\x14\x00\x00\x00\x67\
196-\x00\x00\x00\x66\x00\x02\x00\x00\x00\x02\x00\x00\x00\x65\
197-\x00\x00\x00\x3a\x00\x02\x00\x00\x00\x02\x00\x00\x00\x63\
198-\x00\x00\x00\xfa\x00\x02\x00\x00\x00\x05\x00\x00\x00\x5e\
199-\x00\x00\x00\x9c\x00\x02\x00\x00\x00\x09\x00\x00\x00\x55\
200-\x00\x00\x00\x14\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x4a\
201+\x00\x00\x00\xb0\x00\x02\x00\x00\x00\x06\x00\x00\x00\x80\
202+\x00\x00\x00\x52\x00\x02\x00\x00\x00\x04\x00\x00\x00\x7c\
203+\x00\x00\x01\x1e\x00\x02\x00\x00\x00\x03\x00\x00\x00\x79\
204+\x00\x00\x00\x76\x00\x02\x00\x00\x00\x14\x00\x00\x00\x65\
205+\x00\x00\x00\x66\x00\x02\x00\x00\x00\x02\x00\x00\x00\x63\
206+\x00\x00\x00\x3a\x00\x02\x00\x00\x00\x02\x00\x00\x00\x61\
207+\x00\x00\x00\xfa\x00\x02\x00\x00\x00\x05\x00\x00\x00\x5c\
208+\x00\x00\x00\x9c\x00\x02\x00\x00\x00\x09\x00\x00\x00\x53\
209+\x00\x00\x00\x14\x00\x02\x00\x00\x00\x09\x00\x00\x00\x4a\
210 \x00\x00\x00\xbe\x00\x02\x00\x00\x00\x03\x00\x00\x00\x47\
211 \x00\x00\x01\x0c\x00\x02\x00\x00\x00\x10\x00\x00\x00\x37\
212 \x00\x00\x00\x86\x00\x02\x00\x00\x00\x03\x00\x00\x00\x34\
213@@ -82512,23 +82417,23 @@
214 \x00\x00\x08\x0a\x00\x00\x00\x00\x00\x01\x00\x08\x96\xff\
215 \x00\x00\x08\x38\x00\x00\x00\x00\x00\x01\x00\x0b\x37\xe1\
216 \x00\x00\x07\xda\x00\x00\x00\x00\x00\x01\x00\x05\xf6\x1d\
217-\x00\x00\x13\x4a\x00\x00\x00\x00\x00\x01\x00\x13\xc3\x8e\
218-\x00\x00\x13\xba\x00\x00\x00\x00\x00\x01\x00\x13\xca\xd9\
219-\x00\x00\x12\xfa\x00\x00\x00\x00\x00\x01\x00\x13\xbe\x32\
220-\x00\x00\x14\x98\x00\x00\x00\x00\x00\x01\x00\x13\xdd\x57\
221-\x00\x00\x14\x1a\x00\x00\x00\x00\x00\x01\x00\x13\xd2\xef\
222-\x00\x00\x12\xa2\x00\x00\x00\x00\x00\x01\x00\x13\xb6\xfb\
223-\x00\x00\x14\xea\x00\x00\x00\x00\x00\x01\x00\x13\xe3\x5e\
224-\x00\x00\x13\xe2\x00\x00\x00\x00\x00\x01\x00\x13\xce\x4d\
225-\x00\x00\x15\x38\x00\x00\x00\x00\x00\x01\x00\x13\xe8\x8a\
226-\x00\x00\x12\xcc\x00\x00\x00\x00\x00\x01\x00\x13\xb9\x99\
227-\x00\x00\x14\xc4\x00\x00\x00\x00\x00\x01\x00\x13\xe0\x8a\
228-\x00\x00\x14\x6e\x00\x00\x00\x00\x00\x01\x00\x13\xda\xdf\
229-\x00\x00\x13\x20\x00\x00\x00\x00\x00\x01\x00\x13\xc1\x0c\
230-\x00\x00\x15\x14\x00\x00\x00\x00\x00\x01\x00\x13\xe6\x43\
231-\x00\x00\x14\x42\x00\x00\x00\x00\x00\x01\x00\x13\xd6\x34\
232-\x00\x00\x13\x96\x00\x00\x00\x00\x00\x01\x00\x13\xc7\xdc\
233-\x00\x00\x13\x70\x00\x00\x00\x00\x00\x01\x00\x13\xc5\xc5\
234+\x00\x00\x13\x04\x00\x00\x00\x00\x00\x01\x00\x13\xbe\x5f\
235+\x00\x00\x13\x74\x00\x00\x00\x00\x00\x01\x00\x13\xc5\xaa\
236+\x00\x00\x12\xb4\x00\x00\x00\x00\x00\x01\x00\x13\xb9\x03\
237+\x00\x00\x14\x52\x00\x00\x00\x00\x00\x01\x00\x13\xd8\x28\
238+\x00\x00\x13\xd4\x00\x00\x00\x00\x00\x01\x00\x13\xcd\xc0\
239+\x00\x00\x12\x5c\x00\x00\x00\x00\x00\x01\x00\x13\xb1\xcc\
240+\x00\x00\x14\xa4\x00\x00\x00\x00\x00\x01\x00\x13\xde\x2f\
241+\x00\x00\x13\x9c\x00\x00\x00\x00\x00\x01\x00\x13\xc9\x1e\
242+\x00\x00\x14\xf2\x00\x00\x00\x00\x00\x01\x00\x13\xe3\x5b\
243+\x00\x00\x12\x86\x00\x00\x00\x00\x00\x01\x00\x13\xb4\x6a\
244+\x00\x00\x14\x7e\x00\x00\x00\x00\x00\x01\x00\x13\xdb\x5b\
245+\x00\x00\x14\x28\x00\x00\x00\x00\x00\x01\x00\x13\xd5\xb0\
246+\x00\x00\x12\xda\x00\x00\x00\x00\x00\x01\x00\x13\xbb\xdd\
247+\x00\x00\x14\xce\x00\x00\x00\x00\x00\x01\x00\x13\xe1\x14\
248+\x00\x00\x13\xfc\x00\x00\x00\x00\x00\x01\x00\x13\xd1\x05\
249+\x00\x00\x13\x50\x00\x00\x00\x00\x00\x01\x00\x13\xc2\xad\
250+\x00\x00\x13\x2a\x00\x00\x00\x00\x00\x01\x00\x13\xc0\x96\
251 \x00\x00\x10\xb8\x00\x00\x00\x00\x00\x01\x00\x13\x99\xd5\
252 \x00\x00\x06\xcc\x00\x00\x00\x00\x00\x01\x00\x03\x48\x3a\
253 \x00\x00\x07\x4c\x00\x00\x00\x00\x00\x01\x00\x03\x4f\x00\
254@@ -82563,17 +82468,15 @@
255 \x00\x00\x08\xc0\x00\x00\x00\x00\x00\x01\x00\x10\x7c\x43\
256 \x00\x00\x08\xe0\x00\x00\x00\x00\x00\x01\x00\x10\x80\x20\
257 \x00\x00\x08\x9a\x00\x00\x00\x00\x00\x01\x00\x10\x79\xa5\
258-\x00\x00\x12\x1e\x00\x00\x00\x00\x00\x01\x00\x13\xb0\x3e\
259-\x00\x00\x12\x78\x00\x00\x00\x00\x00\x01\x00\x13\xb4\xf7\
260+\x00\x00\x11\xd8\x00\x00\x00\x00\x00\x01\x00\x13\xab\x0f\
261+\x00\x00\x12\x32\x00\x00\x00\x00\x00\x01\x00\x13\xaf\xc8\
262 \x00\x00\x11\x04\x00\x00\x00\x00\x00\x01\x00\x13\x9e\xa8\
263-\x00\x00\x11\x90\x00\x00\x00\x00\x00\x01\x00\x13\xa5\x36\
264-\x00\x00\x11\xfa\x00\x00\x00\x00\x00\x01\x00\x13\xad\x0b\
265-\x00\x00\x11\x5a\x00\x00\x00\x00\x00\x01\x00\x13\xa3\x3d\
266-\x00\x00\x11\xb4\x00\x00\x00\x00\x00\x01\x00\x13\xa7\xc7\
267-\x00\x00\x11\xd6\x00\x00\x00\x00\x00\x01\x00\x13\xa9\xda\
268-\x00\x00\x12\x54\x00\x00\x00\x00\x00\x01\x00\x13\xb2\x26\
269+\x00\x00\x11\xb4\x00\x00\x00\x00\x00\x01\x00\x13\xa7\xdc\
270+\x00\x00\x11\x38\x00\x00\x00\x00\x00\x01\x00\x13\xa0\x9f\
271+\x00\x00\x11\x6e\x00\x00\x00\x00\x00\x01\x00\x13\xa2\x98\
272+\x00\x00\x11\x90\x00\x00\x00\x00\x00\x01\x00\x13\xa4\xab\
273+\x00\x00\x12\x0e\x00\x00\x00\x00\x00\x01\x00\x13\xac\xf7\
274 \x00\x00\x10\xdc\x00\x00\x00\x00\x00\x01\x00\x13\x9b\xec\
275-\x00\x00\x11\x38\x00\x00\x00\x00\x00\x01\x00\x13\xa0\x9f\
276 \x00\x00\x0b\x2a\x00\x00\x00\x00\x00\x01\x00\x11\xe1\x6a\
277 \x00\x00\x0a\xae\x00\x00\x00\x00\x00\x01\x00\x11\xd8\x0f\
278 \x00\x00\x0a\x52\x00\x00\x00\x00\x00\x01\x00\x11\xd2\x4d\
279@@ -82640,3 +82543,4 @@
280 """
281 QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name,
282 qt_resource_data)
283+
284
285=== modified file 'openlp/core/ui/maindisplay.py'
286--- openlp/core/ui/maindisplay.py 2011-09-24 12:19:28 +0000
287+++ openlp/core/ui/maindisplay.py 2011-10-05 17:23:25 +0000
288@@ -194,7 +194,6 @@
289 self.setGeometry(self.screen[u'size'])
290 self.frame.evaluateJavaScript(u'show_text("%s")' %
291 slide.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'))
292- return self.preview()
293
294 def alert(self, text):
295 """
296@@ -256,7 +255,6 @@
297 image = self.imageManager.get_image_bytes(name)
298 self.resetVideo()
299 self.displayImage(image)
300- return self.preview()
301
302 def displayImage(self, image):
303 """
304@@ -387,7 +385,6 @@
305 # Update the preview frame.
306 if self.isLive:
307 Receiver.send_message(u'maindisplay_active')
308- return self.preview()
309
310 def videoState(self, newState, oldState):
311 """
312@@ -455,9 +452,8 @@
313 self.setVisible(True)
314 else:
315 self.setVisible(True)
316- preview = QtGui.QImage(self.screen[u'size'].width(),
317- self.screen[u'size'].height(),
318- QtGui.QImage.Format_ARGB32_Premultiplied)
319+ preview = QtGui.QPixmap(self.screen[u'size'].width(),
320+ self.screen[u'size'].height())
321 painter = QtGui.QPainter(preview)
322 painter.setRenderHint(QtGui.QPainter.Antialiasing)
323 self.frame.render(painter)
324
325=== modified file 'openlp/core/ui/slidecontroller.py'
326--- openlp/core/ui/slidecontroller.py 2011-10-01 07:28:45 +0000
327+++ openlp/core/ui/slidecontroller.py 2011-10-05 17:23:25 +0000
328@@ -118,7 +118,7 @@
329 self.previewListWidget.horizontalHeader().setVisible(False)
330 self.previewListWidget.setColumnWidth(0, self.controller.width())
331 self.previewListWidget.isLive = self.isLive
332- self.previewListWidget.setObjectName(u'PreviewListWidget')
333+ self.previewListWidget.setObjectName(u'previewListWidget')
334 self.previewListWidget.setSelectionBehavior(
335 QtGui.QAbstractItemView.SelectRows)
336 self.previewListWidget.setSelectionMode(
337@@ -288,14 +288,14 @@
338 QtGui.QSizePolicy.Label))
339 self.previewFrame.setFrameShape(QtGui.QFrame.StyledPanel)
340 self.previewFrame.setFrameShadow(QtGui.QFrame.Sunken)
341- self.previewFrame.setObjectName(u'PreviewFrame')
342+ self.previewFrame.setObjectName(u'previewFrame')
343 self.grid = QtGui.QGridLayout(self.previewFrame)
344 self.grid.setMargin(8)
345 self.grid.setObjectName(u'grid')
346 self.slideLayout = QtGui.QVBoxLayout()
347 self.slideLayout.setSpacing(0)
348 self.slideLayout.setMargin(0)
349- self.slideLayout.setObjectName(u'SlideLayout')
350+ self.slideLayout.setObjectName(u'slideLayout')
351 if not self.isLive:
352 self.mediaObject = Phonon.MediaObject(self)
353 self.video = Phonon.VideoWidget()
354@@ -319,7 +319,7 @@
355 self.slidePreview.setFrameShadow(QtGui.QFrame.Plain)
356 self.slidePreview.setLineWidth(1)
357 self.slidePreview.setScaledContents(True)
358- self.slidePreview.setObjectName(u'SlidePreview')
359+ self.slidePreview.setObjectName(u'slidePreview')
360 self.slideLayout.insertWidget(0, self.slidePreview)
361 self.grid.addLayout(self.slideLayout, 0, 0, 1, 1)
362 # Signals
363@@ -329,8 +329,6 @@
364 QtCore.QObject.connect(self.volumeSlider,
365 QtCore.SIGNAL(u'sliderReleased()'), self.mediaVolume)
366 QtCore.QObject.connect(Receiver.get_receiver(),
367- QtCore.SIGNAL(u'maindisplay_active'), self.updatePreview)
368- QtCore.QObject.connect(Receiver.get_receiver(),
369 QtCore.SIGNAL(u'slidecontroller_live_spin_delay'),
370 self.receiveSpinDelay)
371 self.toolbar.makeWidgetsInvisible(self.loopList)
372@@ -352,18 +350,12 @@
373 QtCore.SIGNAL(u'slidecontroller_%s_stop_loop' % self.typePrefix),
374 self.onStopLoop)
375 QtCore.QObject.connect(Receiver.get_receiver(),
376- QtCore.SIGNAL(u'slidecontroller_%s_first' % self.typePrefix),
377- self.onSlideSelectedFirst)
378- QtCore.QObject.connect(Receiver.get_receiver(),
379 QtCore.SIGNAL(u'slidecontroller_%s_next' % self.typePrefix),
380 self.onSlideSelectedNext)
381 QtCore.QObject.connect(Receiver.get_receiver(),
382 QtCore.SIGNAL(u'slidecontroller_%s_previous' % self.typePrefix),
383 self.onSlideSelectedPrevious)
384 QtCore.QObject.connect(Receiver.get_receiver(),
385- QtCore.SIGNAL(u'slidecontroller_%s_last' % self.typePrefix),
386- self.onSlideSelectedLast)
387- QtCore.QObject.connect(Receiver.get_receiver(),
388 QtCore.SIGNAL(u'slidecontroller_%s_change' % self.typePrefix),
389 self.onSlideChange)
390 QtCore.QObject.connect(Receiver.get_receiver(),
391@@ -375,9 +367,6 @@
392 QtCore.QObject.connect(Receiver.get_receiver(),
393 QtCore.SIGNAL(u'slidecontroller_%s_unblank' % self.typePrefix),
394 self.onSlideUnblank)
395- QtCore.QObject.connect(Receiver.get_receiver(),
396- QtCore.SIGNAL(u'slidecontroller_%s_text_request' % self.typePrefix),
397- self.onTextRequest)
398
399 def setPreviewHotkeys(self, parent=None):
400 self.previousItem.setObjectName(u'previousItemPreview')
401@@ -723,41 +712,7 @@
402 else:
403 self.__checkUpdateSelectedSlide(slideno)
404
405- def onTextRequest(self):
406- """
407- Return the text for the current item in controller
408- """
409- data = []
410- if self.serviceItem:
411- for framenumber, frame in enumerate(self.serviceItem.get_frames()):
412- dataItem = {}
413- if self.serviceItem.is_text():
414- dataItem[u'tag'] = unicode(frame[u'verseTag'])
415- dataItem[u'text'] = unicode(frame[u'html'])
416- else:
417- dataItem[u'tag'] = unicode(framenumber)
418- dataItem[u'text'] = u''
419- dataItem[u'selected'] = \
420- (self.previewListWidget.currentRow() == framenumber)
421- data.append(dataItem)
422- Receiver.send_message(u'slidecontroller_%s_text_response'
423- % self.typePrefix, data)
424-
425 # Screen event methods
426- def onSlideSelectedFirst(self):
427- """
428- Go to the first slide.
429- """
430- if not self.serviceItem:
431- return
432- if self.serviceItem.is_command():
433- Receiver.send_message(u'%s_first' % self.serviceItem.name.lower(),
434- [self.serviceItem, self.isLive])
435- self.updatePreview()
436- else:
437- self.previewListWidget.selectRow(0)
438- self.slideSelected()
439-
440 def onSlideSelectedIndex(self, message):
441 """
442 Go to the requested slide
443@@ -936,20 +891,18 @@
444 Receiver.send_message(
445 u'%s_slide' % self.serviceItem.name.lower(),
446 [self.serviceItem, self.isLive, row])
447- self.updatePreview()
448 else:
449 toDisplay = self.serviceItem.get_rendered_frame(row)
450 if self.serviceItem.is_text():
451- frame = self.display.text(toDisplay)
452+ self.display.text(toDisplay)
453 else:
454 if start:
455 self.display.buildHtml(self.serviceItem, toDisplay)
456- frame = self.display.preview()
457 else:
458- frame = self.display.image(toDisplay)
459+ self.display.image(toDisplay)
460 # reset the store used to display first image
461 self.serviceItem.bg_image_bytes = None
462- self.slidePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
463+ self.updatePreview()
464 self.selectedRow = row
465 self.__checkUpdateSelectedSlide(row)
466 Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix,
467@@ -977,8 +930,7 @@
468 QtCore.QTimer.singleShot(0.5, self.grabMainDisplay)
469 QtCore.QTimer.singleShot(2.5, self.grabMainDisplay)
470 else:
471- self.slidePreview.setPixmap(
472- QtGui.QPixmap.fromImage(self.display.preview()))
473+ self.slidePreview.setPixmap(self.display.preview())
474
475 def grabMainDisplay(self):
476 """
477@@ -1041,21 +993,6 @@
478 self.previewListWidget.item(row + 1, 0))
479 self.previewListWidget.selectRow(row)
480
481- def onSlideSelectedLast(self):
482- """
483- Go to the last slide.
484- """
485- if not self.serviceItem:
486- return
487- Receiver.send_message(u'%s_last' % self.serviceItem.name.lower(),
488- [self.serviceItem, self.isLive])
489- if self.serviceItem.is_command():
490- self.updatePreview()
491- else:
492- self.previewListWidget.selectRow(
493- self.previewListWidget.rowCount() - 1)
494- self.slideSelected()
495-
496 def onToggleLoop(self):
497 """
498 Toggles the loop state.
499
500=== modified file 'openlp/core/ui/themeform.py'
501--- openlp/core/ui/themeform.py 2011-08-20 15:02:57 +0000
502+++ openlp/core/ui/themeform.py 2011-10-05 17:23:25 +0000
503@@ -232,7 +232,7 @@
504 if self.page(pageId) == self.previewPage:
505 self.updateTheme()
506 frame = self.thememanager.generateImage(self.theme)
507- self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
508+ self.previewBoxLabel.setPixmap(frame)
509 self.displayAspectRatio = float(frame.width()) / frame.height()
510 self.resizeEvent()
511
512
513=== modified file 'resources/images/openlp-2.qrc'
514--- resources/images/openlp-2.qrc 2011-07-08 07:46:25 +0000
515+++ resources/images/openlp-2.qrc 2011-10-05 17:23:25 +0000
516@@ -60,8 +60,6 @@
517 </qresource>
518 <qresource prefix="slides">
519 <file>slide_close.png</file>
520- <file>slide_first.png</file>
521- <file>slide_last.png</file>
522 <file>slide_next.png</file>
523 <file>slide_blank.png</file>
524 <file>slide_desktop.png</file>
525
526=== removed file 'resources/images/slide_first.png'
527Binary files resources/images/slide_first.png 2010-09-14 18:18:47 +0000 and resources/images/slide_first.png 1970-01-01 00:00:00 +0000 differ
528=== removed file 'resources/images/slide_last.png'
529Binary files resources/images/slide_last.png 2010-09-14 18:18:47 +0000 and resources/images/slide_last.png 1970-01-01 00:00:00 +0000 differ
530=== modified file 'scripts/check_dependencies.py'
531--- scripts/check_dependencies.py 2011-09-02 11:10:07 +0000
532+++ scripts/check_dependencies.py 2011-10-05 17:23:25 +0000
533@@ -8,7 +8,7 @@
534 # Copyright (c) 2008-2011 Raoul Snyman #
535 # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
536 # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
537-# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
538+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
539 # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
540 # Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
541 # --------------------------------------------------------------------------- #
542
543=== modified file 'scripts/generate_resources.sh'
544--- scripts/generate_resources.sh 2011-05-24 20:47:05 +0000
545+++ scripts/generate_resources.sh 2011-10-05 17:23:25 +0000
546@@ -5,11 +5,11 @@
547 # OpenLP - Open Source Lyrics Projection #
548 # --------------------------------------------------------------------------- #
549 # Copyright (c) 2008-2011 Raoul Snyman #
550-# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael #
551-# Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, Armin Köhler, #
552-# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, #
553-# Jeffrey Smith, Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode #
554-# Woldsund #
555+# Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
556+# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
557+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
558+# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
559+# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
560 # --------------------------------------------------------------------------- #
561 # This program is free software; you can redistribute it and/or modify it #
562 # under the terms of the GNU General Public License as published by the Free #
563
564=== modified file 'testing/conftest.py'
565--- testing/conftest.py 2011-09-12 20:35:39 +0000
566+++ testing/conftest.py 2011-10-05 17:23:25 +0000
567@@ -8,7 +8,7 @@
568 # Copyright (c) 2008-2011 Raoul Snyman #
569 # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
570 # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
571-# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
572+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
573 # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
574 # Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
575 # --------------------------------------------------------------------------- #
576
577=== modified file 'testing/test_app.py'
578--- testing/test_app.py 2011-09-12 20:35:39 +0000
579+++ testing/test_app.py 2011-10-05 17:23:25 +0000
580@@ -8,7 +8,7 @@
581 # Copyright (c) 2008-2011 Raoul Snyman #
582 # Portions copyright (c) 2008-2011 Tim Bentley, Gerald Britton, Jonathan #
583 # Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, #
584-# Armin Köhler, Joshua Millar, Stevan Pettit, Andreas Preikschat, Mattias #
585+# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias #
586 # Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
587 # Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund #
588 # --------------------------------------------------------------------------- #