Compare commits

...

243 Commits

Author SHA1 Message Date
Tim Bentley 80c651a272 Release 2.0.5
bzr-revno: 2200
2014-06-28 19:51:06 +01:00
Tomas Groth 9e7cb3cb88 Use the legacy layout of biblegateway
bzr-revno: 2199
2014-06-26 23:37:10 +02:00
Tomas Groth a37231dfd9 Workaround for new biblegateway layout 2014-06-26 10:23:16 +02:00
Tomas Groth 882ad4b23a Improve PowerPoint error handling
bzr-revno: 2198
2014-06-25 21:31:09 +01:00
Tomas Groth 788ab206f9 Added logging of full stacktraces 2014-06-24 09:01:41 +02:00
Tomas Groth fee8a1c4a3 Fixed typo 2014-06-23 10:51:17 +02:00
Tomas Groth bd7ca6b54b Fix for #719514 'Themes: <file> and <otherfile> are the same file'
bzr-revno: 2197
Fixes: https://launchpad.net/bugs/719514
2014-06-22 22:39:30 +02:00
Tomas Groth a3f15f1e82 Fixed exception catching and logging. 2014-06-22 21:51:19 +02:00
Tomas Groth f74413ebe0 yet another go at minimizing ppt 2013 2014-06-19 09:21:10 +02:00
Tomas Groth b0081a68b0 yet another go at minimizing ppt 2013 2014-06-18 14:11:52 +02:00
Tomas Groth 1e4c08746c another go at minimizing ppt 2013 2014-06-18 13:39:28 +02:00
Tomas Groth 248c0fbf41 Added another try/catch, try to fix 1303381
Fixes: https://launchpad.net/bugs/1303381
2014-06-18 11:35:37 +02:00
Tomas Groth 8f7c22ecc2 Don't use presentation until it actually exists 2014-06-18 08:33:15 +02:00
Tomas Groth 6928018f59 More powerpoint exception catching. Added an error message. Also auto minimize of Powerpoint 2013 2014-06-17 23:31:04 +02:00
Tomas Groth 90adc1acca Try to catch more powerpoint COM exceptions 2014-06-16 22:50:39 +02:00
Tomas Groth 93e25d2aa6 fixed bug #719514 ' Themes: <file> and <otherfile> are the same file'
Fixes: https://launchpad.net/bugs/719514
2014-06-15 22:28:26 +02:00
Samuel Mehrbrodt a045ae3533 Add proper error messages to EasyWorship import.
Also make sure that Songs.db (lowercase ending) is also being recognized.

bzr-revno: 2196
Fixes: https://launchpad.net/bugs/1326664
2014-06-12 20:55:53 +02:00
Samuel Mehrbrodt 7f3f866a00 Fixes 2014-06-11 07:26:29 +02:00
Samuel Mehrbrodt bc6eca2dec Better wording, indentation 2014-06-11 07:24:25 +02:00
Tim Bentley cd75e43419 Correct Desktop file
bzr-revno: 2195
2014-06-11 06:10:34 +01:00
Tim Bentley cb4083558f Remove comment 2014-06-10 17:26:52 +01:00
Tim Bentley de2496bc51 Update desktop file
Fixes: https://launchpad.net/bugs/1328214
2014-06-09 19:24:02 +01:00
Tim Bentley f1a90fffeb head 2014-06-09 19:16:49 +01:00
Samuel Mehrbrodt d3923fa08c Fix different method and variable names 2014-06-09 10:20:34 +02:00
Samuel Mehrbrodt f79fe709b1 Give proper error messages in EW Import
Fixes: https://launchpad.net/bugs/1326664
2014-06-09 10:07:13 +02:00
Tomas Groth 31d7ec80ae Fix crash when importing EW DB with unexpected data formatting.
bzr-revno: 2194
2014-06-08 08:59:24 +01:00
Samuel Mehrbrodt 725be17e7e Fix bug 1310523 by not allowing more than 26 equal verse names
bzr-revno: 2193
Fixes: https://launchpad.net/bugs/1310523
2014-05-27 22:28:35 +02:00
Tomas Groth bc1675419d Fixed spelling in comment. 2014-05-20 18:19:06 +02:00
Tomas Groth 764768f8ac fixed bug #1299837 - crash when importing EW DB with unexpected data formatting
Fixes: https://launchpad.net/bugs/1299837
2014-05-15 21:19:53 +02:00
Samuel Mehrbrodt 20e9c1dd4c Remove print 2014-04-21 15:41:18 +02:00
Samuel Mehrbrodt c4b4df4990 Check on song edit form for equal verse names 2014-04-21 15:40:30 +02:00
Samuel Mehrbrodt 8662e76ccf Fix bug 1310523
Fixes: https://launchpad.net/bugs/1310523
2014-04-21 11:18:52 +02:00
Andreas Preikschat 9e5a80fbd2 Fixed bug #1296104: Renderer broken when two option breaks next to each other
bzr-revno: 2192
Fixes: https://launchpad.net/bugs/1296104
2014-03-30 12:55:55 +02:00
Raoul Snyman 3aed29094f Fix bug #1136278 by trying to detect when an upgrade has already been performed.
bzr-revno: 2191
Fixes: https://launchpad.net/bugs/1136278
2014-03-26 21:44:27 +02:00
Andreas Preikschat ad0e6a29f2 Fixed bug #1296104 ( Renderer broken when two option breaks next to each other)
Fixes: https://launchpad.net/bugs/1296104
2014-03-22 18:59:22 +01:00
Raoul Snyman a31f2c68f6 Fix bug #1136278 by trying to detect that the upgrades have already been performed 2014-03-11 22:34:35 +02:00
Tim Bentley 9c218359ae Head 2.0.4 2014-02-14 18:34:04 +00:00
Raoul Snyman f0d5e6c530 Release 2.0.4
bzr-revno: 2190
2014-02-01 21:00:05 +02:00
Martin Zibricky dc3795212b Workaround for OSX for the bug #1247661 with the dock icon click.
bzr-revno: 2189
2014-02-01 08:15:47 +00:00
Martin Zibricky c27a826806 Merge from 2.0 trunk. 2014-01-30 08:25:04 +01:00
Martin Zibricky 252701451d Fix bug #1247661 by restoring the main window when it was previously minimized and user switch to OpenLP from another app. 2014-01-30 08:16:36 +01:00
Raoul Snyman a5bc372c29 Try to fix bug #1157938 by changing all the png icons to svg
Change the copyright year

bzr-revno: 2188
2014-01-19 08:10:39 +00:00
Raoul Snyman 5f8a9c0e8d Remove .directory file and clean up .bzrignore file 2014-01-18 23:26:11 +02:00
Tim Bentley ee1490f306 Fix live escape when images are looping
bzr-revno: 2187
2014-01-18 08:47:01 +00:00
Tim Bentley 1e9ea145e3 Head 2014-01-18 07:56:50 +00:00
Tim Bentley 2c9f6f3ec6 Stop the loop when escape is pressed
Fixes: https://launchpad.net/bugs/1266271
2014-01-18 07:45:34 +00:00
Raoul Snyman 0c1b3b2fae Try to fix bug #1157938 by changing all the png icons to svg
Fixes: https://launchpad.net/bugs/1157938
2014-01-14 21:46:13 +02:00
Raoul Snyman 17fe423757 Oops, forgot that copyright. 2014-01-14 21:25:18 +02:00
Raoul Snyman 99c84a0456 Updated resource file and copyright notice. 2014-01-14 21:24:22 +02:00
Raoul Snyman 109030c2c2 Fix bug #1265368 by responding to clicks on both the item and the header, rather than the selection changing, which caused a harmless traceback when controlled from the remote.
bzr-revno: 2186
Fixes: https://launchpad.net/bugs/1265368
2014-01-05 23:07:12 +02:00
Tim Bentley 3c66e2f304 Head 2014-01-02 21:44:40 +00:00
Raoul Snyman 7e020aab13 Fix bug #1265368 by responding to clicks on both the item and the header, rather than the selection changing, which caused a harmless traceback when controlled from the remote.
Fixes: https://launchpad.net/bugs/1265368
2014-01-02 22:58:13 +02:00
Raoul Snyman 13d78d3414 Fix bug #1216234 by disabling the layout combobox when a second Bible is selected.
bzr-revno: 2185
Fixes: https://launchpad.net/bugs/1216234
2014-01-02 22:53:16 +02:00
Raoul Snyman a8999f188a Fix bug #1216234 by disabling the layout combobox when a second Bible is selected
Fixes: https://launchpad.net/bugs/1216234
2014-01-01 18:02:12 +02:00
Raoul Snyman e4a95be2b8 Attempt to fix bug #1154467 by waiting 10ms and retrying the commit
bzr-revno: 2184
Fixes: https://launchpad.net/bugs/1154467
2013-12-29 23:55:54 +02:00
Raoul Snyman e56593c2c2 Fix bug #1211049: select a user agent from a list, depending on the platform.
bzr-revno: 2183
Fixes: https://launchpad.net/bugs/1211049
2013-12-29 00:23:30 +02:00
Raoul Snyman 4fdd9708b0 Add a 10ms wait before trying again. 2013-12-29 00:20:13 +02:00
Raoul Snyman fac434ee62 Fix bug #1206886: only write to the socket if it exists
bzr-revno: 2182
Fixes: https://launchpad.net/bugs/1206886
2013-12-24 01:27:58 +02:00
Raoul Snyman e29f76f02c When a user clicks on the row headers (yes, in 4 years no one has done that), the row is selected but the slide doesn't change. This fixes that.
bzr-revno: 2181
Fixes: https://launchpad.net/bugs/1259606
2013-12-24 01:25:39 +02:00
Raoul Snyman 232492b57e Fix bug #1206886: only write to the socket if it exists 2013-12-22 01:26:36 +02:00
Raoul Snyman 3a2686be24 Attempt to fix bug #1154467 by retrying the commit if it fails 2013-12-22 00:45:33 +02:00
Philip Ridout 6d86abaa37 It appears that when a url encoded in unicode is requested with urllib2.urlopen .getUrl() returns unicode. However the url that we request in the biblegateway importer contains redirects. In this case the redirect uses an utf-8 url (im guessing that) urllib2 takes this as an utf-8 encoded url, so returns getUrl() encoded as utf-8.
bzr-revno: 2180
Fixes: https://launchpad.net/bugs/1251437
2013-12-21 00:14:21 +02:00
Raoul Snyman 687ca79e10 Fixed bug #1259606 by changing the signal from clicked() to itemSelectionChanged()
Fixes: https://launchpad.net/bugs/1259606
2013-12-21 00:00:15 +02:00
Raoul Snyman a023e63f21 Specify OpenLP as the user agent when querying SF.net 2013-12-20 21:36:31 +02:00
Andreas Preikschat 7fc411f614 updated i18n
bzr-revno: 2179
2013-12-19 23:10:12 +01:00
Andreas Preikschat 448b728a41 updated i18n 2013-12-16 00:12:03 +01:00
Andreas Preikschat 87998687a8 head 2013-12-16 00:05:21 +01:00
Raoul Snyman 60b7f2dbbd Some unnecessary things removed 2013-12-13 22:41:16 +02:00
Raoul Snyman 730345b75e Fix bug #1211049: select a user agent from a list, depending on the platform.
Fixes: https://launchpad.net/bugs/1211049
2013-12-13 21:57:49 +02:00
Jonathan Springer 7c05f002ba Fix shortcutlistform to pass all keyboard events to the keyReleaseEvent handler because on Mac OS X when the Command key is pressed together with another key a keyReleaseEvent isn't generated.
bzr-revno: 2178
2013-12-09 18:45:39 +00:00
Jonathan Springer 1133f2e0c7 pass all keyboard events to shortcut dialog 2013-12-09 07:24:21 -05:00
Philip Ridout c40b116824 Fix for bug #1258634 by converting notes to unicode from QString
bzr-revno: 2177
2013-12-09 12:44:16 +02:00
Philip Ridout 1039c5ace8 Fixed bug1222534 by using userData rather than relying on a translated string.
bzr-revno: 2176
2013-12-07 19:57:48 +00:00
Philip Ridout df95a1685b Changing theme on bible settings tab causes an error when saving service
bzr-revno: 2175
2013-12-07 19:56:25 +00:00
Philip Ridout 4359a724b1 removed added bugging code 2013-12-07 09:25:39 +00:00
Philip Ridout 664326af5b fixes bug1251437 by detecting if the returned url is encoded in unicode 2013-12-07 09:21:12 +00:00
Philip Ridout b047f24ff1 Whoops. Properly fixed now. 2013-12-06 20:25:05 +00:00
Philip Ridout a9d9d6b1ef Convert notes to unicode from QString 2013-12-06 20:00:06 +00:00
Philip Ridout 24834b66ee fixed bug1252477 2013-11-20 19:31:35 +00:00
Philip Ridout b6b9f248af Fixed bug1222534 ny using userData rather than relying on a translated string 2013-11-19 22:04:51 +00:00
Oliver Wieland c14cb6674c Partially fix of Bug #1173749 and bug #1199639
Validates the tags in the lyrics on editing a song. If there are misplaced tags, a message box will appear.
Tags must be closed before the end of a verse.

bzr-revno: 2174
Fixes: https://launchpad.net/bugs/1173749, https://launchpad.net/bugs/1199639
2013-11-18 23:18:02 +02:00
Philip Ridout 0044d4db14 Fix bug #1012110 by encoding the file name with the file system encoding
bzr-revno: 2173
Fixes: https://launchpad.net/bugs/1012110
2013-10-26 21:27:41 +02:00
Oliver Wieland 35305ae322 reimplements the fade out/in on slide changes for transition between two identical slides.
bzr-revno: 2172
Fixes: https://launchpad.net/bugs/1223841
2013-10-21 09:43:39 +02:00
Philip Ridout d6eb08c759 Final touches 2013-10-17 21:15:35 +01:00
Philip Ridout 2e10a4b0ea tided up pptviewcontroller and ppttest 2013-10-15 21:58:56 +01:00
Philip Ridout eb614bdf38 fixes to ppttest.py 2013-10-15 20:42:17 +01:00
Philip Ridout 35ba1c9052 Unicodified the pptview dll. 2013-10-15 20:29:22 +01:00
Oliver Wieland 684538214c validate all verses before showing a message box and list all verses with misplaced tags at once 2013-10-10 18:20:59 +02:00
Philip Ridout a7a51a2ff6 Refactored to use os.path.normpath and os.path.join 2013-10-06 09:28:03 +01:00
Dmitriy Marmyshev ad0578f20b Fixed: replacing background with video unblank screen even if "Blanked to Theme" and shows content
bzr-revno: 2171
Fixes: https://launchpad.net/bugs/1225763
2013-10-06 07:16:46 +01:00
Philip Ridout 1cf4b8f4ce fixes bug #1012110 by encoding the file name with the filesystemencoding 2013-10-04 19:50:54 +01:00
Dmitriy Marmyshev f555a103f0 Fix bug #1117098: Transparent theme is white on Mac OS X
bzr-revno: 2170
Fixes: https://launchpad.net/bugs/1117098
2013-10-04 00:05:49 +02:00
Oliver Wieland 3896d2845e updated to V2.0.3 2013-10-03 12:21:28 +02:00
Dmitriy Marmyshev 7998ca7702 Fixed: replacing background with video unblank screen even if "Blanked to Theme" and shows content.
Fixes: https://launchpad.net/bugs/1225763
2013-09-18 19:18:06 +04:00
Dmitriy Marmyshev 413c318427 Removes border, but not affects to OSX border and shadow 2013-09-18 10:47:33 +04:00
Dmitriy Marmyshev 0dd6c38139 fixed transparent display for OS X
Fixes: https://launchpad.net/bugs/1117098
2013-09-17 20:33:18 +04:00
Andreas Preikschat c17826937c version file
bzr-revno: 2169
2013-09-14 17:49:08 +02:00
Andreas Preikschat eaf238b160 i18n
bzr-revno: 2168
2013-09-14 13:17:02 +02:00
Andreas Preikschat 1f805c05ae i18n 2013-09-14 13:11:14 +02:00
Oliver Wieland ddd644d874 clear timer on quick slide changes 2013-09-12 20:57:15 +02:00
Oliver Wieland 9bb6d699c7 Fixes bug 1223841: Transition does not work if texts are the same
Fixes: https://launchpad.net/bugs/1223841
2013-09-12 20:38:46 +02:00
Andreas Preikschat 3c6bc07dc1 head 2013-09-11 14:19:53 +02:00
Raoul Snyman 6d985964f9 Fix bug #1216785 by casting to unicode before adding to the service.
bzr-revno: 2167
2013-08-26 21:13:33 +01:00
Raoul Snyman 61a5e55d12 Fix bug #1216785 by casting the notes text to unicode first.
Fixes: https://launchpad.net/bugs/1216785
2013-08-26 21:18:36 +02:00
Oliver Wieland 217ed36ee1 remove empty lines 2013-08-26 19:58:45 +02:00
Oliver Wieland 85813a1f99 removed debug log 2013-08-24 17:58:23 +02:00
Oliver Wieland 25b56cff3e Added validation of tags in the song lyrics
Fixes partly bug #1173749
2013-08-24 09:23:52 +02:00
Tim Bentley 81cd369bfe Fix bug #1216044: Lyrics were being deleted when saving songs.
bzr-revno: 2166
Fixes: https://launchpad.net/bugs/1216044
2013-08-24 02:07:23 +02:00
Tim Bentley 9648e0c81b Fix code so values saved 2013-08-23 19:37:36 +01:00
Raoul Snyman c359a1cfd2 Fix bug #1215302: Add the .divx extension to VLC
bzr-revno: 2165
Fixes: https://launchpad.net/bugs/1215302
2013-08-22 22:49:17 +02:00
Raoul Snyman 4fe68f43c6 Fix bug #1215302 by adding the .divx extension to the list in vlcplayer
Fixes: https://launchpad.net/bugs/1215302
2013-08-22 11:02:18 +02:00
Arjan Schrijver 9c269d5f31 Fixed bug #1214875: Importing an OSIS bible no longer always results in English book names
bzr-revno: 2164
Fixes: https://launchpad.net/bugs/1214875
2013-08-22 09:15:39 +02:00
Philip Ridout 5090d48ee7 Fix bug #1209515 by subclassing QFileDialog and attempting to urldecode any files not found
bzr-revno: 2163
Fixes: https://launchpad.net/bugs/1209515
2013-08-21 22:26:53 +02:00
Arjan Schrijver d6746bb76b Handle an unknown bible language nicely 2013-08-21 22:14:11 +02:00
Philip Ridout 0b6d389f35 Fix bug #1194610 by detecting the encoding rather than assuming that it set (because its not) add fall back to the windows encoding dialog
bzr-revno: 2162
Fixes: https://launchpad.net/bugs/1194610
2013-08-21 21:54:14 +02:00
Arjan Schrijver 7ba834689d Save the translated name in the bible database file 2013-08-21 14:58:23 +02:00
Arjan Schrijver fe5c144dce Removed needless unicode() call 2013-08-21 14:47:32 +02:00
Arjan Schrijver 621ef0b6e6 fixed bug #1214875 'Importing an OSIS bible always results in English book names'
Fixes: https://launchpad.net/bugs/1214875
2013-08-21 14:39:22 +02:00
Philip Ridout e802d577fd Removed loop 2013-08-21 05:30:11 +00:00
Philip Ridout 7cc9f9ae7b reinstate retrieve_windows_encoding dialog 2013-08-20 21:19:11 +00:00
Raoul Snyman 5bd7479dca Fix bug #1088800 by adding ".pptm" to the list of acceptable file extensions.
bzr-revno: 2161
Fixes: https://launchpad.net/bugs/1088800
2013-08-20 22:26:39 +02:00
Raoul Snyman 4b70323994 Added a fix for songs, related to bug #1194622.
bzr-revno: 2160
2013-08-20 22:18:17 +02:00
Philip Ridout e87bbc07c3 Fix bug #1213254 by filtering out invalid xml chars
bzr-revno: 2159
Fixes: https://launchpad.net/bugs/1213254
2013-08-20 22:07:57 +02:00
Philip Ridout d181cd9afb Fix bug #1197659 by setting the default attribute on the save button when the tag is edited
bzr-revno: 2158
Fixes: https://launchpad.net/bugs/1197659
2013-08-20 22:04:01 +02:00
Raoul Snyman 1b4bee8509 Fix bug #1212801 where the song edit form did not clear a previously set theme.
bzr-revno: 2157
Fixes: https://launchpad.net/bugs/1212801
2013-08-20 22:00:17 +02:00
Philip Ridout 82a7641302 Fix bug #1184869: Ensure that there is text in the anchor tag
bzr-revno: 2156
Fixes: https://launchpad.net/bugs/1184869
2013-08-20 21:56:17 +02:00
Philip Ridout 647331c00c added doc strings 2013-08-20 19:38:50 +00:00
Raoul Snyman a869c2401b Added a fix for songs as well.
Fixes: https://launchpad.net/bugs/1194622
2013-08-20 21:05:26 +02:00
Raoul Snyman d7fcf9e4f6 Fix bug #1088800 by adding ".pptm" to the list of acceptable file extensions.
Fixes: https://launchpad.net/bugs/1088800
2013-08-20 20:30:15 +02:00
Raoul Snyman 24a94c0478 Fix bug #1194622: skip the Bibles page if the Bibles plugin is not enabled.
bzr-revno: 2155
2013-08-20 18:41:51 +01:00
Philip Ridout c7b11e07c7 Fixes #1211913. The case of field names can change, so have taken that in to account by converting them to upper case
bzr-revno: 2154
2013-08-20 18:40:27 +01:00
Raoul Snyman c620a303e2 Fix bug #1194622: skip the Bibles page if the Bibles plugin is not enabled.
Fixes: https://launchpad.net/bugs/1194622
2013-08-19 23:09:52 +02:00
Philip Ridout 5e6d30f750 merged two methods in to one and made them module level 2013-08-19 20:17:09 +00:00
Philip Ridout 0c3985f88e added file open mode 2013-08-18 20:44:48 +00:00
Philip Ridout aee52232d3 Fixes #1197659 by seting the default attribut on the save button when the tag is edited 2013-08-18 06:48:55 +00:00
Philip Ridout 3a551d08c0 Space reinstated as per PEP8 2013-08-17 08:51:08 +00:00
Philip Ridout 9f7e32cd31 fixes #1213254 by filtering out invalid xml chars 2013-08-17 09:10:25 +01:00
Philip Ridout d492c2fecd fixes #1213254 by filtering out invalid xml chars 2013-08-17 08:37:36 +01:00
Philip Ridout bb5aacfb6a Fixes #1096450 Stripping the leading and trailing spaces at the end rather than begginning (the space means something, see added comments)
Semi-colons (;) denotes comments ONLY when it is the first char of the line ie the whole line is a comment
Finally fixed an issue when a verse was being added to the verse order multiple times, thus repeating it over and over and ....

bzr-revno: 2153
Fixes: https://launchpad.net/bugs/1096450
2013-08-16 22:39:55 +02:00
Philip Ridout 6a0771392d renamed strings, remove unused logger import 2013-08-16 06:20:21 +01:00
Raoul Snyman 047a0b3085 Fix bug #1212801 where the song edit form did not clear a previously set theme.
Fixes: https://launchpad.net/bugs/1212801
2013-08-15 21:57:23 +02:00
Philip Ridout 1478636c97 Fixes #1211913. The case can change of field names, so have taken that in to account by converting them to upper case 2013-08-14 21:22:17 +01:00
Philip Ridout d724a6c872 changed fallback to cp1252 2013-08-14 06:07:23 +01:00
Philip Ridout 711fa05dc1 added option to select windows encoding 2013-08-13 21:33:26 +01:00
Philip Ridout 12fb5ebd46 Need to encode filename to unicode 2013-08-13 18:57:18 +01:00
Philip Ridout bc214ac990 Indented line to show continuation 2013-08-12 19:19:57 +01:00
Philip Ridout 4fac956dca Fix bug #1194730 by checking that a div is actually returned
bzr-revno: 2152
2013-08-12 13:50:01 +02:00
Philip Ridout d42364671e Changed to static metod 2013-08-11 21:16:27 +01:00
Philip Ridout 0e155daaf6 removed __init__ as its not needed 2013-08-10 21:40:12 +01:00
Philip Ridout 03638ddea6 Fixes #1209515 by subclassing QFileDialog and attempting to urldecode any files not found 2013-08-10 11:16:15 +01:00
Philip Ridout fd64e24170 Fixes #1096450 Stripping the leading and trailing spaces at the end rather than begginning (the space means something, see added comments)
Semi-colons (;) denotes comments ONLY when it is the first char of the line ie the whole line is a comment
Finally fixed an issue when a verse was being added to the verse order multiple times, thus repeating it over and over and ....
2013-08-04 13:11:30 +01:00
Philip Ridout 2c9910d6ad fixes 1194730 by returning None if the verse does not exist 2013-08-03 21:26:46 +01:00
Philip Ridout a37ae5880f Fixes #1184869 Ensures that there is text in the anchor tag 2013-08-02 22:15:52 +01:00
Philip Ridout c3b703ec8a Fixes # 1194610 by detecting the encoding rather than assuming that its cp1252 2013-08-02 20:44:54 +01:00
Philip Ridout 3ec0337649 changed skip_song to save_song & changed logic arround
bzr-revno: 2151
Fixes: https://launchpad.net/bugs/1174039
2013-07-31 19:34:55 +02:00
Philip Ridout 3eafcdeb0f Fixed #1204629 so that typing an image path actually changes the background.
Made the page validation more robust by including the fileDialog

bzr-revno: 2150
Fixes: https://launchpad.net/bugs/1204629
2013-07-31 19:34:31 +02:00
Philip Ridout 06b5e7c55f removed extra spaces 2013-07-25 20:27:43 +01:00
Philip Ridout a7130ce666 fixed 1204629 in 2.0 also made it more robust by checking that the user selected a valid image file using the open dialog 2013-07-25 19:58:09 +01:00
Philip Ridout 257fa70ab4 fixed logic 2013-07-24 21:05:36 +01:00
Philip Ridout 4e3b92516d changed skip_song to save_song 2013-07-24 19:41:38 +01:00
Philip Ridout 201dc353ff Fixed bug 1174039 2013-07-23 20:30:47 +01:00
Tim Bentley 8b21731f72 Fix two small but nasty bugs. Screen width must be > 0 and an image theme must be a file
bzr-revno: 2149
2013-07-11 21:46:43 +01:00
Tim Bentley 355f662ec9 pedent 2013-07-11 21:40:42 +01:00
Tim Bentley 972140f3ad make suffix lower 2013-07-11 21:16:15 +01:00
Tim Bentley 61b769a064 Make to code more robust 2013-07-11 20:19:26 +01:00
Tim Bentley 98b5c6b1fd A width must have a valid minumum
Fixes: https://launchpad.net/bugs/1196926
2013-07-11 18:49:06 +01:00
Tim Bentley 0d20b58c04 Fix problem with invalid theme path
Fixes: https://launchpad.net/bugs/1197376
2013-07-11 18:23:20 +01:00
Tim Bentley 973ac570b5 Fix type error for tags
bzr-revno: 2148
2013-07-09 20:40:31 +01:00
Tim Bentley 1f8e9017b2 Fix data type 2013-07-08 17:58:06 +01:00
Tim Bentley 9890047cb4 Head 2013-07-08 17:41:42 +01:00
Tomas Groth 289ee5ba40 Migrate service files from pickle to json and replace osd with osj
bzr-revno: 2147
2013-07-05 16:42:48 +01:00
Tim Bentley 8f3501e74b move formatting tags to json from pickle
bzr-revno: 2146
2013-06-30 19:43:28 +01:00
Tomas Groth 5c8c3145bc Change service format from pickle based to json based. 2013-06-30 14:14:30 +02:00
Tim Bentley eec7a8490c Remove pickle from displaytags and move to json 2013-06-30 06:12:57 +01:00
Tim Bentley ca2c6ebeb7 Head 2013-06-29 21:43:05 +01:00
Andreas Preikschat ef6ad096f6 updated ts files 2013-06-21 11:10:03 +02:00
Andreas Preikschat 1ff6d288e7 updated ts files 2013-06-21 10:57:30 +02:00
Andreas Preikschat ce96bb6179 head 2013-06-21 10:55:45 +02:00
Andreas Preikschat 1760e68a9f - fixes bug #1170435 (We should not warn when verse order is empty)
bzr-revno: 2145
Fixes: https://launchpad.net/bugs/1170435
2013-06-21 10:54:46 +02:00
Andreas Preikschat 9b1d52f473 head 2013-06-16 19:20:28 +02:00
Andreas Preikschat 1b7d5f2f0e added second warning 2013-06-16 19:19:32 +02:00
Andreas Preikschat 1a28c9714e Increased possible min/max line spacing
bzr-revno: 2144
2013-06-16 15:38:14 +01:00
Andreas Preikschat e1085a1798 increased possible min/max line spacing
Fixes: https://launchpad.net/bugs/645452
2013-06-14 11:54:59 +02:00
Andreas Preikschat 55c038f283 updated ts files
bzr-revno: 2143
2013-04-29 20:44:24 +02:00
Andreas Preikschat eb6f72274f updated 2.0 translation files 2013-04-25 09:10:47 +02:00
Martin Zibricky 496540257a This change should use the download url directly from download.cfg file and not connectiong to openlp.org for every download. (bug #1160506)
bzr-revno: 2142
Fixes: https://launchpad.net/bugs/1160506
2013-04-20 11:27:35 +02:00
Andreas Preikschat fd48e98598 fixed bug-1170435
Fixes: https://launchpad.net/bugs/1170435
2013-04-18 19:53:01 +02:00
Andreas Preikschat 2b02a3f868 Fix file filters
bzr-revno: 2141
2013-04-14 19:21:40 +01:00
Martin Zibricky 576524b873 Bug #1160506 - remove print statement. 2013-04-11 12:06:44 +02:00
Martin Zibricky 1c4c2e3636 Bug #1160506 - wrap url constructions into join_url() function. 2013-04-09 11:53:42 +02:00
Martin Zibricky caf1290a16 Fixed bug #1160506 - use download settings exlusively from download.cfg. 2013-04-05 23:31:23 +02:00
Andreas Preikschat 513535db0c updated translations 2013-03-30 16:05:48 +01:00
Andreas Preikschat e2c81aaf00 replaced other file masks 2013-03-19 20:22:10 +01:00
Andreas Preikschat 9a543d395a Just a missing space in a log message.
bzr-revno: 2140
2013-03-19 20:14:30 +01:00
Andreas Preikschat 8df2a6af32 fixed bug 1146964
Fixes: https://launchpad.net/bugs/1146964
2013-03-19 20:07:02 +01:00
Andreas Preikschat 8a97088526 added missing space in log message 2013-03-19 19:57:44 +01:00
Philip Ridout 147cfccd04 Fixes #1154059 catching Unicode decode error.
bzr-revno: 2139
Fixes: https://launchpad.net/bugs/1154059
2013-03-19 19:56:47 +01:00
phill-ridout 1ac1619b85 Changed extenstion to *.* 2013-03-14 22:16:36 +00:00
phill-ridout 633bbc02cf 2013-03-12 22:02:53 +00:00
phill-ridout 5ac1d0809e 2013-03-12 21:56:04 +00:00
phill-ridout d5f8201c8b 2013-03-12 21:26:38 +00:00
phill-ridout 2c01be044c Fixes #1154059 2013-03-12 21:03:38 +00:00
Andreas Preikschat 46b3552c2c - fixed bug #1147307 (Transtion + fast slide changes + ESC causes screen to open again)
bzr-revno: 2138
Fixes: https://launchpad.net/bugs/1147307
2013-03-08 09:34:26 +01:00
Philip Ridout 2438641a0c Reraise error to help catch bugs
bzr-revno: 2137
2013-03-06 18:29:36 +00:00
Andreas Preikschat fac9f027e0 fixed bug 1147307 (Transtion + fast slide changes + ESC causes screen to open again)
Fixes: https://launchpad.net/bugs/1147307
2013-03-05 18:14:17 +01:00
Philip Ridout 5d9df0c66c Fixes bug:#1135392 by reraising the exception. 2013-03-04 20:49:55 +00:00
Philip Ridout a2fde046aa Fixes bug #1114457 by counting the records
bzr-revno: 2136
Fixes: https://launchpad.net/bugs/1114457
2013-02-26 13:22:07 +01:00
Andreas Preikschat 2991c3199f Fix bug #1128376 (Configure shortcuts has two items called settings)
bzr-revno: 2135
Fixes: https://launchpad.net/bugs/1128376
2013-02-20 08:24:42 +02:00
phill-ridout 5b7421ee1f Unindented set progress max 2013-02-19 21:57:46 +00:00
phill-ridout e31787a3b4 Fixes #1114457 by counting the records 2013-02-19 18:58:11 +00:00
Andreas Preikschat 1c79b044c5 fixed bug #1128376 (Configure shortcuts has two items called settings)
Fixes: https://launchpad.net/bugs/1128376
2013-02-19 15:01:52 +01:00
Andreas Preikschat 7f814c12ee fixed bug #1128376 (Configure shortcuts has two items called settings)
Fixes: https://launchpad.net/bugs/112837
2013-02-19 14:58:55 +01:00
Philip Ridout 4f27b62543 Song Import Wizard - bugs
bzr-revno: 2134
2013-02-18 21:16:08 +00:00
Andreas Preikschat d74a484f56 Inconvenient focus in Song Editor when adding authors) by reimplementing the keyPressEvent
bzr-revno: 2133
2013-02-18 21:14:20 +00:00
Andreas Preikschat 13554ce83e Display verses on live tool bar' ignored
bzr-revno: 2132
2013-02-18 21:13:26 +00:00
phill-ridout 626ca208c7 simplified if statment 2013-02-18 17:15:44 +00:00
phill-ridout bbc4d82ae0 fixes bug1125956 Trunk version to follow when I've written the test.
also fixes a bug in the verse order to do with duplicate verses
2013-02-15 19:04:50 +00:00
Andreas Preikschat 1b1e7fb521 removed empty line 2013-02-11 09:37:16 +01:00
Andreas Preikschat 8d8e47193c fixed bug 1047995 by reimplementing the keyPressEvent
Fixes: https://launchpad.net/bugs/1047995
2013-02-11 09:33:46 +01:00
Andreas Preikschat 5c6a63e518 fixed bug 1112587
Fixes: https://launchpad.net/bugs/1112587
2013-02-10 13:21:59 +01:00
Philip Ridout 04b06ceac9 Fix bug #1098075: Cancelling character table dialog in song importer causes OpenLP to crash
bzr-revno: 2131
Fixes: https://launchpad.net/bugs/1098075
2013-02-05 21:44:46 +02:00
phill-ridout bde8df5f86 Reduced some code 2013-02-04 18:27:43 +00:00
phill-ridout 98d2247f10 changed variables to result 2013-02-03 21:00:22 +00:00
phill-ridout 59c6e00bf1 Reworked to return None rather than using exceptions as per Raoul's request 2013-02-03 20:02:58 +00:00
phill-ridout 635b207fb0 Fixes bug1095699 by rasing an error when the user cancels the codepage selection dialog. 2013-02-03 17:13:01 +00:00
Andreas Preikschat 8840df2fb2 - fixed Bug 1086987 (Log system does not log all exceptions)
bzr-revno: 2130
Fixes: https://launchpad.net/bugs/1086987
2013-01-23 21:45:09 +01:00
Andreas Preikschat 19495c4719 fixed Bug 1086987 (Log system does not log all exceptions)
Fixes: https://launchpad.net/bugs/1086987
2013-01-20 19:46:41 +01:00
Arjan Schrijver 12eb03f8f9 When a saved service file is loaded, images always get a black background instead of the configured background. This patch fixes that, although I'm not sure if it fits within the coding standards.
bzr-revno: 2129
2013-01-18 19:15:40 +00:00
Arjan Schrijver 28241d591c Fix line spacing 2013-01-15 22:28:47 +01:00
Arjan Schrijver 6abfdc4215 check_dependencies.py fails on version numbers with letters (bug #1095699)
bzr-revno: 2128
Fixes: https://launchpad.net/bugs/1095699
2013-01-15 22:03:37 +01:00
Arjan Schrijver 7e2e72b4a6 Read the background color setting outside of the loop 2013-01-10 13:05:33 +01:00
Arjan Schrijver 8b01158856 Make sure images use the configured background/border color when loaded from a saved service file 2013-01-10 11:12:47 +01:00
Arjan Schrijver 72098b2ff9 fixed bug #1095699 'check_dependencies.py fails on version numbers with letters'
Fixes: https://launchpad.net/bugs/1095699
2013-01-07 10:20:00 +01:00
Tim Bentley 58cb97da5f Release 2.0.1
bzr-revno: 2127
2013-01-05 11:41:55 +00:00
Samuel Mehrbrodt 36fb2ddc42 When importing a presentation containing a non-ASCII character, an exception is no longer thrown preventing the file from being loaded.
bzr-revno: 2126
Fixes: https://launchpad.net/bugs/1093184
2013-01-05 11:31:02 +00:00
Samuel Mehrbrodt f37482dec5 Remove blank line 2013-01-04 12:03:03 +01:00
Samuel Mehrbrodt 908a56586d Revert cleanups for this branch, only the bugfix
Fixes: https://launchpad.net/bugs/1093184
2013-01-03 23:11:28 +01:00
Jonathan Corwin 0377c8ad26 Attempt to successfully import the settings we can now export.
* QSettings exports the 'general' group as '%General' but appears in some circumstances (Linux?) to struggle to import this again. Try and compensate.

* If you run 2.1, even if just the once, it'll create a [players] settings group. If you later go back to 2.0 it'll load this group (even if it doesn't use it) and so it'll be exported. However the import considers the group invalid so fails. I've therefore changed the import to be more forgiving and just ignore unknown groups. A basic sanity test is done earlier instead.

bzr-revno: 2125
2013-01-02 20:10:37 +00:00
Tim Bentley 2ef6566ab3 Another year passes by
bzr-revno: 2124
2012-12-31 06:48:15 +00:00
Tim Bentley bdef1b73f2 head 2012-12-30 19:41:40 +00:00
Tim Bentley c912dea3b6 2013 2012-12-30 19:41:24 +00:00
Samuel Mehrbrodt 1e53bd37a6 Fix import of files that contain non-ascii chars.
QStringList containing QStrings is converted to std list containing unicode strings.
Thus, we don't need these unicode() calls on the contents of the list  anymore.
2012-12-19 23:05:48 +01:00
Samuel Mehrbrodt c45d6915c7 Convert QStringList to Python list.
This fixes importing when the path name contains non-ascii chars.
2012-12-19 13:37:40 +01:00
261 changed files with 11515 additions and 9800 deletions

View File

@ -1,25 +1,25 @@
*.pyc
*.*~
\#*\#
*.eric4project
*.eric5project
*.ropeproject
*.e4*
*.log*
*.qm
\#*\#
.eric4project
.idea
.pylint.d
.directory
_eric4project
list
openlp.org 2.0.e4*
dist
build
OpenLP.egg-info
openlp.cfg
openlp.pro
documentation/build/html
documentation/build/doctrees
*.log*
dist
OpenLP.egg-info
build
resources/innosetup/Output
_eric4project
.pylint.d
*.qm
openlp/core/resources.py.old
*.qm
resources/windows/warnOpenLP.txt
openlp.cfg
.idea
openlp.pro
resources/innosetup/Output
resources/windows/warnOpenLP.txt

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -5,8 +5,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Edwin Lunando, Joshua Miller, Stevan Pettit, #
# Andreas Preikschat, Mattias Põldaru, Christian Richter, Philip Ridout, #

View File

@ -1 +1 @@
2.0
2.0.5

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -220,15 +220,22 @@ class OpenLP(QtGui.QApplication):
log.debug(u'Got open file event for %s!', file_name)
self.args.insert(0, unicode(file_name))
return True
else:
return QtGui.QApplication.event(self, event)
# Mac OS X should restore app window when user clicked on the OpenLP icon
# in the Dock bar. However, OpenLP constists of multiple windows and this
# does not work. This workaround fixes that.
# The main OpenLP window is restored when it was previously minimized.
elif event.type() == QtCore.QEvent.ApplicationActivate:
if sys.platform.startswith('darwin') and self.mainWindow.isMinimized():
self.mainWindow.showNormal()
return True
return QtGui.QApplication.event(self, event)
def set_up_logging(log_path):
"""
Setup our logging using log_path
"""
check_directory_exists(log_path)
check_directory_exists(log_path, True)
filename = os.path.join(log_path, u'openlp.log')
logfile = logging.FileHandler(filename, u'w')
logfile.setFormatter(logging.Formatter(
@ -264,13 +271,6 @@ def main(args=None):
# Parse command line options and deal with them.
# Use args supplied programatically if possible.
(options, args) = parser.parse_args(args) if args else parser.parse_args()
if options.portable:
app_path = AppLocation.get_directory(AppLocation.AppDir)
set_up_logging(os.path.abspath(os.path.join(app_path, u'..',
u'..', u'Other')))
log.info(u'Running portable')
else:
set_up_logging(AppLocation.get_directory(AppLocation.CacheDir))
qt_args = []
if options.loglevel.lower() in ['d', 'debug']:
log.setLevel(logging.DEBUG)
@ -295,6 +295,10 @@ def main(args=None):
app.setApplicationName(u'OpenLPPortable')
Settings.setDefaultFormat(Settings.IniFormat)
# Get location OpenLPPortable.ini
app_path = AppLocation.get_directory(AppLocation.AppDir)
set_up_logging(os.path.abspath(os.path.join(app_path, u'..',
u'..', u'Other')))
log.info(u'Running portable')
portable_settings_file = os.path.abspath(os.path.join(app_path, u'..',
u'..', u'Data', u'OpenLP.ini'))
# Make this our settings file
@ -310,6 +314,7 @@ def main(args=None):
portable_settings.setValue(u'advanced/is portable', True)
portable_settings.sync()
else:
set_up_logging(AppLocation.get_directory(AppLocation.CacheDir))
app.setApplicationName(u'OpenLP')
app.setApplicationVersion(get_application_version()[u'version'])
# Instance check

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -335,14 +335,18 @@ def expand_tags(text):
return text
def check_directory_exists(dir):
def check_directory_exists(dir, do_not_log=False):
"""
Check a theme directory exists and if not create it
``dir``
Theme directory to make sure exists
``do_not_log``
To not log anything. This is need for the start up, when the log isn't ready.
"""
log.debug(u'check_directory_exists %s' % dir)
if not do_not_log:
log.debug(u'check_directory_exists %s' % dir)
try:
if not os.path.exists(dir):
os.makedirs(dir)
@ -380,6 +384,7 @@ def create_separated_list(stringlist):
from eventreceiver import Receiver
from filedialog import FileDialog
from listwidgetwithdnd import ListWidgetWithDnD
from formattingtags import FormattingTags
from spelltextedit import SpellTextEdit

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
# Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, #
# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Dave Warnock, #
# Frode Woldsund, Martin Zibricky #
# --------------------------------------------------------------------------- #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free #
# Software Foundation; version 2 of the License. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
Provide a work around for a bug in QFileDialog
<https://bugs.launchpad.net/openlp/+bug/1209515>
"""
import os
import urllib
from PyQt4 import QtCore, QtGui
from openlp.core.lib.ui import UiStrings
class FileDialog(QtGui.QFileDialog):
"""
Subclass QFileDialog to work round a bug
"""
@staticmethod
def getOpenFileNames(parent, title, path, filters):
"""
Reimplement getOpenFileNames to fix the way it returns some file
names that url encoded when selecting multiple files/
"""
files = QtGui.QFileDialog.getOpenFileNames(parent, title, path, filters)
file_list = QtCore.QStringList()
for file in files:
file = unicode(file)
if not os.path.exists(file):
file = urllib.unquote(file)
if not os.path.exists(file):
QtGui.QMessageBox.information(parent,
UiStrings().FileNotFound,
UiStrings().FileNotFoundMessage % file)
continue
file_list.append(QtCore.QString(file))
return file_list

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -30,6 +30,7 @@
Provide HTML Tag management and Formatting Tag access class
"""
import cPickle
import json
from PyQt4 import QtCore
@ -71,8 +72,8 @@ class FormattingTags(object):
if isinstance(tag[element], unicode):
tag[element] = tag[element].encode('utf8')
# Formatting Tags were also known as display tags.
Settings().setValue(u'displayTags/html_tags',
QtCore.QVariant(cPickle.dumps(tags) if tags else u''))
Settings().setValue(u'formattingTags/html_tags',
QtCore.QVariant(json.dumps(tags) if tags else u''))
@staticmethod
def load_tags():
@ -167,12 +168,24 @@ class FormattingTags(object):
FormattingTags.add_html_tags(temporary_tags)
# Formatting Tags were also known as display tags.
user_expands = Settings().value(u'displayTags/html_tags',
user_expands = Settings().value(u'formattingTags/html_tags',
QtCore.QVariant(u'')).toString()
json_loaded = True
if not user_expands:
user_expands = Settings().value(u'displayTags/html_tags',
QtCore.QVariant(u'')).toString()
json_loaded = False
# cPickle only accepts str not unicode strings
user_expands_string = str(user_expands)
if user_expands_string:
user_tags = cPickle.loads(user_expands_string)
if json_loaded:
user_tags = json.loads(user_expands_string)
else:
user_tags = cPickle.loads(user_expands_string)
# move the formatting tags to json and remove old settings
Settings().setValue(u'formattingTags/html_tags',
QtCore.QVariant(json.dumps(user_tags)))
Settings().remove(u'displayTags/html_tags')
for tag in user_tags:
for element in tag:
if isinstance(tag[element], str):

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -129,9 +129,10 @@ sup {
}
function show_text(newtext){
var fade_direction = 0;
var match = /-webkit-text-fill-color:[^;\"]+/gi;
if(timer != null)
clearTimeout(timer);
if (timer != null)
clearInterval(timer);
/*
QtWebkit bug with outlines and justify causing outline alignment
problems. (Bug 859950) Surround each word with a <span> to workaround,
@ -150,39 +151,45 @@ sup {
newtext = '<span>' + newtext + '</span>';
}
}
text_fade('lyricsmain', newtext);
text_fade('lyricsoutline', newtext);
text_fade('lyricsshadow', newtext.replace(match, ''));
if(text_opacity() == 1) return;
timer = setTimeout(function(){
show_text(newtext);
timer = setInterval(function(){
text_fade('lyricsmain', newtext);
text_fade('lyricsoutline', newtext);
text_fade('lyricsshadow', newtext.replace(match, ''));
if(text_opacity() == 1) clearInterval(timer);
}, 100);
}
function text_fade(id, newtext){
/*
Using -webkit-transition: opacity 1s linear; would have been preferred
but it isn't currently quick enough when animating multiple layers of
large areas of large text. Therefore do it manually as best we can.
Hopefully in the future we can revisit and do more interesting
transitions using -webkit-transition and -webkit-transform.
However we need to ensure interrupted transitions (quickly change 2
slides) still looks pretty and is zippy.
*/
var text = document.getElementById(id);
if(text == null) return;
if(!transition){
text.innerHTML = newtext;
return;
}
if(newtext == text.innerHTML){
text.style.opacity = parseFloat(text.style.opacity) + 0.3;
if(text.style.opacity > 0.7)
text.style.opacity = 1;
} else {
text.style.opacity = parseFloat(text.style.opacity) - 0.3;
if(text.style.opacity <= 0.1){
function text_fade(id, newtext){
/*
Using -webkit-transition: opacity 1s linear; would have been preferred
but it isn't currently quick enough when animating multiple layers of
large areas of large text. Therefore do it manually as best we can.
Hopefully in the future we can revisit and do more interesting
transitions using -webkit-transition and -webkit-transform.
However we need to ensure interrupted transitions (quickly change 2
slides) still looks pretty and is zippy.
*/
var text = document.getElementById(id);
if(text == null) return;
if(!transition){
text.innerHTML = newtext;
return;
}
if(fade_direction != 1){
text.style.opacity = parseFloat(text.style.opacity) - 0.3;
if(text.style.opacity <= 0.1){
text.innerHTML = newtext;
fade_direction = 1;
}
}else{
text.style.opacity = parseFloat(text.style.opacity) + 0.3;
if(text.style.opacity > 0.7){
text.style.opacity = 1;
}
}
}
}

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -35,7 +35,7 @@ import re
from PyQt4 import QtCore, QtGui
from openlp.core.lib import SettingsManager, OpenLPToolbar, ServiceItem, \
from openlp.core.lib import FileDialog, SettingsManager, OpenLPToolbar, ServiceItem, \
StringContent, build_icon, translate, Receiver, ListWidgetWithDnD
from openlp.core.lib.searchedit import SearchEdit
from openlp.core.lib.ui import UiStrings, create_widget_action, \
@ -337,10 +337,11 @@ class MediaManagerItem(QtGui.QWidget):
"""
Add a file to the list widget to make it available for showing
"""
files = QtGui.QFileDialog.getOpenFileNames(
files = FileDialog.getOpenFileNames(
self, self.onNewPrompt,
SettingsManager.get_last_dir(self.settingsSection),
self.onNewFileMasks)
files = map(unicode, files)
log.info(u'New files(s) %s', unicode(files))
if files:
Receiver.send_message(u'cursor_busy')

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -284,6 +284,9 @@ class Renderer(object):
elif item.is_capable(ItemCapabilities.CanSoftBreak):
pages = []
if u'[---]' in text:
# Remove two or more option slide breaks next to each other (causing infinite loop).
while u'\n[---]\n[---]\n' in text:
text = text.replace(u'\n[---]\n[---]\n', u'\n[---]\n')
while True:
slides = text.split(u'\n[---]\n', 2)
# If there are (at least) two occurrences of [---] we use

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -37,8 +37,11 @@ import logging
import os
import uuid
from PyQt4 import QtCore, QtGui
from openlp.core.lib import build_icon, clean_tags, expand_tags, translate, \
ImageSource
from openlp.core.lib.settings import Settings
log = logging.getLogger(__name__)
@ -314,7 +317,7 @@ class ServiceItem(object):
self.add_icon(header[u'icon'])
self.raw_footer = header[u'footer']
self.audit = header[u'audit']
self.notes = header[u'notes']
self.notes = unicode(header[u'notes'])
self.from_plugin = header[u'from_plugin']
self.capabilities = header[u'capabilities']
# Added later so may not be present in older services.
@ -334,9 +337,12 @@ class ServiceItem(object):
for slide in serviceitem[u'serviceitem'][u'data']:
self._raw_frames.append(slide)
elif self.service_item_type == ServiceItemType.Image:
settingsSection = serviceitem[u'serviceitem'][u'header'][u'name']
background = QtGui.QColor(Settings().value(settingsSection
+ u'/background color', QtCore.QVariant(u'#000000')))
for text_image in serviceitem[u'serviceitem'][u'data']:
filename = os.path.join(path, text_image)
self.add_from_image(filename, text_image)
self.add_from_image(filename, text_image, background)
elif self.service_item_type == ServiceItemType.Command:
for text_image in serviceitem[u'serviceitem'][u'data']:
filename = os.path.join(path, text_image[u'title'])

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -77,6 +77,10 @@ class UiStrings(object):
self.Error = translate('OpenLP.Ui', 'Error')
self.Export = translate('OpenLP.Ui', 'Export')
self.File = translate('OpenLP.Ui', 'File')
self.FileNotFound = unicode(translate('OpenLP.Ui',
'File Not Found'))
self.FileNotFoundMessage = unicode(translate('OpenLP.Ui',
'File %s not found.\nPlease try selecting it individually.'))
self.FontSizePtUnit = translate('OpenLP.Ui', 'pt',
'Abbreviated font pointsize unit')
self.Help = translate('OpenLP.Ui', 'Help')

View File

@ -54711,6 +54711,190 @@ qt_resource_data = "\
\x89\x3e\x62\x80\x70\x10\xc3\x84\x9d\xb0\x11\x66\xa2\x8b\xe8\x6c\
\x7e\xaa\x0f\xd9\x9d\x89\x07\xa1\xb5\x4b\xa0\x00\x00\x00\x00\x49\
\x45\x4e\x44\xae\x42\x60\x82\
\x00\x00\x0b\x5e\
\x00\
\x00\x36\x03\x78\x9c\xed\x5a\xdb\x6e\xdb\x48\x12\x7d\xcf\x57\x70\
\x95\x97\x04\x4b\xb6\xfa\x7e\x71\xec\x0c\x90\x09\x32\x18\x60\x17\
\x0b\xcc\x05\xfb\x38\xa0\x45\x5a\xe6\x86\x22\x05\x92\x8a\x65\x7f\
\xfd\x9e\xa6\x24\x5e\x6c\x3a\xbe\xc4\x03\x27\x99\xc9\x60\x60\xb1\
\xbb\xba\xbb\xea\x54\xd5\xe9\x6a\x36\x8f\x7f\xd8\xae\xf2\xe0\x53\
\x5a\xd5\x59\x59\x9c\xcc\x18\xa1\xb3\x20\x2d\x16\x65\x92\x15\xcb\
\x93\xd9\xef\xbf\x7d\x88\xec\x2c\xa8\x9b\xb8\x48\xe2\xbc\x2c\xd2\
\x93\x59\x51\xce\x7e\x78\xfb\xe2\xf8\x1f\x51\x14\xfc\x58\xa5\x71\
\x93\x26\xc1\x45\xd6\x9c\x07\x3f\x17\x1f\xeb\x45\xbc\x4e\x83\x57\
\xe7\x4d\xb3\x3e\x9a\xcf\x2f\x2e\x2e\x48\xb6\x6f\x24\x65\xb5\x9c\
\xbf\x0e\xa2\xe8\xed\x8b\x17\xc7\xf5\xa7\xe5\x8b\x20\x08\xb0\x6e\
\x51\x1f\x25\x8b\x93\xd9\x7e\xc0\x7a\x53\xe5\xad\x60\xb2\x98\xa7\
\x79\xba\x4a\x8b\xa6\x9e\x33\xc2\xe6\xb3\x5e\x7c\xd1\x8b\x2f\xfc\
\xea\xd9\xa7\x74\x51\xae\x56\x65\x51\xb7\x23\x8b\xfa\xe5\x40\xb8\
\x4a\xce\x3a\x69\xaf\xcd\x85\x68\x85\x98\x73\x6e\x4e\xf9\x9c\xf3\
\x08\x12\x51\x7d\x59\x34\xf1\x36\x1a\x0f\x85\x8e\x53\x43\x39\xa5\
\x74\x8e\xbe\x5e\xf2\x7e\x52\x47\xdb\x1c\x50\xdc\xaa\x4c\xdb\x3b\
\x5c\x1d\xf0\xaf\xf1\x7f\x37\xe0\xd0\x40\xea\x72\x53\x2d\xd2\x33\
\x8c\x4c\x49\x91\x36\xf3\xf7\xbf\xbd\xef\x3a\x23\x4a\x92\x26\x19\
\x4c\x73\x40\x7f\xb4\xee\xc8\x25\x45\xbc\x4a\xeb\x75\xbc\x48\xeb\
\xf9\xa1\xbd\x1d\x7f\x91\x25\xcd\xf9\xc9\x4c\x6a\x43\x84\x63\xc6\
\xb6\x8d\xe7\x69\xb6\x3c\x6f\xae\xb7\x66\xc9\xc9\x0c\xb6\x2a\x23\
\x69\xfb\x7c\xd0\xe6\xa8\x8b\x29\x4a\x04\xdf\x89\xee\x97\x18\x76\
\x49\x13\x54\x9c\x2b\x2b\x5a\x89\x51\x1c\x8e\x66\x4b\xca\x85\x57\
\xf6\x64\x56\xae\xd3\x22\x5f\x47\x79\xb9\x2c\xc9\x01\xe3\x6e\xe2\
\x72\xd3\xac\x37\xcd\x1f\xe9\xb6\x49\x8b\xdd\x44\xb0\x72\x60\x72\
\xdb\xed\x87\x91\x91\xb9\xdd\xf8\x74\xbb\x2e\xab\x26\x3a\xcb\xf2\
\x74\xb7\xda\xfc\xbc\x5c\xa5\xf3\x2a\x2e\x37\xf9\x7c\xb0\x32\xa0\
\xe6\x64\x5d\x2c\x27\x47\x6f\x93\x35\x3c\xe7\x18\xb1\x9a\x5a\x69\
\x26\x65\x2e\x27\x64\xea\xe6\x32\xc7\x92\x49\x56\xaf\xf3\xf8\x12\
\xde\x43\x54\xa4\xb3\xb7\xe8\x3a\x4e\xd2\xb3\xda\x8b\xec\xe0\xf6\
\x4f\xc0\x9b\xb7\x7d\xe8\xf5\x72\x71\xf5\x53\x15\x27\x19\x72\x66\
\x27\xb7\x93\x1c\xf7\x08\x4e\xed\x7e\x0c\x46\xd5\x4d\xb9\x3e\xc8\
\x76\x8b\xfb\xc6\x68\x51\xe6\x65\x75\xf4\xf2\xac\xfd\xf7\xa6\x6d\
\x2a\x11\x24\x59\x73\x79\x04\xbb\x15\x75\x96\x4a\xf6\x66\xd6\x0f\
\x2e\xcf\xce\xea\x14\x91\x41\x07\x6d\x6d\x5c\x60\xa8\xe0\x0c\x94\
\x32\xff\xc2\x65\xa7\x56\x63\xd3\xab\xf1\x6e\xb5\xe3\xf9\xd8\xfe\
\x87\xc2\xc5\x9c\x7a\x00\x5c\x8b\x64\x91\x5c\xd7\xfb\xfe\x28\x31\
\x67\x1e\x84\x52\x7a\x9a\x9e\xde\x6b\xb5\x49\x94\xc0\x3a\x4f\x85\
\x92\x16\xca\x3d\x00\x25\x50\x63\xc2\xf5\x23\x51\xd2\x42\xb3\x07\
\xa1\xa4\xa8\x39\x4b\xe2\x47\xa2\x84\xd5\xc4\x5d\x28\x75\x79\xbd\
\x06\x73\xad\xd3\x85\xdf\x90\x0e\x33\x75\xdc\xd5\x5c\x7a\x0e\x1e\
\x8b\x8a\xa4\x5b\xb1\xa7\xc5\xf5\x1f\x5b\x18\x1e\x1c\x05\x8a\x6b\
\xc2\x2c\xa3\x0e\xbf\xd9\xa4\xe0\xe5\x4e\x90\x01\x4f\xfc\xa1\x93\
\x32\x57\x27\x33\x23\x25\xa1\x4e\x4a\x7b\xf7\xa4\x7b\xb5\xa2\xb2\
\xca\x96\x19\x98\x53\x18\x4e\xa8\x34\x5c\x42\x5c\x28\x4a\x8c\x35\
\xe2\xda\x50\x00\x35\xb0\x1b\x94\x64\x7b\xbc\xc0\xa1\x4d\x5a\xdd\
\x58\x05\x8e\xc9\x21\x7e\x32\x8b\xf3\x8b\xf8\xb2\x1e\xcd\xb5\x1b\
\xa2\x1d\xd7\x5d\x73\xeb\xc7\x28\x2b\xd0\xbe\x2e\x73\xec\xf7\x65\
\x11\xed\xc4\xb0\xf3\xd6\xbf\xfc\xf4\xae\x0f\xbd\xb3\xf4\xa7\x78\
\x53\xd7\x59\x5c\xbc\xcb\x37\xd5\xc0\x9d\x77\x2d\xed\x23\x27\x79\
\x9f\x7e\xca\xda\xe9\x61\x38\x51\xc6\x30\x6b\xf8\xb5\x98\x18\x2f\
\x00\x35\x07\xd6\xce\x77\x4a\x7d\x3e\x77\xee\x52\xa4\x2d\x03\x8e\
\xce\xab\x14\x65\xcb\xcb\x09\xea\xfe\x1c\xb3\x33\xd9\x4f\xc3\xb0\
\x47\x1b\xcf\xd4\xd6\xf5\xce\xba\x44\x2b\x37\x9a\x68\x6b\x55\xdf\
\xba\xe5\x7e\x3f\x17\x84\x0b\x3a\x10\x45\x23\x93\xc4\x72\xae\x07\
\xad\xcb\xfd\x5a\xbf\x17\x59\x03\xf0\x37\x75\x5a\xfd\xea\x4b\x87\
\xff\x14\xbf\xd7\x69\x8f\xc4\x33\xd8\xce\xdd\x3d\x95\xfc\x93\x10\
\x7a\x4e\xdb\xcd\x5f\xd8\x76\x6b\x9e\xd7\xf6\xeb\x8b\xff\x56\xc5\
\x45\x8d\xda\x7c\x75\x32\x5b\xc5\x4d\x95\x6d\x5f\xe1\xf4\xc2\x38\
\x07\xfd\x86\x14\xff\x31\xc2\xa9\x30\x46\xd8\x30\x52\x86\x70\x67\
\xb9\x0a\x31\x99\x95\x4e\x30\xfb\xfa\x4f\x85\xd2\x97\x32\x9f\xad\
\x74\xf4\x23\xa0\x64\xcc\x10\x05\xb6\xe6\x23\x28\x85\xc5\x96\xa3\
\xcc\x60\xc1\x16\x4a\x66\x61\xbd\xb3\x63\x2c\xa5\xd0\x04\x90\x58\
\xf3\x67\x1a\xdf\x56\x28\x9f\x35\xde\x3e\xc2\x78\xcb\x14\x31\x6a\
\x64\xb9\xb4\x94\x28\x65\xa5\x1c\x59\xce\x29\xa2\x80\x6a\xce\x47\
\x96\x0b\x83\xda\x5f\x39\x61\x9f\x35\x83\x28\x7d\xa0\xe5\x4f\x14\
\xea\x8f\x4f\x48\x47\xa4\x74\x5c\x8d\x33\x92\x4a\x22\x28\xe5\xee\
\x39\x53\x88\x33\xf5\xd7\x4d\x21\xce\x1e\x43\xc5\xdf\x45\x0a\xb1\
\x87\x6e\xc0\x7f\xe1\x14\xfa\x3c\x96\x92\xb2\xa7\xa3\x23\x9c\x57\
\x38\x60\xb1\xba\xc5\xd2\x9f\x5e\xa4\x90\x5a\x86\x11\xce\x3f\x44\
\x72\xaa\x55\x18\x71\xc2\x04\x47\xf6\xc9\x6f\x12\xcd\x3b\x72\x12\
\x68\x8a\xe7\xcc\xc9\xfb\xb8\x48\x2b\xa6\x0c\x77\x7b\x17\x1d\x9e\
\x22\x7f\xf0\xb4\x5a\x6b\x1f\xf9\x44\x30\x25\x2d\xd3\xcf\x59\x1e\
\x49\x2a\x1f\x43\x6f\xdf\x07\xb7\xc3\xf8\xc7\x1c\x31\xbe\x03\x6e\
\x97\x54\xdd\xf7\xf4\xfb\x37\xb7\xdf\x99\x42\xea\x31\x6c\xf4\xbd\
\xa4\x90\x7a\x68\x6d\xf8\x64\xac\xf9\xfd\xe5\xe4\x43\xa9\xf8\x1b\
\xa9\x11\x8e\xe7\xfe\x5a\xa7\xfd\xd5\xbd\x38\xf6\x77\x50\xc9\xa7\
\x2c\xbd\x78\xd1\xc1\x71\x1a\x77\xa6\xad\xe3\x65\xda\xbe\x1f\x05\
\x88\xbb\x4b\x93\x7d\xc7\x69\x59\x25\x69\x75\xe8\xd2\xed\xbf\x51\
\xd7\xfe\x55\x78\x7f\xcd\xe6\x51\xca\x92\xa6\xcc\x53\x80\xb4\x48\
\xbd\x76\xb4\x3b\x1b\x2e\x37\x59\x92\x8e\xfa\xf6\x1d\xe5\xe9\xff\
\xe0\xdd\xa9\x9e\xfe\xa5\x32\x74\xec\x56\xa3\x64\xb2\xbf\x3e\x8f\
\x93\xf2\x02\xe8\x5d\xef\xbc\x2a\xcb\x55\xab\x23\x63\x4e\x5b\x71\
\xbd\x7b\xb1\x3d\x99\x29\x44\xaa\xe1\x42\xda\x1b\x9d\xde\x3a\x6b\
\x88\xd6\xec\x46\x5f\x52\x2e\x36\xfe\x76\x39\xda\xec\x02\x67\xbd\
\xbd\x31\x7a\x53\x55\x5e\x20\x8f\x2f\x53\x60\xd8\xfe\x39\x40\x58\
\x9f\x97\x17\x1e\xad\x93\xd9\x59\x9c\x77\xce\xe8\x86\x5e\x64\x05\
\xac\x89\xf6\x37\xa8\x4c\xd3\x1b\x36\xef\x25\x0e\xd7\xa9\x56\xb8\
\x5b\x24\xb6\x1e\x51\x7e\x03\x96\x7d\x2f\x0c\x8c\x6e\x60\xb2\xef\
\x5b\xc5\xdb\x6c\x95\x5d\xa5\x89\xbf\xd9\xd8\xc7\xd7\x2a\x6d\xe2\
\x24\x6e\xe2\x3e\x96\x0e\x2d\xca\xc8\xc3\x45\xd7\x71\x95\x9c\x1d\
\xfd\xf2\xfe\x43\xf7\x56\x7d\xb1\x38\xfa\x6f\x59\x7d\x3c\x44\x6e\
\x10\x78\x81\xf8\xb4\xdc\x40\xf3\xee\xdd\xbb\xbf\xa1\x5c\x1c\xf9\
\xdc\x8a\x9b\xb7\xd9\x0a\x3e\xf5\xd7\xdf\xff\xdc\xae\x72\x44\x75\
\xd7\x31\x12\xf6\x77\x22\xfd\xa4\xbb\x69\xab\x74\x77\xbd\x3d\xf9\
\x45\x40\xb2\x58\x65\x7e\xd0\xfc\xd7\x26\xcb\xf3\x9f\xfd\x22\xc3\
\xab\xa0\xf9\x5e\xd1\xc3\xfb\xf8\x81\x1d\xc7\xf3\x83\xa1\xed\xd3\
\xf2\x1a\x64\x79\x7c\x9a\xe6\x27\xb3\x5f\xdb\x28\xbc\x8e\xe7\xb2\
\x2a\x37\xeb\x55\x99\xa4\xfb\x20\x98\xf5\xe8\xb5\xcf\x87\x4c\x9f\
\xbe\xbb\xdd\xf5\x35\x3d\xf1\xb4\x3f\xf3\xb8\x49\x5f\x45\x0c\x64\
\x6a\x38\xc5\xc6\x1f\x31\x41\x98\x61\x56\xf1\x43\x91\x7b\x43\xc7\
\xbb\xd4\x50\xd7\xf5\xde\x1b\xf5\xae\x4d\xf7\xaf\x43\xc7\x1b\xb1\
\xba\xd7\xf1\x17\xec\x0c\xc1\xbb\x78\xf1\xd1\x4f\x50\x24\x5f\x87\
\xb2\x37\x92\x6e\xa8\xec\x87\xb2\x4a\xbf\x26\x65\xf5\x6d\xca\xa6\
\x67\x7e\xfb\xcd\xca\xe2\x89\xf5\xdc\x27\xd9\x72\xb8\x4f\x2f\x71\
\xe0\xec\x77\xee\xc9\xd9\x1c\x2a\x5c\x66\x04\xb7\x61\xf7\xeb\x75\
\x7f\x7f\xb7\x8e\x9b\xf3\x9e\x11\x6e\xf9\x60\x62\x74\x2b\x3c\xfd\
\xdd\xc5\xe7\x44\x1e\xf6\x61\xc7\x0d\x53\xfa\x12\x4c\x18\x67\x85\
\x3a\x94\x60\xfb\xa7\x48\xa3\x5a\x55\x52\x33\x0e\xb4\x14\x61\xd6\
\x71\xa7\x5e\x0f\xa6\xf2\x9c\x1b\x58\x21\x50\x91\x52\xaa\x43\xe1\
\x14\xe1\xda\x09\x1e\x2c\x02\x9c\x09\x1c\x46\x6b\xd4\x1a\x41\x84\
\x5d\x83\x30\xa5\x99\x08\x05\x8e\x07\xed\x5d\x64\x10\x75\x3f\x87\
\x8d\xdd\xa0\x90\x0e\x25\xfa\x19\x46\xad\xfd\x40\x1a\x1e\x86\xea\
\xa0\x5f\xad\x17\xe0\xc1\xd4\x30\x1e\x0c\xd7\xeb\x25\x0e\x33\x8c\
\x86\x0d\x46\x5d\x0d\x30\xe8\x8a\x9b\x0a\x1b\x58\x27\x33\x29\xb0\
\xbd\x43\xc0\xef\xf1\x1d\x86\x93\x02\x5b\x5f\xa9\xf9\x6a\x98\x09\
\x39\x0c\x0b\x7f\x71\x8d\x70\xd3\x8e\x8a\xe1\xb8\x5d\x7a\x20\x48\
\xf2\xf6\x43\x05\xfc\x7b\xe3\x1f\x06\x9f\x0e\xb4\x8f\xd5\x26\x4f\
\x8f\x8a\xb2\xb8\x42\x25\xf5\xa6\x6e\xaa\xf2\x63\xfb\x98\xbe\x19\
\x27\xd6\x9b\xdd\x9d\xf0\x11\x36\xb1\x57\x2f\xfb\xbb\xed\xd7\x53\
\x9a\xee\x3e\x11\x88\xab\xc5\x70\x4f\xfb\x5a\x33\x62\x42\xeb\xdb\
\x40\x54\x2c\x55\xfc\x4b\x40\x9c\xf6\x1a\x7d\x88\xb7\xef\x1f\x2f\
\x77\x46\xdc\x6d\x31\xfb\x77\x62\x3f\x01\x4f\x7e\x03\x91\x3f\x6d\
\x23\x33\xdc\x9a\xce\xc6\xdd\x53\xa4\x25\x51\x38\x81\x6b\x6f\x23\
\x07\x5e\xda\x59\xfb\xf7\x5e\xf0\x15\xef\x05\x62\x70\x87\x35\xa6\
\xb1\x96\xc0\x6f\xbe\xcf\x7a\xfd\x44\xbc\xf6\x6d\x6e\x02\x3d\x6e\
\xdc\x5c\x0f\x6b\x2e\x14\xd1\xc6\xf9\x68\xf0\x1f\x50\x08\x67\x25\
\xc2\x1a\xb1\x43\x1c\x37\x46\xfb\xf8\xd4\xbe\x04\xa4\xc6\x86\x96\
\x48\x6b\xb5\x52\x41\xe4\x1c\x71\x46\x61\x10\x17\xed\x3b\x29\x21\
\x82\x7f\x05\xdc\x69\x7f\xc0\x77\x1a\x81\x85\xe1\x5a\x1b\x19\x48\
\xc5\x09\x52\x4b\xb8\x90\x3b\x46\x98\xa3\x8e\x61\x7a\x49\x04\x97\
\x8a\x21\x98\x0d\x11\x48\x3d\x13\x68\xa2\x99\x51\xd2\x07\x2d\x51\
\x0c\xe1\xda\xb7\x28\x49\x50\xd5\xee\x83\xdf\xaf\x47\x5b\x15\x18\
\x85\xa1\xd2\x68\x1d\x46\x1c\xad\x10\xe5\x14\xcd\x87\xdf\x6c\xd0\
\xac\x83\xab\xe0\xdf\x81\x71\x84\x81\xbf\xb4\x0d\x8d\x21\x1c\xa7\
\x75\xe7\x82\x1f\x03\x03\xad\x40\x6f\x4c\x86\x56\x11\xca\x85\xe5\
\x32\xd0\x18\xa7\xa5\xe5\x3c\x74\x82\x48\xc1\x9c\x74\x01\x02\x9a\
\x72\x8d\xe3\x77\x88\x91\x50\x5a\x3b\xe9\x4d\x36\xd2\xd3\x88\xd2\
\x21\xa7\x8e\x80\x41\xac\x0a\xa4\xf0\x0a\x03\x94\x90\x5b\x4b\x84\
\xa6\x5a\x42\x0e\xd1\x4c\xc1\xa7\x0c\x33\x5a\xcd\x39\x9b\x54\xc7\
\xab\xc9\xe5\x0e\x65\x01\x14\x39\x71\x4a\x70\xde\x3a\x84\x68\x6e\
\x2c\xa0\xa5\x44\x40\x49\x03\xb7\x00\x09\x89\x89\x43\xce\xa0\x1a\
\xd5\x20\x20\xdb\xbe\x81\x65\x36\x14\x8c\x80\xc3\x98\xf6\x2a\xfa\
\x24\x37\xd2\xc0\x03\x0a\x39\xe7\x04\x78\x4b\x72\xcc\x8c\x35\x0c\
\xbc\x02\xbc\xb9\x81\x31\x5e\x8e\x33\x05\xaf\x70\xc9\xa0\xb6\x72\
\x6a\x52\x17\xaf\x23\x42\x45\x31\x01\x8a\x08\x39\xb0\x92\xce\x01\
\xe2\x45\x80\x51\xd4\xab\x14\xe2\x24\x42\x05\x96\x0c\x04\x11\xce\
\x08\xb0\x0e\x54\x84\xce\x40\x96\x70\x05\x53\x4d\x28\x80\x21\x03\
\x09\x04\x79\xc0\x39\xd4\x16\x8e\x39\x16\xc2\x24\xa6\x8c\x08\x70\
\xde\x20\x52\x53\x27\x42\x89\x38\xf2\x2e\x81\x1d\xca\x87\x9a\xc1\
\xf1\x86\x5b\x87\x48\xd5\xcc\x4d\xea\xe1\xf5\x93\x7e\x4a\x2a\x61\
\x1f\x98\x02\xbe\x04\xcb\xc3\x16\x47\x0c\x8a\x48\x19\x0a\xa1\x89\
\x95\xcc\x47\x27\x3a\x2d\x7c\x8e\x36\x85\xe0\xa6\x12\x6b\x2f\x02\
\xc4\x2e\x60\xa4\x0c\x47\x1f\xe6\x2c\xdc\x82\x4d\x41\x69\x69\x28\
\x7c\x6f\x88\x93\x8c\x4a\x10\x2a\x31\x86\x21\xce\x43\xff\xa5\xa6\
\x94\xa2\x85\x5a\x02\x2f\xa5\x60\xaf\x50\x30\x98\x1a\xc4\xe9\x94\
\x2a\x57\xc1\xca\xab\x6e\xac\xc4\xca\xf0\x09\xe3\xca\x22\xa0\xdb\
\x68\x51\x98\x12\x58\x33\x2b\xa5\xdf\x51\xfc\xa6\x83\xa8\xe4\xa1\
\x44\xdc\x38\xa4\x29\xf4\x43\x9b\x42\x2a\x23\xe4\x08\x03\x46\x3a\
\x30\x3e\xc7\x98\xe2\xde\xed\x88\x41\x61\x02\xc4\x33\x42\xdf\x72\
\x7b\x68\xb2\x01\x02\x0f\xbe\xb1\x16\x19\xcd\xfc\x00\xab\xfc\xdb\
\x67\x20\x01\x50\xe0\x69\x8a\x7c\xa3\x4e\x3b\x7f\x78\x84\x9e\x12\
\xfe\x1f\xf3\xff\x9d\x24\xab\xbe\x8c\x64\x6f\xe7\xd1\x3d\x7b\x09\
\x3e\x3a\x01\x3c\x2d\x7b\xe5\xd8\x4e\xfd\xdb\x4b\xe7\xd9\x8b\x3b\
\x9f\x31\x82\x8b\x00\xec\xa5\x94\x40\x48\x4b\xb8\x44\xfb\x58\x00\
\xfc\xe8\x95\x06\x65\x83\x04\x76\x8a\x22\x93\x51\x3e\x80\x2f\x54\
\x5b\x3d\x70\x64\x19\xf0\xa7\x6d\x24\x00\xff\x08\xa1\x2f\x25\xb5\
\x1c\x5c\x23\x05\x85\x13\xc1\x14\xa1\x05\xef\xc1\x3f\xce\x06\x02\
\xc9\x06\x16\x00\x8d\x1d\x2c\x50\x93\x56\xdd\xc6\x60\xb0\x16\x31\
\x89\x3a\x06\x54\x69\x10\x06\x42\x71\x4f\x8e\xa0\x1b\x25\x41\x6c\
\x48\x5c\xa8\x84\x38\xf5\xcc\x48\xa8\x03\x3d\x83\x97\x94\xe7\x3c\
\x2d\x99\xcf\x3e\x44\xa5\xa6\xd2\xb5\xd4\x62\x7c\x06\x83\xa1\x11\
\x88\xe0\x04\x58\x8d\xf5\x44\x9b\xdb\x58\x03\x53\xa3\xd4\x00\xfd\
\x58\x0a\x62\xf1\xf7\x13\xa0\x5f\xeb\x5b\xac\x02\xd6\xd0\x1a\x5c\
\x89\xc2\x04\x30\x10\x89\x6c\xe5\x2d\x3f\x7e\x29\xef\x71\xff\x5a\
\xd8\x13\x1f\x0a\x18\xab\x3c\xef\x81\x12\xa0\x34\xb8\xc1\x1b\x89\
\xe2\xc5\x7a\x2a\x34\x1a\x95\x99\xf3\x0e\x05\xc3\x21\x8b\xe1\x2f\
\x0d\x1e\x13\xc2\x43\x88\xcc\x63\x81\xdf\x9c\xe0\x59\x4f\xd5\xa8\
\xf1\xac\x37\x0b\xbc\x8d\x74\x36\x5e\x67\x64\xb1\x36\xc2\x98\x36\
\x8b\x27\x48\xef\x41\x99\x60\x9e\x26\x13\x8e\xe7\xcb\xdd\x3b\x51\
\xfc\x39\xf6\x6f\x69\xdf\xbe\xf8\x3f\x50\x2c\x24\x2d\
\x00\x00\x0a\x90\
\x89\
\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@ -71198,6 +71382,10 @@ qt_resource_name = "\
\x00\x62\
\x00\x69\x00\x62\x00\x6c\x00\x65\x00\x73\x00\x5f\x00\x73\x00\x65\x00\x61\x00\x72\x00\x63\x00\x68\x00\x5f\x00\x75\x00\x6e\x00\x6c\
\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\
\x00\x0f\
\x0d\x89\x9b\x07\
\x00\x6f\
\x00\x70\x00\x65\x00\x6e\x00\x6c\x00\x70\x00\x2d\x00\x6c\x00\x6f\x00\x67\x00\x6f\x00\x2e\x00\x73\x00\x76\x00\x67\
\x00\x15\
\x00\x76\xd9\xc7\
\x00\x6f\
@ -71651,7 +71839,7 @@ qt_resource_name = "\
qt_resource_struct = "\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x12\x00\x00\x00\x01\
\x00\x00\x00\xe6\x00\x02\x00\x00\x00\x06\x00\x00\x00\x85\
\x00\x00\x00\xe6\x00\x02\x00\x00\x00\x07\x00\x00\x00\x85\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x81\
\x00\x00\x00\xb4\x00\x02\x00\x00\x00\x05\x00\x00\x00\x7c\
\x00\x00\x00\xd6\x00\x02\x00\x00\x00\x14\x00\x00\x00\x68\
@ -71674,68 +71862,68 @@ qt_resource_struct = "\
\x00\x00\x03\xec\x00\x00\x00\x00\x00\x01\x00\x05\x65\x6d\
\x00\x00\x04\x1a\x00\x00\x00\x00\x00\x01\x00\x08\x06\x4f\
\x00\x00\x03\xbc\x00\x00\x00\x00\x00\x01\x00\x02\xc4\x8b\
\x00\x00\x0f\x84\x00\x00\x00\x00\x00\x01\x00\x10\xce\x94\
\x00\x00\x0f\xf4\x00\x00\x00\x00\x00\x01\x00\x10\xd5\xdf\
\x00\x00\x0f\x34\x00\x00\x00\x00\x00\x01\x00\x10\xc9\x38\
\x00\x00\x10\xd2\x00\x00\x00\x00\x00\x01\x00\x10\xe8\x5d\
\x00\x00\x10\x54\x00\x00\x00\x00\x00\x01\x00\x10\xdd\xf5\
\x00\x00\x0e\xdc\x00\x00\x00\x00\x00\x01\x00\x10\xc2\x01\
\x00\x00\x11\x24\x00\x00\x00\x00\x00\x01\x00\x10\xee\x64\
\x00\x00\x10\x1c\x00\x00\x00\x00\x00\x01\x00\x10\xd9\x53\
\x00\x00\x11\x72\x00\x00\x00\x00\x00\x01\x00\x10\xf3\x90\
\x00\x00\x0f\x06\x00\x00\x00\x00\x00\x01\x00\x10\xc4\x9f\
\x00\x00\x10\xfe\x00\x00\x00\x00\x00\x01\x00\x10\xeb\x90\
\x00\x00\x10\xa8\x00\x00\x00\x00\x00\x01\x00\x10\xe5\xe5\
\x00\x00\x0f\x5a\x00\x00\x00\x00\x00\x01\x00\x10\xcc\x12\
\x00\x00\x11\x4e\x00\x00\x00\x00\x00\x01\x00\x10\xf1\x49\
\x00\x00\x10\x7c\x00\x00\x00\x00\x00\x01\x00\x10\xe1\x3a\
\x00\x00\x0f\xd0\x00\x00\x00\x00\x00\x01\x00\x10\xd2\xe2\
\x00\x00\x0f\xaa\x00\x00\x00\x00\x00\x01\x00\x10\xd0\xcb\
\x00\x00\x0f\xa8\x00\x00\x00\x00\x00\x01\x00\x10\xd9\xf6\
\x00\x00\x10\x18\x00\x00\x00\x00\x00\x01\x00\x10\xe1\x41\
\x00\x00\x0f\x58\x00\x00\x00\x00\x00\x01\x00\x10\xd4\x9a\
\x00\x00\x10\xf6\x00\x00\x00\x00\x00\x01\x00\x10\xf3\xbf\
\x00\x00\x10\x78\x00\x00\x00\x00\x00\x01\x00\x10\xe9\x57\
\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x01\x00\x10\xcd\x63\
\x00\x00\x11\x48\x00\x00\x00\x00\x00\x01\x00\x10\xf9\xc6\
\x00\x00\x10\x40\x00\x00\x00\x00\x00\x01\x00\x10\xe4\xb5\
\x00\x00\x11\x96\x00\x00\x00\x00\x00\x01\x00\x10\xfe\xf2\
\x00\x00\x0f\x2a\x00\x00\x00\x00\x00\x01\x00\x10\xd0\x01\
\x00\x00\x11\x22\x00\x00\x00\x00\x00\x01\x00\x10\xf6\xf2\
\x00\x00\x10\xcc\x00\x00\x00\x00\x00\x01\x00\x10\xf1\x47\
\x00\x00\x0f\x7e\x00\x00\x00\x00\x00\x01\x00\x10\xd7\x74\
\x00\x00\x11\x72\x00\x00\x00\x00\x00\x01\x00\x10\xfc\xab\
\x00\x00\x10\xa0\x00\x00\x00\x00\x00\x01\x00\x10\xec\x9c\
\x00\x00\x0f\xf4\x00\x00\x00\x00\x00\x01\x00\x10\xde\x44\
\x00\x00\x0f\xce\x00\x00\x00\x00\x00\x01\x00\x10\xdc\x2d\
\x00\x00\x03\x66\x00\x00\x00\x00\x00\x01\x00\x00\x21\x92\
\x00\x00\x0b\x9c\x00\x00\x00\x00\x00\x01\x00\x0f\x43\x79\
\x00\x00\x0c\x1c\x00\x00\x00\x00\x00\x01\x00\x0f\x4a\x3f\
\x00\x00\x0b\x20\x00\x00\x00\x00\x00\x01\x00\x0f\x3c\x75\
\x00\x00\x0b\xc4\x00\x00\x00\x00\x00\x01\x00\x0f\x46\x19\
\x00\x00\x0c\x46\x00\x00\x00\x00\x00\x01\x00\x0f\x4d\x0a\
\x00\x00\x0b\x6a\x00\x00\x00\x00\x00\x01\x00\x0f\x41\x8f\
\x00\x00\x0b\x44\x00\x00\x00\x00\x00\x01\x00\x0f\x3f\x1c\
\x00\x00\x0b\xfa\x00\x00\x00\x00\x00\x01\x00\x0f\x47\x9b\
\x00\x00\x0b\xc0\x00\x00\x00\x00\x00\x01\x00\x0f\x4e\xdb\
\x00\x00\x0c\x40\x00\x00\x00\x00\x00\x01\x00\x0f\x55\xa1\
\x00\x00\x0b\x44\x00\x00\x00\x00\x00\x01\x00\x0f\x47\xd7\
\x00\x00\x0b\xe8\x00\x00\x00\x00\x00\x01\x00\x0f\x51\x7b\
\x00\x00\x0c\x6a\x00\x00\x00\x00\x00\x01\x00\x0f\x58\x6c\
\x00\x00\x0b\x8e\x00\x00\x00\x00\x00\x01\x00\x0f\x4c\xf1\
\x00\x00\x0b\x68\x00\x00\x00\x00\x00\x01\x00\x0f\x4a\x7e\
\x00\x00\x0c\x1e\x00\x00\x00\x00\x00\x01\x00\x0f\x52\xfd\
\x00\x00\x01\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x05\xe6\
\x00\x00\x01\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x02\xfe\
\x00\x00\x0e\x2c\x00\x00\x00\x00\x00\x01\x00\x0f\x68\x58\
\x00\x00\x0e\x56\x00\x00\x00\x00\x00\x01\x00\x0f\x6d\xc2\
\x00\x00\x0e\x86\x00\x00\x00\x00\x00\x01\x00\x0f\xdc\x4b\
\x00\x00\x0e\xa6\x00\x00\x00\x00\x00\x01\x00\x0f\xe2\xfc\
\x00\x00\x11\xf4\x00\x00\x00\x00\x00\x01\x00\x10\xfa\xa4\
\x00\x00\x11\x9a\x00\x00\x00\x00\x00\x01\x00\x10\xf5\xa3\
\x00\x00\x14\x10\x00\x00\x00\x00\x00\x01\x00\x11\x24\xa9\
\x00\x00\x12\x9a\x00\x00\x00\x00\x00\x01\x00\x11\x02\xae\
\x00\x00\x12\x36\x00\x00\x00\x00\x00\x01\x00\x10\xfd\xf7\
\x00\x00\x11\xc0\x00\x00\x00\x00\x00\x01\x00\x10\xf8\xd4\
\x00\x00\x13\x62\x00\x00\x00\x00\x00\x01\x00\x11\x15\x84\
\x00\x00\x13\x00\x00\x00\x00\x00\x00\x01\x00\x11\x0d\x54\
\x00\x00\x14\x36\x00\x00\x00\x00\x00\x01\x00\x11\x27\x8b\
\x00\x00\x13\xdc\x00\x00\x00\x00\x00\x01\x00\x11\x20\xcc\
\x00\x00\x13\x2c\x00\x00\x00\x00\x00\x01\x00\x11\x12\x60\
\x00\x00\x14\x68\x00\x00\x00\x00\x00\x01\x00\x11\x2b\x48\
\x00\x00\x13\x84\x00\x00\x00\x00\x00\x01\x00\x11\x19\xf3\
\x00\x00\x12\xc8\x00\x00\x00\x00\x00\x01\x00\x11\x0a\xde\
\x00\x00\x13\xb2\x00\x00\x00\x00\x00\x01\x00\x11\x1e\x44\
\x00\x00\x12\x64\x00\x00\x00\x00\x00\x01\x00\x10\xff\xfe\
\x00\x00\x0a\x10\x00\x00\x00\x00\x00\x01\x00\x0e\xec\xf7\
\x00\x00\x0a\x30\x00\x00\x00\x00\x00\x01\x00\x0e\xf0\xd4\
\x00\x00\x09\xea\x00\x00\x00\x00\x00\x01\x00\x0e\xea\x59\
\x00\x00\x0d\x0a\x00\x00\x00\x00\x00\x01\x00\x0f\x57\x26\
\x00\x00\x0d\xa8\x00\x00\x00\x00\x00\x01\x00\x0f\x61\x9b\
\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x01\x00\x0f\x66\x54\
\x00\x00\x0c\xa0\x00\x00\x00\x00\x00\x01\x00\x0f\x53\x36\
\x00\x00\x0d\x84\x00\x00\x00\x00\x00\x01\x00\x0f\x5e\x68\
\x00\x00\x0c\xd4\x00\x00\x00\x00\x00\x01\x00\x0f\x55\x2d\
\x00\x00\x0d\x3e\x00\x00\x00\x00\x00\x01\x00\x0f\x59\x24\
\x00\x00\x0d\x60\x00\x00\x00\x00\x00\x01\x00\x0f\x5b\x37\
\x00\x00\x0d\xde\x00\x00\x00\x00\x00\x01\x00\x0f\x63\x83\
\x00\x00\x0c\x78\x00\x00\x00\x00\x00\x01\x00\x0f\x50\x7a\
\x00\x00\x0e\x50\x00\x00\x00\x00\x00\x01\x00\x0f\x73\xba\
\x00\x00\x0e\x7a\x00\x00\x00\x00\x00\x01\x00\x0f\x79\x24\
\x00\x00\x0e\xaa\x00\x00\x00\x00\x00\x01\x00\x0f\xe7\xad\
\x00\x00\x0e\xca\x00\x00\x00\x00\x00\x01\x00\x0f\xee\x5e\
\x00\x00\x12\x18\x00\x00\x00\x00\x00\x01\x00\x11\x06\x06\
\x00\x00\x11\xbe\x00\x00\x00\x00\x00\x01\x00\x11\x01\x05\
\x00\x00\x14\x34\x00\x00\x00\x00\x00\x01\x00\x11\x30\x0b\
\x00\x00\x12\xbe\x00\x00\x00\x00\x00\x01\x00\x11\x0e\x10\
\x00\x00\x12\x5a\x00\x00\x00\x00\x00\x01\x00\x11\x09\x59\
\x00\x00\x11\xe4\x00\x00\x00\x00\x00\x01\x00\x11\x04\x36\
\x00\x00\x13\x86\x00\x00\x00\x00\x00\x01\x00\x11\x20\xe6\
\x00\x00\x13\x24\x00\x00\x00\x00\x00\x01\x00\x11\x18\xb6\
\x00\x00\x14\x5a\x00\x00\x00\x00\x00\x01\x00\x11\x32\xed\
\x00\x00\x14\x00\x00\x00\x00\x00\x00\x01\x00\x11\x2c\x2e\
\x00\x00\x13\x50\x00\x00\x00\x00\x00\x01\x00\x11\x1d\xc2\
\x00\x00\x14\x8c\x00\x00\x00\x00\x00\x01\x00\x11\x36\xaa\
\x00\x00\x13\xa8\x00\x00\x00\x00\x00\x01\x00\x11\x25\x55\
\x00\x00\x12\xec\x00\x00\x00\x00\x00\x01\x00\x11\x16\x40\
\x00\x00\x13\xd6\x00\x00\x00\x00\x00\x01\x00\x11\x29\xa6\
\x00\x00\x12\x88\x00\x00\x00\x00\x00\x01\x00\x11\x0b\x60\
\x00\x00\x0a\x34\x00\x00\x00\x00\x00\x01\x00\x0e\xf8\x59\
\x00\x00\x0a\x54\x00\x00\x00\x00\x00\x01\x00\x0e\xfc\x36\
\x00\x00\x0a\x0e\x00\x00\x00\x00\x00\x01\x00\x0e\xf5\xbb\
\x00\x00\x0d\x2e\x00\x00\x00\x00\x00\x01\x00\x0f\x62\x88\
\x00\x00\x0d\xcc\x00\x00\x00\x00\x00\x01\x00\x0f\x6c\xfd\
\x00\x00\x0e\x26\x00\x00\x00\x00\x00\x01\x00\x0f\x71\xb6\
\x00\x00\x0c\xc4\x00\x00\x00\x00\x00\x01\x00\x0f\x5e\x98\
\x00\x00\x0d\xa8\x00\x00\x00\x00\x00\x01\x00\x0f\x69\xca\
\x00\x00\x0c\xf8\x00\x00\x00\x00\x00\x01\x00\x0f\x60\x8f\
\x00\x00\x0d\x62\x00\x00\x00\x00\x00\x01\x00\x0f\x64\x86\
\x00\x00\x0d\x84\x00\x00\x00\x00\x00\x01\x00\x0f\x66\x99\
\x00\x00\x0e\x02\x00\x00\x00\x00\x00\x01\x00\x0f\x6e\xe5\
\x00\x00\x0c\x9c\x00\x00\x00\x00\x00\x01\x00\x0f\x5b\xdc\
\x00\x00\x02\xee\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x20\
\x00\x00\x02\x72\x00\x00\x00\x00\x00\x01\x00\x00\x11\xc5\
\x00\x00\x02\x16\x00\x00\x00\x00\x00\x01\x00\x00\x0c\x03\
@ -71750,45 +71938,46 @@ qt_resource_struct = "\
\x00\x00\x04\xb8\x00\x00\x00\x00\x00\x01\x00\x0d\x50\x06\
\x00\x00\x05\x52\x00\x00\x00\x00\x00\x01\x00\x0d\x56\x1f\
\x00\x00\x05\x20\x00\x00\x00\x00\x00\x01\x00\x0d\x54\x57\
\x00\x00\x14\xd0\x00\x00\x00\x00\x00\x01\x00\x11\x34\x7c\
\x00\x00\x15\x04\x00\x00\x00\x00\x00\x01\x00\x11\x37\x4c\
\x00\x00\x14\x8c\x00\x00\x00\x00\x00\x01\x00\x11\x2e\xfb\
\x00\x00\x14\xb0\x00\x00\x00\x00\x00\x01\x00\x11\x31\xf9\
\x00\x00\x06\xde\x00\x00\x00\x00\x00\x01\x00\x0e\xaa\x8e\
\x00\x00\x07\xc4\x00\x00\x00\x00\x00\x01\x00\x0e\xbb\x82\
\x00\x00\x09\xca\x00\x00\x00\x00\x00\x01\x00\x0e\xe6\x66\
\x00\x00\x09\x98\x00\x00\x00\x00\x00\x01\x00\x0e\xdf\x50\
\x00\x00\x08\x7e\x00\x00\x00\x00\x00\x01\x00\x0e\xc4\x50\
\x00\x00\x09\x1e\x00\x00\x00\x00\x00\x01\x00\x0e\xd7\x0f\
\x00\x00\x09\x48\x00\x00\x00\x00\x00\x01\x00\x0e\xd9\x44\
\x00\x00\x08\x1e\x00\x00\x00\x00\x00\x01\x00\x0e\xc0\x33\
\x00\x00\x08\x4c\x00\x00\x00\x00\x00\x01\x00\x0e\xc2\xb3\
\x00\x00\x07\x52\x00\x00\x00\x00\x00\x01\x00\x0e\xb4\x35\
\x00\x00\x07\xa4\x00\x00\x00\x00\x00\x01\x00\x0e\xb8\x76\
\x00\x00\x07\xec\x00\x00\x00\x00\x00\x01\x00\x0e\xbe\xe0\
\x00\x00\x08\xd0\x00\x00\x00\x00\x00\x01\x00\x0e\xca\xc5\
\x00\x00\x08\xa4\x00\x00\x00\x00\x00\x01\x00\x0e\xc8\x62\
\x00\x00\x09\x6a\x00\x00\x00\x00\x00\x01\x00\x0e\xdd\x48\
\x00\x00\x06\xb0\x00\x00\x00\x00\x00\x01\x00\x0e\xa3\xd0\
\x00\x00\x07\x02\x00\x00\x00\x00\x00\x01\x00\x0e\xad\x7a\
\x00\x00\x07\x2e\x00\x00\x00\x00\x00\x01\x00\x0e\xb0\xbc\
\x00\x00\x07\x82\x00\x00\x00\x00\x00\x01\x00\x0e\xb5\x2e\
\x00\x00\x08\xee\x00\x00\x00\x00\x00\x01\x00\x0e\xcd\x67\
\x00\x00\x0a\x94\x00\x00\x00\x00\x00\x01\x00\x0f\x27\xb3\
\x00\x00\x0a\xda\x00\x00\x00\x00\x00\x01\x00\x0f\x32\xb8\
\x00\x00\x0a\xfc\x00\x00\x00\x00\x00\x01\x00\x0f\x35\x8e\
\x00\x00\x0a\x52\x00\x00\x00\x00\x00\x01\x00\x0e\xf4\x0e\
\x00\x00\x0a\xb6\x00\x00\x00\x00\x00\x01\x00\x0f\x2b\x86\
\x00\x00\x15\x34\x00\x00\x00\x00\x00\x01\x00\x11\x3a\x45\
\x00\x00\x15\x96\x00\x00\x00\x00\x00\x01\x00\x11\x40\xbb\
\x00\x00\x15\x68\x00\x00\x00\x00\x00\x01\x00\x11\x3d\xa7\
\x00\x00\x15\xbe\x00\x00\x00\x00\x00\x01\x00\x11\x43\x59\
\x00\x00\x06\x18\x00\x00\x00\x00\x00\x01\x00\x0d\x91\xaf\
\x00\x00\x05\xb8\x00\x00\x00\x00\x00\x01\x00\x0d\x62\x6f\
\x00\x00\x05\x88\x00\x00\x00\x00\x00\x01\x00\x0d\x57\xdb\
\x00\x00\x05\xe8\x00\x00\x00\x00\x00\x01\x00\x0d\x77\xa4\
\x00\x00\x06\x48\x00\x00\x00\x00\x00\x01\x00\x0d\x95\xcc\
\x00\x00\x06\x7c\x00\x00\x00\x00\x00\x01\x00\x0e\x5e\x65\
\x00\x00\x14\xf4\x00\x00\x00\x00\x00\x01\x00\x11\x3f\xde\
\x00\x00\x15\x28\x00\x00\x00\x00\x00\x01\x00\x11\x42\xae\
\x00\x00\x14\xb0\x00\x00\x00\x00\x00\x01\x00\x11\x3a\x5d\
\x00\x00\x14\xd4\x00\x00\x00\x00\x00\x01\x00\x11\x3d\x5b\
\x00\x00\x07\x02\x00\x00\x00\x00\x00\x01\x00\x0e\xb5\xf0\
\x00\x00\x07\xe8\x00\x00\x00\x00\x00\x01\x00\x0e\xc6\xe4\
\x00\x00\x09\xee\x00\x00\x00\x00\x00\x01\x00\x0e\xf1\xc8\
\x00\x00\x09\xbc\x00\x00\x00\x00\x00\x01\x00\x0e\xea\xb2\
\x00\x00\x08\xa2\x00\x00\x00\x00\x00\x01\x00\x0e\xcf\xb2\
\x00\x00\x09\x42\x00\x00\x00\x00\x00\x01\x00\x0e\xe2\x71\
\x00\x00\x09\x6c\x00\x00\x00\x00\x00\x01\x00\x0e\xe4\xa6\
\x00\x00\x08\x42\x00\x00\x00\x00\x00\x01\x00\x0e\xcb\x95\
\x00\x00\x08\x70\x00\x00\x00\x00\x00\x01\x00\x0e\xce\x15\
\x00\x00\x07\x76\x00\x00\x00\x00\x00\x01\x00\x0e\xbf\x97\
\x00\x00\x07\xc8\x00\x00\x00\x00\x00\x01\x00\x0e\xc3\xd8\
\x00\x00\x08\x10\x00\x00\x00\x00\x00\x01\x00\x0e\xca\x42\
\x00\x00\x08\xf4\x00\x00\x00\x00\x00\x01\x00\x0e\xd6\x27\
\x00\x00\x08\xc8\x00\x00\x00\x00\x00\x01\x00\x0e\xd3\xc4\
\x00\x00\x09\x8e\x00\x00\x00\x00\x00\x01\x00\x0e\xe8\xaa\
\x00\x00\x06\xd4\x00\x00\x00\x00\x00\x01\x00\x0e\xaf\x32\
\x00\x00\x07\x26\x00\x00\x00\x00\x00\x01\x00\x0e\xb8\xdc\
\x00\x00\x07\x52\x00\x00\x00\x00\x00\x01\x00\x0e\xbc\x1e\
\x00\x00\x07\xa6\x00\x00\x00\x00\x00\x01\x00\x0e\xc0\x90\
\x00\x00\x09\x12\x00\x00\x00\x00\x00\x01\x00\x0e\xd8\xc9\
\x00\x00\x0a\xb8\x00\x00\x00\x00\x00\x01\x00\x0f\x33\x15\
\x00\x00\x0a\xfe\x00\x00\x00\x00\x00\x01\x00\x0f\x3e\x1a\
\x00\x00\x0b\x20\x00\x00\x00\x00\x00\x01\x00\x0f\x40\xf0\
\x00\x00\x0a\x76\x00\x00\x00\x00\x00\x01\x00\x0e\xff\x70\
\x00\x00\x0a\xda\x00\x00\x00\x00\x00\x01\x00\x0f\x36\xe8\
\x00\x00\x15\x58\x00\x00\x00\x00\x00\x01\x00\x11\x45\xa7\
\x00\x00\x15\xba\x00\x00\x00\x00\x00\x01\x00\x11\x4c\x1d\
\x00\x00\x15\x8c\x00\x00\x00\x00\x00\x01\x00\x11\x49\x09\
\x00\x00\x15\xe2\x00\x00\x00\x00\x00\x01\x00\x11\x4e\xbb\
\x00\x00\x06\x3c\x00\x00\x00\x00\x00\x01\x00\x0d\x9d\x11\
\x00\x00\x05\xdc\x00\x00\x00\x00\x00\x01\x00\x0d\x6d\xd1\
\x00\x00\x05\xac\x00\x00\x00\x00\x00\x01\x00\x0d\x63\x3d\
\x00\x00\x06\x0c\x00\x00\x00\x00\x00\x01\x00\x0d\x83\x06\
\x00\x00\x06\x6c\x00\x00\x00\x00\x00\x01\x00\x0d\xa1\x2e\
\x00\x00\x06\xa0\x00\x00\x00\x00\x00\x01\x00\x0e\x69\xc7\
\x00\x00\x05\x88\x00\x01\x00\x00\x00\x01\x00\x0d\x57\xdb\
"
def qInitResources():

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,10 +32,11 @@ from PyQt4 import QtGui
from openlp.core.lib import build_icon, translate
from openlp.core.lib.ui import UiStrings, create_button, create_button_box
class Ui_AboutDialog(object):
def setupUi(self, aboutDialog):
aboutDialog.setObjectName(u'aboutDialog')
aboutDialog.setWindowIcon(build_icon(u':/icon/openlp-logo-16x16.png'))
aboutDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.aboutDialogLayout = QtGui.QVBoxLayout(aboutDialog)
self.aboutDialogLayout.setObjectName(u'aboutDialogLayout')
self.logoLabel = QtGui.QLabel(aboutDialog)
@ -248,8 +249,8 @@ class Ui_AboutDialog(object):
self.aboutNotebook.indexOf(self.creditsTab),
translate('OpenLP.AboutForm', 'Credits'))
copyright = unicode(translate('OpenLP.AboutForm',
'Copyright \xa9 2004-2012 %s\n'
'Portions copyright \xa9 2004-2012 %s')) % (u'Raoul Snyman',
'Copyright \xa9 2004-2013 %s\n'
'Portions copyright \xa9 2004-2013 %s')) % (u'Raoul Snyman',
u'Tim Bentley, Gerald Britton, Jonathan Corwin, Samuel Findlay, '
u'Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, '
u'Armin K\xf6hler, Erik Lundin, Edwin Lunando, Joshua Miller, '

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -662,7 +662,7 @@ class AdvancedTab(SettingsTab):
u'background-color: %s' % self.defaultColor)
def onDefaultBrowseButtonClicked(self):
file_filters = u'%s;;%s (*.*) (*)' % (get_images_filter(),
file_filters = u'%s;;%s (*.*)' % (get_images_filter(),
UiStrings().AllFiles)
filename = QtGui.QFileDialog.getOpenFileName(self,
translate('OpenLP.AdvancedTab', 'Open File'), '',

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,9 +32,11 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button, create_button_box
class Ui_ExceptionDialog(object):
def setupUi(self, exceptionDialog):
exceptionDialog.setObjectName(u'exceptionDialog')
exceptionDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.exceptionLayout = QtGui.QVBoxLayout(exceptionDialog)
self.exceptionLayout.setObjectName(u'exceptionLayout')
self.messageLayout = QtGui.QHBoxLayout()

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -219,7 +219,7 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog):
self,translate('ImagePlugin.ExceptionDialog',
'Select Attachment'),
SettingsManager.get_last_dir(u'exceptions'),
u'%s (*.*) (*)' % UiStrings().AllFiles)
u'%s (*.*)' % UiStrings().AllFiles)
log.info(u'New files(s) %s', unicode(files))
if files:
self.fileAttachment = unicode(files)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,12 +29,14 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box
class Ui_FileRenameDialog(object):
def setupUi(self, fileRenameDialog):
fileRenameDialog.setObjectName(u'fileRenameDialog')
fileRenameDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
fileRenameDialog.resize(300, 10)
self.dialogLayout = QtGui.QGridLayout(fileRenameDialog)
self.dialogLayout.setObjectName(u'dialogLayout')

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -26,7 +26,9 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
The First Time Wizard
"""
import io
import logging
import os
@ -42,11 +44,13 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate, PluginStatus, Receiver, build_icon, \
check_directory_exists
from openlp.core.lib.settings import Settings
from openlp.core.utils import get_web_page, AppLocation, get_filesystem_encoding
from openlp.core.utils import get_web_page, AppLocation, join_url, \
get_filesystem_encoding, get_application_version
from firsttimewizard import Ui_FirstTimeWizard, FirstTimePage
log = logging.getLogger(__name__)
class ThemeScreenshotThread(QtCore.QThread):
"""
This thread downloads the theme screenshots.
@ -55,8 +59,14 @@ class ThemeScreenshotThread(QtCore.QThread):
QtCore.QThread.__init__(self, parent)
def run(self):
"""
Run the thread.
"""
themes = self.parent().config.get(u'themes', u'files')
themes = themes.split(u',')
themes_dir = self.parent().config.get(u'themes', u'directory')
tmp_dir = os.path.join(unicode(gettempdir(), get_filesystem_encoding()),
u'openlp')
config = self.parent().config
for theme in themes:
# Stop if the wizard has been cancelled.
@ -65,9 +75,9 @@ class ThemeScreenshotThread(QtCore.QThread):
title = config.get(u'theme_%s' % theme, u'title')
filename = config.get(u'theme_%s' % theme, u'filename')
screenshot = config.get(u'theme_%s' % theme, u'screenshot')
urllib.urlretrieve(u'%s%s' % (self.parent().web, screenshot),
os.path.join(unicode(gettempdir(), get_filesystem_encoding()),
u'openlp', screenshot))
urllib.urlretrieve(join_url(self.parent().baseurl,
themes_dir, screenshot),
os.path.join(tmp_dir, screenshot))
item = QtGui.QListWidgetItem(title, self.parent().themesListWidget)
item.setData(QtCore.Qt.UserRole, QtCore.QVariant(filename))
item.setCheckState(QtCore.Qt.Unchecked)
@ -85,13 +95,23 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
QtGui.QWizard.__init__(self, parent)
self.setupUi(self)
self.screens = screens
# check to see if we have web access
self.web = u'http://openlp.org/files/frw/'
self.config = SafeConfigParser()
self.webAccess = get_web_page(u'%s%s' % (self.web, u'download.cfg'))
# The following url should contain 'download.cfg' or redirect OpenLP
# to the right url of 'download.cfg' file.
# 'download.cfg' file contains definitions for everything that is
# available for download into OpenLP in FirstTimeWizard.
self.web = u'http://openlp.org/files/frw/'
# Base url for dowloading resource files (songs, themes, bibles).
# These files could be hosted on different places and thus the base
# url is defined in 'download.cfg' file.
self.baseurl = None
# Check to see if we have web access
user_agent = u'OpenLP/' + get_application_version()[u'version']
self.webAccess = get_web_page(u'%s%s' % (self.web, u'download.cfg'), header=(u'User-Agent', user_agent))
if self.webAccess:
files = self.webAccess.read()
self.config.readfp(io.BytesIO(files))
self.baseurl = self.config.get(u'general', u'base url')
self.updateScreenListCombo()
self.downloadCancelled = False
self.downloading = unicode(translate('OpenLP.FirstTimeWizard',
@ -123,7 +143,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
# Check if this is a re-run of the wizard.
self.hasRunWizard = Settings().value(
u'general/has run wizard', QtCore.QVariant(False)).toBool()
# Sort out internet access for downloads
# Sort out internet access for downloads.
if self.webAccess:
songs = self.config.get(u'songs', u'languages')
songs = songs.split(u',')
@ -167,15 +187,28 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
Determine the next page in the Wizard to go to.
"""
Receiver.send_message(u'openlp_process_events')
# If we are currently on the plugins page
if self.currentId() == FirstTimePage.Plugins:
# But we don't have Internet access
if not self.webAccess:
return FirstTimePage.NoInternet
else:
# The songs plugin is enabled
elif self.songsCheckBox.isChecked():
return FirstTimePage.Songs
# The Bibles plugin is enabled
elif self.bibleCheckBox.isChecked():
return FirstTimePage.Bibles
else:
return FirstTimePage.Themes
elif self.currentId() == FirstTimePage.Progress:
return -1
elif self.currentId() == FirstTimePage.NoInternet:
return FirstTimePage.Progress
elif self.currentId() == FirstTimePage.Songs:
if self.bibleCheckBox.isChecked():
return FirstTimePage.Bibles
else:
return FirstTimePage.Themes
elif self.currentId() == FirstTimePage.Themes:
Receiver.send_message(u'cursor_busy')
Receiver.send_message(u'openlp_process_events')
@ -280,6 +313,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
Download a file given a URL. The file is retrieved in chunks, giving
the ability to cancel the download at any point.
"""
log.debug(u'Downloading %s' % url)
block_count = 0
block_size = 4096
urlfile = urllib2.urlopen(url)
@ -348,13 +382,18 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
self.max_progress = 0
self.finishButton.setVisible(False)
Receiver.send_message(u'openlp_process_events')
# Directory name appended to base download url as the name
# is found in download.cfg file.
songs_dir = unicode(self.config.get(u'songs', u'directory'), u'utf8')
bibles_dir = unicode(self.config.get(u'bibles', u'directory'), u'utf8')
themes_dir = unicode(self.config.get(u'themes', u'directory'), u'utf8')
# Loop through the songs list and increase for each selected item
for i in xrange(self.songsListWidget.count()):
Receiver.send_message(u'openlp_process_events')
item = self.songsListWidget.item(i)
if item.checkState() == QtCore.Qt.Checked:
filename = item.data(QtCore.Qt.UserRole).toString()
size = self._getFileSize(u'%s%s' % (self.web, filename))
size = self._getFileSize(join_url(self.baseurl, songs_dir, filename))
self.max_progress += size
# Loop through the Bibles list and increase for each selected item
iterator = QtGui.QTreeWidgetItemIterator(self.biblesTreeWidget)
@ -363,7 +402,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
item = iterator.value()
if item.parent() and item.checkState(0) == QtCore.Qt.Checked:
filename = item.data(0, QtCore.Qt.UserRole).toString()
size = self._getFileSize(u'%s%s' % (self.web, filename))
size = self._getFileSize(join_url(self.baseurl, bibles_dir, filename))
self.max_progress += size
iterator += 1
# Loop through the themes list and increase for each selected item
@ -372,11 +411,11 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
item = self.themesListWidget.item(i)
if item.checkState() == QtCore.Qt.Checked:
filename = item.data(QtCore.Qt.UserRole).toString()
size = self._getFileSize(u'%s%s' % (self.web, filename))
size = self._getFileSize(join_url(self.baseurl, themes_dir, filename))
self.max_progress += size
if self.max_progress:
# Add on 2 for plugins status setting plus a "finished" point.
self.max_progress = self.max_progress + 2
self.max_progress += 2
self.progressBar.setValue(0)
self.progressBar.setMinimum(0)
self.progressBar.setMaximum(self.max_progress)
@ -448,6 +487,11 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
unicode(gettempdir(), get_filesystem_encoding()), u'openlp')
bibles_destination = AppLocation.get_section_data_path(u'bibles')
themes_destination = AppLocation.get_section_data_path(u'themes')
# Directory name appended to base download url as the name
# is found in download.cfg file.
songs_dir = unicode(self.config.get(u'songs', u'directory'), u'utf8')
bibles_dir = unicode(self.config.get(u'bibles', u'directory'), u'utf8')
themes_dir = unicode(self.config.get(u'themes', u'directory'), u'utf8')
# Download songs
for i in xrange(self.songsListWidget.count()):
item = self.songsListWidget.item(i)
@ -457,7 +501,8 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
self.previous_size = 0
destination = os.path.join(songs_destination,
unicode(filename))
self.urlGetFile(u'%s%s' % (self.web, filename), destination)
self.urlGetFile(join_url(self.baseurl, songs_dir, filename),
destination)
# Download Bibles
bibles_iterator = QtGui.QTreeWidgetItemIterator(
self.biblesTreeWidget)
@ -467,7 +512,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
bible = unicode(item.data(0, QtCore.Qt.UserRole).toString())
self._incrementProgressBar(self.downloading % bible, 0)
self.previous_size = 0
self.urlGetFile(u'%s%s' % (self.web, bible),
self.urlGetFile(join_url(self.baseurl, bibles_dir, bible),
os.path.join(bibles_destination, bible))
bibles_iterator += 1
# Download themes
@ -477,7 +522,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
theme = unicode(item.data(QtCore.Qt.UserRole).toString())
self._incrementProgressBar(self.downloading % theme, 0)
self.previous_size = 0
self.urlGetFile(u'%s%s' % (self.web, theme),
self.urlGetFile(join_url(self.baseurl, themes_dir, theme),
os.path.join(themes_destination, theme))
# Set Default Display
if self.displayComboBox.currentIndex() != -1:

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,12 +29,14 @@
from PyQt4 import QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box
class Ui_FirstTimeLanguageDialog(object):
def setupUi(self, languageDialog):
languageDialog.setObjectName(u'languageDialog')
languageDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
languageDialog.resize(300, 50)
self.dialogLayout = QtGui.QVBoxLayout(languageDialog)
self.dialogLayout.setContentsMargins(8, 8, 8, 8)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -31,10 +31,14 @@ from PyQt4 import QtCore, QtGui
import sys
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import add_welcome_page
class FirstTimePage(object):
"""
An enumeration object to make it easy for a developer to determine which page is which by index
"""
Welcome = 0
Plugins = 1
NoInternet = 2
@ -55,6 +59,7 @@ class Ui_FirstTimeWizard(object):
QtGui.QWizard.NoBackButtonOnStartPage |
QtGui.QWizard.NoBackButtonOnLastPage |
QtGui.QWizard.HaveCustomButton1)
FirstTimeWizard.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.finishButton = self.button(QtGui.QWizard.FinishButton)
self.noInternetFinishButton = self.button(QtGui.QWizard.CustomButton1)
self.cancelButton = self.button(QtGui.QWizard.CancelButton)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,13 +29,15 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import UiStrings, create_button_box
class Ui_FormattingTagDialog(object):
def setupUi(self, formattingTagDialog):
formattingTagDialog.setObjectName(u'formattingTagDialog')
formattingTagDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
formattingTagDialog.resize(725, 548)
self.listdataGridLayout = QtGui.QGridLayout(formattingTagDialog)
self.listdataGridLayout.setMargin(8)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -109,6 +109,7 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
has been changed.
"""
self.savePushButton.setEnabled(True)
self.savePushButton.setDefault(True)
def onNewClicked(self):
"""
@ -123,11 +124,11 @@ class FormattingTagForm(QtGui.QDialog, Ui_FormattingTagDialog):
return
# Add new tag to list
tag = {
u'desc': translate('OpenLP.FormattingTagForm', 'New Tag'),
u'desc': unicode(translate('OpenLP.FormattingTagForm', 'New Tag')),
u'start tag': u'{n}',
u'start html': translate('OpenLP.FormattingTagForm', '<HTML here>'),
u'start html': unicode(translate('OpenLP.FormattingTagForm', '<HTML here>')),
u'end tag': u'{/n}',
u'end html': translate('OpenLP.FormattingTagForm', '</and here>'),
u'end html': unicode(translate('OpenLP.FormattingTagForm', '</and here>')),
u'protected': False,
u'temporary': False
}

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -92,14 +92,14 @@ class GeneralTab(SettingsTab):
self.monitorLayout.addWidget(self.customWidthLabel, 3, 3)
self.customWidthValueEdit = QtGui.QSpinBox(self.monitorGroupBox)
self.customWidthValueEdit.setObjectName(u'customWidthValueEdit')
self.customWidthValueEdit.setMaximum(9999)
self.customWidthValueEdit.setRange(1, 9999)
self.monitorLayout.addWidget(self.customWidthValueEdit, 4, 3)
self.customHeightLabel = QtGui.QLabel(self.monitorGroupBox)
self.customHeightLabel.setObjectName(u'customHeightLabel')
self.monitorLayout.addWidget(self.customHeightLabel, 3, 4)
self.customHeightValueEdit = QtGui.QSpinBox(self.monitorGroupBox)
self.customHeightValueEdit.setObjectName(u'customHeightValueEdit')
self.customHeightValueEdit.setMaximum(9999)
self.customHeightValueEdit.setRange(1, 9999)
self.monitorLayout.addWidget(self.customHeightValueEdit, 4, 4)
self.displayOnMonitorCheck = QtGui.QCheckBox(self.monitorGroupBox)
self.displayOnMonitorCheck.setObjectName(u'monitorComboBox')

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -175,8 +175,10 @@ class MainDisplay(Display):
def setTransparency(self, enabled):
if enabled:
self.setAutoFillBackground(False)
self.setStyleSheet("QGraphicsView {background: transparent; border: 0px;}")
else:
self.setAttribute(QtCore.Qt.WA_NoSystemBackground, False)
self.setStyleSheet("QGraphicsView {}")
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, enabled)
self.repaint()
@ -362,6 +364,7 @@ class MainDisplay(Display):
Generates a preview of the image displayed.
"""
log.debug(u'preview for %s', self.isLive)
was_visible = self.isVisible()
Receiver.send_message(u'openlp_process_events')
# We must have a service item to preview.
if self.isLive and hasattr(self, u'serviceItem'):
@ -380,7 +383,8 @@ class MainDisplay(Display):
if self.isLive:
if self.hideMode:
self.hideDisplay(self.hideMode)
else:
# Only continue if the visibility wasn't changed during method call.
elif was_visible == self.isVisible():
# Single screen active
if self.screens.display_count == 1:
# Only make visible if setting enabled.

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -82,13 +82,14 @@ PROGRESSBAR_STYLE = """
}
"""
class Ui_MainWindow(object):
def setupUi(self, mainWindow):
"""
Set up the user interface
"""
mainWindow.setObjectName(u'MainWindow')
mainWindow.setWindowIcon(build_icon(u':/icon/openlp-logo-64x64.png'))
mainWindow.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
mainWindow.setDockNestingEnabled(True)
# Set up the main container, which contains all the other form widgets.
self.mainContent = QtGui.QWidget(mainWindow)
@ -310,9 +311,9 @@ class Ui_MainWindow(object):
# Give QT Extra Hint that this is the Preferences Menu Item
self.settingsConfigureItem.setMenuRole(QtGui.QAction.PreferencesRole)
self.settingsImportItem = create_action(mainWindow,
u'settingsImportItem', category=UiStrings().Settings)
u'settingsImportItem', category=UiStrings().Import)
self.settingsExportItem = create_action(mainWindow,
u'settingsExportItem', category=UiStrings().Settings)
u'settingsExportItem', category=UiStrings().Export)
action_list.add_category(unicode(UiStrings().Help),
CategoryOrder.standardMenu)
self.aboutItem = create_action(mainWindow, u'aboutItem',

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -423,10 +423,11 @@ class MediaController(object):
controller.volumeSlider.blockSignals(False)
return False
if status:
display.frame.evaluateJavaScript(u'show_blank("desktop");')
if not controller.media_info.is_background:
display.frame.evaluateJavaScript(u'show_blank("desktop");')
self.curDisplayMediaPlayer[display].set_visible(display,
True)
if controller.isLive:
if controller.isLive and not controller.media_info.is_background:
if controller.hideMenu.defaultAction().isChecked():
controller.hideMenu.defaultAction().trigger()
# Start Timer for ui updates

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -69,13 +69,20 @@ class PhononPlayer(MediaPlayer):
self.display_name = u'&Phonon'
self.parent = parent
self.additional_extensions = ADDITIONAL_EXT
mimetypes.init()
for mimetype in Phonon.BackendCapabilities.availableMimeTypes():
mimetype = unicode(mimetype)
if mimetype.startswith(u'audio/'):
self._addToList(self.audio_extensions_list, mimetype)
elif mimetype.startswith(u'video/'):
self._addToList(self.video_extensions_list, mimetype)
try:
mimetypes.init()
for mimetype in Phonon.BackendCapabilities.availableMimeTypes():
mimetype = unicode(mimetype)
if mimetype.startswith(u'audio/'):
self._addToList(self.audio_extensions_list, mimetype)
elif mimetype.startswith(u'video/'):
self._addToList(self.video_extensions_list, mimetype)
# Work around for http://bugs.python.org/issue9291
except UnicodeDecodeError:
log.exception(u'UnicodeDecodeError when trying to read mime types. '
'Setting extensions to all files')
self.audio_extensions_list = [u'*.*']
self.video_extensions_list = [u'*.*']
def _addToList(self, list, mimetype):
# Add all extensions which mimetypes provides us for supported types.

View File

@ -2,7 +2,7 @@
# Python ctypes bindings for VLC
#
# Copyright (C) 2009-2012 the VideoLAN team
# Copyright (C) 2009-2013 the VideoLAN team
# $Id: $
#
# Authors: Olivier Aubert <olivier.aubert at liris.cnrs.fr>

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -89,7 +89,8 @@ VIDEO_EXT = [
u'*.xa',
u'*.iso',
u'*.vob',
u'*.webm'
u'*.webm',
u'*.divx'
]
@ -162,7 +163,7 @@ class VlcPlayer(MediaPlayer):
# We need to set media_info.length during load because we want
# to avoid start and stop the video twice. Once for real playback
# and once to just get media length.
#
#
# Media plugin depends on knowing media length before playback.
controller.media_info.length = \
int(display.vlcMediaPlayer.get_media().get_duration() / 1000)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -229,32 +229,32 @@ FLASH_HTML = u"""
"""
VIDEO_EXT = [
u'*.3gp'
, u'*.3gpp'
, u'*.3g2'
, u'*.3gpp2'
, u'*.aac'
, u'*.flv'
, u'*.f4a'
, u'*.f4b'
, u'*.f4p'
, u'*.f4v'
, u'*.mov'
, u'*.m4a'
, u'*.m4b'
, u'*.m4p'
, u'*.m4v'
, u'*.mkv'
, u'*.mp4'
, u'*.ogv'
, u'*.webm'
, u'*.mpg', u'*.wmv', u'*.mpeg', u'*.avi'
, u'*.swf'
u'*.3gp',
u'*.3gpp',
u'*.3g2',
u'*.3gpp2',
u'*.aac',
u'*.flv',
u'*.f4a',
u'*.f4b',
u'*.f4p',
u'*.f4v',
u'*.mov',
u'*.m4a',
u'*.m4b',
u'*.m4p',
u'*.m4v',
u'*.mkv',
u'*.mp4',
u'*.ogv',
u'*.webm',
u'*.mpg', u'*.wmv', u'*.mpeg', u'*.avi',
u'*.swf'
]
AUDIO_EXT = [
u'*.mp3'
, u'*.ogg'
u'*.mp3',
u'*.ogg'
]

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,13 +29,15 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import UiStrings, create_button_box
class Ui_PluginViewDialog(object):
def setupUi(self, pluginViewDialog):
pluginViewDialog.setObjectName(u'pluginViewDialog')
pluginViewDialog.setWindowModality(QtCore.Qt.ApplicationModal)
pluginViewDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.pluginLayout = QtGui.QVBoxLayout(pluginViewDialog)
self.pluginLayout.setObjectName(u'pluginLayout')
self.listLayout = QtGui.QHBoxLayout()

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,6 +32,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import build_icon, translate, SpellTextEdit
from openlp.core.lib.ui import UiStrings
class ZoomSize(object):
"""
Type enumeration for Combo Box sizes
@ -48,6 +49,7 @@ class Ui_PrintServiceDialog(object):
def setupUi(self, printServiceDialog):
printServiceDialog.setObjectName(u'printServiceDialog')
printServiceDialog.resize(664, 594)
printServiceDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.mainLayout = QtGui.QVBoxLayout(printServiceDialog)
self.mainLayout.setSpacing(0)
self.mainLayout.setMargin(0)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,12 +29,14 @@
from PyQt4 import QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box, create_button
class Ui_ServiceItemEditDialog(object):
def setupUi(self, serviceItemEditDialog):
serviceItemEditDialog.setObjectName(u'serviceItemEditDialog')
serviceItemEditDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.dialogLayout = QtGui.QGridLayout(serviceItemEditDialog)
self.dialogLayout.setContentsMargins(8, 8, 8, 8)
self.dialogLayout.setSpacing(8)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,6 +32,7 @@ import logging
import os
import shutil
import zipfile
import json
from tempfile import mkstemp
from datetime import datetime, timedelta
@ -477,7 +478,7 @@ class ServiceManager(QtGui.QWidget):
path_file_name = unicode(self.fileName())
path, file_name = os.path.split(path_file_name)
basename = os.path.splitext(file_name)[0]
service_file_name = '%s.osd' % basename
service_file_name = '%s.osj' % basename
log.debug(u'ServiceManager.saveFile - %s', path_file_name)
SettingsManager.set_last_dir(
self.mainwindow.serviceManagerSettingsSection,
@ -542,7 +543,7 @@ class ServiceManager(QtGui.QWidget):
total_size += file_size
log.debug(u'ServiceManager.saveFile - ZIP contents size is %i bytes' %
total_size)
service_content = cPickle.dumps(service)
service_content = json.dumps(service)
# Usual Zip file cannot exceed 2GiB, file with Zip64 cannot be
# extracted using unzip in UNIX.
allow_zip_64 = (total_size > 2147483648 + len(service_content))
@ -672,12 +673,15 @@ class ServiceManager(QtGui.QWidget):
log.debug(u'Extract file: %s', osfile)
zipinfo.filename = osfile
zip.extract(zipinfo, self.servicePath)
if osfile.endswith(u'osd'):
if osfile.endswith(u'osd') or osfile.endswith(u'osj'):
p_file = os.path.join(self.servicePath, osfile)
if 'p_file' in locals():
Receiver.send_message(u'cursor_busy')
fileTo = open(p_file, u'r')
items = cPickle.load(fileTo)
if p_file.endswith(u'osj'):
items = json.load(fileTo)
else:
items = cPickle.load(fileTo)
fileTo.close()
self.newFile()
self.mainwindow.displayProgressBar(len(items))
@ -792,7 +796,7 @@ class ServiceManager(QtGui.QWidget):
self.serviceItems[item][u'service_item'].notes)
if self.serviceNoteForm.exec_():
self.serviceItems[item][u'service_item'].notes = \
self.serviceNoteForm.textEdit.toPlainText()
unicode(self.serviceNoteForm.textEdit.toPlainText())
self.repaintServiceList(item, -1)
self.setModified()

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,6 +32,7 @@ from PyQt4 import QtGui
from openlp.core.lib import translate, SpellTextEdit
from openlp.core.lib.ui import create_button_box
class ServiceNoteForm(QtGui.QDialog):
"""
This is the form that is used to edit the verses of the song.

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,12 +32,12 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box
class Ui_SettingsDialog(object):
def setupUi(self, settingsDialog):
settingsDialog.setObjectName(u'settingsDialog')
settingsDialog.resize(800, 500)
settingsDialog.setWindowIcon(
build_icon(u':/system/system_settings.png'))
settingsDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.dialogLayout = QtGui.QGridLayout(settingsDialog)
self.dialogLayout.setObjectName(u'dialogLayout')
self.dialogLayout.setMargin(8)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -32,6 +32,7 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box
class CaptureShortcutButton(QtGui.QPushButton):
"""
A class to encapsulate a ``QPushButton``.
@ -54,6 +55,7 @@ class Ui_ShortcutListDialog(object):
def setupUi(self, shortcutListDialog):
shortcutListDialog.setObjectName(u'shortcutListDialog')
shortcutListDialog.resize(500, 438)
shortcutListDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.shortcutListLayout = QtGui.QVBoxLayout(shortcutListDialog)
self.shortcutListLayout.setObjectName(u'shortcutListLayout')
self.descriptionLabel = QtGui.QLabel(shortcutListDialog)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -79,7 +79,7 @@ class ShortcutListForm(QtGui.QDialog, Ui_ShortcutListDialog):
self.keyReleaseEvent(event)
elif self.primaryPushButton.isChecked() or \
self.alternatePushButton.isChecked():
event.ignore()
self.keyReleaseEvent(event)
elif event.key() == QtCore.Qt.Key_Escape:
event.accept()
self.close()

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -44,6 +44,7 @@ from openlp.core.utils.actions import ActionList, CategoryOrder
log = logging.getLogger(__name__)
class SlideList(QtGui.QTableWidget):
"""
Customised version of QTableWidget which can respond to keyboard
@ -101,7 +102,6 @@ class SlideController(Controller):
u'delaySpinBox'
]
self.audioList = [
u'songMenu',
u'audioPauseItem',
u'audioTimeLabel'
]
@ -287,7 +287,7 @@ class SlideController(Controller):
text=translate('OpenLP.SlideController', 'Pause Audio'),
tooltip=translate('OpenLP.SlideController', 'Pause audio.'),
checked=False, visible=False, category=self.category,
context=QtCore.Qt.WindowShortcut,
context=QtCore.Qt.WindowShortcut,
shortcuts=[], triggers=self.onAudioPauseClicked)
self.audioMenu = QtGui.QMenu(
translate('OpenLP.SlideController', 'Background Audio'), self.toolbar)
@ -319,6 +319,7 @@ class SlideController(Controller):
self.audioTimeLabel.setObjectName(u'audioTimeLabel')
self.toolbar.addToolbarWidget(self.audioTimeLabel)
self.toolbar.setWidgetVisible(self.audioList, False)
self.toolbar.setWidgetVisible([u'songMenu'], False)
# Screen preview area
self.previewFrame = QtGui.QFrame(self.splitter)
self.previewFrame.setGeometry(QtCore.QRect(0, 0, 300, 300 * self.ratio))
@ -391,6 +392,8 @@ class SlideController(Controller):
# Signals
QtCore.QObject.connect(self.previewListWidget,
QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSlideSelected)
QtCore.QObject.connect(self.previewListWidget.verticalHeader(),
QtCore.SIGNAL(u'sectionClicked(int)'), self.onSlideSelected)
if self.isLive:
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'slidecontroller_live_spin_delay'),
@ -525,6 +528,7 @@ class SlideController(Controller):
def liveEscape(self):
self.display.setVisible(False)
self.mediaController.video_stop([self])
self.onPlaySlidesLoop(False)
def toggleDisplay(self, action):
"""
@ -689,6 +693,7 @@ class SlideController(Controller):
self.toolbar.hide()
self.mediabar.hide()
self.songMenu.hide()
self.toolbar.setWidgetVisible([u'songMenu'], False)
self.toolbar.setWidgetVisible(self.loopList, False)
# Reset the button
self.playSlidesOnce.setChecked(False)
@ -699,7 +704,7 @@ class SlideController(Controller):
if Settings().value(
self.parent().songsSettingsSection + u'/display songbar',
QtCore.QVariant(True)).toBool() and self.slideList:
self.songMenu.show()
self.toolbar.setWidgetVisible([u'songMenu'], True)
if item.is_capable(ItemCapabilities.CanLoop) and \
len(item.get_frames()) > 1:
self.toolbar.setWidgetVisible(self.loopList)
@ -1080,7 +1085,7 @@ class SlideController(Controller):
else:
Receiver.send_message(u'live_display_show')
def onSlideSelected(self):
def onSlideSelected(self, index):
"""
Slide selected in controller
"""

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,13 +29,15 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import UiStrings, create_button_box
class Ui_StartTimeDialog(object):
def setupUi(self, StartTimeDialog):
StartTimeDialog.setObjectName(u'StartTimeDialog')
StartTimeDialog.resize(350, 10)
StartTimeDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.dialogLayout = QtGui.QGridLayout(StartTimeDialog)
self.dialogLayout.setObjectName(u'dialogLayout')
self.startLabel = QtGui.QLabel(StartTimeDialog)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -36,7 +36,7 @@ from openlp.core.lib import Receiver, translate
from openlp.core.lib.theme import BackgroundType, BackgroundGradientType
from openlp.core.lib.ui import UiStrings, critical_error_message_box
from openlp.core.ui import ThemeLayoutForm
from openlp.core.utils import get_images_filter
from openlp.core.utils import get_images_filter, is_not_image_file
from themewizard import Ui_ThemeWizard
log = logging.getLogger(__name__)
@ -78,6 +78,8 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
QtCore.SIGNAL(u'clicked()'), self.onGradientEndButtonClicked)
QtCore.QObject.connect(self.imageBrowseButton,
QtCore.SIGNAL(u'clicked()'), self.onImageBrowseButtonClicked)
QtCore.QObject.connect(self.imageFileEdit,
QtCore.SIGNAL(u'editingFinished()'), self.onImageFileEditEditingFinished)
QtCore.QObject.connect(self.mainColorButton,
QtCore.SIGNAL(u'clicked()'), self.onMainColorButtonClicked)
QtCore.QObject.connect(self.outlineColorButton,
@ -233,7 +235,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
background_image = BackgroundType.to_string(BackgroundType.Image)
if self.page(self.currentId()) == self.backgroundPage and \
self.theme.background_type == background_image and \
self.imageFileEdit.text().isEmpty():
is_not_image_file(self.theme.background_filename):
QtGui.QMessageBox.critical(self,
translate('OpenLP.ThemeWizard', 'Background Image Empty'),
translate('OpenLP.ThemeWizard', 'You have not selected a '
@ -536,7 +538,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
Background Image button pushed.
"""
images_filter = get_images_filter()
images_filter = u'%s;;%s (*.*) (*)' % (
images_filter = u'%s;;%s (*.*)' % (
images_filter, UiStrings().AllFiles)
filename = QtGui.QFileDialog.getOpenFileName(self,
translate('OpenLP.ThemeWizard', 'Select Image'), u'',
@ -545,6 +547,12 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard):
self.theme.background_filename = unicode(filename)
self.setBackgroundPageValues()
def onImageFileEditEditingFinished(self):
"""
Background image path edited
"""
self.theme.background_filename = unicode(self.imageFileEdit.text())
def onMainColorButtonClicked(self):
self.theme.font_main_color = \
self._colorButton(self.theme.font_main_color)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,14 +29,14 @@
from PyQt4 import QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box
class Ui_ThemeLayoutDialog(object):
def setupUi(self, themeLayoutDialog):
themeLayoutDialog.setObjectName(u'themeLayoutDialogDialog')
#themeLayoutDialog.resize(300, 200)
themeLayoutDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.previewLayout = QtGui.QVBoxLayout(themeLayoutDialog)
self.previewLayout.setObjectName(u'previewLayout')
self.previewArea = QtGui.QWidget(themeLayoutDialog)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -36,7 +36,7 @@ import re
from xml.etree.ElementTree import ElementTree, XML
from PyQt4 import QtCore, QtGui
from openlp.core.lib import OpenLPToolbar, get_text_file_string, build_icon, \
from openlp.core.lib import FileDialog, OpenLPToolbar, get_text_file_string, build_icon, \
Receiver, SettingsManager, translate, check_item_selected, \
check_directory_exists, create_thumb, validate_thumb, ImageSource
from openlp.core.lib.theme import ThemeXML, BackgroundType, VerticalType, \
@ -420,7 +420,7 @@ class ThemeManager(QtGui.QWidget):
attempting to extract OpenLP themes from those files. This process
will load both OpenLP version 1 and version 2 themes.
"""
files = QtGui.QFileDialog.getOpenFileNames(self,
files = FileDialog.getOpenFileNames(self,
translate('OpenLP.ThemeManager', 'Select Theme Import File'),
SettingsManager.get_last_dir(self.settingsSection),
unicode(translate('OpenLP.ThemeManager',
@ -698,7 +698,7 @@ class ThemeManager(QtGui.QWidget):
finally:
if out_file:
out_file.close()
if image_from and image_from != image_to:
if image_from and os.path.abspath(image_from) != os.path.abspath(image_to):
try:
encoding = get_filesystem_encoding()
shutil.copyfile(

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -35,6 +35,7 @@ from openlp.core.lib.theme import HorizontalType, BackgroundType, \
from openlp.core.lib.ui import UiStrings, add_welcome_page, \
create_valign_selection_widgets
class Ui_ThemeWizard(object):
def setupUi(self, themeWizard):
themeWizard.setObjectName(u'OpenLP.ThemeWizard')
@ -43,6 +44,7 @@ class Ui_ThemeWizard(object):
themeWizard.setOptions(QtGui.QWizard.IndependentPages |
QtGui.QWizard.NoBackButtonOnStartPage |
QtGui.QWizard.HaveCustomButton1)
themeWizard.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.spacer = QtGui.QSpacerItem(10, 0,
QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
# Welcome Page
@ -180,8 +182,8 @@ class Ui_ThemeWizard(object):
self.lineSpacingLabel = QtGui.QLabel(self.mainAreaPage)
self.lineSpacingLabel.setObjectName(u'LineSpacingLabel')
self.lineSpacingSpinBox = QtGui.QSpinBox(self.mainAreaPage)
self.lineSpacingSpinBox.setMinimum(-50)
self.lineSpacingSpinBox.setMaximum(50)
self.lineSpacingSpinBox.setMinimum(-250)
self.lineSpacingSpinBox.setMaximum(250)
self.lineSpacingSpinBox.setObjectName(u'LineSpacingSpinBox')
self.mainAreaLayout.addRow(self.lineSpacingLabel,
self.lineSpacingSpinBox)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -39,6 +39,7 @@ from openlp.core.lib.ui import UiStrings, add_welcome_page
log = logging.getLogger(__name__)
class WizardStrings(object):
"""
Provide standard strings for wizards to use.
@ -103,6 +104,7 @@ class OpenLPWizard(QtGui.QWizard):
"""
Set up the wizard UI.
"""
self.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.setModal(True)
self.setWizardStyle(QtGui.QWizard.ModernStyle)
self.setOptions(QtGui.QWizard.IndependentPages |

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -37,6 +37,8 @@ import re
from subprocess import Popen, PIPE
import sys
import urllib2
import urlparse
from random import randint
from openlp.core.lib.settings import Settings
@ -59,6 +61,27 @@ UNO_CONNECTION_TYPE = u'pipe'
#UNO_CONNECTION_TYPE = u'socket'
CONTROL_CHARS = re.compile(r'[\x00-\x1F\x7F-\x9F]', re.UNICODE)
INVALID_FILE_CHARS = re.compile(r'[\\/:\*\?"<>\|\+\[\]%]', re.UNICODE)
USER_AGENTS = {
u'win32': [
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36'
],
u'darwin': [
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11'
],
u'linux2': [
'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22',
'Mozilla/5.0 (X11; CrOS armv7l 2913.260.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.99 Safari/537.11',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/26.0.1389.0 Safari/537.27'
],
u'default': [
'Mozilla/5.0 (X11; NetBSD amd64; rv:18.0) Gecko/20130120 Firefox/18.0'
]
}
class VersionThread(QtCore.QThread):
"""
@ -91,7 +114,7 @@ class AppLocation(object):
VersionDir = 5
CacheDir = 6
LanguageDir = 7
# Base path where data/config/cache dir is located
BaseDir = None
@ -364,6 +387,40 @@ def get_images_filter():
return IMAGES_FILTER
def is_not_image_file(file_name):
"""
Validate that the file is not an image file.
``file_name``
File name to be checked.
"""
if not file_name:
return True
formats = [unicode(fmt).lower()
for fmt in QtGui.QImageReader.supportedImageFormats()]
file_part, file_extension = os.path.splitext(unicode(file_name))
if file_extension[1:].lower() in formats and os.path.exists(file_name):
return False
return True
def join_url(base, *args):
"""
Join one or more url components with the base url.
``base``
Base url containing top level domain.
e.g. http://www.example.org
``args``
url components to be appended to the base url.
"""
# Remove leading and trailing slash from components.
# Also ensure QString is converted to unicode().
args = [unicode(x).strip('/') for x in args]
return urlparse.urljoin(base, '/'.join(args))
def split_filename(path):
"""
Return a list of the parts in a given path.
@ -405,6 +462,17 @@ def delete_file(file_path_name):
return False
def _get_user_agent():
"""
Return a user agent customised for the platform the user is on.
"""
browser_list = USER_AGENTS.get(sys.platform, None)
if not browser_list:
browser_list = USER_AGENTS[u'default']
random_index = randint(0, len(browser_list) - 1)
return browser_list[random_index]
def get_web_page(url, header=None, update_openlp=False):
"""
Attempts to download the webpage at url and returns that page or None.
@ -425,13 +493,20 @@ def get_web_page(url, header=None, update_openlp=False):
if not url:
return None
req = urllib2.Request(url)
if header:
req.add_header(header[0], header[1])
if not header or header[0].lower() != u'user-agent':
user_agent = _get_user_agent()
req.add_header('User-Agent', str(user_agent))
elif header:
req.add_header(str(header[0]), str(header[1]))
page = None
log.debug(u'Downloading URL = %s' % url)
try:
page = urllib2.urlopen(req)
log.debug(u'Downloaded URL = %s' % page.geturl())
downloaded_url = page.geturl()
# Sometimes we get redirected, in this case page.geturl is encoded in utf-8
if not isinstance(downloaded_url, unicode):
downloaded_url = downloaded_url.decode('utf-8')
log.debug(u'Downloaded URL = %s' % downloaded_url)
except urllib2.URLError:
log.exception(u'The web page could not be downloaded')
if not page:

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -36,7 +36,7 @@ class Ui_AlertDialog(object):
def setupUi(self, alertDialog):
alertDialog.setObjectName(u'alertDialog')
alertDialog.resize(400, 300)
alertDialog.setWindowIcon(build_icon(u':/icon/openlp-logo-16x16.png'))
alertDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.alertDialogLayout = QtGui.QGridLayout(alertDialog)
self.alertDialogLayout.setObjectName(u'alertDialogLayout')
self.alertTextLayout = QtGui.QFormLayout()

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -45,6 +45,7 @@ from openlp.plugins.bibles.lib.db import BiblesResourcesDB, clean_filename
log = logging.getLogger(__name__)
class WebDownload(object):
"""
Provides an enumeration for the web bible types available to OpenLP.

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #
@ -29,13 +29,15 @@
from PyQt4 import QtCore, QtGui
from openlp.core.lib import translate
from openlp.core.lib import translate, build_icon
from openlp.core.lib.ui import create_button_box
class Ui_BookNameDialog(object):
def setupUi(self, bookNameDialog):
bookNameDialog.setObjectName(u'bookNameDialog')
bookNameDialog.resize(400, 271)
bookNameDialog.setWindowIcon(build_icon(u':/icon/openlp-logo.svg'))
self.bookNameLayout = QtGui.QVBoxLayout(bookNameDialog)
self.bookNameLayout.setSpacing(8)
self.bookNameLayout.setMargin(8)

View File

@ -4,8 +4,8 @@
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2012 Raoul Snyman #
# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan #
# Copyright (c) 2008-2014 Raoul Snyman #
# Portions copyright (c) 2008-2014 Tim Bentley, Gerald Britton, Jonathan #
# Corwin, Samuel Findlay, Michael Gorven, Scott Guerrieri, Matthias Hub, #
# Meinert Jordan, Armin Köhler, Erik Lundin, Edwin Lunando, Brian T. Meyer. #
# Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias Põldaru, #

Some files were not shown because too many files have changed in this diff Show More