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

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

Add OOS saving and loading
Fixes in the plugins due to strange window events before system fully loaded.
More code cleanups.

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

Great stuff!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openlp.pyw'
2--- openlp.pyw 2009-05-20 20:17:20 +0000
3+++ openlp.pyw 2009-06-07 19:34:24 +0000
4@@ -41,7 +41,6 @@
5 #provide a listener for widgets to reqest a screen update.
6 QtCore.QObject.connect(Receiver.get_receiver(),
7 QtCore.SIGNAL(u'openlpprocessevents'), self.processEvents)
8-
9 self.setApplicationName(u'openlp.org')
10 self.setApplicationVersion(u'1.9.0')
11 self.splash = SplashScreen(self.applicationVersion())
12@@ -66,4 +65,3 @@
13 if __name__ == u'__main__':
14 app = OpenLP(sys.argv)
15 app.run()
16-
17
18=== modified file 'openlp/core/lib/renderer.py'
19--- openlp/core/lib/renderer.py 2009-06-05 18:53:50 +0000
20+++ openlp/core/lib/renderer.py 2009-06-08 04:30:12 +0000
21@@ -20,22 +20,14 @@
22 import logging
23 import os, os.path
24 import sys
25+#from copy import copy
26
27-from datetime import *
28 from PyQt4 import QtGui, QtCore, Qt
29
30-from copy import copy
31-
32 class Renderer:
33 """
34- All the functions for rendering a set of words onto a Device Context
35-
36- How to use:
37- set the words to be displayed with a call to format_slide() - this returns an array of screenfuls of data
38- set a theme (if you need) with set_theme
39- tell it which DC to render to with set_DC()
40- set the borders of where you want the text (if not the whole DC) with set_text_rectangle()
41- tell it to render a particular screenfull with render_screen(n)
42+ Genarates a pixmap image of a array of text. The Text is formatted to
43+ make sure it fits on the screen and if not extra frames a generated.
44 """
45 global log
46 log = logging.getLogger(u'Renderer')
47@@ -98,7 +90,7 @@
48 """
49 if preview == True:
50 self._bg_frame = None
51- log.debug(u'set frame dest (frame) w %d h %d',frame_width, frame_height)
52+ log.debug(u'set frame dest (frame) w %d h %d', frame_width, frame_height)
53 self._frame = QtGui.QPixmap(frame_width, frame_height)
54 if self._bg_image_filename is not None:
55 self.scale_bg_image()
56@@ -109,10 +101,10 @@
57 """
58 External API to sort out the text to pe placed on the frame
59 """
60- print "########## Format Slide ##################"
61+ #print "########## Format Slide ##################"
62 log.debug(u'format_slide %s', words)
63 verses = []
64- words = words.replace("\r\n", "\n")
65+ words = words.replace(u'\r\n', u'\n')
66 verses_text = words.split(u'\n\n')
67 text = []
68 for verse in verses_text:
69@@ -120,8 +112,8 @@
70 for line in lines:
71 text.append(line)
72 split_text = self._split_set_of_lines(text, False)
73- print "split text ", split_text
74- print "text ", text
75+ #print "split text ", split_text
76+ #print "text ", text
77 return split_text
78
79 def set_text_rectangle(self, rect_main, rect_footer):
80@@ -147,7 +139,6 @@
81 bbox = self._render_lines_unaligned(lines, False, (x, y))
82 if footer_lines is not None:
83 bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) )
84- log.debug(u'generate_frame_from_lines - Finish')
85 return self._frame
86
87 def _generate_background_frame(self):
88@@ -158,7 +149,6 @@
89 assert(self._theme)
90 self._bg_frame = QtGui.QPixmap(self._frame.width(), self._frame.height())
91 log.debug(u'render background %s ', self._theme.background_type)
92- bef = datetime.now()
93 painter = QtGui.QPainter()
94 painter.begin(self._bg_frame)
95 if self._theme.background_type == u'solid':
96@@ -193,9 +183,6 @@
97 else:
98 painter.fillRect(self._frame.rect(), QtGui.QColor(u'#000000'))
99 painter.end()
100- aft = datetime.now()
101- print "background time", bef, aft, aft-bef
102- log.debug(u'render background finish')
103
104 def _split_set_of_lines(self, lines, footer):
105 """
106@@ -212,16 +199,11 @@
107 #print "bboxes ", bboxes
108 numlines = len(lines)
109 bottom = self._rect.bottom()
110- count = 0
111 for ratio in (numlines, numlines/2, numlines/3, numlines/4):
112 good = 1
113 startline = 0
114 endline = startline + ratio
115 while (endline <= numlines and endline != 0):
116- count += 1
117- if count > 100:
118- #print "busted"
119- break
120 by = 0
121 for (x,y) in bboxes[startline:endline]:
122 #print by, startline, endline, x, y, bottom
123@@ -278,7 +260,7 @@
124 elif int(self._theme.display_verticalAlign) == 1: # centre align
125 y = rect.top() + (rect.height() - bbox.height()) / 2
126 else:
127- assert(0 , u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
128+ log.error(u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
129 return x, y
130
131 def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)):
132@@ -306,7 +288,6 @@
133 painter.setPen(QtGui.QPen(QtGui.QColor(0,0,255)))
134 painter.drawRect(retval)
135 painter.end()
136- log.debug(u'render lines unaligned Finish')
137 return retval
138
139 def _render_and_wrap_single_line(self, line, footer, tlcorner=(0,0)):
140@@ -317,7 +298,7 @@
141 right-aligns the surplus words in the manner of song lyrics
142 Returns the bottom-right corner (of what was rendered) as a tuple(x, y).
143 """
144- log.debug(u'Render single line %s @ %s '%( line, tlcorner))
145+ #log.debug(u'Render single line %s @ %s '%( line, tlcorner))
146 x, y = tlcorner
147 # We draw the text to see how big it is and then iterate to make it fit
148 # when we line wrap we do in in the "lyrics" style, so the second line is
149@@ -342,7 +323,8 @@
150 startx = x
151 starty = y
152 rightextent = None
153- if footer: # dont allow alignment messing with footers
154+ # dont allow alignment messing with footers
155+ if footer:
156 align = 0
157 else:
158 align = int(self._theme .display_horizontalAlign)
159@@ -354,42 +336,47 @@
160 w += self._shadow_offset
161 h += self._shadow_offset
162 if self._theme.display_outline:
163- w += 2*self._outline_offset # pixels either side
164- h += 2*self._outline_offset # pixels top/bottom
165+ # pixels either side
166+ w += 2 * self._outline_offset
167+ # pixels top/bottom
168+ h += 2 * self._outline_offset
169 if align == 0: # left align
170 rightextent = x + w
171- if self._theme.display_wrapStyle == 1 and linenum != 0: # shift right from last line's rh edge
172+ # shift right from last line's rh edge
173+ if self._theme.display_wrapStyle == 1 and linenum != 0:
174 rightextent = self._first_line_right_extent + self._right_margin
175 if rightextent > maxx:
176 rightextent = maxx
177 x = rightextent - w
178- elif align == 1: # right align
179+ # right align
180+ elif align == 1:
181 rightextent = maxx
182 x = maxx - w
183- elif align == 2: # centre
184+ # centre
185+ elif align == 2:
186 x = (maxx - w) / 2;
187 rightextent = x + w
188 # now draw the text, and any outlines/shadows
189 if self._theme.display_shadow:
190- self._get_extent_and_render(line, footer,tlcorner=(x+self._shadow_offset,y+self._shadow_offset),
191+ self._get_extent_and_render(line, footer, tlcorner=(x+self._shadow_offset,y+self._shadow_offset),
192 draw=True, color = self._theme.display_shadow_color)
193 if self._theme.display_outline:
194- self._get_extent_and_render(line, footer,(x+self._outline_offset,y), draw=True,
195- color = self._theme.display_outline_color)
196- self._get_extent_and_render(line, footer,(x, y+self._outline_offset), draw=True,
197- color = self._theme.display_outline_color)
198- self._get_extent_and_render(line, footer,(x, y-self._outline_offset), draw=True,
199- color = self._theme.display_outline_color)
200- self._get_extent_and_render(line, footer,(x-self._outline_offset,y), draw=True,
201+ self._get_extent_and_render(line, footer, (x+self._outline_offset,y), draw=True,
202+ color = self._theme.display_outline_color)
203+ self._get_extent_and_render(line, footer, (x, y+self._outline_offset), draw=True,
204+ color = self._theme.display_outline_color)
205+ self._get_extent_and_render(line, footer, (x, y-self._outline_offset), draw=True,
206+ color = self._theme.display_outline_color)
207+ self._get_extent_and_render(line, footer, (x-self._outline_offset,y), draw=True,
208 color = self._theme.display_outline_color)
209 if self._outline_offset > 1:
210- self._get_extent_and_render(line, footer,(x+self._outline_offset,y+self._outline_offset), draw=True,
211- color = self._theme.display_outline_color)
212- self._get_extent_and_render(line, footer,(x-self._outline_offset,y+self._outline_offset), draw=True,
213- color = self._theme.display_outline_color)
214- self._get_extent_and_render(line, footer,(x+self._outline_offset,y-self._outline_offset), draw=True,
215- color = self._theme.display_outline_color)
216- self._get_extent_and_render(line, footer,(x-self._outline_offset,y-self._outline_offset), draw=True,
217+ self._get_extent_and_render(line, footer, (x+self._outline_offset,y+self._outline_offset), draw=True,
218+ color = self._theme.display_outline_color)
219+ self._get_extent_and_render(line, footer, (x-self._outline_offset,y+self._outline_offset), draw=True,
220+ color = self._theme.display_outline_color)
221+ self._get_extent_and_render(line, footer, (x+self._outline_offset,y-self._outline_offset), draw=True,
222+ color = self._theme.display_outline_color)
223+ self._get_extent_and_render(line, footer, (x-self._outline_offset,y-self._outline_offset), draw=True,
224 color = self._theme.display_outline_color)
225 self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)
226 y += h
227@@ -403,7 +390,6 @@
228 painter.drawRect(startx , starty , rightextent-startx , y-starty)
229 painter.end()
230 brcorner = (rightextent , y)
231- log.debug(u'Render single line Finish')
232 return brcorner
233
234 # xxx this is what to override for an SDL version
235@@ -454,14 +440,7 @@
236 Debugging method to allow images to be viewed
237 """
238 im = image.toImage()
239- im.save("renderer.png", "png")
240+ im.save(u'renderer.png', u'png')
241 if image2 is not None:
242 im = image2.toImage()
243- im.save("renderer2.png", "png")
244-
245-# def render_screen(self, screennum):
246-# log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
247-# t = 0.0
248-# words = self.words[screennum]
249-# retval = self._render_lines(words)
250-# return retval
251+ im.save(u'renderer2.png', u'png')
252
253=== modified file 'openlp/core/lib/rendermanager.py'
254--- openlp/core/lib/rendermanager.py 2009-06-05 18:53:50 +0000
255+++ openlp/core/lib/rendermanager.py 2009-06-08 05:04:06 +0000
256@@ -64,6 +64,7 @@
257 self.calculate_default(self.screen_list[self.current_display]['size'])
258 self.theme = u''
259 self.service_theme = u''
260+ self.global_style = u''
261
262 def update_display(self, screen_number):
263 """
264
265=== modified file 'openlp/core/lib/serviceitem.py'
266--- openlp/core/lib/serviceitem.py 2009-06-05 19:00:57 +0000
267+++ openlp/core/lib/serviceitem.py 2009-06-08 20:36:33 +0000
268@@ -32,12 +32,14 @@
269 log=logging.getLogger(u'ServiceItem')
270 log.info(u'Service Item created')
271
272- def __init__(self, hostplugin):
273+ def __init__(self, hostplugin=None):
274 """
275 Init Method
276 """
277 self.plugin = hostplugin
278- self.shortname = hostplugin.name
279+ if hostplugin is not None:
280+ self.RenderManager = self.plugin.render_manager
281+ self.shortname = hostplugin.name
282 self.title = u''
283 self.items = []
284 self.iconic_representation = None
285@@ -47,10 +49,11 @@
286 self.frames = []
287 self.raw_footer = None
288 self.theme = None
289- log.debug(u'Service item created for %s ', self.shortname)
290+ #log.debug(u'Service item created for %s ', self.shortname)
291 self.service_frames = []
292
293 def addIcon(self, icon):
294+ self.icon = icon
295 self.iconic_representation = buildIcon(icon)
296
297 def render(self):
298@@ -59,15 +62,15 @@
299 """
300 log.debug(u'Render called')
301 if self.theme == None:
302- self.plugin.render_manager.set_override_theme(None)
303+ self.RenderManager.set_override_theme(None)
304 else:
305- self.plugin.render_manager.set_override_theme(self.theme)
306+ self.RenderManager.set_override_theme(self.theme)
307 log.debug(u'Formatting slides')
308 if self.service_item_type == u'text':
309 for slide in self.service_frames:
310- formated = self.plugin.render_manager.format_slide(slide[u'raw_slide'])
311+ formated = self.RenderManager.format_slide(slide[u'raw_slide'])
312 for format in formated:
313- frame = self.plugin.render_manager.generate_slide(format, self.raw_footer)
314+ frame = self.RenderManager.generate_slide(format, self.raw_footer)
315 self.frames.append({u'title': slide[u'title'], u'image': frame})
316 elif self.service_item_type == u'command':
317 self.frames = self.service_frames
318@@ -76,7 +79,7 @@
319 self.frames = self.service_frames
320 self.service_frames = []
321 else:
322- assert(0 , u'Invalid value rendere :%s' % self.service_item_type)
323+ log.error(u'Invalid value renderer :%s' % self.service_item_type)
324
325 def add_from_image(self, frame_title, image):
326 self.service_item_type = u'image'
327@@ -91,24 +94,29 @@
328 self.service_item_type = u'command'
329 self.service_frames.append({u'title': frame_title, u'command': command})
330
331-
332-
333 def get_oos_repr(self):
334 """
335 This method returns some text which can be saved into the OOS
336 file to represent this item
337 """
338- pass
339+ oos_header = {u'plugin': self.shortname,u'theme':self.theme, u'title':self.title,
340+ u'icon':self.icon, u'footer':self.raw_footer, u'type':self.service_item_type}
341+ oos_data = []
342+ if self.service_item_type == u'text':
343+ for slide in self.service_frames:
344+ oos_data.append(slide[u'raw_slide'])
345+ return {u'header': oos_header, u'data': self.service_frames}
346
347- def set_from_oos(self, oostext):
348+ def set_from_oos(self, serviceitem):
349 """
350 This method takes some oostext (passed from the ServiceManager)
351 and parses it into the data actually required
352 """
353- pass
354-
355- def set_from_plugin(self):
356- """
357- Takes data from the plugin media chooser
358- """
359- pass
360+ header = serviceitem[u'serviceitem'][u'header']
361+ self.title = header[u'title']
362+ self.service_item_type = header[u'type']
363+ self.shortname = header[u'plugin']
364+ self.theme = header[u'theme']
365+ self.addIcon(header[u'icon'])
366+ self.raw_footer = header[u'footer']
367+ self.service_frames = serviceitem[u'serviceitem'][u'data']
368
369=== modified file 'openlp/core/ui/maindisplay.py'
370--- openlp/core/ui/maindisplay.py 2009-06-05 18:53:50 +0000
371+++ openlp/core/ui/maindisplay.py 2009-06-07 19:34:24 +0000
372@@ -60,7 +60,7 @@
373 if not screen[u'primary']:
374 self.showFullScreen()
375 else:
376- self.hide()
377+ self.showMinimized()
378 painter = QtGui.QPainter()
379 self.blankFrame = QtGui.QPixmap(screen[u'size'].width(), screen[u'size'].height())
380 painter.begin(self.blankFrame)
381
382=== modified file 'openlp/core/ui/mainwindow.py'
383--- openlp/core/ui/mainwindow.py 2009-06-08 19:03:16 +0000
384+++ openlp/core/ui/mainwindow.py 2009-06-08 19:11:55 +0000
385@@ -75,12 +75,12 @@
386 # hook methods have to happen after find_plugins. Find plugins needs the
387 # controllershence the hooks have moved from setupUI() to here
388
389+ # Find and insert settings tabs
390+ log.info(u'hook settings')
391+ self.plugin_manager.hook_settings_tabs(self.settingsForm)
392 # Find and insert media manager items
393 log.info(u'hook media')
394 self.plugin_manager.hook_media_manager(self.MediaToolBox)
395- # Find and insert settings tabs
396- log.info(u'hook settings')
397- self.plugin_manager.hook_settings_tabs(self.settingsForm)
398 # Call the hook method to pull in import menus.
399 log.info(u'hook menus')
400 self.plugin_manager.hook_import_menu(self.FileImportMenu)
401
402=== modified file 'openlp/core/ui/servicemanager.py'
403--- openlp/core/ui/servicemanager.py 2009-06-08 19:03:16 +0000
404+++ openlp/core/ui/servicemanager.py 2009-06-08 20:36:33 +0000
405@@ -19,6 +19,7 @@
406 """
407 import os
408 import logging
409+import cPickle
410
411 from PyQt4 import QtCore, QtGui
412 from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \
413@@ -134,7 +135,8 @@
414 """
415 Clear the list to create a new service
416 """
417- self.service_data.clearItems()
418+ self.ServiceManagerList.clear()
419+ self.serviceItems = []
420
421 def onDeleteFromService(self):
422 """
423@@ -146,13 +148,34 @@
424 """
425 Save the current service
426 """
427- pass
428+ filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() )
429+ if filename != u'':
430+ self.config.set_last_dir(filename)
431+ print filename
432+ service = []
433+ for item in self.serviceItems:
434+ service.append({u'serviceitem':item[u'data'].get_oos_repr()})
435+ file = open(filename+u'.oos', u'wb')
436+ cPickle.dump(service, file)
437+ file.close()
438
439 def onLoadService(self):
440 """
441 Load an existing service from disk
442 """
443- pass
444+ filename = QtGui.QFileDialog.getOpenFileName(self, u'Open Order of Service',self.config.get_last_dir(),
445+ u'Services (*.oos)')
446+ if filename != u'':
447+ self.config.set_last_dir(filename)
448+ file = open(filename, u'r')
449+ items = cPickle.load(file)
450+ file.close()
451+ self.onNewService()
452+ for item in items:
453+ serviceitem = ServiceItem()
454+ serviceitem.RenderManager = self.parent.RenderManager
455+ serviceitem.set_from_oos(item)
456+ self.addServiceItem(serviceitem)
457
458 def onThemeComboBoxSelected(self, currentIndex):
459 """
460@@ -162,16 +185,16 @@
461 self.parent.RenderManager.set_service_theme(self.service_theme)
462 self.config.set_config(u'theme service theme', self.service_theme)
463
464- def addServiceItem(self, item):
465+ def addServiceItem(self, item, expand=True):
466 """
467 Add an item to the list
468 """
469 self.serviceItems.append({u'data': item, u'order': len(self.serviceItems)+1})
470 treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)
471- treewidgetitem.setText(0,item.title) # + u':' + item.shortname)
472+ treewidgetitem.setText(0,item.title)
473 treewidgetitem.setIcon(0,item.iconic_representation)
474 treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(len(self.serviceItems)))
475- treewidgetitem.setExpanded(True)
476+ treewidgetitem.setExpanded(expand)
477 item.render()
478 count = 0
479 for frame in item.frames:
480@@ -204,13 +227,14 @@
481 count = 0
482 for item in items:
483 childCount = item.childCount()
484- if childCount >= 1: # is the parent
485+ if childCount >= 1:
486 pos = item.data(0, QtCore.Qt.UserRole).toInt()[0]
487 else:
488 parentitem = item.parent()
489 pos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]
490 count = item.data(0, QtCore.Qt.UserRole).toInt()[0]
491- pos = pos - 1 #adjust for zeor indexing
492+ #adjuest for zero based arrays
493+ pos = pos - 1
494 return pos, count
495
496 def dragEnterEvent(self, event):
497@@ -229,26 +253,6 @@
498 plugin = event.mimeData().text()
499 self.parent.EventManager.post_event(Event(EventType.LoadServiceItem, plugin))
500
501- def oos_as_text(self):
502- text=[]
503- log.info( "oos as text")
504- log.info("Data:"+str(self.service_data))
505- for i in self.service_data:
506- text.append("# " + str(i))
507- text.append(i.get_oos_text())
508- return '\n'.join(text)
509-
510- def write_oos(self, filename):
511- """
512- Write a full OOS file out - iterate over plugins and call their respective methods
513- This format is totally arbitrary testing purposes - something sensible needs to go in here!
514- """
515- oosfile=open(filename, "w")
516- oosfile.write("# BEGIN OOS\n")
517- oosfile.write(self.oos_as_text)
518- oosfile.write("# END OOS\n")
519- oosfile.close()
520-
521 def updateThemeList(self, theme_list):
522 """
523 Called from ThemeManager when the Themes have changed
524@@ -264,4 +268,3 @@
525 self.service_theme = u''
526 self.ThemeComboBox.setCurrentIndex(id)
527 self.parent.RenderManager.set_service_theme(self.service_theme)
528-
529
530=== modified file 'openlp/core/ui/slidecontroller.py'
531--- openlp/core/ui/slidecontroller.py 2009-06-05 19:00:57 +0000
532+++ openlp/core/ui/slidecontroller.py 2009-06-07 19:34:24 +0000
533@@ -135,11 +135,10 @@
534 self.PreviewListView = QtGui.QListView(self.Controller)
535 self.PreviewListData = SlideData()
536 self.PreviewListView.isLive = self.isLive
537- self.PreviewListView.setFlow(1)
538- self.PreviewListView.setViewMode(1)
539+ #self.PreviewListView.setFlow(1)
540+ #self.PreviewListView.setViewMode(1)
541 self.PreviewListView.setWrapping(False)
542 self.PreviewListView.setModel(self.PreviewListData)
543- #self.PreviewListView.setSelectionRectVisible(True)
544 self.PreviewListView.setSpacing(0)
545 self.PreviewListView.setObjectName(u'PreviewListView')
546 self.ControllerLayout.addWidget(self.PreviewListView)
547
548=== modified file 'openlp/plugins/bibles/forms/bibleimportform.py'
549--- openlp/plugins/bibles/forms/bibleimportform.py 2009-06-07 16:33:33 +0000
550+++ openlp/plugins/bibles/forms/bibleimportform.py 2009-06-08 05:04:06 +0000
551@@ -33,9 +33,9 @@
552 global log
553 log=logging.getLogger(u'BibleImportForm')
554 log.info(u'BibleImportForm loaded')
555- '''
556+ """
557 Class documentation goes here.
558- '''
559+ """
560 def __init__(self, config, biblemanager , bibleplugin, parent = None):
561 '''
562 Constructor
563@@ -124,7 +124,7 @@
564 # Was OSIS and is not any more stops lostFocus running mad
565 if self.bible_type == u'OSIS':
566 self.bible_type = None
567- self.freeAll()
568+ self.resetScreenFieldStates()
569
570 def onBooksLocationEditLostFocus(self):
571 self.checkOsis()
572@@ -209,9 +209,9 @@
573 str(self.PermisionEdit.displayText()))
574 self.bible_type = None
575 # free the screen state restrictions
576- self.freeAll()
577+ self.resetScreenFieldStates()
578 # reset all the screen fields
579- self.resetAll()
580+ self.resetEntryFields()
581
582 def checkOsis(self):
583 if len(self.BooksLocationEdit.displayText()) > 0 or len(self.VerseLocationEdit.displayText()) > 0:
584@@ -220,7 +220,7 @@
585 # Was CSV and is not any more stops lostFocus running mad
586 if self.bible_type == u'CSV':
587 self.bible_type = None
588- self.freeAll()
589+ self.resetScreenFieldStates()
590
591 def checkHttp(self):
592 if self.BibleComboBox.currentIndex() != 0 : # First slot is blank so no bible
593@@ -229,7 +229,7 @@
594 # Was HTTP and is not any more stops lostFocus running mad
595 if self.bible_type == u'HTTP':
596 self.bible_type = None
597- self.freeAll()
598+ self.resetScreenFieldStates()
599
600 def blockCsv(self):
601 self.BooksLocationEdit.setReadOnly(True)
602@@ -247,7 +247,7 @@
603 self.blockHttp()
604
605 def setOsis(self):
606- self.bible_type = 'OSIS'
607+ self.bible_type = u'OSIS'
608 self.OSISLocationEdit.setReadOnly(False)
609 self.OsisFileButton.setEnabled(True)
610 self.blockCsv()
611@@ -268,8 +268,9 @@
612 self.LocationComboBox.setEnabled(False)
613 self.BibleComboBox.setEnabled(False)
614
615- def freeAll(self):
616- if self.bible_type == None: # only reset if no bible type set.
617+ def resetScreenFieldStates(self):
618+ # only reset if no bible type set.
619+ if self.bible_type == None:
620 self.BooksLocationEdit.setReadOnly(False)
621 self.VerseLocationEdit.setReadOnly(False)
622 self.BooksFileButton.setEnabled(True)
623@@ -279,7 +280,7 @@
624 self.LocationComboBox.setEnabled(True)
625 self.BibleComboBox.setEnabled(True)
626
627- def resetAll(self):
628+ def resetEntryFields(self):
629 self.BooksLocationEdit.setText(u'')
630 self.VerseLocationEdit.setText(u'')
631 self.OSISLocationEdit.setText(u'')
632
633=== modified file 'openlp/plugins/bibles/lib/biblestab.py'
634--- openlp/plugins/bibles/lib/biblestab.py 2009-06-05 18:53:50 +0000
635+++ openlp/plugins/bibles/lib/biblestab.py 2009-06-08 05:04:06 +0000
636@@ -17,6 +17,7 @@
637 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
638 Place, Suite 330, Boston, MA 02111-1307 USA
639 """
640+import logging
641
642 from PyQt4 import Qt, QtCore, QtGui
643
644@@ -27,6 +28,10 @@
645 """
646 BiblesTab is the Bibles settings tab in the settings dialog.
647 """
648+ global log
649+ log = logging.getLogger(u'BibleTab')
650+ log.info(u'Bible Tab loaded')
651+
652 def __init__(self):
653 self.paragraph_style = True
654 self.show_new_chapters = False
655@@ -67,14 +72,12 @@
656 self.NewChaptersCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
657 self.NewChaptersCheckBox.setObjectName("NewChaptersCheckBox")
658 self.VerseDisplayLayout.addWidget(self.NewChaptersCheckBox, 1, 0, 1, 1)
659-
660 self.DisplayStyleWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
661 self.DisplayStyleWidget.setObjectName(u'DisplayStyleWidget')
662 self.DisplayStyleLayout = QtGui.QHBoxLayout(self.DisplayStyleWidget)
663 self.DisplayStyleLayout.setSpacing(8)
664 self.DisplayStyleLayout.setMargin(0)
665 self.DisplayStyleLayout.setObjectName(u'DisplayStyleLayout')
666-
667 self.DisplayStyleLabel = QtGui.QLabel(self.DisplayStyleWidget)
668 self.DisplayStyleLabel.setObjectName(u'DisplayStyleLabel')
669 self.DisplayStyleLayout.addWidget(self.DisplayStyleLabel)
670@@ -86,14 +89,12 @@
671 self.DisplayStyleComboBox.addItem(QtCore.QString())
672 self.DisplayStyleLayout.addWidget(self.DisplayStyleComboBox)
673 self.VerseDisplayLayout.addWidget(self.DisplayStyleWidget, 2, 0, 1, 1)
674-
675 self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
676 self.BibleThemeWidget.setObjectName(u'BibleThemeWidget')
677 self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget)
678 self.BibleThemeLayout.setSpacing(8)
679 self.BibleThemeLayout.setMargin(0)
680 self.BibleThemeLayout.setObjectName(u'BibleThemeLayout')
681-
682 self.BibleThemeLabel = QtGui.QLabel(self.BibleThemeWidget)
683 self.BibleThemeLabel.setObjectName(u'BibleThemeLabel')
684 self.BibleThemeLayout.addWidget(self.BibleThemeLabel)
685@@ -102,7 +103,6 @@
686 self.BibleThemeComboBox.addItem(QtCore.QString())
687 self.BibleThemeLayout.addWidget(self.BibleThemeComboBox)
688 self.VerseDisplayLayout.addWidget(self.BibleThemeWidget, 3, 0, 1, 1)
689-
690 self.ChangeNoteLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
691 self.ChangeNoteLabel.setObjectName(u'ChangeNoteLabel')
692 self.VerseDisplayLayout.addWidget(self.ChangeNoteLabel, 4, 0, 1, 1)
693@@ -111,7 +111,6 @@
694 QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
695 self.BibleLeftLayout.addItem(self.BibleLeftSpacer)
696 self.BibleLayout.addWidget(self.BibleLeftWidget)
697-
698 self.BibleRightWidget = QtGui.QWidget(self)
699 self.BibleRightWidget.setObjectName(u'BibleRightWidget')
700 self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget)
701@@ -176,13 +175,15 @@
702 def onNewChaptersCheckBoxChanged(self):
703 check_state = self.NewChaptersCheckBox.checkState()
704 self.show_new_chapters = False
705- if check_state == 2: # we have a set value convert to True/False
706+ # we have a set value convert to True/False
707+ if check_state == 2:
708 self.show_new_chapters = True
709
710 def onBibleSearchCheckBoxChanged(self):
711 check_state = self.BibleSearchCheckBox.checkState()
712 self.bible_search = False
713- if check_state == 2: # we have a set value convert to True/False
714+ # we have a set value convert to True/False
715+ if check_state == 2:
716 self.bible_search = True
717
718 def load(self):
719
720=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
721--- openlp/plugins/bibles/lib/mediaitem.py 2009-06-07 18:39:31 +0000
722+++ openlp/plugins/bibles/lib/mediaitem.py 2009-06-08 05:04:06 +0000
723@@ -42,9 +42,7 @@
724 mimeData = QtCore.QMimeData()
725 drag.setMimeData(mimeData)
726 mimeData.setText(u'Bibles')
727-
728 dropAction = drag.start(QtCore.Qt.CopyAction)
729-
730 if dropAction == QtCore.Qt.CopyAction:
731 self.close()
732
733@@ -90,7 +88,6 @@
734 translate(u'BibleMediaItem',u'Add the selected Bible(s) to the service'),
735 u':/system/system_add.png',
736 self.onBibleAddClick, u'BibleAddItem')
737-
738 # Create the tab widget
739 self.SearchTabWidget = QtGui.QTabWidget(self)
740 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
741@@ -99,7 +96,6 @@
742 sizePolicy.setHeightForWidth(self.SearchTabWidget.sizePolicy().hasHeightForWidth())
743 self.SearchTabWidget.setSizePolicy(sizePolicy)
744 self.SearchTabWidget.setObjectName(u'SearchTabWidget')
745-
746 # Add the Quick Search tab
747 self.QuickTab = QtGui.QWidget()
748 self.QuickTab.setObjectName(u'QuickTab')
749@@ -138,7 +134,6 @@
750 QuickSpacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
751 QtGui.QSizePolicy.Expanding)
752 self.QuickLayout.addItem(QuickSpacerItem, 4, 2, 1, 1)
753-
754 # Add the Advanced Search tab
755 self.AdvancedTab = QtGui.QWidget()
756 self.AdvancedTab.setObjectName(u'AdvancedTab')
757@@ -170,45 +165,37 @@
758 self.AdvancedToLabel = QtGui.QLabel(self.AdvancedTab)
759 self.AdvancedToLabel.setObjectName(u'AdvancedToLabel')
760 self.AdvancedLayout.addWidget(self.AdvancedToLabel, 4, 0, 1, 1)
761-
762 self.AdvancedFromChapter = QtGui.QComboBox(self.AdvancedTab)
763 self.AdvancedFromChapter.setObjectName(u'AdvancedFromChapter')
764 self.AdvancedLayout.addWidget(self.AdvancedFromChapter, 3, 2, 1, 1)
765 self.AdvancedFromVerse = QtGui.QComboBox(self.AdvancedTab)
766 self.AdvancedFromVerse.setObjectName(u'AdvancedFromVerse')
767 self.AdvancedLayout.addWidget(self.AdvancedFromVerse, 3, 3, 1, 1)
768-
769 self.AdvancedToChapter = QtGui.QComboBox(self.AdvancedTab)
770 self.AdvancedToChapter.setObjectName(u'AdvancedToChapter')
771 self.AdvancedLayout.addWidget(self.AdvancedToChapter, 4, 2, 1, 1)
772 self.AdvancedToVerse = QtGui.QComboBox(self.AdvancedTab)
773 self.AdvancedToVerse.setObjectName(u'AdvancedToVerse')
774 self.AdvancedLayout.addWidget(self.AdvancedToVerse, 4, 3, 1, 1)
775-
776 self.AdvancedClearLabel = QtGui.QLabel(self.QuickTab)
777 self.AdvancedClearLabel.setObjectName(u'QuickSearchLabel')
778 self.AdvancedLayout.addWidget(self.AdvancedClearLabel, 5, 0, 1, 1)
779 self.ClearAdvancedSearchComboBox = QtGui.QComboBox(self.QuickTab)
780 self.ClearAdvancedSearchComboBox.setObjectName(u'ClearAdvancedSearchComboBox')
781 self.AdvancedLayout.addWidget(self.ClearAdvancedSearchComboBox, 5, 2, 1, 1)
782-
783 self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab)
784 self.AdvancedSearchButton.setObjectName(u'AdvancedSearchButton')
785 self.AdvancedLayout.addWidget(self.AdvancedSearchButton, 5, 3, 1, 1)
786 self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')
787-
788 # Add the search tab widget to the page layout
789 self.PageLayout.addWidget(self.SearchTabWidget)
790-
791 self.BibleListView = BibleList()
792 self.BibleListView.setAlternatingRowColors(True)
793 self.BibleListData = TextListData()
794 self.BibleListView.setModel(self.BibleListData)
795 self.BibleListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
796 self.BibleListView.setDragEnabled(True)
797-
798 self.PageLayout.addWidget(self.BibleListView)
799-
800 # Combo Boxes
801 QtCore.QObject.connect(self.AdvancedVersionComboBox,
802 QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)
803@@ -226,7 +213,7 @@
804 QtCore.QObject.connect(self.QuickSearchButton,
805 QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)
806 QtCore.QObject.connect(self.BibleListView,
807- QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onRowSelected)
808+ QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onBiblePreviewClick)
809 # Context Menus
810 self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
811 self.BibleListView.addAction(self.contextMenuAction(
812@@ -239,7 +226,6 @@
813 self.BibleListView, u':/system/system_add.png',
814 translate(u'BibleMediaItem',u'&Add to Service'), self.onBibleAddClick))
815
816-
817 def retranslateUi(self):
818 log.debug(u'retranslateUi')
819 self.QuickVersionLabel.setText(translate(u'BibleMediaItem', u'Version:'))
820@@ -262,9 +248,6 @@
821 self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Clear'))
822 self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Keep'))
823
824- def onRowSelected(self, row):
825- self.onBiblePreviewClick()
826-
827 def initialise(self):
828 log.debug(u'initialise')
829 self.loadBibles()
830@@ -277,7 +260,8 @@
831 # load bibles into the combo boxes
832 for bible in bibles:
833 self.QuickVersionComboBox.addItem(bible)
834- bibles = self.parent.biblemanager.get_bibles(u'partial') # Without HTTP
835+ # Without HTT
836+ bibles = self.parent.biblemanager.get_bibles(u'partial')
837 first = True
838 # load bibles into the combo boxes
839 for bible in bibles:
840@@ -367,7 +351,7 @@
841 self.parent.preview_controller.addServiceItem(service_item)
842
843 def generateSlideData(self, service_item):
844- log.debug(u'Bible Preview Button pressed')
845+ log.debug(u'generating slide data')
846 items = self.BibleListView.selectedIndexes()
847 old_chapter = u''
848 raw_slides=[]
849@@ -459,7 +443,7 @@
850 end_chapter = ''
851 start_verse = ''
852 end_verse = ''
853- search = search.replace(u' ', ' ').strip()
854+ search = search.replace(u' ', u' ').strip()
855 original = search
856 message = None
857 # Remove book beware 0 index arrays
858
859=== modified file 'openlp/plugins/custom/lib/mediaitem.py'
860--- openlp/plugins/custom/lib/mediaitem.py 2009-06-05 19:00:57 +0000
861+++ openlp/plugins/custom/lib/mediaitem.py 2009-06-07 19:34:24 +0000
862@@ -41,9 +41,7 @@
863 mimeData = QtCore.QMimeData()
864 drag.setMimeData(mimeData)
865 mimeData.setText(u'Custom')
866-
867 dropAction = drag.start(QtCore.Qt.CopyAction)
868-
869 if dropAction == QtCore.Qt.CopyAction:
870 self.close()
871
872@@ -65,36 +63,36 @@
873 # Create buttons for the toolbar
874 ## New Custom Button ##
875 self.addToolbarButton(
876- translate('CustomMediaItem',u'New Custom Item'),
877- translate('CustomMediaItem',u'Add a new Custom Item'),
878- ':/custom/custom_new.png', self.onCustomNewClick, 'CustomNewItem')
879+ translate(u'CustomMediaItem',u'New Custom Item'),
880+ translate(u'CustomMediaItem',u'Add a new Custom Item'),
881+ u':/custom/custom_new.png', self.onCustomNewClick, u'CustomNewItem')
882 ## Edit Custom Button ##
883 self.addToolbarButton(
884- translate('CustomMediaItem',u'Edit Custom Item'),
885- translate('CustomMediaItem',u'Edit the selected Custom Item'),
886- ':/custom/custom_edit.png', self.onCustomEditClick, 'CustomEditItem')
887+ translate(u'CustomMediaItem',u'Edit Custom Item'),
888+ translate(u'CustomMediaItem',u'Edit the selected Custom Item'),
889+ u':/custom/custom_edit.png', self.onCustomEditClick, u'CustomEditItem')
890 ## Delete Custom Button ##
891 self.addToolbarButton(
892- translate('CustomMediaItem',u'Delete Custom Item'),
893- translate('CustomMediaItem',u'Delete the selected Custom Item'),
894- ':/custom/custom_delete.png', self.onCustomDeleteClick, 'CustomDeleteItem')
895+ translate(u'CustomMediaItem',u'Delete Custom Item'),
896+ translate(u'CustomMediaItem',u'Delete the selected Custom Item'),
897+ u':/custom/custom_delete.png', self.onCustomDeleteClick, u'CustomDeleteItem')
898 ## Separator Line ##
899 self.addToolbarSeparator()
900 ## Preview Custom Button ##
901 self.addToolbarButton(
902- translate('CustomMediaItem',u'Preview Custom Item'),
903- translate('CustomMediaItem',u'Preview the selected Custom Item'),
904- ':/system/system_preview.png', self.onCustomPreviewClick, 'CustomPreviewItem')
905+ translate(u'CustomMediaItem',u'Preview Custom Item'),
906+ translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
907+ u':/system/system_preview.png', self.onCustomPreviewClick, u'CustomPreviewItem')
908 ## Live Custom Button ##
909 self.addToolbarButton(
910- translate('CustomMediaItem',u'Go Live'),
911- translate('CustomMediaItem', u'Send the selected Custom live'),
912- ':/system/system_live.png', self.onCustomLiveClick, 'CustomLiveItem')
913+ translate(u'CustomMediaItem',u'Go Live'),
914+ translate(u'CustomMediaItem', u'Send the selected Custom live'),
915+ u':/system/system_live.png', self.onCustomLiveClick, u'CustomLiveItem')
916 ## Add Custom Button ##
917 self.addToolbarButton(
918- translate('CustomMediaItem',u'Add Custom To Service'),
919- translate('CustomMediaItem',u'Add the selected Custom(s) to the service'),
920- ':/system/system_add.png', self.onCustomAddClick, 'CustomAddItem')
921+ translate(u'CustomMediaItem',u'Add Custom To Service'),
922+ translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
923+ u':/system/system_add.png', self.onCustomAddClick, u'CustomAddItem')
924 # Add the Customlist widget
925 self.CustomWidget = QtGui.QWidget(self)
926 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
927@@ -103,64 +101,36 @@
928 sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())
929 self.CustomWidget.setSizePolicy(sizePolicy)
930 self.CustomWidget.setObjectName(u'CustomWidget')
931-
932-# self.SearchLayout = QtGui.QGridLayout(self.CustomWidget)
933-# self.SearchLayout.setObjectName('SearchLayout')
934-# self.SearchTextLabel = QtGui.QLabel(self.CustomWidget)
935-# self.SearchTextLabel.setObjectName('SearchTextLabel')
936-# self.SearchTextLabel.setText('Search Text:')
937-# self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)
938-# self.SearchTextEdit = QtGui.QLineEdit(self.CustomWidget)
939-# self.SearchTextEdit.setObjectName('SearchTextEdit')
940-# self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
941-#
942-# self.ClearTextButton = QtGui.QPushButton(self.CustomWidget)
943-# self.ClearTextButton.setObjectName('ClearTextButton')
944-#
945-# self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)
946-# self.SearchTextButton = QtGui.QPushButton(self.CustomWidget)
947-# self.SearchTextButton.setObjectName('SearchTextButton')
948-# self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
949 # Add the Custom widget to the page layout
950 self.PageLayout.addWidget(self.CustomWidget)
951-
952 self.CustomListView = CustomList()
953 self.CustomListView.setAlternatingRowColors(True)
954 self.CustomListData = TextListData()
955 self.CustomListView.setModel(self.CustomListData)
956 self.CustomListView.setDragEnabled(True)
957-
958 self.PageLayout.addWidget(self.CustomListView)
959-
960 # Signals
961-# QtCore.QObject.connect(self.SearchTextButton,
962-# QtCore.SIGNAL("pressed()"), self.onSearchTextButtonClick)
963-# QtCore.QObject.connect(self.ClearTextButton,
964-# QtCore.SIGNAL("pressed()"), self.onClearTextButtonClick)
965-# QtCore.QObject.connect(self.SearchTextEdit,
966-# QtCore.SIGNAL("textChanged(const QString&)"), self.onSearchTextEditChanged)
967-# QtCore.QObject.connect(self.CustomListView,
968-# QtCore.SIGNAL("itemPressed(QTableWidgetItem * item)"), self.onCustomSelected)
969-
970+ QtCore.QObject.connect(self.CustomListView,
971+ QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)
972 #define and add the context menu
973 self.CustomListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
974 self.CustomListView.addAction(self.contextMenuAction(self.CustomListView,
975- ':/custom/custom_edit.png', translate('CustomMediaItem', u'&Edit Custom'),
976+ ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),
977 self.onCustomEditClick))
978 self.CustomListView.addAction(self.contextMenuSeparator(self.CustomListView))
979 self.CustomListView.addAction(self.contextMenuAction(
980 self.CustomListView, ':/system/system_preview.png',
981- translate('CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
982+ translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
983 self.CustomListView.addAction(self.contextMenuAction(
984 self.CustomListView, ':/system/system_live.png',
985- translate('CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
986+ translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
987 self.CustomListView.addAction(self.contextMenuAction(
988 self.CustomListView, ':/system/system_add.png',
989- translate('CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
990+ translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
991
992 # def retranslateUi(self):
993-# self.ClearTextButton.setText(translate('CustomMediaItem', u'Clear'))
994-# self.SearchTextButton.setText(translate('CustomMediaItem', u'Search'))
995+# self.ClearTextButton.setText(translate(u'CustomMediaItem', u'Clear'))
996+# self.SearchTextButton.setText(translate(u'CustomMediaItem', u'Search'))
997
998 def initialise(self):
999 self.loadCustomList(self.parent.custommanager.get_all_slides())
1000@@ -177,7 +147,8 @@
1001 self.SearchTextEdit.clear()
1002
1003 def onSearchTextEditChanged(self, text):
1004- if len(text) > 3: # only search if > 3 characters
1005+ # only search if > 3 characters
1006+ if len(text) > 3:
1007 self.onSearchTextButtonClick()
1008
1009 def onSearchTextButtonClick(self):
1010@@ -209,21 +180,21 @@
1011 def onCustomPreviewClick(self):
1012 log.debug(u'Custom Preview Requested')
1013 service_item = ServiceItem(self.parent)
1014- service_item.addIcon( ":/media/media_song.png")
1015+ service_item.addIcon(u':/media/media_song.png')
1016 self.generateSlideData(service_item)
1017 self.parent.preview_controller.addServiceItem(service_item)
1018
1019 def onCustomLiveClick(self):
1020 log.debug(u'Custom Live Requested')
1021 service_item = ServiceItem(self.parent)
1022- service_item.addIcon( ":/media/media_song.png")
1023+ service_item.addIcon(u':/media/media_song.png')
1024 self.generateSlideData(service_item)
1025 self.parent.live_controller.addServiceItem(service_item)
1026
1027 def onCustomAddClick(self):
1028 log.debug(u'Custom Add Requested')
1029 service_item = ServiceItem(self.parent)
1030- service_item.addIcon( ":/media/media_song.png")
1031+ service_item.addIcon(u':/media/media_song.png')
1032 self.generateSlideData(service_item)
1033 self.parent.service_manager.addServiceItem(service_item)
1034
1035
1036=== modified file 'openlp/plugins/images/lib/mediaitem.py'
1037--- openlp/plugins/images/lib/mediaitem.py 2009-06-05 19:00:57 +0000
1038+++ openlp/plugins/images/lib/mediaitem.py 2009-06-07 19:34:24 +0000
1039@@ -42,9 +42,7 @@
1040 mimeData = QtCore.QMimeData()
1041 drag.setMimeData(mimeData)
1042 mimeData.setText(u'Image')
1043-
1044 dropAction = drag.start(QtCore.Qt.CopyAction)
1045-
1046 if dropAction == QtCore.Qt.CopyAction:
1047 self.close()
1048
1049@@ -65,32 +63,31 @@
1050 # Create buttons for the toolbar
1051 ## New Song Button ##
1052 self.addToolbarButton(
1053- translate('ImageMediaItem', u'Load Image'),
1054- translate('ImageMediaItem', u'Load images into openlp.org'),
1055- ':/images/image_load.png', self.onImagesNewClick, 'ImageNewItem')
1056+ translate(u'ImageMediaItem', u'Load Image'),
1057+ translate(u'ImageMediaItem', u'Load images into openlp.org'),
1058+ u':/images/image_load.png', self.onImagesNewClick, u'ImageNewItem')
1059 ## Delete Song Button ##
1060 self.addToolbarButton(
1061- translate('ImageMediaItem', u'Delete Image'),
1062- translate('ImageMediaItem', u'Delete the selected image'),
1063- ':/images/image_delete.png', self.onImageDeleteClick, 'ImageDeleteItem')
1064+ translate(u'ImageMediaItem', u'Delete Image'),
1065+ translate(u'ImageMediaItem', u'Delete the selected image'),
1066+ u':/images/image_delete.png', self.onImageDeleteClick, u'ImageDeleteItem')
1067 ## Separator Line ##
1068 self.addToolbarSeparator()
1069 ## Preview Song Button ##
1070 self.addToolbarButton(
1071- translate('ImageMediaItem', u'Preview Song'),
1072- translate('ImageMediaItem', u'Preview the selected image'),
1073- ':/system/system_preview.png', self.onImagePreviewClick, 'ImagePreviewItem')
1074+ translate(u'ImageMediaItem', u'Preview Song'),
1075+ translate(u'ImageMediaItem', u'Preview the selected image'),
1076+ u':/system/system_preview.png', self.onImagePreviewClick, u'ImagePreviewItem')
1077 ## Live Song Button ##
1078 self.addToolbarButton(
1079- translate('ImageMediaItem', u'Go Live'),
1080- translate('ImageMediaItem', u'Send the selected image live'),
1081- ':/system/system_live.png', self.onImageLiveClick, 'ImageLiveItem')
1082+ translate(u'ImageMediaItem', u'Go Live'),
1083+ translate(u'ImageMediaItem', u'Send the selected image live'),
1084+ u':/system/system_live.png', self.onImageLiveClick, u'ImageLiveItem')
1085 ## Add Song Button ##
1086 self.addToolbarButton(
1087- translate('ImageMediaItem', u'Add Image To Service'),
1088- translate('ImageMediaItem', u'Add the selected image(s) to the service'),
1089- ':/system/system_add.png', self.onImageAddClick, 'ImageAddItem')
1090-
1091+ translate(u'ImageMediaItem', u'Add Image To Service'),
1092+ translate(u'ImageMediaItem', u'Add the selected image(s) to the service'),
1093+ u':/system/system_add.png', self.onImageAddClick, u'ImageAddItem')
1094 #Add the Image List widget
1095 self.ImageListView = ImageList()
1096 self.ImageListView.uniformItemSizes = True
1097@@ -101,33 +98,29 @@
1098 self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
1099 self.ImageListView.setAlternatingRowColors(True)
1100 self.ImageListView.setDragEnabled(True)
1101- self.ImageListView.setObjectName('ImageListView')
1102-
1103+ self.ImageListView.setObjectName(u'ImageListView')
1104 self.PageLayout.addWidget(self.ImageListView)
1105-
1106 #define and add the context menu
1107 self.ImageListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
1108-
1109 self.ImageListView.addAction(self.contextMenuAction(
1110 self.ImageListView, ':/system/system_preview.png',
1111- translate('ImageMediaItem', u'&Preview Image'),
1112+ translate(u'ImageMediaItem', u'&Preview Image'),
1113 self.onImagePreviewClick))
1114 self.ImageListView.addAction(self.contextMenuAction(
1115 self.ImageListView, ':/system/system_live.png',
1116- translate('ImageMediaItem', u'&Show Live'),
1117+ translate(u'ImageMediaItem', u'&Show Live'),
1118 self.onImageLiveClick))
1119 self.ImageListView.addAction(self.contextMenuAction(
1120 self.ImageListView, ':/system/system_add.png',
1121- translate('ImageMediaItem', u'&Add to Service'),
1122+ translate(u'ImageMediaItem', u'&Add to Service'),
1123 self.onImageAddClick))
1124
1125-
1126 def initialise(self):
1127 self.loadImageList(self.parent.config.load_list(u'images'))
1128
1129 def onImagesNewClick(self):
1130 files = QtGui.QFileDialog.getOpenFileNames(None,
1131- translate('ImageMediaItem', u'Select Image(s)'),
1132+ translate(u'ImageMediaItem', u'Select Image(s)'),
1133 self.parent.config.get_last_dir(),
1134 u'Images (*.jpg *.gif *.png *.bmp)')
1135 log.info(u'New image(s)', str(files))
1136@@ -160,20 +153,20 @@
1137 def onImagePreviewClick(self):
1138 log.debug(u'Image Preview Requested')
1139 service_item = ServiceItem(self.parent)
1140- service_item.addIcon( ":/media/media_image.png")
1141+ service_item.addIcon(u':/media/media_image.png')
1142 self.generateSlideData(service_item)
1143 self.parent.preview_controller.addServiceItem(service_item)
1144
1145 def onImageLiveClick(self):
1146 log.debug(u'Image Live Requested')
1147 service_item = ServiceItem(self.parent)
1148- service_item.addIcon( ":/media/media_image.png")
1149+ service_item.addIcon(u':/media/media_image.png')
1150 self.generateSlideData(service_item)
1151 self.parent.live_controller.addServiceItem(service_item)
1152
1153 def onImageAddClick(self):
1154 log.debug(u'Image Add Requested')
1155 service_item = ServiceItem(self.parent)
1156- service_item.addIcon( ":/media/media_image.png")
1157+ service_item.addIcon(u':/media/media_image.png')
1158 self.generateSlideData(service_item)
1159 self.parent.service_manager.addServiceItem(service_item)
1160
1161=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
1162--- openlp/plugins/songs/lib/mediaitem.py 2009-06-05 19:00:57 +0000
1163+++ openlp/plugins/songs/lib/mediaitem.py 2009-06-08 05:04:06 +0000
1164@@ -43,9 +43,7 @@
1165 mimeData = QtCore.QMimeData()
1166 drag.setMimeData(mimeData)
1167 mimeData.setText(u'Song')
1168-
1169 dropAction = drag.start(QtCore.Qt.CopyAction)
1170-
1171 if dropAction == QtCore.Qt.CopyAction:
1172 self.close()
1173
1174@@ -54,8 +52,8 @@
1175 This is the custom media manager item for Songs.
1176 """
1177 global log
1178- log = logging.getLogger("SongMediaItem")
1179- log.info("Song Media Item loaded")
1180+ log = logging.getLogger(u'SongMediaItem')
1181+ log.info(u'Song Media Item loaded')
1182
1183 def __init__(self, parent, icon, title):
1184 MediaManagerItem.__init__(self, parent, icon, title)
1185@@ -66,30 +64,30 @@
1186 self.addToolbar()
1187 # Create buttons for the toolbar
1188 ## New Song Button ##
1189- self.addToolbarButton(translate('SongMediaItem', u'New Song'),
1190- translate('SongMediaItem', u'Add a new song'),
1191+ self.addToolbarButton(translate(u'SongMediaItem', u'New Song'),
1192+ translate(u'SongMediaItem', u'Add a new song'),
1193 ':/songs/song_new.png', self.onSongNewClick, 'SongNewItem')
1194 ## Edit Song Button ##
1195- self.addToolbarButton(translate('SongMediaItem', u'Edit Song'),
1196- translate('SongMediaItem', u'Edit the selected song'),
1197+ self.addToolbarButton(translate(u'SongMediaItem', u'Edit Song'),
1198+ translate(u'SongMediaItem', u'Edit the selected song'),
1199 ':/songs/song_edit.png', self.onSongEditClick, 'SongEditItem')
1200 ## Delete Song Button ##
1201- self.addToolbarButton(translate('SongMediaItem', u'Delete Song'),
1202- translate('SongMediaItem', u'Delete the selected song'),
1203+ self.addToolbarButton(translate(u'SongMediaItem', u'Delete Song'),
1204+ translate(u'SongMediaItem', u'Delete the selected song'),
1205 ':/songs/song_delete.png', self.onSongDeleteClick, 'SongDeleteItem')
1206 ## Separator Line ##
1207 self.addToolbarSeparator()
1208 ## Preview Song Button ##
1209- self.addToolbarButton(translate('SongMediaItem', u'Preview Song'),
1210- translate('SongMediaItem', u'Preview the selected song'),
1211+ self.addToolbarButton(translate(u'SongMediaItem', u'Preview Song'),
1212+ translate(u'SongMediaItem', u'Preview the selected song'),
1213 ':/system/system_preview.png', self.onSongPreviewClick, 'SongPreviewItem')
1214 ## Live Song Button ##
1215- self.addToolbarButton(translate('SongMediaItem', u'Go Live'),
1216- translate('SongMediaItem', u'Send the selected song live'),
1217+ self.addToolbarButton(translate(u'SongMediaItem', u'Go Live'),
1218+ translate(u'SongMediaItem', u'Send the selected song live'),
1219 ':/system/system_live.png', self.onSongLiveClick, 'SongLiveItem')
1220 ## Add Song Button ##
1221- self.addToolbarButton(translate('SongMediaItem', u'Add Song To Service'),
1222- translate('SongMediaItem', u'Add the selected song(s) to the service'),
1223+ self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
1224+ translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
1225 ':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
1226 ## Add the songlist widget ##
1227 # Create the tab widget
1228@@ -99,92 +97,77 @@
1229 sizePolicy.setVerticalStretch(0)
1230 sizePolicy.setHeightForWidth(self.SongWidget.sizePolicy().hasHeightForWidth())
1231 self.SongWidget.setSizePolicy(sizePolicy)
1232- self.SongWidget.setObjectName('SongWidget')
1233+ self.SongWidget.setObjectName(u'SongWidget')
1234 self.SearchLayout = QtGui.QGridLayout(self.SongWidget)
1235- self.SearchLayout.setObjectName('SearchLayout')
1236+ self.SearchLayout.setObjectName(u'SearchLayout')
1237 self.SearchTypeComboBox = QtGui.QComboBox(self.SongWidget)
1238- self.SearchTypeComboBox.setObjectName('SearchTypeComboBox')
1239+ self.SearchTypeComboBox.setObjectName(u'SearchTypeComboBox')
1240 self.SearchLayout.addWidget(self.SearchTypeComboBox, 0, 1, 1, 2)
1241 self.SearchTypeLabel = QtGui.QLabel(self.SongWidget)
1242- self.SearchTypeLabel.setObjectName('SearchTypeLabel')
1243+ self.SearchTypeLabel.setObjectName(u'SearchTypeLabel')
1244 self.SearchLayout.addWidget(self.SearchTypeLabel, 0, 0, 1, 1)
1245 self.SearchTextLabel = QtGui.QLabel(self.SongWidget)
1246- self.SearchTextLabel.setObjectName('SearchTextLabel')
1247+ self.SearchTextLabel.setObjectName(u'SearchTextLabel')
1248 self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)
1249 self.SearchTextEdit = QtGui.QLineEdit(self.SongWidget)
1250- self.SearchTextEdit.setObjectName('SearchTextEdit')
1251+ self.SearchTextEdit.setObjectName(u'SearchTextEdit')
1252 self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
1253 self.ClearTextButton = QtGui.QPushButton(self.SongWidget)
1254- self.ClearTextButton.setObjectName('ClearTextButton')
1255+ self.ClearTextButton.setObjectName(u'ClearTextButton')
1256 self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)
1257 self.SearchTextButton = QtGui.QPushButton(self.SongWidget)
1258- self.SearchTextButton.setObjectName('SearchTextButton')
1259+ self.SearchTextButton.setObjectName(u'SearchTextButton')
1260 self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
1261 # Add the song widget to the page layout
1262 self.PageLayout.addWidget(self.SongWidget)
1263-
1264 self.SongListView = SongList()
1265 self.SongListView.setAlternatingRowColors(True)
1266 self.SongListData = TextListData()
1267 self.SongListView.setModel(self.SongListData)
1268 self.SongListView.setDragEnabled(True)
1269-
1270-# self.SongListView = QtGui.QTableWidget()
1271-# self.SongListView.setColumnCount(2)
1272-# self.SongListView.setColumnHidden(0, True)
1273-# self.SongListView.setColumnWidth(1, 240)
1274-# self.SongListView.setShowGrid(False)
1275-# self.SongListView.setSortingEnabled(False)
1276-# self.SongListView.setAlternatingRowColors(True)
1277-# self.SongListView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
1278-# self.SongListView.horizontalHeader().setVisible(False)
1279-# self.SongListView.verticalHeader().setVisible(False)
1280-# self.SongListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
1281- self.SongListView.setObjectName('SongListView')
1282-
1283+ self.SongListView.setObjectName(u'SongListView')
1284 self.PageLayout.addWidget(self.SongListView)
1285 self.SongListView.setDragEnabled(True)
1286-
1287 # Signals and slots
1288 QtCore.QObject.connect(self.SearchTextButton,
1289- QtCore.SIGNAL('pressed()'), self.onSearchTextButtonClick)
1290+ QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)
1291 QtCore.QObject.connect(self.ClearTextButton,
1292- QtCore.SIGNAL('pressed()'), self.onClearTextButtonClick)
1293+ QtCore.SIGNAL(u'pressed()'), self.onClearTextButtonClick)
1294 QtCore.QObject.connect(self.SearchTextEdit,
1295- QtCore.SIGNAL('textChanged(const QString&)'), self.onSearchTextEditChanged)
1296-# QtCore.QObject.connect(self.SongListView,
1297-# QtCore.SIGNAL('itemPressed(QTableWidgetItem * item)'), self.onSongSelected)
1298+ QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
1299+ QtCore.QObject.connect(self.SongListView,
1300+ QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
1301 #define and add the context menu
1302 self.SongListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
1303 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
1304- ':/songs/song_new.png', translate('SongMediaItem', u'&Edit Song'),
1305+ ':/songs/song_new.png', translate(u'SongMediaItem', u'&Edit Song'),
1306 self.onSongEditClick))
1307 self.SongListView.addAction(self.contextMenuSeparator(self.SongListView))
1308 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
1309- ':/system/system_preview.png', translate('SongMediaItem', u'&Preview Song'),
1310+ ':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
1311 self.onSongPreviewClick))
1312 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
1313- ':/system/system_live.png', translate('SongMediaItem', u'&Show Live'),
1314+ ':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
1315 self.onSongLiveClick))
1316 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
1317- ':/system/system_add.png', translate('SongMediaItem', u'&Add to Service'),
1318+ ':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
1319 self.onSongAddClick))
1320
1321 def retranslateUi(self):
1322- self.SearchTypeLabel.setText(translate('SongMediaItem', u'Search Type:'))
1323- self.SearchTextLabel.setText(translate('SongMediaItem', u'Search Text:'))
1324- self.ClearTextButton.setText(translate('SongMediaItem', u'Clear'))
1325- self.SearchTextButton.setText(translate('SongMediaItem', u'Search'))
1326+ self.SearchTypeLabel.setText(translate(u'SongMediaItem', u'Search Type:'))
1327+ self.SearchTextLabel.setText(translate(u'SongMediaItem', u'Search Text:'))
1328+ self.ClearTextButton.setText(translate(u'SongMediaItem', u'Clear'))
1329+ self.SearchTextButton.setText(translate(u'SongMediaItem', u'Search'))
1330
1331 def initialise(self):
1332- self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Titles'))
1333- self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Lyrics'))
1334- self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Authors'))
1335+ self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Titles'))
1336+ self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics'))
1337+ self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors'))
1338
1339 def displayResults(self, searchresults):
1340- log.debug("display results")
1341+ log.debug(u'display results')
1342 self.SongListData.resetStore()
1343- #log.debug("Records returned from search %s", len(searchresults))
1344+ #log.debug(u'Records returned from search %s", len(searchresults))
1345 for song in searchresults:
1346 author_list = u''
1347 for author in song.authors:
1348@@ -192,7 +175,6 @@
1349 author_list = author_list + u', '
1350 author_list = author_list + author.display_name
1351 song_detail = str(u'%s (%s)' % (str(song.title), str(author_list)))
1352-
1353 self.SongListData.addRow(song.id,song_detail)
1354
1355 def onClearTextButtonClick(self):
1356@@ -205,7 +187,7 @@
1357 search_length = 3
1358 if self.SearchTypeComboBox.currentIndex() == 1:
1359 search_length = 7
1360- if len(text) > search_length: # only search if > 3 characters
1361+ if len(text) > search_length:
1362 self.onSearchTextButtonClick()
1363
1364 def onSearchTextButtonClick(self):
1365@@ -213,13 +195,13 @@
1366 search_results = []
1367 search_type = self.SearchTypeComboBox.currentIndex()
1368 if search_type == 0:
1369- log.debug("Titles Search")
1370+ log.debug(u'Titles Search')
1371 search_results = self.parent.songmanager.search_song_title(search_keywords)
1372 elif search_type == 1:
1373- log.debug("Lyrics Search")
1374+ log.debug(u'Lyrics Search')
1375 search_results = self.parent.songmanager.search_song_lyrics(search_keywords)
1376 elif search_type == 2:
1377- log.debug("Authors Search")
1378+ log.debug(u'Authors Search')
1379 #searchresults = self.songmanager.get_song_from_author(searchtext)
1380 self.displayResults(search_results)
1381
1382@@ -242,7 +224,7 @@
1383
1384 def onSongPreviewClick(self):
1385 service_item = ServiceItem(self.parent)
1386- service_item.addIcon( ":/media/media_song.png")
1387+ service_item.addIcon(u':/media/media_song.png')
1388 self.generateSlideData(service_item)
1389 self.parent.preview_controller.addServiceItem(service_item)
1390
1391@@ -267,12 +249,12 @@
1392
1393 def onSongLiveClick(self):
1394 service_item = ServiceItem(self.parent)
1395- service_item.addIcon( ":/media/media_song.png")
1396+ service_item.addIcon(u':/media/media_song.png')
1397 self.generateSlideData(service_item)
1398 self.parent.live_controller.addServiceItem(service_item)
1399
1400 def onSongAddClick(self):
1401 service_item = ServiceItem(self.parent)
1402- service_item.addIcon( ":/media/media_song.png")
1403+ service_item.addIcon( u':/media/media_song.png')
1404 self.generateSlideData(service_item)
1405 self.parent.service_manager.addServiceItem(service_item)