Merge lp:~trb143/openlp/bugfixes into lp:openlp

Proposed by Tim Bentley
Status: Merged
Merged at revision: not available
Proposed branch: lp:~trb143/openlp/bugfixes
Merge into: lp:openlp
Diff against target: None lines
To merge this branch: bzr merge lp:~trb143/openlp/bugfixes
Reviewer Review Type Date Requested Status
Raoul Snyman Approve
Review via email: mp+9022@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote :

Fixed song editing bugs
moved the Author / Topic / Book editing to the toolbar with some icons.
Fixed up the song migration code a bit to stop duplicate authors
Wrote noddy script to regenerate database for 1.x version
Fixed Alerts so the work and are preserved over song slide change and song change.

Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

On line 586 of openlp/core/resources.py ....

Just kidding!

review: Approve
lp:~trb143/openlp/bugfixes updated
495. By Tim Bentley

Fix song editing so it works
Added now images for Song editors
Fix up Alert code so now works.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'cnvdb.py' (properties changed: -x to +x)
--- cnvdb.py 2009-07-08 06:55:08 +0000
+++ cnvdb.py 2009-07-19 06:31:08 +0000
@@ -21,7 +21,7 @@
21import codecs21import codecs
22import sys22import sys
2323
24def convert_file(self, inname, outname):24def convert_file(inname, outname):
25 """25 """
26 Convert a file from another encoding into UTF-8.26 Convert a file from another encoding into UTF-8.
2727
@@ -35,7 +35,8 @@
35 writefile = codecs.open(outname, 'w', encoding='utf-8')35 writefile = codecs.open(outname, 'w', encoding='utf-8')
36 for line in infile:36 for line in infile:
37 #replace the quotes with quotes37 #replace the quotes with quotes
38 line = line.replace(u'\'\'', u'\'')38 #TODO fix double quotes
39 #line = line.replace(u'\'\'', u'@')
39 writefile.write(line)40 writefile.write(line)
40 infile.close()41 infile.close()
41 writefile.close()42 writefile.close()
4243
=== modified file 'openlp/core/lib/plugin.py'
--- openlp/core/lib/plugin.py 2009-07-10 13:16:15 +0000
+++ openlp/core/lib/plugin.py 2009-07-18 05:43:50 +0000
@@ -243,3 +243,9 @@
243 """243 """
244 pass244 pass
245245
246 def shutdown(self):
247 """
248 Called by the plugin Manager to cleanup things
249 """
250 pass
251
246252
=== modified file 'openlp/core/lib/pluginmanager.py'
--- openlp/core/lib/pluginmanager.py 2009-07-10 13:16:15 +0000
+++ openlp/core/lib/pluginmanager.py 2009-07-18 05:43:50 +0000
@@ -174,3 +174,10 @@
174 for plugin in self.plugins:174 for plugin in self.plugins:
175 plugin.initialise()175 plugin.initialise()
176176
177 def cleanup_plugins(self):
178 """
179 Loop through all the plugins and give them an opportunity to
180 clean themselves up
181 """
182 for plugin in self.plugins:
183 plugin.cleanup()
177184
=== modified file 'openlp/core/resources.py'
--- openlp/core/resources.py 2009-07-03 19:08:21 +0000
+++ openlp/core/resources.py 2009-07-18 05:43:50 +0000
@@ -2,7 +2,7 @@
22
3# Resource object code3# Resource object code
4#4#
5# Created: Fri Jul 3 19:41:53 20095# Created: Sat Jul 18 06:20:33 2009
6# by: The Resource Compiler for PyQt (Qt v4.5.0)6# by: The Resource Compiler for PyQt (Qt v4.5.0)
7#7#
8# WARNING! All changes made in this file will be lost!8# WARNING! All changes made in this file will be lost!
@@ -52405,6 +52405,48 @@
52405\x1f\x00\xf7\xed\xe4\x0a\x00\x92\x24\x02\x70\x1c\xc7\x3f\xb4\x2c\52405\x1f\x00\xf7\xed\xe4\x0a\x00\x92\x24\x02\x70\x1c\xc7\x3f\xb4\x2c\
52406\x21\xd5\x80\x04\x87\x89\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\52406\x21\xd5\x80\x04\x87\x89\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
52407\x60\x82\52407\x60\x82\
52408\x00\x00\x02\x7c\
52409\x89\
52410\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
52411\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
52412\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
52413\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
52414\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
52415\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
52416\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xf9\x49\x44\
52417\x41\x54\x78\xda\x8d\x92\x4d\x6b\x13\x41\x18\xc7\x9f\x79\xd9\x97\
52418\xec\xa6\xbb\xcd\xdb\x46\x52\x2b\x6d\x4a\x40\x41\xaa\xd6\x82\x07\
52419\x11\xf2\x05\x04\x11\x85\x7e\x82\xa2\x07\x3d\x79\x11\xbc\xf4\xe2\
52420\xc1\x8b\x9f\xc0\xb3\x62\x11\xfd\x06\x42\x41\x04\x7b\x10\xa5\x15\
52421\x84\x46\x0d\x6a\x68\x0c\xd8\xa4\x6c\xb7\x99\x9d\x9d\x19\xc7\x15\
52422\x2a\x94\x4d\x9b\x1f\x3c\x0c\x3c\x03\xbf\x79\xe6\x3f\x83\x94\x52\
52423\x30\x8a\xf5\x17\x8f\x97\x28\x21\xdd\x0b\xd7\xee\xbe\x86\x11\x64\
52424\x0a\xde\x3c\x7d\x74\x66\x38\x64\xef\xc2\x30\xca\x97\xaa\x35\x70\
52425\x1c\x67\x97\xa8\xf8\xd4\xb9\xab\xb7\x07\x70\x08\x0c\x19\x48\x09\
52426\xcf\x13\xa9\xf2\x12\x14\x60\xc3\x04\x2f\xa8\x79\xc4\xb4\x5f\x41\
52427\x06\x14\x32\xc8\xb9\xee\xd4\xf9\xc5\x45\x40\x4e\x19\x84\xfa\x67\
52428\xfc\xfc\xf3\x5b\x63\x2c\xc1\x8f\xb7\xab\xb9\x4a\xb9\x30\x40\x86\
52429\x55\xa0\xa6\x0d\xa6\x61\xa5\xfd\xda\x4c\xfd\x3b\x68\x8e\xbd\xc2\
52430\x16\xab\x70\xcf\x73\x3b\x80\x30\x20\x04\x1a\x05\x4a\x49\x98\xf0\
52431\x26\x5a\x63\x09\x9a\xcd\x66\xa2\x12\x7e\x1f\x12\x06\x20\x19\x28\
52432\x1e\xe9\x25\x4a\x08\x52\xf7\xb2\x05\x19\x14\x17\x6e\xac\xb5\xbf\
52433\xb6\x12\x11\xf5\x41\xc5\x11\x6c\x7c\x5c\x67\xf9\xfa\xe5\xed\xb1\
52434\x43\x4c\xb1\x0b\xfd\xcd\x4f\x1b\xe5\x98\x09\xc8\x4f\x06\xe9\xf8\
52435\x63\x4f\x90\x24\x12\x9d\x9c\x3b\x5b\x68\xcc\x5f\x01\xcb\xf5\x21\
52436\x98\x9e\xad\xeb\x1e\x3e\x56\xd0\x19\x88\x6a\xaf\xb7\xf7\xf0\x77\
52437\x3f\xdc\x1e\xd2\x8a\xe4\xd4\x87\xe2\xf4\xbc\x32\x4a\x0d\x22\xa5\
52438\x6c\x31\xc6\x1f\x70\x2e\x82\xcc\x9f\xd8\xed\x0e\x6e\x62\x4c\x9e\
52439\x39\x2e\xc5\x04\x93\x34\x7d\x8c\xf1\xa1\x0f\xa6\x40\x08\x11\x1b\
52440\x06\x5d\x32\x4d\xfa\xf2\x40\x30\x64\x9c\x6c\xb5\x7f\xed\x4f\x55\
52441\x7d\xc3\xb6\x4c\x40\x08\xc1\x28\xf4\x04\x20\xa4\xda\xcd\xd9\x46\
52442\x60\x99\x94\xa5\x47\x7c\xe9\xf4\xee\x14\x7d\xd7\xd0\x3e\xd0\xc2\
52443\x23\x4b\xfe\x2d\x29\xbc\x9d\x70\xef\xfa\xc1\x2b\xec\xf4\xc2\xaa\
52444\x59\x25\x52\x6f\x61\x4a\x31\x10\x9c\x99\x57\x2a\x60\x2c\x86\x30\
52445\x62\x52\xe7\x34\x77\xa2\xe8\xff\xcf\x60\x65\x65\xd5\x0c\x66\x4a\
52446\xcd\x4b\x0b\xb3\xb7\x72\xb6\x7d\x5a\x2a\xe1\x4a\x01\xb6\x54\x12\
52447\x00\xa1\x08\xe9\xb1\xf7\x59\xbc\xf9\xfe\x43\xfb\x09\xe6\x93\x6b\
52448\xcb\xcb\x17\x39\x68\xfe\x00\x58\x95\xf6\xff\x16\xb1\xc6\xc2\x00\
52449\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
52408\x00\x00\x02\x43\52450\x00\x00\x02\x43\
52409\x89\52451\x89\
52410\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\52452\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -52488,6 +52530,44 @@
52488\x9c\x62\xb1\x98\x2b\x97\xcb\x93\x00\x42\x25\x11\x09\xec\x46\xd1\52530\x9c\x62\xb1\x98\x2b\x97\xcb\x93\x00\x42\x25\x11\x09\xec\x46\xd1\
52489\xd9\x1b\x95\x91\x88\xea\x2f\xfb\x5c\xf8\xbd\xf0\xc1\x4d\x21\x00\52531\xd9\x1b\x95\x91\x88\xea\x2f\xfb\x5c\xf8\xbd\xf0\xc1\x4d\x21\x00\
52490\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\52532\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
52533\x00\x00\x02\x31\
52534\x89\
52535\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
52536\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
52537\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
52538\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
52539\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
52540\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
52541\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xae\x49\x44\
52542\x41\x54\x78\xda\x8d\x90\xbb\x8e\xd3\x40\x14\x40\xcf\x78\x1e\xb6\
52543\x43\xd8\x6c\xc4\xa6\x58\x68\xa1\x03\x21\xf1\x05\x20\xa8\x68\xa0\
52544\xa1\x82\x8e\x6f\x80\x0a\xd1\xd2\xf0\x09\x14\xf0\x1f\x34\xfb\x07\
52545\x34\x80\x28\x58\x21\x2d\xac\x28\x48\xd8\x0d\x4b\xec\xf8\x31\x97\
52546\x31\x96\x23\xa2\x18\x96\xd3\xcd\xbd\xd6\xf1\x99\x51\x22\x82\x9a\
52547\x5c\x79\x71\xde\xcd\x1e\x66\x59\xc6\xf7\xf4\x12\x5c\xbe\xcf\xa9\
52548\xe4\xf3\x47\xb2\xf7\xe4\xb9\x69\x4f\xfe\xe2\xf5\x9b\xb7\x78\xfc\
52549\xf4\x19\xff\xc3\xab\xbd\xcf\xbc\x7c\xbd\x7f\x17\x68\x05\x7c\x7b\
52550\x77\xf4\xf6\xfd\x88\x7b\xb7\x6f\x50\x4f\xae\x31\xb8\xfa\x80\xb2\
52551\xf6\x14\x95\xd0\xe1\x4c\x14\xce\x9e\x86\xba\x2a\xb1\xe5\x62\x17\
52552\xc0\xd0\xf2\x66\x7b\x67\xf7\xce\xc1\x74\xc9\x56\x3c\x26\x1d\x4d\
52553\xb8\x30\xb4\x7c\x99\x2d\xe9\x50\x0a\x46\x36\x62\x51\xb4\x92\x1f\
52554\xd3\xc3\x83\x4e\xb0\xc2\x57\x15\x3a\x8a\xf0\xd2\xfc\x0d\xce\x9d\
52555\x8d\x39\xc9\x6b\x3a\x6c\xa8\x88\xa5\x15\x58\x6b\xd9\x14\xf8\x1a\
52556\xad\x35\x2e\x2c\xf3\x0a\xb6\x12\x4d\xe9\x23\x44\xa0\x41\x80\x41\
52557\x98\x55\x35\x18\xeb\x36\x05\x22\x82\x09\x05\xb1\x6d\xc7\x45\x0d\
52558\x3b\xa1\x62\x9e\xad\x2a\xc2\x5e\x85\x4a\x09\x35\x3d\x02\x90\x50\
52559\x10\x35\x05\x7f\x4c\x60\x98\xe8\x20\x13\x3a\x12\x03\xa6\xef\x0a\
52560\x11\x60\x8c\x0e\x99\x6e\x4d\x1b\x1b\x85\xf3\x82\xf7\xdd\x83\x2a\
52561\xac\x8b\x7b\x04\xbf\xf3\x1d\xc3\x34\x59\x13\x28\x25\x24\x4a\x21\
52562\x1e\x7c\x73\x06\xdc\xa6\xa0\xcd\xda\x1e\x8f\x39\x93\xb6\xcb\x35\
52563\x79\x10\x40\xa8\x10\x01\x54\x10\xf4\xbc\x81\xd5\x86\x34\x49\x18\
52564\xc4\x31\x7d\x68\xd5\x08\x42\x09\x82\xb5\x7d\x05\xc6\x10\x89\x90\
52565\xc6\x8e\x1e\x56\xd7\x21\x48\x6c\x5f\x81\x36\x9a\x3c\x5f\x34\x0f\
52566\xf9\x77\xc1\xea\x5b\xbb\x29\x40\x45\xe4\xcb\x9c\x65\x51\x72\x1a\
52567\x4a\xe9\x35\xc1\xa7\x93\xf9\x11\xd9\xcf\x63\xa6\xb3\x63\x3e\x7c\
52568\xdc\xe7\x5f\x14\x75\xc5\x22\xcb\xbe\x02\xfc\x02\xce\x8e\x94\x0e\
52569\x4b\x04\xe7\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
52570\
52491\x00\x00\x02\x7e\52571\x00\x00\x02\x7e\
52492\x89\52572\x89\
52493\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\52573\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -52530,6 +52610,60 @@
52530\x2d\x7f\x6b\xac\x3a\x6f\x91\x45\x04\x05\x3c\x58\x29\xdf\x95\x98\52610\x2d\x7f\x6b\xac\x3a\x6f\x91\x45\x04\x05\x3c\x58\x29\xdf\x95\x98\
52531\x70\x35\xf3\x6f\x89\x5a\x6e\xe0\x0f\xd5\xf2\x24\x09\x1c\xd8\x9f\52611\x70\x35\xf3\x6f\x89\x5a\x6e\xe0\x0f\xd5\xf2\x24\x09\x1c\xd8\x9f\
52532\xe3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\52612\xe3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
52613\x00\x00\x03\x3e\
52614\x89\
52615\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
52616\x00\x00\x10\x00\x00\x00\x10\x08\x03\x00\x00\x00\x28\x2d\x0f\x53\
52617\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
52618\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\
52619\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\
52620\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\
52621\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\
52622\x46\x00\x00\x01\xb0\x50\x4c\x54\x45\x00\x00\x00\xff\xff\xff\xdf\
52623\x98\x00\xe6\xa0\x0c\xe7\xa3\x10\xdf\x98\x00\xe6\xa2\x0e\xe7\xa2\
52624\x10\xdf\x98\x00\xe5\xa0\x0d\xe3\x9d\x08\xe1\x9e\x01\xe1\x9f\x00\
52625\xe1\x9f\x01\xe1\x9f\x0d\xe1\x9f\x12\xe3\xa1\x11\xe5\xa5\x1a\x00\
52626\x56\xff\x10\x60\xef\x10\x60\xf2\x20\x99\xdd\x30\x80\xce\x50\x8b\
52627\xb1\x50\xb2\xad\x8e\xb2\xa2\x8f\xad\x72\x8f\xb2\x9e\x9f\xbb\x66\
52628\xc3\x4d\x02\xc4\x4f\x01\xcc\x5d\x03\xd4\x69\x02\xdc\x84\x0c\xdc\
52629\x8d\x05\xe1\x90\x09\xe3\x9b\x0b\xe5\x99\x0a\xe5\xa8\x01\xe7\x9d\
52630\x09\xe7\xad\x02\xe7\xae\x01\xe7\xaf\x01\xe7\xb0\x01\xe7\xb0\x03\
52631\xe7\xb0\x09\xe7\xb0\x10\xe7\xb1\x1c\xe7\xb1\x1f\xe7\xb1\x33\xe7\
52632\xb2\x38\xe7\xb2\x40\xe9\xb4\x43\xeb\xb6\x04\xeb\xb8\x45\xeb\xbb\
52633\x20\xeb\xbc\x2d\xec\xb9\x48\xef\xbd\x3a\xef\xc4\x65\xf3\xb9\x17\
52634\xf4\xb8\x14\xf5\xba\x13\xf7\xcd\x0e\xf7\xcf\x0d\xf7\xd1\x0f\xf7\
52635\xd7\x18\xf7\xdc\x61\xf7\xe4\x91\xf7\xe6\xa5\xf8\xce\x11\xf8\xe7\
52636\xbf\xfb\xc8\x1d\xfb\xca\x1b\xfb\xd8\x10\xfc\xcd\x1a\xfc\xfd\xac\
52637\xfd\xd2\x17\xfd\xfa\x60\xfd\xfb\x7c\xfd\xfc\x7e\xfd\xfc\x84\xfd\
52638\xfe\xd2\xfe\xf8\x20\xfe\xf8\x24\xfe\xf9\x37\xfe\xf9\x3b\xfe\xfa\
52639\x47\xfe\xfa\x4f\xfe\xfc\x9c\xfe\xfc\xa3\xfe\xfe\xd9\xff\xd0\x1f\
52640\xff\xd1\x1e\xff\xd2\x1d\xff\xd3\x1d\xff\xd4\x1c\xff\xd5\x1b\xff\
52641\xd6\x1a\xff\xd6\x1b\xff\xd9\x18\xff\xda\x17\xff\xda\x22\xff\xda\
52642\x24\xff\xdb\x19\xff\xdc\x16\xff\xdf\x19\xff\xdf\x41\xff\xe0\x12\
52643\xff\xe2\x3c\xff\xe3\x10\xff\xe4\x19\xff\xe5\x0e\xff\xe6\x0e\xff\
52644\xe7\x0d\xff\xe7\x61\xff\xe9\x20\xff\xea\x0a\xff\xea\x1a\xff\xeb\
52645\x0a\xff\xed\x08\xff\xed\x67\xff\xef\x06\xff\xf0\x06\xff\xf1\x04\
52646\xff\xf2\x5d\xff\xf2\x7c\xff\xf4\x53\xff\xf4\x82\xff\xf5\x03\xff\
52647\xf6\x05\xff\xf7\x07\xff\xf8\x16\xff\xf8\x17\xff\xf8\x6c\xff\xf8\
52648\x87\xff\xf9\x30\xff\xfa\x78\xff\xfb\x7d\xff\xfd\xaf\xff\xfd\xc0\
52649\xff\xfe\xe1\xff\xff\xf2\xff\xff\xf5\xc6\x84\xb0\x01\x00\x00\x00\
52650\x12\x74\x52\x4e\x53\x00\x00\x20\x20\x20\x60\x60\x60\x8f\x8f\x9f\
52651\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xb4\xb2\xe3\xac\x00\x00\x00\xda\x49\
52652\x44\x41\x54\x18\x95\x63\x60\x44\x03\x0c\x8c\x0c\x0c\x0c\x2c\x9c\
52653\x82\x26\xc6\xfc\x1c\x4c\x40\x26\x58\x80\xdd\xd2\xbd\x3f\x3a\xaa\
52654\xdb\xc5\x90\x15\x22\xc0\x66\xdd\x17\xe4\x13\x10\x11\xd2\x54\x6f\
52655\xc1\x0a\x12\x60\x36\xeb\x8d\x0c\xf4\xf7\x0b\x6b\x6d\xac\x28\xd3\
52656\x63\x02\x0a\x70\xb9\x76\x85\x4b\x4a\x87\x05\xcb\x48\x95\xe6\x39\
52657\x71\x00\x05\x04\x7a\x3a\x42\x85\x44\x5a\x9a\x85\x85\x4a\x72\xf2\
52658\x79\x81\x02\x46\xed\x6d\x9d\x62\x12\x8d\x35\xe2\xa2\x95\xc5\x19\
52659\x3a\x40\x01\xc3\x86\x5a\xfd\xea\xaa\x8a\xf2\x22\x2f\xab\xec\x34\
52660\x6d\xa0\x00\x5f\x5d\x81\x9c\x52\x51\x61\x5e\x8e\x8a\xac\x4d\x26\
52661\x0f\x50\x80\xc3\x39\xcb\x4d\x55\x41\x5d\x59\x5e\xd1\xd3\xc3\x01\
52662\x64\x28\x93\x41\x6e\x4a\x8a\xaf\x9d\xad\x77\x5c\x4c\x92\x1a\xc8\
52663\x5a\x06\x56\xf3\xf4\xf8\xf8\xb8\xd8\x98\x98\x64\x53\x56\x88\xd3\
52664\x59\x75\x1d\x33\x13\x13\x52\xed\x35\xa0\x4e\x67\x60\x60\xe2\xe0\
52665\xd1\xd2\xe4\x86\x79\x0e\x0d\x00\x00\x00\x82\x2d\xeb\x05\xb0\x41\
52666\x76\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
52533\x00\x00\x02\x9a\52667\x00\x00\x02\x9a\
52534\x89\52668\x89\
52535\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\52669\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -53680,6 +53814,11 @@
53680\x03\x8c\x2f\x27\53814\x03\x8c\x2f\x27\
53681\x00\x69\53815\x00\x69\
53682\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x5f\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\53816\x00\x6d\x00\x61\x00\x67\x00\x65\x00\x5f\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
53817\x00\x14\
53818\x07\xde\x82\x27\
53819\x00\x73\
53820\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x61\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\
53821\x00\x70\x00\x6e\x00\x67\
53683\x00\x0c\53822\x00\x0c\
53684\x0b\x86\xcd\x87\53823\x0b\x86\xcd\x87\
53685\x00\x73\53824\x00\x73\
@@ -53688,10 +53827,20 @@
53688\x0f\xce\xfd\xc7\53827\x0f\xce\xfd\xc7\
53689\x00\x73\53828\x00\x73\
53690\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\53829\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
53830\x00\x12\
53831\x07\x52\x49\x67\
53832\x00\x73\
53833\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x62\x00\x6f\x00\x6f\x00\x6b\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\
53834\x00\x67\
53691\x00\x0f\53835\x00\x0f\
53692\x0f\x3d\x20\x27\53836\x0f\x3d\x20\x27\
53693\x00\x73\53837\x00\x73\
53694\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x78\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\53838\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x78\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
53839\x00\x13\
53840\x0e\x4b\x25\x27\
53841\x00\x73\
53842\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x74\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\
53843\x00\x6e\x00\x67\
53695\x00\x0f\53844\x00\x0f\
53696\x05\x0e\x96\x87\53845\x05\x0e\x96\x87\
53697\x00\x73\53846\x00\x73\
@@ -53780,10 +53929,10 @@
5378053929
53781qt_resource_struct = "\53930qt_resource_struct = "\
53782\x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x01\53931\x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x01\
53783\x00\x00\x00\xa6\x00\x02\x00\x00\x00\x06\x00\x00\x00\x56\53932\x00\x00\x00\xa6\x00\x02\x00\x00\x00\x06\x00\x00\x00\x59\
53784\x00\x00\x00\x38\x00\x02\x00\x00\x00\x04\x00\x00\x00\x52\53933\x00\x00\x00\x38\x00\x02\x00\x00\x00\x04\x00\x00\x00\x55\
53785\x00\x00\x01\x02\x00\x02\x00\x00\x00\x08\x00\x00\x00\x4a\53934\x00\x00\x01\x02\x00\x02\x00\x00\x00\x08\x00\x00\x00\x4d\
53786\x00\x00\x00\x5c\x00\x02\x00\x00\x00\x04\x00\x00\x00\x46\53935\x00\x00\x00\x5c\x00\x02\x00\x00\x00\x07\x00\x00\x00\x46\
53787\x00\x00\x00\x4c\x00\x02\x00\x00\x00\x02\x00\x00\x00\x44\53936\x00\x00\x00\x4c\x00\x02\x00\x00\x00\x02\x00\x00\x00\x44\
53788\x00\x00\x01\x12\x00\x02\x00\x00\x00\x02\x00\x00\x00\x42\53937\x00\x00\x01\x12\x00\x02\x00\x00\x00\x02\x00\x00\x00\x42\
53789\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x3f\53938\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x3f\
@@ -53798,10 +53947,10 @@
53798\x00\x00\x00\x24\x00\x02\x00\x00\x00\x04\x00\x00\x00\x13\53947\x00\x00\x00\x24\x00\x02\x00\x00\x00\x04\x00\x00\x00\x13\
53799\x00\x00\x00\xc6\x00\x02\x00\x00\x00\x01\x00\x00\x00\x12\53948\x00\x00\x00\xc6\x00\x02\x00\x00\x00\x01\x00\x00\x00\x12\
53800\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x55\x3f\53949\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x55\x3f\
53801\x00\x00\x0b\x5a\x00\x00\x00\x00\x00\x01\x00\x0c\xde\x36\53950\x00\x00\x0b\xde\x00\x00\x00\x00\x00\x01\x00\x0c\xe6\x2d\
53802\x00\x00\x0b\x8e\x00\x00\x00\x00\x00\x01\x00\x0c\xe1\x98\53951\x00\x00\x0c\x12\x00\x00\x00\x00\x00\x01\x00\x0c\xe9\x8f\
53803\x00\x00\x0b\xb6\x00\x00\x00\x00\x00\x01\x00\x0c\xe4\x36\53952\x00\x00\x0c\x3a\x00\x00\x00\x00\x00\x01\x00\x0c\xec\x2d\
53804\x00\x00\x0b\xe4\x00\x00\x00\x00\x00\x01\x00\x0c\xe7\x4a\53953\x00\x00\x0c\x68\x00\x00\x00\x00\x00\x01\x00\x0c\xef\x41\
53805\x00\x00\x05\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xfb\53954\x00\x00\x05\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xfb\
53806\x00\x00\x05\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x4d\x32\53955\x00\x00\x05\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x4d\x32\
53807\x00\x00\x06\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x52\x74\53956\x00\x00\x06\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x52\x74\
@@ -53835,24 +53984,27 @@
53835\x00\x00\x06\xd0\x00\x00\x00\x00\x00\x01\x00\x02\xfc\x9c\53984\x00\x00\x06\xd0\x00\x00\x00\x00\x00\x01\x00\x02\xfc\x9c\
53836\x00\x00\x06\xf6\x00\x00\x00\x00\x00\x01\x00\x02\xff\x14\53985\x00\x00\x06\xf6\x00\x00\x00\x00\x00\x01\x00\x02\xff\x14\
53837\x00\x00\x06\x8a\x00\x00\x00\x00\x00\x01\x00\x02\xf6\x21\53986\x00\x00\x06\x8a\x00\x00\x00\x00\x00\x01\x00\x02\xf6\x21\
53838\x00\x00\x0c\x94\x00\x00\x00\x00\x00\x01\x00\x0c\xf3\xd4\53987\x00\x00\x0d\x18\x00\x00\x00\x00\x00\x01\x00\x0c\xfb\xcb\
53839\x00\x00\x0c\x2a\x00\x00\x00\x00\x00\x01\x00\x0c\xeb\xff\53988\x00\x00\x0c\xae\x00\x00\x00\x00\x00\x01\x00\x0c\xf3\xf6\
53840\x00\x00\x0c\x4e\x00\x00\x00\x00\x00\x01\x00\x0c\xee\x90\53989\x00\x00\x0c\xd2\x00\x00\x00\x00\x00\x01\x00\x0c\xf6\x87\
53841\x00\x00\x0c\x70\x00\x00\x00\x00\x00\x01\x00\x0c\xf0\xa3\53990\x00\x00\x0c\xf4\x00\x00\x00\x00\x00\x01\x00\x0c\xf8\x9a\
53842\x00\x00\x0c\x08\x00\x00\x00\x00\x00\x01\x00\x0c\xe9\x61\53991\x00\x00\x0c\x8c\x00\x00\x00\x00\x00\x01\x00\x0c\xf1\x58\
53843\x00\x00\x09\xc0\x00\x00\x00\x00\x00\x01\x00\x0c\xc1\x6c\53992\x00\x00\x09\xc0\x00\x00\x00\x00\x00\x01\x00\x0c\xc1\x6c\
53844\x00\x00\x09\x9a\x00\x00\x00\x00\x00\x01\x00\x0c\xbe\xce\53993\x00\x00\x09\x9a\x00\x00\x00\x00\x00\x01\x00\x0c\xbe\xce\
53845\x00\x00\x0c\xe2\x00\x00\x00\x00\x00\x01\x00\x0c\xf8\x78\53994\x00\x00\x0d\x66\x00\x00\x00\x00\x00\x01\x00\x0d\x00\x6f\
53846\x00\x00\x0d\x0a\x00\x00\x00\x00\x00\x01\x00\x0c\xfb\x16\53995\x00\x00\x0d\x8e\x00\x00\x00\x00\x00\x01\x00\x0d\x03\x0d\
53847\x00\x00\x0c\xbe\x00\x00\x00\x00\x00\x01\x00\x0c\xf5\xd8\53996\x00\x00\x0d\x42\x00\x00\x00\x00\x00\x01\x00\x0c\xfd\xcf\
53848\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00\x09\x05\53997\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00\x09\x05\
53849\x00\x00\x02\x12\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xa3\53998\x00\x00\x02\x12\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xa3\
53850\x00\x00\x0a\x68\x00\x00\x00\x00\x00\x01\x00\x0c\xcd\x8a\53999\x00\x00\x0a\xec\x00\x00\x00\x00\x00\x01\x00\x0c\xd5\x81\
53851\x00\x00\x0a\x8c\x00\x00\x00\x00\x00\x01\x00\x0c\xd0\x88\54000\x00\x00\x0b\x10\x00\x00\x00\x00\x00\x01\x00\x0c\xd8\x7f\
53852\x00\x00\x0a\x44\x00\x00\x00\x00\x00\x01\x00\x0c\xca\xec\54001\x00\x00\x0a\xc8\x00\x00\x00\x00\x00\x01\x00\x0c\xd2\xe3\
54002\x00\x00\x0a\x4e\x00\x00\x00\x00\x00\x01\x00\x0c\xca\xea\
53853\x00\x00\x09\xe2\x00\x00\x00\x00\x00\x01\x00\x0c\xc3\x83\54003\x00\x00\x09\xe2\x00\x00\x00\x00\x00\x01\x00\x0c\xc3\x83\
53854\x00\x00\x0a\x20\x00\x00\x00\x00\x00\x01\x00\x0c\xc8\x6a\54004\x00\x00\x0a\x10\x00\x00\x00\x00\x00\x01\x00\x0c\xc6\x03\
53855\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x01\x00\x0c\xc5\xca\54005\x00\x00\x0a\x9c\x00\x00\x00\x00\x00\x01\x00\x0c\xcf\xa1\
54006\x00\x00\x0a\x78\x00\x00\x00\x00\x00\x01\x00\x0c\xcd\x1f\
54007\x00\x00\x0a\x2e\x00\x00\x00\x00\x00\x01\x00\x0c\xc8\x4a\
53856\x00\x00\x02\x66\x00\x00\x00\x00\x00\x01\x00\x00\x10\x0c\54008\x00\x00\x02\x66\x00\x00\x00\x00\x00\x01\x00\x00\x10\x0c\
53857\x00\x00\x02\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x17\xff\54009\x00\x00\x02\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x17\xff\
53858\x00\x00\x03\x04\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x2a\54010\x00\x00\x03\x04\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x2a\
@@ -53861,10 +54013,10 @@
53861\x00\x00\x03\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x20\x24\54013\x00\x00\x03\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x20\x24\
53862\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xba\54014\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xba\
53863\x00\x00\x03\x26\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x8d\54015\x00\x00\x03\x26\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x8d\
53864\x00\x00\x0a\xac\x00\x00\x00\x00\x00\x01\x00\x0c\xd3\x0b\54016\x00\x00\x0b\x30\x00\x00\x00\x00\x00\x01\x00\x0c\xdb\x02\
53865\x00\x00\x0b\x0e\x00\x00\x00\x00\x00\x01\x00\x0c\xd9\x81\54017\x00\x00\x0b\x92\x00\x00\x00\x00\x00\x01\x00\x0c\xe1\x78\
53866\x00\x00\x0a\xe0\x00\x00\x00\x00\x00\x01\x00\x0c\xd6\x6d\54018\x00\x00\x0b\x64\x00\x00\x00\x00\x00\x01\x00\x0c\xde\x64\
53867\x00\x00\x0b\x36\x00\x00\x00\x00\x00\x01\x00\x0c\xdc\x1f\54019\x00\x00\x0b\xba\x00\x00\x00\x00\x00\x01\x00\x0c\xe4\x16\
53868\x00\x00\x07\xce\x00\x00\x00\x00\x00\x01\x00\x03\x3e\xa4\54020\x00\x00\x07\xce\x00\x00\x00\x00\x00\x01\x00\x03\x3e\xa4\
53869\x00\x00\x07\x6e\x00\x00\x00\x00\x00\x01\x00\x03\x0f\x64\54021\x00\x00\x07\x6e\x00\x00\x00\x00\x00\x01\x00\x03\x0f\x64\
53870\x00\x00\x07\x3e\x00\x00\x00\x00\x00\x01\x00\x03\x04\xd0\54022\x00\x00\x07\x3e\x00\x00\x00\x00\x00\x01\x00\x03\x04\xd0\
5387154023
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2009-07-03 19:08:21 +0000
+++ openlp/core/ui/maindisplay.py 2009-07-19 07:40:31 +0000
@@ -18,7 +18,7 @@
18Place, Suite 330, Boston, MA 02111-1307 USA18Place, Suite 330, Boston, MA 02111-1307 USA
19"""19"""
2020
21from PyQt4 import QtCore, QtGui, QtTest21from PyQt4 import QtCore, QtGui
2222
23from time import sleep23from time import sleep
24from openlp.core.lib import translate24from openlp.core.lib import translate
@@ -41,6 +41,7 @@
41 self.alertactive = False41 self.alertactive = False
42 self.alerttext = u''42 self.alerttext = u''
43 self.alertTab = None43 self.alertTab = None
44 self.timer_id = 0
4445
45 def setup(self, screenNumber):46 def setup(self, screenNumber):
46 """47 """
@@ -69,11 +70,18 @@
69 self.frameView(self.blankFrame)70 self.frameView(self.blankFrame)
7071
71 def frameView(self, frame):72 def frameView(self, frame):
73 """
74 Called from a slide controller to display a frame
75 if the alert is in progress the alert is added on top
76 ``frame``
77 Image frame to be rendered
78 """
79
72 self.frame = frame80 self.frame = frame
73 if not self.displayBlank:81 if self.timer_id != 0 :
82 self.displayAlert()
83 elif not self.displayBlank:
74 self.display.setPixmap(QtGui.QPixmap.fromImage(frame))84 self.display.setPixmap(QtGui.QPixmap.fromImage(frame))
75 elif self.alertactive:
76 self.displayAlert()
7785
78 def blankDisplay(self):86 def blankDisplay(self):
79 if not self.displayBlank:87 if not self.displayBlank:
@@ -85,17 +93,17 @@
8593
86 def alert(self, alertTab, text):94 def alert(self, alertTab, text):
87 """95 """
88 Called from the Alert Tab96 Called from the Alert Tab to display an alert
89 alertTab = details from AlertTab97 ``alertTab``
90 text = display text98 details from AlertTab
91 screen = screen number to be displayed on.99
100 ``text``
101 display text
92 """102 """
93 self.alerttext = text103 self.alerttext = text
94 self.alertTab = alertTab104 self.alertTab = alertTab
95 if len(text) > 0:105 if len(text) > 0:
96 self.alertactive = True
97 self.displayAlert()106 self.displayAlert()
98 self.alertactive = False
99107
100 def displayAlert(self):108 def displayAlert(self):
101 alertframe = QtGui.QPixmap.fromImage(self.frame)109 alertframe = QtGui.QPixmap.fromImage(self.frame)
@@ -113,5 +121,12 @@
113 painter.drawText(x, y+metrics.height()-metrics.descent()-1, self.alerttext)121 painter.drawText(x, y+metrics.height()-metrics.descent()-1, self.alerttext)
114 painter.end()122 painter.end()
115 self.display.setPixmap(alertframe)123 self.display.setPixmap(alertframe)
116 QtTest.QTest.qWait(self.alertTab.timeout*1000)124 # check to see if we have a timer running
117 self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame))125 if self.timer_id == 0:
126 self.timer_id = self.startTimer(int(self.alertTab.timeout) * 1000)
127
128 def timerEvent(self, event):
129 if event.timerId() == self.timer_id:
130 self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame))
131 self.killTimer(self.timer_id)
132 self.timer_id = 0
118133
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-07-09 05:15:26 +0000
+++ openlp/core/ui/mainwindow.py 2009-07-18 05:43:50 +0000
@@ -139,16 +139,24 @@
139 if ret == QtGui.QMessageBox.Save:139 if ret == QtGui.QMessageBox.Save:
140 self.ServiceManagerContents.onSaveService()140 self.ServiceManagerContents.onSaveService()
141 self.mainDisplay.close()141 self.mainDisplay.close()
142 self.cleanUp()
142 event.accept()143 event.accept()
143 elif ret == QtGui.QMessageBox.Discard:144 elif ret == QtGui.QMessageBox.Discard:
144 self.mainDisplay.close()145 self.mainDisplay.close()
146 self.cleanUp()
145 event.accept()147 event.accept()
146 else:148 else:
147 event.ignore()149 event.ignore()
148 else:150 else:
149 self.mainDisplay.close()151 self.mainDisplay.close()
152 self.cleanUp()
150 event.accept()153 event.accept()
151154
155 def cleanUp(self):
156 # Call the cleanup method to shutdown plugins.
157 log.info(u'cleanup plugins')
158 self.plugin_manager.initialise_plugins()
159
152 def OosChanged(self, reset = False, oosName = None):160 def OosChanged(self, reset = False, oosName = None):
153 """161 """
154 Hook to change the title if the OOS has been changed162 Hook to change the title if the OOS has been changed
155163
=== modified file 'openlp/migration/migratesongs.py'
--- openlp/migration/migratesongs.py 2009-07-14 18:38:33 +0000
+++ openlp/migration/migratesongs.py 2009-07-18 07:30:26 +0000
@@ -137,8 +137,7 @@
137 self.db_url = u'sqlite:///' + self.data_path + u'/songs.sqlite'137 self.db_url = u'sqlite:///' + self.data_path + u'/songs.sqlite'
138 print self.db_url138 print self.db_url
139 self.session = init_models(self.db_url)139 self.session = init_models(self.db_url)
140 if not songs_table.exists():140 metadata.create_all(checkfirst=True)
141 metadata.create_all()
142 results = self.session.query(TSong).order_by(TSong.songid).all()141 results = self.session.query(TSong).order_by(TSong.songid).all()
143 for songs_temp in results:142 for songs_temp in results:
144 song = Song()143 song = Song()
@@ -151,18 +150,21 @@
151 aa = self.session.execute(u'select * from songauthors_temp where songid =' + unicode(songs_temp.songid) )150 aa = self.session.execute(u'select * from songauthors_temp where songid =' + unicode(songs_temp.songid) )
152 for row in aa:151 for row in aa:
153 a = row['authorid']152 a = row['authorid']
154 author = Author()
155 authors_temp = self.session.query(TAuthor).get(a)153 authors_temp = self.session.query(TAuthor).get(a)
156 author.display_name = authors_temp.authorname154 bb = self.session.execute(u'select * from authors where display_name = \"%s\"' % unicode(authors_temp.authorname) ).fetchone()
157 author.first_name = u''155 if bb is None:
158 author.last_name = u''156 author = Author()
157 author.display_name = authors_temp.authorname
158 else:
159 id = int(bb[0])
160 author = self.session.query(Author).get(bb[0])
159 song.authors.append(author)161 song.authors.append(author)
160 try:162 try:
161 self.session.add(song)163 self.session.add(song)
162 self.session.commit()164 self.session.commit()
163 except:165 except:
164 self.session.rollback()166 self.session.rollback()
165 print u'Errow thrown = ', sys.exc_info()[1]167 print u'Errow thrown = ', sys.exc_info()[1]
166168
167 def _v1_9_0_cleanup(self, database):169 def _v1_9_0_cleanup(self, database):
168 self.display.sub_output(u'Update Internal Data ' + database)170 self.display.sub_output(u'Update Internal Data ' + database)
@@ -184,5 +186,4 @@
184 conn.execute(u'drop table songauthors_temp;')186 conn.execute(u'drop table songauthors_temp;')
185 conn.commit()187 conn.commit()
186 conn.execute(u'drop table settings;')188 conn.execute(u'drop table settings;')
187
188 conn.commit()189 conn.commit()
189190
=== modified file 'openlp/plugins/bibles/lib/bibleDBimpl.py'
--- openlp/plugins/bibles/lib/bibleDBimpl.py 2009-07-14 19:44:15 +0000
+++ openlp/plugins/bibles/lib/bibleDBimpl.py 2009-07-18 05:43:50 +0000
@@ -58,7 +58,6 @@
5858
59 def add_verse(self, bookid, chap, vse, text):59 def add_verse(self, bookid, chap, vse, text):
60 #log.debug(u'add_verse %s,%s,%s", bookid, chap, vse)60 #log.debug(u'add_verse %s,%s,%s", bookid, chap, vse)
61 #metadata.bind.echo = False
62 verse = Verse()61 verse = Verse()
63 verse.book_id = bookid62 verse.book_id = bookid
64 verse.chapter = chap63 verse.chapter = chap
@@ -69,8 +68,6 @@
6968
70 def create_chapter(self, bookid, chap, textlist):69 def create_chapter(self, bookid, chap, textlist):
71 log.debug(u'create_chapter %s,%s', bookid, chap)70 log.debug(u'create_chapter %s,%s', bookid, chap)
72 #log.debug(u'Text %s ", textlist)
73 #metadata.bind.echo = False
74 #text list has book and chapter as first to elements of the array71 #text list has book and chapter as first to elements of the array
75 for verse_number, verse_text in textlist.iteritems():72 for verse_number, verse_text in textlist.iteritems():
76 verse = Verse()73 verse = Verse()
@@ -83,7 +80,6 @@
8380
84 def create_book(self, bookname, bookabbrev, testament=1):81 def create_book(self, bookname, bookabbrev, testament=1):
85 log.debug(u'create_book %s,%s', bookname, bookabbrev)82 log.debug(u'create_book %s,%s', bookname, bookabbrev)
86 #metadata.bind.echo = False
87 book = Book()83 book = Book()
88 book.testament_id = testament84 book.testament_id = testament
89 book.name = bookname85 book.name = bookname
@@ -94,7 +90,6 @@
9490
95 def save_meta(self, key, value):91 def save_meta(self, key, value):
96 log.debug(u'save_meta %s/%s', key, value)92 log.debug(u'save_meta %s/%s', key, value)
97 #metadata.bind.echo = False
98 bmeta = BibleMeta()93 bmeta = BibleMeta()
99 bmeta.key = key94 bmeta.key = key
100 bmeta.value = value95 bmeta.value = value
@@ -116,7 +111,6 @@
116111
117 def _load_testament(self, testament):112 def _load_testament(self, testament):
118 log.debug(u'load_testaments %s', testament)113 log.debug(u'load_testaments %s', testament)
119 #metadata.bind.echo = False
120 test = ONTestament()114 test = ONTestament()
121 test.name = testament115 test.name = testament
122 self.session.add(test)116 self.session.add(test)
@@ -128,17 +122,11 @@
128122
129 def get_max_bible_book_verses(self, bookname, chapter):123 def get_max_bible_book_verses(self, bookname, chapter):
130 log.debug(u'get_max_bible_book_verses %s, %s', bookname, chapter)124 log.debug(u'get_max_bible_book_verses %s, %s', bookname, chapter)
131 #metadata.bind.echo = False
132 #s = text (u'select max(verse.verse) from verse,book where chapter = :c and book_id = book.id and book.name = :b ')
133 #return self.db.execute(s, c=chapter, b=bookname).fetchone()
134 verse = self.session.query(Verse).join(Book).filter(Book.name==bookname).filter(Verse.chapter==chapter).order_by(Verse.verse.desc()).first()125 verse = self.session.query(Verse).join(Book).filter(Book.name==bookname).filter(Verse.chapter==chapter).order_by(Verse.verse.desc()).first()
135 return verse.verse126 return verse.verse
136127
137 def get_max_bible_book_chapter(self, bookname):128 def get_max_bible_book_chapter(self, bookname):
138 log.debug(u'get_max_bible_book_chapter %s', bookname)129 log.debug(u'get_max_bible_book_chapter %s', bookname)
139 #metadata.bind.echo = False
140 #s = text (u'select max(verse.chapter) from verse,book where book_id = book.id and book.name = :b')
141 #return self.db.execute(s, b=bookname).fetchone()
142 verse = self.session.query(Verse).join(Book).filter(Book.name==bookname).order_by(Verse.chapter.desc()).first()130 verse = self.session.query(Verse).join(Book).filter(Book.name==bookname).order_by(Verse.chapter.desc()).first()
143 return verse.chapter131 return verse.chapter
144132
@@ -151,34 +139,24 @@
151139
152 def get_bible_chapter(self, id, chapter):140 def get_bible_chapter(self, id, chapter):
153 log.debug(u'get_bible_chapter %s, %s', id, chapter)141 log.debug(u'get_bible_chapter %s, %s', id, chapter)
154 #metadata.bind.echo = False
155 return self.session.query(Verse).filter_by(chapter=chapter).filter_by(book_id=id).first()142 return self.session.query(Verse).filter_by(chapter=chapter).filter_by(book_id=id).first()
156143
157 def get_bible_text(self, bookname, chapter, sverse, everse):144 def get_bible_text(self, bookname, chapter, sverse, everse):
158 log.debug(u'get_bible_text %s, %s, %s, %s', bookname, chapter, sverse, everse)145 log.debug(u'get_bible_text %s, %s, %s, %s', bookname, chapter, sverse, everse)
159 #metadata.bind.echo = False
160 #bookname = bookname + u"%"
161 #s = text (u'select name,chapter,verse.verse, verse.text FROM verse , book where verse.book_id == book.id AND verse.chapter == :c AND (verse.verse between :v1 and :v2) and (book.name like :b)')
162 #return self.db.execute(s, c=chapter, v1=sverse , v2=everse, b=bookname).fetchall()
163 verses = self.session.query(Verse).join(Book).filter(Book.name==bookname).filter(Verse.chapter==chapter).filter(Verse.verse>=sverse).filter(Verse.verse<=everse).order_by(Verse.verse).all()146 verses = self.session.query(Verse).join(Book).filter(Book.name==bookname).filter(Verse.chapter==chapter).filter(Verse.verse>=sverse).filter(Verse.verse<=everse).order_by(Verse.verse).all()
164 return verses147 return verses
165148
166 def get_verses_from_text(self, versetext):149 def get_verses_from_text(self, versetext):
167 log.debug(u'get_verses_from_text %s',versetext)150 log.debug(u'get_verses_from_text %s',versetext)
168 #metadata.bind.echo = False
169 versetext = u'%%%s%%' % versetext151 versetext = u'%%%s%%' % versetext
170 #s = text (u'select book.name, verse.chapter, verse.verse, verse.text FROM verse , book where verse.book_id == book.id and verse.text like :t')
171 #return self.db.execute(s, t=versetext).fetchall()
172 verses = self.session.query(Verse).filter(Verse.text.like(versetext)).all()152 verses = self.session.query(Verse).filter(Verse.text.like(versetext)).all()
173 return verses153 return verses
174154
175 def dump_bible(self):155 def dump_bible(self):
176 log.debug( u'.........Dumping Bible Database')156 log.debug( u'.........Dumping Bible Database')
177 log.debug( '...............................Books ')157 log.debug( '...............................Books ')
178 #s = text (u'select * FROM book ')
179 books = self.session.query(Book).all()158 books = self.session.query(Book).all()
180 log.debug(books)159 log.debug(books)
181 log.debug( u'...............................Verses ')160 log.debug( u'...............................Verses ')
182 #s = text (u'select * FROM verse ')
183 verses = self.session.query(Verse).all()161 verses = self.session.query(Verse).all()
184 log.debug(verses)162 log.debug(verses)
185163
=== modified file 'openlp/plugins/bibles/lib/manager.py'
--- openlp/plugins/bibles/lib/manager.py 2009-07-13 20:08:43 +0000
+++ openlp/plugins/bibles/lib/manager.py 2009-07-18 05:43:50 +0000
@@ -29,8 +29,8 @@
29from bibleDBimpl import BibleDBImpl29from bibleDBimpl import BibleDBImpl
30from bibleHTTPimpl import BibleHTTPImpl30from bibleHTTPimpl import BibleHTTPImpl
3131
32from openlp.plugins.bibles.lib.tables import *32#from openlp.plugins.bibles.lib.tables import *
33from openlp.plugins.bibles.lib.classes import *33#from openlp.plugins.bibles.lib.classes import *
3434
35class BibleMode(object):35class BibleMode(object):
36 Full = 136 Full = 1
3737
=== modified file 'openlp/plugins/bibles/lib/models.py'
--- openlp/plugins/bibles/lib/models.py 2009-07-14 19:44:15 +0000
+++ openlp/plugins/bibles/lib/models.py 2009-07-18 05:43:50 +0000
@@ -68,19 +68,14 @@
68 """68 """
69 pass69 pass
7070
71
72def init_models(db_url):71def init_models(db_url):
73 engine = create_engine(db_url)72 engine = create_engine(db_url)
74 metadata.bind = engine73 metadata.bind = engine
75 session = scoped_session(sessionmaker(autoflush=True,74 session = scoped_session(sessionmaker(autoflush=True,
76 autocommit=False,75 autocommit=False,
77 bind=engine))76 bind=engine))
78 # Don't think this is needed...
79 #metadata.bind.echo = False
80 #Define the tables and indexes
81 return metadata, session77 return metadata, session
8278
83
84metadata = MetaData()79metadata = MetaData()
85meta_table = Table(u'metadata', metadata,80meta_table = Table(u'metadata', metadata,
86 Column(u'key', types.Unicode(255), primary_key=True, index=True),81 Column(u'key', types.Unicode(255), primary_key=True, index=True),
8782
=== modified file 'openlp/plugins/songs/forms/authorsform.py'
--- openlp/plugins/songs/forms/authorsform.py 2009-07-14 18:38:33 +0000
+++ openlp/plugins/songs/forms/authorsform.py 2009-07-18 05:43:50 +0000
@@ -51,7 +51,8 @@
51 Refresh the screen and rest fields51 Refresh the screen and rest fields
52 """52 """
53 self.AuthorListWidget.clear()53 self.AuthorListWidget.clear()
54 self.onClearButtonClick() # tidy up screen54 # tidy up screen
55 self.onClearButtonClick()
55 authors = self.songmanager.get_authors()56 authors = self.songmanager.get_authors()
56 for author in authors:57 for author in authors:
57 author_name = QtGui.QListWidgetItem(author.display_name)58 author_name = QtGui.QListWidgetItem(author.display_name)
@@ -127,6 +128,9 @@
127 self.DisplayEdit.setFocus()128 self.DisplayEdit.setFocus()
128129
129 def _validate_form(self):130 def _validate_form(self):
131 """
132 Validate the form and set if Add button if valid.
133 """
130 # We need at lease a display name134 # We need at lease a display name
131 if len(self.DisplayEdit.displayText()) == 0:135 if len(self.DisplayEdit.displayText()) == 0:
132 self.AddUpdateButton.setEnabled(False)136 self.AddUpdateButton.setEnabled(False)
133137
=== modified file 'openlp/plugins/songs/forms/editsongdialog.py'
--- openlp/plugins/songs/forms/editsongdialog.py 2009-06-14 13:50:56 +0000
+++ openlp/plugins/songs/forms/editsongdialog.py 2009-07-18 05:43:50 +0000
@@ -178,9 +178,9 @@
178 self.AuthorRemoveItem = QtGui.QPushButton(self.AuthorRemoveWidget)178 self.AuthorRemoveItem = QtGui.QPushButton(self.AuthorRemoveWidget)
179 self.AuthorRemoveItem.setObjectName(u'AuthorRemoveItem')179 self.AuthorRemoveItem.setObjectName(u'AuthorRemoveItem')
180 self.AuthorRemoveLayout.addWidget(self.AuthorRemoveItem)180 self.AuthorRemoveLayout.addWidget(self.AuthorRemoveItem)
181 self.AddAuthorsButton = QtGui.QPushButton(self.AuthorRemoveWidget)181# self.AddAuthorsButton = QtGui.QPushButton(self.AuthorRemoveWidget)
182 self.AddAuthorsButton.setObjectName(u'AddAuthorsButton')182# self.AddAuthorsButton.setObjectName(u'AddAuthorsButton')
183 self.AuthorRemoveLayout.addWidget(self.AddAuthorsButton)183# self.AuthorRemoveLayout.addWidget(self.AddAuthorsButton)
184 self.AuthorsLayout.addWidget(self.AuthorRemoveWidget)184 self.AuthorsLayout.addWidget(self.AuthorRemoveWidget)
185 self.AdditionalLayout.addWidget(self.AuthorsGroupBox)185 self.AdditionalLayout.addWidget(self.AuthorsGroupBox)
186 self.SongBookGroup = QtGui.QGroupBox(self.AdditionalWidget)186 self.SongBookGroup = QtGui.QGroupBox(self.AdditionalWidget)
@@ -197,14 +197,14 @@
197 self.SongbookCombo.setSizePolicy(sizePolicy)197 self.SongbookCombo.setSizePolicy(sizePolicy)
198 self.SongbookCombo.setObjectName(u'SongbookCombo')198 self.SongbookCombo.setObjectName(u'SongbookCombo')
199 self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)199 self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
200 self.AddSongBookButton = QtGui.QPushButton(self.SongBookGroup)200# self.AddSongBookButton = QtGui.QPushButton(self.SongBookGroup)
201 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)201# sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
202 sizePolicy.setHorizontalStretch(0)202# sizePolicy.setHorizontalStretch(0)
203 sizePolicy.setVerticalStretch(0)203# sizePolicy.setVerticalStretch(0)
204 sizePolicy.setHeightForWidth(self.AddSongBookButton.sizePolicy().hasHeightForWidth())204# sizePolicy.setHeightForWidth(self.AddSongBookButton.sizePolicy().hasHeightForWidth())
205 self.AddSongBookButton.setSizePolicy(sizePolicy)205# self.AddSongBookButton.setSizePolicy(sizePolicy)
206 self.AddSongBookButton.setObjectName(u'AddSongBookButton')206# self.AddSongBookButton.setObjectName(u'AddSongBookButton')
207 self.SongbookLayout.addWidget(self.AddSongBookButton, 0, 1, 1, 1)207# self.SongbookLayout.addWidget(self.AddSongBookButton, 0, 1, 1, 1)
208 self.AdditionalLayout.addWidget(self.SongBookGroup)208 self.AdditionalLayout.addWidget(self.SongBookGroup)
209 self.TopicGroupBox = QtGui.QGroupBox(self.AdditionalWidget)209 self.TopicGroupBox = QtGui.QGroupBox(self.AdditionalWidget)
210 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)210 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
@@ -255,9 +255,9 @@
255 self.TopicRemoveItem = QtGui.QPushButton(self.TopicRemoveWidget)255 self.TopicRemoveItem = QtGui.QPushButton(self.TopicRemoveWidget)
256 self.TopicRemoveItem.setObjectName(u'TopicRemoveItem')256 self.TopicRemoveItem.setObjectName(u'TopicRemoveItem')
257 self.TopicRemoveLayout.addWidget(self.TopicRemoveItem)257 self.TopicRemoveLayout.addWidget(self.TopicRemoveItem)
258 self.AddTopicButton = QtGui.QPushButton(self.TopicRemoveWidget)258# self.AddTopicButton = QtGui.QPushButton(self.TopicRemoveWidget)
259 self.AddTopicButton.setObjectName(u'AddTopicButton')259# self.AddTopicButton.setObjectName(u'AddTopicButton')
260 self.TopicRemoveLayout.addWidget(self.AddTopicButton)260# self.TopicRemoveLayout.addWidget(self.AddTopicButton)
261 self.TopicLayout.addWidget(self.TopicRemoveWidget)261 self.TopicLayout.addWidget(self.TopicRemoveWidget)
262 self.AdditionalLayout.addWidget(self.TopicGroupBox)262 self.AdditionalLayout.addWidget(self.TopicGroupBox)
263 self.CopyrightgroupBox = QtGui.QGroupBox(self.AdditionalWidget)263 self.CopyrightgroupBox = QtGui.QGroupBox(self.AdditionalWidget)
@@ -313,8 +313,9 @@
313 EditSongDialog.setTabOrder(self.AuthorAddtoSongItem, self.AuthorsListView)313 EditSongDialog.setTabOrder(self.AuthorAddtoSongItem, self.AuthorsListView)
314 EditSongDialog.setTabOrder(self.AuthorsListView, self.AuthorRemoveItem)314 EditSongDialog.setTabOrder(self.AuthorsListView, self.AuthorRemoveItem)
315 EditSongDialog.setTabOrder(self.AuthorRemoveItem, self.SongbookCombo)315 EditSongDialog.setTabOrder(self.AuthorRemoveItem, self.SongbookCombo)
316 EditSongDialog.setTabOrder(self.SongbookCombo, self.AddSongBookButton)316 #EditSongDialog.setTabOrder(self.SongbookCombo, self.AddSongBookButton)
317 EditSongDialog.setTabOrder(self.AddSongBookButton, self.SongTopicCombo)317 #EditSongDialog.setTabOrder(self.AddSongBookButton, self.SongTopicCombo)
318 EditSongDialog.setTabOrder(self.SongbookCombo, self.SongTopicCombo)
318 EditSongDialog.setTabOrder(self.SongTopicCombo, self.TopicsListView)319 EditSongDialog.setTabOrder(self.SongTopicCombo, self.TopicsListView)
319 EditSongDialog.setTabOrder(self.TopicsListView, self.TopicRemoveItem)320 EditSongDialog.setTabOrder(self.TopicsListView, self.TopicRemoveItem)
320 EditSongDialog.setTabOrder(self.TopicRemoveItem, self.CopyrightEditItem)321 EditSongDialog.setTabOrder(self.TopicRemoveItem, self.CopyrightEditItem)
@@ -336,13 +337,13 @@
336 self.AuthorsGroupBox.setTitle(translate(u'EditSongDialog', u'Authors'))337 self.AuthorsGroupBox.setTitle(translate(u'EditSongDialog', u'Authors'))
337 self.AuthorAddtoSongItem.setText(translate(u'EditSongDialog', u'Add to Song'))338 self.AuthorAddtoSongItem.setText(translate(u'EditSongDialog', u'Add to Song'))
338 self.AuthorRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))339 self.AuthorRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))
339 self.AddAuthorsButton.setText(translate(u'EditSongDialog', u'Manage Authors'))340 #self.AddAuthorsButton.setText(translate(u'EditSongDialog', u'Manage Authors'))
340 self.SongBookGroup.setTitle(translate(u'EditSongDialog', u'Song Book'))341 self.SongBookGroup.setTitle(translate(u'EditSongDialog', u'Song Book'))
341 self.AddSongBookButton.setText(translate(u'EditSongDialog', u'Manage Song Books'))342 #self.AddSongBookButton.setText(translate(u'EditSongDialog', u'Manage Song Books'))
342 self.TopicGroupBox.setTitle(translate(u'EditSongDialog', u'Topic'))343 self.TopicGroupBox.setTitle(translate(u'EditSongDialog', u'Topic'))
343 self.AddTopicsToSongButton.setText(translate(u'EditSongDialog', u'Add to Song'))344 self.AddTopicsToSongButton.setText(translate(u'EditSongDialog', u'Add to Song'))
344 self.TopicRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))345 self.TopicRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))
345 self.AddTopicButton.setText(translate(u'EditSongDialog', u'Manage Topics'))346 #self.AddTopicButton.setText(translate(u'EditSongDialog', u'Manage Topics'))
346 self.CopyrightgroupBox.setTitle(translate(u'EditSongDialog', u'Copyright Infomaton'))347 self.CopyrightgroupBox.setTitle(translate(u'EditSongDialog', u'Copyright Infomaton'))
347 self.CopyrightInsertItem.setText(translate(u'EditSongDialog', u'(c)'))348 self.CopyrightInsertItem.setText(translate(u'EditSongDialog', u'(c)'))
348 self.CCLILabel.setText(translate(u'EditSongDialog', u'CCLI Number:'))349 self.CCLILabel.setText(translate(u'EditSongDialog', u'CCLI Number:'))
349350
=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py 2009-07-13 17:02:38 +0000
+++ openlp/plugins/songs/forms/editsongform.py 2009-07-19 07:58:37 +0000
@@ -40,24 +40,24 @@
40 QtGui.QDialog.__init__(self, parent)40 QtGui.QDialog.__init__(self, parent)
41 self.setupUi(self)41 self.setupUi(self)
42 # Connecting signals and slots42 # Connecting signals and slots
43 QtCore.QObject.connect(self.AddAuthorsButton,43# QtCore.QObject.connect(self.AddAuthorsButton,
44 QtCore.SIGNAL(u'clicked()'), self.onAddAuthorsButtonClicked)44# QtCore.SIGNAL(u'clicked()'), self.onAddAuthorsButtonClicked)
45 QtCore.QObject.connect(self.AuthorAddtoSongItem,45 QtCore.QObject.connect(self.AuthorAddtoSongItem,
46 QtCore.SIGNAL(u'clicked()'), self.onAuthorAddtoSongItemClicked)46 QtCore.SIGNAL(u'clicked()'), self.onAuthorAddtoSongItemClicked)
47 QtCore.QObject.connect(self.AuthorRemoveItem,47 QtCore.QObject.connect(self.AuthorRemoveItem,
48 QtCore.SIGNAL(u'clicked()'), self.onAuthorRemovefromSongItemClicked)48 QtCore.SIGNAL(u'clicked()'), self.onAuthorRemovefromSongItemClicked)
49 QtCore.QObject.connect(self.AuthorsListView,49 QtCore.QObject.connect(self.AuthorsListView,
50 QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onAuthorsListViewPressed)50 QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onAuthorsListViewPressed)
51 QtCore.QObject.connect(self.AddTopicButton,51# QtCore.QObject.connect(self.AddTopicButton,
52 QtCore.SIGNAL(u'clicked()'), self.onAddTopicButtonClicked)52# QtCore.SIGNAL(u'clicked()'), self.onAddTopicButtonClicked)
53 QtCore.QObject.connect(self.AddTopicsToSongButton,53 QtCore.QObject.connect(self.AddTopicsToSongButton,
54 QtCore.SIGNAL(u'clicked()'), self.onTopicAddtoSongItemClicked)54 QtCore.SIGNAL(u'clicked()'), self.onTopicAddtoSongItemClicked)
55 QtCore.QObject.connect(self.TopicRemoveItem,55 QtCore.QObject.connect(self.TopicRemoveItem,
56 QtCore.SIGNAL(u'clicked()'), self.onTopicRemovefromSongItemClicked)56 QtCore.SIGNAL(u'clicked()'), self.onTopicRemovefromSongItemClicked)
57 QtCore.QObject.connect(self.TopicsListView,57 QtCore.QObject.connect(self.TopicsListView,
58 QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onTopicListViewPressed)58 QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onTopicListViewPressed)
59 QtCore.QObject.connect(self.AddSongBookButton,59# QtCore.QObject.connect(self.AddSongBookButton,
60 QtCore.SIGNAL(u'clicked()'), self.onAddSongBookButtonClicked)60# QtCore.SIGNAL(u'clicked()'), self.onAddSongBookButtonClicked)
61 QtCore.QObject.connect(self.CopyrightInsertItem,61 QtCore.QObject.connect(self.CopyrightInsertItem,
62 QtCore.SIGNAL(u'clicked()'), self.onCopyrightInsertItemTriggered)62 QtCore.SIGNAL(u'clicked()'), self.onCopyrightInsertItemTriggered)
63 QtCore.QObject.connect(self.AddButton,63 QtCore.QObject.connect(self.AddButton,
@@ -75,9 +75,9 @@
75 # Create other objects and forms75 # Create other objects and forms
76 self.songmanager = songmanager76 self.songmanager = songmanager
77 self.eventmanager = eventmanager77 self.eventmanager = eventmanager
78 self.authors_form = AuthorsForm(self.songmanager)78# self.authors_form = AuthorsForm(self.songmanager)
79 self.topics_form = TopicsForm(self.songmanager)79# self.topics_form = TopicsForm(self.songmanager)
80 self.song_book_form = SongBookForm(self.songmanager)80# self.song_book_form = SongBookForm(self.songmanager)
81 self.verse_form = EditVerseForm()81 self.verse_form = EditVerseForm()
82 self.initialise()82 self.initialise()
83 self.AuthorsListView.setSortingEnabled(False)83 self.AuthorsListView.setSortingEnabled(False)
@@ -86,9 +86,6 @@
86 self.TopicsListView.setAlternatingRowColors(True)86 self.TopicsListView.setAlternatingRowColors(True)
8787
88 def initialise(self):88 def initialise(self):
89 self.loadAuthors()
90 self.loadTopics()
91 self.loadBooks()
92 self.EditButton.setEnabled(False)89 self.EditButton.setEnabled(False)
93 self.DeleteButton.setEnabled(False)90 self.DeleteButton.setEnabled(False)
94 self.AuthorRemoveItem.setEnabled(False)91 self.AuthorRemoveItem.setEnabled(False)
@@ -140,26 +137,32 @@
140 self.TopicsListView.clear()137 self.TopicsListView.clear()
141 self.title_change = False138 self.title_change = False
142 self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason)139 self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason)
140 self.loadAuthors()
141 self.loadTopics()
142 self.loadBooks()
143143
144 def loadSong(self, id):144 def loadSong(self, id):
145 log.debug(u'Load Song')145 log.debug(u'Load Song')
146 self.loadAuthors()
147 self.loadTopics()
148 self.loadBooks()
146 self.song = self.songmanager.get_song(id)149 self.song = self.songmanager.get_song(id)
147 self.TitleEditItem.setText(self.song.title)150 self.TitleEditItem.setText(self.song.title)
148 title = self.song.search_title.split(u'@')151 title = self.song.search_title.split(u'@')
149 if self.song.song_book_id != 0:152 if self.song.song_book_id != 0:
150 book_name = self.songmanager.get_book(self.song.song_book_id)153 book_name = self.songmanager.get_book(self.song.song_book_id)
151 id = self.SongbookCombo.findText(unicode(book_name), QtCore.Qt.MatchExactly)154 id = self.SongbookCombo.findText(unicode(book_name.name), QtCore.Qt.MatchExactly)
152 if id == -1:155 if id == -1:
153 # Not Found156 # Not Found
154 id = 0157 id = 0
155 book_name.setCurrentIndex(id)158 self.SongbookCombo.setCurrentIndex(id)
156 if self.song.theme_name is not None and len(self.song.theme_name) > 0:159 if self.song.theme_name is not None and len(self.song.theme_name) > 0:
157 id = self.SongbookCombo.findText(unicode(self.song.theme_name), QtCore.Qt.MatchExactly)160 id = self.ThemeSelectionComboItem.findText(unicode(self.song.theme_name), QtCore.Qt.MatchExactly)
158 if id == -1:161 if id == -1:
159 # Not Found162 # Not Found
160 id = 0163 id = 0
161 self.song.theme_name = None164 self.song.theme_name = None
162 self.SongbookCombo.setCurrentIndex(id)165 self.ThemeSelectionComboItem.setCurrentIndex(id)
163 if len(title) > 1:166 if len(title) > 1:
164 self.AlternativeEdit.setText(title[1])167 self.AlternativeEdit.setText(title[1])
165 if self.song.copyright is not None:168 if self.song.copyright is not None:
@@ -207,15 +210,16 @@
207210
208 def onAuthorAddtoSongItemClicked(self):211 def onAuthorAddtoSongItemClicked(self):
209 item = int(self.AuthorsSelectionComboItem.currentIndex())212 item = int(self.AuthorsSelectionComboItem.currentIndex())
210 item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0]213 if item > -1:
211 author = self.songmanager.get_author(item_id)214 item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0]
212 self.song.authors.append(author)215 author = self.songmanager.get_author(item_id)
213 author_item = QtGui.QListWidgetItem(unicode(author.display_name))216 self.song.authors.append(author)
214 author_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))217 author_item = QtGui.QListWidgetItem(unicode(author.display_name))
215 self.AuthorsListView.addItem(author_item)218 author_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
219 self.AuthorsListView.addItem(author_item)
216220
217 def onAuthorsListViewPressed(self):221 def onAuthorsListViewPressed(self):
218 if self.AuthorsListView.count() >1:222 if self.AuthorsListView.count() > 1:
219 self.AuthorRemoveItem.setEnabled(True)223 self.AuthorRemoveItem.setEnabled(True)
220224
221 def onAuthorRemovefromSongItemClicked(self):225 def onAuthorRemovefromSongItemClicked(self):
@@ -229,12 +233,13 @@
229233
230 def onTopicAddtoSongItemClicked(self):234 def onTopicAddtoSongItemClicked(self):
231 item = int(self.SongTopicCombo.currentIndex())235 item = int(self.SongTopicCombo.currentIndex())
232 item_id = (self.SongTopicCombo.itemData(item)).toInt()[0]236 if item > -1:
233 topic = self.songmanager.get_topic(item_id)237 item_id = (self.SongTopicCombo.itemData(item)).toInt()[0]
234 self.song.topics.append(topic)238 topic = self.songmanager.get_topic(item_id)
235 topic_item = QtGui.QListWidgetItem(unicode(topic.name))239 self.song.topics.append(topic)
236 topic_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))240 topic_item = QtGui.QListWidgetItem(unicode(topic.name))
237 self.TopicsListView.addItem(topic_item)241 topic_item.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
242 self.TopicsListView.addItem(topic_item)
238243
239 def onTopicListViewPressed(self):244 def onTopicListViewPressed(self):
240 self.TopicRemoveItem.setEnabled(True)245 self.TopicRemoveItem.setEnabled(True)
@@ -247,29 +252,30 @@
247 self.song.topics.remove(topic)252 self.song.topics.remove(topic)
248 row = self.TopicsListView.row(item)253 row = self.TopicsListView.row(item)
249 self.TopicsListView.takeItem(row)254 self.TopicsListView.takeItem(row)
250 def onAddAuthorsButtonClicked(self):255
251 """256# def onAddAuthorsButtonClicked(self):
252 Slot documentation goes here.257# """
253 """258# Slot documentation goes here.
254 self.authors_form.load_form()259# """
255 self.authors_form.exec_()260# self.authors_form.load_form()
256 self.loadAuthors()261# self.authors_form.exec_()
257262# self.loadAuthors()
258 def onAddTopicButtonClicked(self):263#
259 """264# def onAddTopicButtonClicked(self):
260 Slot documentation goes here.265# """
261 """266# Slot documentation goes here.
262 self.topics_form.load_form()267# """
263 self.topics_form.exec_()268# self.topics_form.load_form()
264 self.loadTopics()269# self.topics_form.exec_()
265270# self.loadTopics()
266 def onAddSongBookButtonClicked(self):271#
267 """272# def onAddSongBookButtonClicked(self):
268 Slot documentation goes here.273# """
269 """274# Slot documentation goes here.
270 self.song_book_form.load_form()275# """
271 self.song_book_form.exec_()276# self.song_book_form.load_form()
272 self.loadBooks()277# self.song_book_form.exec_()
278# self.loadBooks()
273279
274 def onSongBookComboChanged(self, item):280 def onSongBookComboChanged(self, item):
275 if item == 0:281 if item == 0:
@@ -301,7 +307,7 @@
301 self.verse_form.setVerse(item.text())307 self.verse_form.setVerse(item.text())
302 self.verse_form.exec_()308 self.verse_form.exec_()
303 item.setText(self.verse_form.getVerse())309 item.setText(self.verse_form.getVerse())
304 self.VerseListWidget.update()310 self.VerseListWidget.repaint()
305 self.EditButton.setEnabled(False)311 self.EditButton.setEnabled(False)
306 self.DeleteButton.setEnabled(False)312 self.DeleteButton.setEnabled(False)
307313
@@ -367,7 +373,6 @@
367 self.song.ccli_number = unicode(self.CCLNumberEdit.displayText())373 self.song.ccli_number = unicode(self.CCLNumberEdit.displayText())
368 self.processLyrics()374 self.processLyrics()
369 self.processTitle()375 self.processTitle()
370 self.song.song_book_id = 0
371 self.songmanager.save_song(self.song)376 self.songmanager.save_song(self.song)
372 if self.title_change:377 if self.title_change:
373 self.eventmanager.post_event(Event(EventType.LoadSongList))378 self.eventmanager.post_event(Event(EventType.LoadSongList))
374379
=== modified file 'openlp/plugins/songs/lib/manager.py'
--- openlp/plugins/songs/lib/manager.py 2009-07-08 05:12:16 +0000
+++ openlp/plugins/songs/lib/manager.py 2009-07-18 07:30:26 +0000
@@ -55,13 +55,9 @@
55 self.config.get_config(u'db hostname') + u'/' + \55 self.config.get_config(u'db hostname') + u'/' + \
56 self.config.get_config(u'db database')56 self.config.get_config(u'db database')
57 self.session = init_models(self.db_url)57 self.session = init_models(self.db_url)
58 if not songs_table.exists():58 metadata.create_all(checkfirst=True)
59 metadata.create_all()
60 log.debug(u'Song Initialised')59 log.debug(u'Song Initialised')
6160
62# def process_dialog(self, dialogobject):
63# self.dialogobject = dialogobject
64
65 def get_songs(self):61 def get_songs(self):
66 """62 """
67 Returns the details of a song63 Returns the details of a song
6864
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py 2009-07-04 05:52:30 +0000
+++ openlp/plugins/songs/lib/mediaitem.py 2009-07-18 05:43:50 +0000
@@ -22,7 +22,7 @@
22from PyQt4 import QtCore, QtGui22from PyQt4 import QtCore, QtGui
23from openlp.core.lib import MediaManagerItem, translate, ServiceItem, SongXMLParser , contextMenuAction, contextMenuSeparator23from openlp.core.lib import MediaManagerItem, translate, ServiceItem, SongXMLParser , contextMenuAction, contextMenuSeparator
2424
25from openlp.plugins.songs.forms import EditSongForm25from openlp.plugins.songs.forms import EditSongForm, AuthorsForm, TopicsForm, SongBookForm
2626
27class SongList(QtGui.QListWidget):27class SongList(QtGui.QListWidget):
2828
@@ -59,6 +59,9 @@
59 self.ConfigSection = u'song'59 self.ConfigSection = u'song'
60 MediaManagerItem.__init__(self, parent, icon, title)60 MediaManagerItem.__init__(self, parent, icon, title)
61 self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager)61 self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager)
62 self.authors_form = AuthorsForm(self.parent.songmanager)
63 self.topics_form = TopicsForm(self.parent.songmanager)
64 self.song_book_form = SongBookForm(self.parent.songmanager)
6265
63 def setupUi(self):66 def setupUi(self):
64 # Add a toolbar67 # Add a toolbar
@@ -90,6 +93,19 @@
90 self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),93 self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
91 translate(u'SongMediaItem', u'Add the selected song(s) to the service'),94 translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
92 ':/system/system_add.png', self.onSongAddClick, 'SongAddItem')95 ':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
96 self.addToolbarSeparator()
97 ## Author Edit Button ##
98 self.addToolbarButton(translate(u'SongMediaItem', u'Edit Authors'),
99 translate(u'SongMediaItem', u'Maintain the list of Song Authors'),
100 ':/songs/song_author_edit.png', self.onEditAuthorClick, 'SongAuthorEditItem')
101 ## Author Edit Button ##
102 self.addToolbarButton(translate(u'SongMediaItem', u'Edit Books'),
103 translate(u'SongMediaItem', u'Maintain the list of Song Books'),
104 ':/songs/song_book_edit.png', self.onEditBookClick, 'SongAuthorEditItem')
105 ## Author Edit Button ##
106 self.addToolbarButton(translate(u'SongMediaItem', u'Edit Topics'),
107 translate(u'SongMediaItem', u'Maintain the list of Song Topics'),
108 ':/songs/song_topic_edit.png', self.onEditTopicClick, 'SongAuthorEditItem')
93 ## Add the songlist widget ##109 ## Add the songlist widget ##
94 # Create the tab widget110 # Create the tab widget
95 self.SongWidget = QtGui.QWidget(self)111 self.SongWidget = QtGui.QWidget(self)
@@ -222,6 +238,18 @@
222 self.edit_song_form.newSong()238 self.edit_song_form.newSong()
223 self.edit_song_form.exec_()239 self.edit_song_form.exec_()
224240
241 def onEditAuthorClick(self):
242 self.authors_form.load_form()
243 self.authors_form.exec_()
244
245 def onEditTopicClick(self):
246 self.topics_form.load_form()
247 self.topics_form.exec_()
248
249 def onEditBookClick(self):
250 self.song_book_form.load_form()
251 self.song_book_form.exec_()
252
225 def onSongEditClick(self):253 def onSongEditClick(self):
226 item = self.ListView.currentItem()254 item = self.ListView.currentItem()
227 if item is not None:255 if item is not None:
228256
=== modified file 'resources/images/openlp-2.qrc'
--- resources/images/openlp-2.qrc 2009-07-03 19:08:21 +0000
+++ resources/images/openlp-2.qrc 2009-07-18 05:43:50 +0000
@@ -4,6 +4,9 @@
4 <file>song_edit.png</file>4 <file>song_edit.png</file>
5 <file>song_export.png</file>5 <file>song_export.png</file>
6 <file>song_new.png</file>6 <file>song_new.png</file>
7 <file>song_author_edit.png</file>
8 <file>song_topic_edit.png</file>
9 <file>song_book_edit.png</file>
7 </qresource>10 </qresource>
8 <qresource prefix="slides" >11 <qresource prefix="slides" >
9 <file>slide_close.png</file>12 <file>slide_close.png</file>
1013
=== added file 'resources/images/song_author_edit.png'
11Binary files resources/images/song_author_edit.png 1970-01-01 00:00:00 +0000 and resources/images/song_author_edit.png 2009-07-18 05:45:44 +0000 differ14Binary files resources/images/song_author_edit.png 1970-01-01 00:00:00 +0000 and resources/images/song_author_edit.png 2009-07-18 05:45:44 +0000 differ
=== added file 'resources/images/song_book_edit.png'
12Binary files resources/images/song_book_edit.png 1970-01-01 00:00:00 +0000 and resources/images/song_book_edit.png 2009-07-18 05:45:44 +0000 differ15Binary files resources/images/song_book_edit.png 1970-01-01 00:00:00 +0000 and resources/images/song_book_edit.png 2009-07-18 05:45:44 +0000 differ
=== added file 'resources/images/song_topic_edit.png'
13Binary files resources/images/song_topic_edit.png 1970-01-01 00:00:00 +0000 and resources/images/song_topic_edit.png 2009-07-18 05:45:44 +0000 differ16Binary files resources/images/song_topic_edit.png 1970-01-01 00:00:00 +0000 and resources/images/song_topic_edit.png 2009-07-18 05:45:44 +0000 differ
=== added file 'songcnv.sh'
--- songcnv.sh 1970-01-01 00:00:00 +0000
+++ songcnv.sh 2009-07-19 06:31:08 +0000
@@ -0,0 +1,5 @@
1/usr/bin/sqlite ~/.local/share/openlp/songs/songs.olp .dump > ~/.local/share/openlp/songs/songs.dmp
2./cnvdb.py ~/.local/share/openlp/songs/songs.dmp ~/.local/share/openlp/songs/songs.dmp2
3rm ~/.local/share/openlp/songs/songs.sqlite
4sqlite3 ~/.local/share/openlp/songs/songs.sqlite < ~/.local/share/openlp/songs/songs.dmp2
5./openlpcnv.pyw