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
=== modified file 'openlp.pyw'
--- openlp.pyw 2009-05-20 20:17:20 +0000
+++ openlp.pyw 2009-06-07 19:34:24 +0000
@@ -41,7 +41,6 @@
41 #provide a listener for widgets to reqest a screen update.41 #provide a listener for widgets to reqest a screen update.
42 QtCore.QObject.connect(Receiver.get_receiver(),42 QtCore.QObject.connect(Receiver.get_receiver(),
43 QtCore.SIGNAL(u'openlpprocessevents'), self.processEvents)43 QtCore.SIGNAL(u'openlpprocessevents'), self.processEvents)
44
45 self.setApplicationName(u'openlp.org')44 self.setApplicationName(u'openlp.org')
46 self.setApplicationVersion(u'1.9.0')45 self.setApplicationVersion(u'1.9.0')
47 self.splash = SplashScreen(self.applicationVersion())46 self.splash = SplashScreen(self.applicationVersion())
@@ -66,4 +65,3 @@
66if __name__ == u'__main__':65if __name__ == u'__main__':
67 app = OpenLP(sys.argv)66 app = OpenLP(sys.argv)
68 app.run()67 app.run()
69
7068
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py 2009-06-05 18:53:50 +0000
+++ openlp/core/lib/renderer.py 2009-06-08 04:30:12 +0000
@@ -20,22 +20,14 @@
20import logging20import logging
21import os, os.path21import os, os.path
22import sys22import sys
23#from copy import copy
2324
24from datetime import *
25from PyQt4 import QtGui, QtCore, Qt25from PyQt4 import QtGui, QtCore, Qt
2626
27from copy import copy
28
29class Renderer:27class Renderer:
30 """28 """
31 All the functions for rendering a set of words onto a Device Context29 Genarates a pixmap image of a array of text. The Text is formatted to
3230 make sure it fits on the screen and if not extra frames a generated.
33 How to use:
34 set the words to be displayed with a call to format_slide() - this returns an array of screenfuls of data
35 set a theme (if you need) with set_theme
36 tell it which DC to render to with set_DC()
37 set the borders of where you want the text (if not the whole DC) with set_text_rectangle()
38 tell it to render a particular screenfull with render_screen(n)
39 """31 """
40 global log32 global log
41 log = logging.getLogger(u'Renderer')33 log = logging.getLogger(u'Renderer')
@@ -98,7 +90,7 @@
98 """90 """
99 if preview == True:91 if preview == True:
100 self._bg_frame = None92 self._bg_frame = None
101 log.debug(u'set frame dest (frame) w %d h %d',frame_width, frame_height)93 log.debug(u'set frame dest (frame) w %d h %d', frame_width, frame_height)
102 self._frame = QtGui.QPixmap(frame_width, frame_height)94 self._frame = QtGui.QPixmap(frame_width, frame_height)
103 if self._bg_image_filename is not None:95 if self._bg_image_filename is not None:
104 self.scale_bg_image()96 self.scale_bg_image()
@@ -109,10 +101,10 @@
109 """101 """
110 External API to sort out the text to pe placed on the frame102 External API to sort out the text to pe placed on the frame
111 """103 """
112 print "########## Format Slide ##################"104 #print "########## Format Slide ##################"
113 log.debug(u'format_slide %s', words)105 log.debug(u'format_slide %s', words)
114 verses = []106 verses = []
115 words = words.replace("\r\n", "\n")107 words = words.replace(u'\r\n', u'\n')
116 verses_text = words.split(u'\n\n')108 verses_text = words.split(u'\n\n')
117 text = []109 text = []
118 for verse in verses_text:110 for verse in verses_text:
@@ -120,8 +112,8 @@
120 for line in lines:112 for line in lines:
121 text.append(line)113 text.append(line)
122 split_text = self._split_set_of_lines(text, False)114 split_text = self._split_set_of_lines(text, False)
123 print "split text ", split_text115 #print "split text ", split_text
124 print "text ", text116 #print "text ", text
125 return split_text117 return split_text
126118
127 def set_text_rectangle(self, rect_main, rect_footer):119 def set_text_rectangle(self, rect_main, rect_footer):
@@ -147,7 +139,6 @@
147 bbox = self._render_lines_unaligned(lines, False, (x, y))139 bbox = self._render_lines_unaligned(lines, False, (x, y))
148 if footer_lines is not None:140 if footer_lines is not None:
149 bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) )141 bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) )
150 log.debug(u'generate_frame_from_lines - Finish')
151 return self._frame142 return self._frame
152143
153 def _generate_background_frame(self):144 def _generate_background_frame(self):
@@ -158,7 +149,6 @@
158 assert(self._theme)149 assert(self._theme)
159 self._bg_frame = QtGui.QPixmap(self._frame.width(), self._frame.height())150 self._bg_frame = QtGui.QPixmap(self._frame.width(), self._frame.height())
160 log.debug(u'render background %s ', self._theme.background_type)151 log.debug(u'render background %s ', self._theme.background_type)
161 bef = datetime.now()
162 painter = QtGui.QPainter()152 painter = QtGui.QPainter()
163 painter.begin(self._bg_frame)153 painter.begin(self._bg_frame)
164 if self._theme.background_type == u'solid':154 if self._theme.background_type == u'solid':
@@ -193,9 +183,6 @@
193 else:183 else:
194 painter.fillRect(self._frame.rect(), QtGui.QColor(u'#000000'))184 painter.fillRect(self._frame.rect(), QtGui.QColor(u'#000000'))
195 painter.end()185 painter.end()
196 aft = datetime.now()
197 print "background time", bef, aft, aft-bef
198 log.debug(u'render background finish')
199186
200 def _split_set_of_lines(self, lines, footer):187 def _split_set_of_lines(self, lines, footer):
201 """188 """
@@ -212,16 +199,11 @@
212 #print "bboxes ", bboxes199 #print "bboxes ", bboxes
213 numlines = len(lines)200 numlines = len(lines)
214 bottom = self._rect.bottom()201 bottom = self._rect.bottom()
215 count = 0
216 for ratio in (numlines, numlines/2, numlines/3, numlines/4):202 for ratio in (numlines, numlines/2, numlines/3, numlines/4):
217 good = 1203 good = 1
218 startline = 0204 startline = 0
219 endline = startline + ratio205 endline = startline + ratio
220 while (endline <= numlines and endline != 0):206 while (endline <= numlines and endline != 0):
221 count += 1
222 if count > 100:
223 #print "busted"
224 break
225 by = 0207 by = 0
226 for (x,y) in bboxes[startline:endline]:208 for (x,y) in bboxes[startline:endline]:
227 #print by, startline, endline, x, y, bottom209 #print by, startline, endline, x, y, bottom
@@ -278,7 +260,7 @@
278 elif int(self._theme.display_verticalAlign) == 1: # centre align260 elif int(self._theme.display_verticalAlign) == 1: # centre align
279 y = rect.top() + (rect.height() - bbox.height()) / 2261 y = rect.top() + (rect.height() - bbox.height()) / 2
280 else:262 else:
281 assert(0 , u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)263 log.error(u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign)
282 return x, y264 return x, y
283265
284 def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)):266 def _render_lines_unaligned(self, lines, footer, tlcorner=(0,0)):
@@ -306,7 +288,6 @@
306 painter.setPen(QtGui.QPen(QtGui.QColor(0,0,255)))288 painter.setPen(QtGui.QPen(QtGui.QColor(0,0,255)))
307 painter.drawRect(retval)289 painter.drawRect(retval)
308 painter.end()290 painter.end()
309 log.debug(u'render lines unaligned Finish')
310 return retval291 return retval
311292
312 def _render_and_wrap_single_line(self, line, footer, tlcorner=(0,0)):293 def _render_and_wrap_single_line(self, line, footer, tlcorner=(0,0)):
@@ -317,7 +298,7 @@
317 right-aligns the surplus words in the manner of song lyrics298 right-aligns the surplus words in the manner of song lyrics
318 Returns the bottom-right corner (of what was rendered) as a tuple(x, y).299 Returns the bottom-right corner (of what was rendered) as a tuple(x, y).
319 """300 """
320 log.debug(u'Render single line %s @ %s '%( line, tlcorner))301 #log.debug(u'Render single line %s @ %s '%( line, tlcorner))
321 x, y = tlcorner302 x, y = tlcorner
322 # We draw the text to see how big it is and then iterate to make it fit303 # We draw the text to see how big it is and then iterate to make it fit
323 # when we line wrap we do in in the "lyrics" style, so the second line is304 # when we line wrap we do in in the "lyrics" style, so the second line is
@@ -342,7 +323,8 @@
342 startx = x323 startx = x
343 starty = y324 starty = y
344 rightextent = None325 rightextent = None
345 if footer: # dont allow alignment messing with footers326 # dont allow alignment messing with footers
327 if footer:
346 align = 0328 align = 0
347 else:329 else:
348 align = int(self._theme .display_horizontalAlign)330 align = int(self._theme .display_horizontalAlign)
@@ -354,42 +336,47 @@
354 w += self._shadow_offset336 w += self._shadow_offset
355 h += self._shadow_offset337 h += self._shadow_offset
356 if self._theme.display_outline:338 if self._theme.display_outline:
357 w += 2*self._outline_offset # pixels either side339 # pixels either side
358 h += 2*self._outline_offset # pixels top/bottom340 w += 2 * self._outline_offset
341 # pixels top/bottom
342 h += 2 * self._outline_offset
359 if align == 0: # left align343 if align == 0: # left align
360 rightextent = x + w344 rightextent = x + w
361 if self._theme.display_wrapStyle == 1 and linenum != 0: # shift right from last line's rh edge345 # shift right from last line's rh edge
346 if self._theme.display_wrapStyle == 1 and linenum != 0:
362 rightextent = self._first_line_right_extent + self._right_margin347 rightextent = self._first_line_right_extent + self._right_margin
363 if rightextent > maxx:348 if rightextent > maxx:
364 rightextent = maxx349 rightextent = maxx
365 x = rightextent - w350 x = rightextent - w
366 elif align == 1: # right align351 # right align
352 elif align == 1:
367 rightextent = maxx353 rightextent = maxx
368 x = maxx - w354 x = maxx - w
369 elif align == 2: # centre355 # centre
356 elif align == 2:
370 x = (maxx - w) / 2;357 x = (maxx - w) / 2;
371 rightextent = x + w358 rightextent = x + w
372 # now draw the text, and any outlines/shadows359 # now draw the text, and any outlines/shadows
373 if self._theme.display_shadow:360 if self._theme.display_shadow:
374 self._get_extent_and_render(line, footer,tlcorner=(x+self._shadow_offset,y+self._shadow_offset),361 self._get_extent_and_render(line, footer, tlcorner=(x+self._shadow_offset,y+self._shadow_offset),
375 draw=True, color = self._theme.display_shadow_color)362 draw=True, color = self._theme.display_shadow_color)
376 if self._theme.display_outline:363 if self._theme.display_outline:
377 self._get_extent_and_render(line, footer,(x+self._outline_offset,y), draw=True,364 self._get_extent_and_render(line, footer, (x+self._outline_offset,y), draw=True,
378 color = self._theme.display_outline_color)365 color = self._theme.display_outline_color)
379 self._get_extent_and_render(line, footer,(x, y+self._outline_offset), draw=True,366 self._get_extent_and_render(line, footer, (x, y+self._outline_offset), draw=True,
380 color = self._theme.display_outline_color)367 color = self._theme.display_outline_color)
381 self._get_extent_and_render(line, footer,(x, y-self._outline_offset), draw=True,368 self._get_extent_and_render(line, footer, (x, y-self._outline_offset), draw=True,
382 color = self._theme.display_outline_color)369 color = self._theme.display_outline_color)
383 self._get_extent_and_render(line, footer,(x-self._outline_offset,y), draw=True,370 self._get_extent_and_render(line, footer, (x-self._outline_offset,y), draw=True,
384 color = self._theme.display_outline_color)371 color = self._theme.display_outline_color)
385 if self._outline_offset > 1:372 if self._outline_offset > 1:
386 self._get_extent_and_render(line, footer,(x+self._outline_offset,y+self._outline_offset), draw=True,373 self._get_extent_and_render(line, footer, (x+self._outline_offset,y+self._outline_offset), draw=True,
387 color = self._theme.display_outline_color)374 color = self._theme.display_outline_color)
388 self._get_extent_and_render(line, footer,(x-self._outline_offset,y+self._outline_offset), draw=True,375 self._get_extent_and_render(line, footer, (x-self._outline_offset,y+self._outline_offset), draw=True,
389 color = self._theme.display_outline_color)376 color = self._theme.display_outline_color)
390 self._get_extent_and_render(line, footer,(x+self._outline_offset,y-self._outline_offset), draw=True,377 self._get_extent_and_render(line, footer, (x+self._outline_offset,y-self._outline_offset), draw=True,
391 color = self._theme.display_outline_color)378 color = self._theme.display_outline_color)
392 self._get_extent_and_render(line, footer,(x-self._outline_offset,y-self._outline_offset), draw=True,379 self._get_extent_and_render(line, footer, (x-self._outline_offset,y-self._outline_offset), draw=True,
393 color = self._theme.display_outline_color)380 color = self._theme.display_outline_color)
394 self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)381 self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)
395 y += h382 y += h
@@ -403,7 +390,6 @@
403 painter.drawRect(startx , starty , rightextent-startx , y-starty)390 painter.drawRect(startx , starty , rightextent-startx , y-starty)
404 painter.end()391 painter.end()
405 brcorner = (rightextent , y)392 brcorner = (rightextent , y)
406 log.debug(u'Render single line Finish')
407 return brcorner393 return brcorner
408394
409 # xxx this is what to override for an SDL version395 # xxx this is what to override for an SDL version
@@ -454,14 +440,7 @@
454 Debugging method to allow images to be viewed440 Debugging method to allow images to be viewed
455 """441 """
456 im = image.toImage()442 im = image.toImage()
457 im.save("renderer.png", "png")443 im.save(u'renderer.png', u'png')
458 if image2 is not None:444 if image2 is not None:
459 im = image2.toImage()445 im = image2.toImage()
460 im.save("renderer2.png", "png")446 im.save(u'renderer2.png', u'png')
461
462# def render_screen(self, screennum):
463# log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
464# t = 0.0
465# words = self.words[screennum]
466# retval = self._render_lines(words)
467# return retval
468447
=== modified file 'openlp/core/lib/rendermanager.py'
--- openlp/core/lib/rendermanager.py 2009-06-05 18:53:50 +0000
+++ openlp/core/lib/rendermanager.py 2009-06-08 05:04:06 +0000
@@ -64,6 +64,7 @@
64 self.calculate_default(self.screen_list[self.current_display]['size'])64 self.calculate_default(self.screen_list[self.current_display]['size'])
65 self.theme = u''65 self.theme = u''
66 self.service_theme = u''66 self.service_theme = u''
67 self.global_style = u''
6768
68 def update_display(self, screen_number):69 def update_display(self, screen_number):
69 """70 """
7071
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py 2009-06-05 19:00:57 +0000
+++ openlp/core/lib/serviceitem.py 2009-06-08 20:36:33 +0000
@@ -32,12 +32,14 @@
32 log=logging.getLogger(u'ServiceItem')32 log=logging.getLogger(u'ServiceItem')
33 log.info(u'Service Item created')33 log.info(u'Service Item created')
3434
35 def __init__(self, hostplugin):35 def __init__(self, hostplugin=None):
36 """36 """
37 Init Method37 Init Method
38 """38 """
39 self.plugin = hostplugin39 self.plugin = hostplugin
40 self.shortname = hostplugin.name40 if hostplugin is not None:
41 self.RenderManager = self.plugin.render_manager
42 self.shortname = hostplugin.name
41 self.title = u''43 self.title = u''
42 self.items = []44 self.items = []
43 self.iconic_representation = None45 self.iconic_representation = None
@@ -47,10 +49,11 @@
47 self.frames = []49 self.frames = []
48 self.raw_footer = None50 self.raw_footer = None
49 self.theme = None51 self.theme = None
50 log.debug(u'Service item created for %s ', self.shortname)52 #log.debug(u'Service item created for %s ', self.shortname)
51 self.service_frames = []53 self.service_frames = []
5254
53 def addIcon(self, icon):55 def addIcon(self, icon):
56 self.icon = icon
54 self.iconic_representation = buildIcon(icon)57 self.iconic_representation = buildIcon(icon)
5558
56 def render(self):59 def render(self):
@@ -59,15 +62,15 @@
59 """62 """
60 log.debug(u'Render called')63 log.debug(u'Render called')
61 if self.theme == None:64 if self.theme == None:
62 self.plugin.render_manager.set_override_theme(None)65 self.RenderManager.set_override_theme(None)
63 else:66 else:
64 self.plugin.render_manager.set_override_theme(self.theme)67 self.RenderManager.set_override_theme(self.theme)
65 log.debug(u'Formatting slides')68 log.debug(u'Formatting slides')
66 if self.service_item_type == u'text':69 if self.service_item_type == u'text':
67 for slide in self.service_frames:70 for slide in self.service_frames:
68 formated = self.plugin.render_manager.format_slide(slide[u'raw_slide'])71 formated = self.RenderManager.format_slide(slide[u'raw_slide'])
69 for format in formated:72 for format in formated:
70 frame = self.plugin.render_manager.generate_slide(format, self.raw_footer)73 frame = self.RenderManager.generate_slide(format, self.raw_footer)
71 self.frames.append({u'title': slide[u'title'], u'image': frame})74 self.frames.append({u'title': slide[u'title'], u'image': frame})
72 elif self.service_item_type == u'command':75 elif self.service_item_type == u'command':
73 self.frames = self.service_frames76 self.frames = self.service_frames
@@ -76,7 +79,7 @@
76 self.frames = self.service_frames79 self.frames = self.service_frames
77 self.service_frames = []80 self.service_frames = []
78 else:81 else:
79 assert(0 , u'Invalid value rendere :%s' % self.service_item_type)82 log.error(u'Invalid value renderer :%s' % self.service_item_type)
8083
81 def add_from_image(self, frame_title, image):84 def add_from_image(self, frame_title, image):
82 self.service_item_type = u'image'85 self.service_item_type = u'image'
@@ -91,24 +94,29 @@
91 self.service_item_type = u'command'94 self.service_item_type = u'command'
92 self.service_frames.append({u'title': frame_title, u'command': command})95 self.service_frames.append({u'title': frame_title, u'command': command})
9396
94
95
96 def get_oos_repr(self):97 def get_oos_repr(self):
97 """98 """
98 This method returns some text which can be saved into the OOS99 This method returns some text which can be saved into the OOS
99 file to represent this item100 file to represent this item
100 """101 """
101 pass102 oos_header = {u'plugin': self.shortname,u'theme':self.theme, u'title':self.title,
103 u'icon':self.icon, u'footer':self.raw_footer, u'type':self.service_item_type}
104 oos_data = []
105 if self.service_item_type == u'text':
106 for slide in self.service_frames:
107 oos_data.append(slide[u'raw_slide'])
108 return {u'header': oos_header, u'data': self.service_frames}
102109
103 def set_from_oos(self, oostext):110 def set_from_oos(self, serviceitem):
104 """111 """
105 This method takes some oostext (passed from the ServiceManager)112 This method takes some oostext (passed from the ServiceManager)
106 and parses it into the data actually required113 and parses it into the data actually required
107 """114 """
108 pass115 header = serviceitem[u'serviceitem'][u'header']
109116 self.title = header[u'title']
110 def set_from_plugin(self):117 self.service_item_type = header[u'type']
111 """118 self.shortname = header[u'plugin']
112 Takes data from the plugin media chooser119 self.theme = header[u'theme']
113 """120 self.addIcon(header[u'icon'])
114 pass121 self.raw_footer = header[u'footer']
122 self.service_frames = serviceitem[u'serviceitem'][u'data']
115123
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py 2009-06-05 18:53:50 +0000
+++ openlp/core/ui/maindisplay.py 2009-06-07 19:34:24 +0000
@@ -60,7 +60,7 @@
60 if not screen[u'primary']:60 if not screen[u'primary']:
61 self.showFullScreen()61 self.showFullScreen()
62 else:62 else:
63 self.hide()63 self.showMinimized()
64 painter = QtGui.QPainter()64 painter = QtGui.QPainter()
65 self.blankFrame = QtGui.QPixmap(screen[u'size'].width(), screen[u'size'].height())65 self.blankFrame = QtGui.QPixmap(screen[u'size'].width(), screen[u'size'].height())
66 painter.begin(self.blankFrame)66 painter.begin(self.blankFrame)
6767
=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py 2009-06-08 19:03:16 +0000
+++ openlp/core/ui/mainwindow.py 2009-06-08 19:11:55 +0000
@@ -75,12 +75,12 @@
75 # hook methods have to happen after find_plugins. Find plugins needs the75 # hook methods have to happen after find_plugins. Find plugins needs the
76 # controllershence the hooks have moved from setupUI() to here76 # controllershence the hooks have moved from setupUI() to here
7777
78 # Find and insert settings tabs
79 log.info(u'hook settings')
80 self.plugin_manager.hook_settings_tabs(self.settingsForm)
78 # Find and insert media manager items81 # Find and insert media manager items
79 log.info(u'hook media')82 log.info(u'hook media')
80 self.plugin_manager.hook_media_manager(self.MediaToolBox)83 self.plugin_manager.hook_media_manager(self.MediaToolBox)
81 # Find and insert settings tabs
82 log.info(u'hook settings')
83 self.plugin_manager.hook_settings_tabs(self.settingsForm)
84 # Call the hook method to pull in import menus.84 # Call the hook method to pull in import menus.
85 log.info(u'hook menus')85 log.info(u'hook menus')
86 self.plugin_manager.hook_import_menu(self.FileImportMenu)86 self.plugin_manager.hook_import_menu(self.FileImportMenu)
8787
=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py 2009-06-08 19:03:16 +0000
+++ openlp/core/ui/servicemanager.py 2009-06-08 20:36:33 +0000
@@ -19,6 +19,7 @@
19"""19"""
20import os20import os
21import logging21import logging
22import cPickle
2223
23from PyQt4 import QtCore, QtGui24from PyQt4 import QtCore, QtGui
24from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \25from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \
@@ -134,7 +135,8 @@
134 """135 """
135 Clear the list to create a new service136 Clear the list to create a new service
136 """137 """
137 self.service_data.clearItems()138 self.ServiceManagerList.clear()
139 self.serviceItems = []
138140
139 def onDeleteFromService(self):141 def onDeleteFromService(self):
140 """142 """
@@ -146,13 +148,34 @@
146 """148 """
147 Save the current service149 Save the current service
148 """150 """
149 pass151 filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() )
152 if filename != u'':
153 self.config.set_last_dir(filename)
154 print filename
155 service = []
156 for item in self.serviceItems:
157 service.append({u'serviceitem':item[u'data'].get_oos_repr()})
158 file = open(filename+u'.oos', u'wb')
159 cPickle.dump(service, file)
160 file.close()
150161
151 def onLoadService(self):162 def onLoadService(self):
152 """163 """
153 Load an existing service from disk164 Load an existing service from disk
154 """165 """
155 pass166 filename = QtGui.QFileDialog.getOpenFileName(self, u'Open Order of Service',self.config.get_last_dir(),
167 u'Services (*.oos)')
168 if filename != u'':
169 self.config.set_last_dir(filename)
170 file = open(filename, u'r')
171 items = cPickle.load(file)
172 file.close()
173 self.onNewService()
174 for item in items:
175 serviceitem = ServiceItem()
176 serviceitem.RenderManager = self.parent.RenderManager
177 serviceitem.set_from_oos(item)
178 self.addServiceItem(serviceitem)
156179
157 def onThemeComboBoxSelected(self, currentIndex):180 def onThemeComboBoxSelected(self, currentIndex):
158 """181 """
@@ -162,16 +185,16 @@
162 self.parent.RenderManager.set_service_theme(self.service_theme)185 self.parent.RenderManager.set_service_theme(self.service_theme)
163 self.config.set_config(u'theme service theme', self.service_theme)186 self.config.set_config(u'theme service theme', self.service_theme)
164187
165 def addServiceItem(self, item):188 def addServiceItem(self, item, expand=True):
166 """189 """
167 Add an item to the list190 Add an item to the list
168 """191 """
169 self.serviceItems.append({u'data': item, u'order': len(self.serviceItems)+1})192 self.serviceItems.append({u'data': item, u'order': len(self.serviceItems)+1})
170 treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)193 treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)
171 treewidgetitem.setText(0,item.title) # + u':' + item.shortname)194 treewidgetitem.setText(0,item.title)
172 treewidgetitem.setIcon(0,item.iconic_representation)195 treewidgetitem.setIcon(0,item.iconic_representation)
173 treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(len(self.serviceItems)))196 treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(len(self.serviceItems)))
174 treewidgetitem.setExpanded(True)197 treewidgetitem.setExpanded(expand)
175 item.render()198 item.render()
176 count = 0199 count = 0
177 for frame in item.frames:200 for frame in item.frames:
@@ -204,13 +227,14 @@
204 count = 0227 count = 0
205 for item in items:228 for item in items:
206 childCount = item.childCount()229 childCount = item.childCount()
207 if childCount >= 1: # is the parent230 if childCount >= 1:
208 pos = item.data(0, QtCore.Qt.UserRole).toInt()[0]231 pos = item.data(0, QtCore.Qt.UserRole).toInt()[0]
209 else:232 else:
210 parentitem = item.parent()233 parentitem = item.parent()
211 pos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]234 pos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]
212 count = item.data(0, QtCore.Qt.UserRole).toInt()[0]235 count = item.data(0, QtCore.Qt.UserRole).toInt()[0]
213 pos = pos - 1 #adjust for zeor indexing236 #adjuest for zero based arrays
237 pos = pos - 1
214 return pos, count238 return pos, count
215239
216 def dragEnterEvent(self, event):240 def dragEnterEvent(self, event):
@@ -229,26 +253,6 @@
229 plugin = event.mimeData().text()253 plugin = event.mimeData().text()
230 self.parent.EventManager.post_event(Event(EventType.LoadServiceItem, plugin))254 self.parent.EventManager.post_event(Event(EventType.LoadServiceItem, plugin))
231255
232 def oos_as_text(self):
233 text=[]
234 log.info( "oos as text")
235 log.info("Data:"+str(self.service_data))
236 for i in self.service_data:
237 text.append("# " + str(i))
238 text.append(i.get_oos_text())
239 return '\n'.join(text)
240
241 def write_oos(self, filename):
242 """
243 Write a full OOS file out - iterate over plugins and call their respective methods
244 This format is totally arbitrary testing purposes - something sensible needs to go in here!
245 """
246 oosfile=open(filename, "w")
247 oosfile.write("# BEGIN OOS\n")
248 oosfile.write(self.oos_as_text)
249 oosfile.write("# END OOS\n")
250 oosfile.close()
251
252 def updateThemeList(self, theme_list):256 def updateThemeList(self, theme_list):
253 """257 """
254 Called from ThemeManager when the Themes have changed258 Called from ThemeManager when the Themes have changed
@@ -264,4 +268,3 @@
264 self.service_theme = u''268 self.service_theme = u''
265 self.ThemeComboBox.setCurrentIndex(id)269 self.ThemeComboBox.setCurrentIndex(id)
266 self.parent.RenderManager.set_service_theme(self.service_theme)270 self.parent.RenderManager.set_service_theme(self.service_theme)
267
268271
=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py 2009-06-05 19:00:57 +0000
+++ openlp/core/ui/slidecontroller.py 2009-06-07 19:34:24 +0000
@@ -135,11 +135,10 @@
135 self.PreviewListView = QtGui.QListView(self.Controller)135 self.PreviewListView = QtGui.QListView(self.Controller)
136 self.PreviewListData = SlideData()136 self.PreviewListData = SlideData()
137 self.PreviewListView.isLive = self.isLive137 self.PreviewListView.isLive = self.isLive
138 self.PreviewListView.setFlow(1)138 #self.PreviewListView.setFlow(1)
139 self.PreviewListView.setViewMode(1)139 #self.PreviewListView.setViewMode(1)
140 self.PreviewListView.setWrapping(False)140 self.PreviewListView.setWrapping(False)
141 self.PreviewListView.setModel(self.PreviewListData)141 self.PreviewListView.setModel(self.PreviewListData)
142 #self.PreviewListView.setSelectionRectVisible(True)
143 self.PreviewListView.setSpacing(0)142 self.PreviewListView.setSpacing(0)
144 self.PreviewListView.setObjectName(u'PreviewListView')143 self.PreviewListView.setObjectName(u'PreviewListView')
145 self.ControllerLayout.addWidget(self.PreviewListView)144 self.ControllerLayout.addWidget(self.PreviewListView)
146145
=== modified file 'openlp/plugins/bibles/forms/bibleimportform.py'
--- openlp/plugins/bibles/forms/bibleimportform.py 2009-06-07 16:33:33 +0000
+++ openlp/plugins/bibles/forms/bibleimportform.py 2009-06-08 05:04:06 +0000
@@ -33,9 +33,9 @@
33 global log33 global log
34 log=logging.getLogger(u'BibleImportForm')34 log=logging.getLogger(u'BibleImportForm')
35 log.info(u'BibleImportForm loaded')35 log.info(u'BibleImportForm loaded')
36 '''36 """
37 Class documentation goes here.37 Class documentation goes here.
38 '''38 """
39 def __init__(self, config, biblemanager , bibleplugin, parent = None):39 def __init__(self, config, biblemanager , bibleplugin, parent = None):
40 '''40 '''
41 Constructor41 Constructor
@@ -124,7 +124,7 @@
124 # Was OSIS and is not any more stops lostFocus running mad124 # Was OSIS and is not any more stops lostFocus running mad
125 if self.bible_type == u'OSIS':125 if self.bible_type == u'OSIS':
126 self.bible_type = None126 self.bible_type = None
127 self.freeAll()127 self.resetScreenFieldStates()
128128
129 def onBooksLocationEditLostFocus(self):129 def onBooksLocationEditLostFocus(self):
130 self.checkOsis()130 self.checkOsis()
@@ -209,9 +209,9 @@
209 str(self.PermisionEdit.displayText()))209 str(self.PermisionEdit.displayText()))
210 self.bible_type = None210 self.bible_type = None
211 # free the screen state restrictions211 # free the screen state restrictions
212 self.freeAll()212 self.resetScreenFieldStates()
213 # reset all the screen fields213 # reset all the screen fields
214 self.resetAll()214 self.resetEntryFields()
215215
216 def checkOsis(self):216 def checkOsis(self):
217 if len(self.BooksLocationEdit.displayText()) > 0 or len(self.VerseLocationEdit.displayText()) > 0:217 if len(self.BooksLocationEdit.displayText()) > 0 or len(self.VerseLocationEdit.displayText()) > 0:
@@ -220,7 +220,7 @@
220 # Was CSV and is not any more stops lostFocus running mad220 # Was CSV and is not any more stops lostFocus running mad
221 if self.bible_type == u'CSV':221 if self.bible_type == u'CSV':
222 self.bible_type = None222 self.bible_type = None
223 self.freeAll()223 self.resetScreenFieldStates()
224224
225 def checkHttp(self):225 def checkHttp(self):
226 if self.BibleComboBox.currentIndex() != 0 : # First slot is blank so no bible226 if self.BibleComboBox.currentIndex() != 0 : # First slot is blank so no bible
@@ -229,7 +229,7 @@
229 # Was HTTP and is not any more stops lostFocus running mad229 # Was HTTP and is not any more stops lostFocus running mad
230 if self.bible_type == u'HTTP':230 if self.bible_type == u'HTTP':
231 self.bible_type = None231 self.bible_type = None
232 self.freeAll()232 self.resetScreenFieldStates()
233233
234 def blockCsv(self):234 def blockCsv(self):
235 self.BooksLocationEdit.setReadOnly(True)235 self.BooksLocationEdit.setReadOnly(True)
@@ -247,7 +247,7 @@
247 self.blockHttp()247 self.blockHttp()
248248
249 def setOsis(self):249 def setOsis(self):
250 self.bible_type = 'OSIS'250 self.bible_type = u'OSIS'
251 self.OSISLocationEdit.setReadOnly(False)251 self.OSISLocationEdit.setReadOnly(False)
252 self.OsisFileButton.setEnabled(True)252 self.OsisFileButton.setEnabled(True)
253 self.blockCsv()253 self.blockCsv()
@@ -268,8 +268,9 @@
268 self.LocationComboBox.setEnabled(False)268 self.LocationComboBox.setEnabled(False)
269 self.BibleComboBox.setEnabled(False)269 self.BibleComboBox.setEnabled(False)
270270
271 def freeAll(self):271 def resetScreenFieldStates(self):
272 if self.bible_type == None: # only reset if no bible type set.272 # only reset if no bible type set.
273 if self.bible_type == None:
273 self.BooksLocationEdit.setReadOnly(False)274 self.BooksLocationEdit.setReadOnly(False)
274 self.VerseLocationEdit.setReadOnly(False)275 self.VerseLocationEdit.setReadOnly(False)
275 self.BooksFileButton.setEnabled(True)276 self.BooksFileButton.setEnabled(True)
@@ -279,7 +280,7 @@
279 self.LocationComboBox.setEnabled(True)280 self.LocationComboBox.setEnabled(True)
280 self.BibleComboBox.setEnabled(True)281 self.BibleComboBox.setEnabled(True)
281282
282 def resetAll(self):283 def resetEntryFields(self):
283 self.BooksLocationEdit.setText(u'')284 self.BooksLocationEdit.setText(u'')
284 self.VerseLocationEdit.setText(u'')285 self.VerseLocationEdit.setText(u'')
285 self.OSISLocationEdit.setText(u'')286 self.OSISLocationEdit.setText(u'')
286287
=== modified file 'openlp/plugins/bibles/lib/biblestab.py'
--- openlp/plugins/bibles/lib/biblestab.py 2009-06-05 18:53:50 +0000
+++ openlp/plugins/bibles/lib/biblestab.py 2009-06-08 05:04:06 +0000
@@ -17,6 +17,7 @@
17this program; if not, write to the Free Software Foundation, Inc., 59 Temple17this program; if not, write to the Free Software Foundation, Inc., 59 Temple
18Place, Suite 330, Boston, MA 02111-1307 USA18Place, Suite 330, Boston, MA 02111-1307 USA
19"""19"""
20import logging
2021
21from PyQt4 import Qt, QtCore, QtGui22from PyQt4 import Qt, QtCore, QtGui
2223
@@ -27,6 +28,10 @@
27 """28 """
28 BiblesTab is the Bibles settings tab in the settings dialog.29 BiblesTab is the Bibles settings tab in the settings dialog.
29 """30 """
31 global log
32 log = logging.getLogger(u'BibleTab')
33 log.info(u'Bible Tab loaded')
34
30 def __init__(self):35 def __init__(self):
31 self.paragraph_style = True36 self.paragraph_style = True
32 self.show_new_chapters = False37 self.show_new_chapters = False
@@ -67,14 +72,12 @@
67 self.NewChaptersCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)72 self.NewChaptersCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
68 self.NewChaptersCheckBox.setObjectName("NewChaptersCheckBox")73 self.NewChaptersCheckBox.setObjectName("NewChaptersCheckBox")
69 self.VerseDisplayLayout.addWidget(self.NewChaptersCheckBox, 1, 0, 1, 1)74 self.VerseDisplayLayout.addWidget(self.NewChaptersCheckBox, 1, 0, 1, 1)
70
71 self.DisplayStyleWidget = QtGui.QWidget(self.VerseDisplayGroupBox)75 self.DisplayStyleWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
72 self.DisplayStyleWidget.setObjectName(u'DisplayStyleWidget')76 self.DisplayStyleWidget.setObjectName(u'DisplayStyleWidget')
73 self.DisplayStyleLayout = QtGui.QHBoxLayout(self.DisplayStyleWidget)77 self.DisplayStyleLayout = QtGui.QHBoxLayout(self.DisplayStyleWidget)
74 self.DisplayStyleLayout.setSpacing(8)78 self.DisplayStyleLayout.setSpacing(8)
75 self.DisplayStyleLayout.setMargin(0)79 self.DisplayStyleLayout.setMargin(0)
76 self.DisplayStyleLayout.setObjectName(u'DisplayStyleLayout')80 self.DisplayStyleLayout.setObjectName(u'DisplayStyleLayout')
77
78 self.DisplayStyleLabel = QtGui.QLabel(self.DisplayStyleWidget)81 self.DisplayStyleLabel = QtGui.QLabel(self.DisplayStyleWidget)
79 self.DisplayStyleLabel.setObjectName(u'DisplayStyleLabel')82 self.DisplayStyleLabel.setObjectName(u'DisplayStyleLabel')
80 self.DisplayStyleLayout.addWidget(self.DisplayStyleLabel)83 self.DisplayStyleLayout.addWidget(self.DisplayStyleLabel)
@@ -86,14 +89,12 @@
86 self.DisplayStyleComboBox.addItem(QtCore.QString())89 self.DisplayStyleComboBox.addItem(QtCore.QString())
87 self.DisplayStyleLayout.addWidget(self.DisplayStyleComboBox)90 self.DisplayStyleLayout.addWidget(self.DisplayStyleComboBox)
88 self.VerseDisplayLayout.addWidget(self.DisplayStyleWidget, 2, 0, 1, 1)91 self.VerseDisplayLayout.addWidget(self.DisplayStyleWidget, 2, 0, 1, 1)
89
90 self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)92 self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
91 self.BibleThemeWidget.setObjectName(u'BibleThemeWidget')93 self.BibleThemeWidget.setObjectName(u'BibleThemeWidget')
92 self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget)94 self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget)
93 self.BibleThemeLayout.setSpacing(8)95 self.BibleThemeLayout.setSpacing(8)
94 self.BibleThemeLayout.setMargin(0)96 self.BibleThemeLayout.setMargin(0)
95 self.BibleThemeLayout.setObjectName(u'BibleThemeLayout')97 self.BibleThemeLayout.setObjectName(u'BibleThemeLayout')
96
97 self.BibleThemeLabel = QtGui.QLabel(self.BibleThemeWidget)98 self.BibleThemeLabel = QtGui.QLabel(self.BibleThemeWidget)
98 self.BibleThemeLabel.setObjectName(u'BibleThemeLabel')99 self.BibleThemeLabel.setObjectName(u'BibleThemeLabel')
99 self.BibleThemeLayout.addWidget(self.BibleThemeLabel)100 self.BibleThemeLayout.addWidget(self.BibleThemeLabel)
@@ -102,7 +103,6 @@
102 self.BibleThemeComboBox.addItem(QtCore.QString())103 self.BibleThemeComboBox.addItem(QtCore.QString())
103 self.BibleThemeLayout.addWidget(self.BibleThemeComboBox)104 self.BibleThemeLayout.addWidget(self.BibleThemeComboBox)
104 self.VerseDisplayLayout.addWidget(self.BibleThemeWidget, 3, 0, 1, 1)105 self.VerseDisplayLayout.addWidget(self.BibleThemeWidget, 3, 0, 1, 1)
105
106 self.ChangeNoteLabel = QtGui.QLabel(self.VerseDisplayGroupBox)106 self.ChangeNoteLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
107 self.ChangeNoteLabel.setObjectName(u'ChangeNoteLabel')107 self.ChangeNoteLabel.setObjectName(u'ChangeNoteLabel')
108 self.VerseDisplayLayout.addWidget(self.ChangeNoteLabel, 4, 0, 1, 1)108 self.VerseDisplayLayout.addWidget(self.ChangeNoteLabel, 4, 0, 1, 1)
@@ -111,7 +111,6 @@
111 QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)111 QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
112 self.BibleLeftLayout.addItem(self.BibleLeftSpacer)112 self.BibleLeftLayout.addItem(self.BibleLeftSpacer)
113 self.BibleLayout.addWidget(self.BibleLeftWidget)113 self.BibleLayout.addWidget(self.BibleLeftWidget)
114
115 self.BibleRightWidget = QtGui.QWidget(self)114 self.BibleRightWidget = QtGui.QWidget(self)
116 self.BibleRightWidget.setObjectName(u'BibleRightWidget')115 self.BibleRightWidget.setObjectName(u'BibleRightWidget')
117 self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget)116 self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget)
@@ -176,13 +175,15 @@
176 def onNewChaptersCheckBoxChanged(self):175 def onNewChaptersCheckBoxChanged(self):
177 check_state = self.NewChaptersCheckBox.checkState()176 check_state = self.NewChaptersCheckBox.checkState()
178 self.show_new_chapters = False177 self.show_new_chapters = False
179 if check_state == 2: # we have a set value convert to True/False178 # we have a set value convert to True/False
179 if check_state == 2:
180 self.show_new_chapters = True180 self.show_new_chapters = True
181181
182 def onBibleSearchCheckBoxChanged(self):182 def onBibleSearchCheckBoxChanged(self):
183 check_state = self.BibleSearchCheckBox.checkState()183 check_state = self.BibleSearchCheckBox.checkState()
184 self.bible_search = False184 self.bible_search = False
185 if check_state == 2: # we have a set value convert to True/False185 # we have a set value convert to True/False
186 if check_state == 2:
186 self.bible_search = True187 self.bible_search = True
187188
188 def load(self):189 def load(self):
189190
=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py 2009-06-07 18:39:31 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py 2009-06-08 05:04:06 +0000
@@ -42,9 +42,7 @@
42 mimeData = QtCore.QMimeData()42 mimeData = QtCore.QMimeData()
43 drag.setMimeData(mimeData)43 drag.setMimeData(mimeData)
44 mimeData.setText(u'Bibles')44 mimeData.setText(u'Bibles')
45
46 dropAction = drag.start(QtCore.Qt.CopyAction)45 dropAction = drag.start(QtCore.Qt.CopyAction)
47
48 if dropAction == QtCore.Qt.CopyAction:46 if dropAction == QtCore.Qt.CopyAction:
49 self.close()47 self.close()
5048
@@ -90,7 +88,6 @@
90 translate(u'BibleMediaItem',u'Add the selected Bible(s) to the service'),88 translate(u'BibleMediaItem',u'Add the selected Bible(s) to the service'),
91 u':/system/system_add.png',89 u':/system/system_add.png',
92 self.onBibleAddClick, u'BibleAddItem')90 self.onBibleAddClick, u'BibleAddItem')
93
94 # Create the tab widget91 # Create the tab widget
95 self.SearchTabWidget = QtGui.QTabWidget(self)92 self.SearchTabWidget = QtGui.QTabWidget(self)
96 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)93 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
@@ -99,7 +96,6 @@
99 sizePolicy.setHeightForWidth(self.SearchTabWidget.sizePolicy().hasHeightForWidth())96 sizePolicy.setHeightForWidth(self.SearchTabWidget.sizePolicy().hasHeightForWidth())
100 self.SearchTabWidget.setSizePolicy(sizePolicy)97 self.SearchTabWidget.setSizePolicy(sizePolicy)
101 self.SearchTabWidget.setObjectName(u'SearchTabWidget')98 self.SearchTabWidget.setObjectName(u'SearchTabWidget')
102
103 # Add the Quick Search tab99 # Add the Quick Search tab
104 self.QuickTab = QtGui.QWidget()100 self.QuickTab = QtGui.QWidget()
105 self.QuickTab.setObjectName(u'QuickTab')101 self.QuickTab.setObjectName(u'QuickTab')
@@ -138,7 +134,6 @@
138 QuickSpacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,134 QuickSpacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
139 QtGui.QSizePolicy.Expanding)135 QtGui.QSizePolicy.Expanding)
140 self.QuickLayout.addItem(QuickSpacerItem, 4, 2, 1, 1)136 self.QuickLayout.addItem(QuickSpacerItem, 4, 2, 1, 1)
141
142 # Add the Advanced Search tab137 # Add the Advanced Search tab
143 self.AdvancedTab = QtGui.QWidget()138 self.AdvancedTab = QtGui.QWidget()
144 self.AdvancedTab.setObjectName(u'AdvancedTab')139 self.AdvancedTab.setObjectName(u'AdvancedTab')
@@ -170,45 +165,37 @@
170 self.AdvancedToLabel = QtGui.QLabel(self.AdvancedTab)165 self.AdvancedToLabel = QtGui.QLabel(self.AdvancedTab)
171 self.AdvancedToLabel.setObjectName(u'AdvancedToLabel')166 self.AdvancedToLabel.setObjectName(u'AdvancedToLabel')
172 self.AdvancedLayout.addWidget(self.AdvancedToLabel, 4, 0, 1, 1)167 self.AdvancedLayout.addWidget(self.AdvancedToLabel, 4, 0, 1, 1)
173
174 self.AdvancedFromChapter = QtGui.QComboBox(self.AdvancedTab)168 self.AdvancedFromChapter = QtGui.QComboBox(self.AdvancedTab)
175 self.AdvancedFromChapter.setObjectName(u'AdvancedFromChapter')169 self.AdvancedFromChapter.setObjectName(u'AdvancedFromChapter')
176 self.AdvancedLayout.addWidget(self.AdvancedFromChapter, 3, 2, 1, 1)170 self.AdvancedLayout.addWidget(self.AdvancedFromChapter, 3, 2, 1, 1)
177 self.AdvancedFromVerse = QtGui.QComboBox(self.AdvancedTab)171 self.AdvancedFromVerse = QtGui.QComboBox(self.AdvancedTab)
178 self.AdvancedFromVerse.setObjectName(u'AdvancedFromVerse')172 self.AdvancedFromVerse.setObjectName(u'AdvancedFromVerse')
179 self.AdvancedLayout.addWidget(self.AdvancedFromVerse, 3, 3, 1, 1)173 self.AdvancedLayout.addWidget(self.AdvancedFromVerse, 3, 3, 1, 1)
180
181 self.AdvancedToChapter = QtGui.QComboBox(self.AdvancedTab)174 self.AdvancedToChapter = QtGui.QComboBox(self.AdvancedTab)
182 self.AdvancedToChapter.setObjectName(u'AdvancedToChapter')175 self.AdvancedToChapter.setObjectName(u'AdvancedToChapter')
183 self.AdvancedLayout.addWidget(self.AdvancedToChapter, 4, 2, 1, 1)176 self.AdvancedLayout.addWidget(self.AdvancedToChapter, 4, 2, 1, 1)
184 self.AdvancedToVerse = QtGui.QComboBox(self.AdvancedTab)177 self.AdvancedToVerse = QtGui.QComboBox(self.AdvancedTab)
185 self.AdvancedToVerse.setObjectName(u'AdvancedToVerse')178 self.AdvancedToVerse.setObjectName(u'AdvancedToVerse')
186 self.AdvancedLayout.addWidget(self.AdvancedToVerse, 4, 3, 1, 1)179 self.AdvancedLayout.addWidget(self.AdvancedToVerse, 4, 3, 1, 1)
187
188 self.AdvancedClearLabel = QtGui.QLabel(self.QuickTab)180 self.AdvancedClearLabel = QtGui.QLabel(self.QuickTab)
189 self.AdvancedClearLabel.setObjectName(u'QuickSearchLabel')181 self.AdvancedClearLabel.setObjectName(u'QuickSearchLabel')
190 self.AdvancedLayout.addWidget(self.AdvancedClearLabel, 5, 0, 1, 1)182 self.AdvancedLayout.addWidget(self.AdvancedClearLabel, 5, 0, 1, 1)
191 self.ClearAdvancedSearchComboBox = QtGui.QComboBox(self.QuickTab)183 self.ClearAdvancedSearchComboBox = QtGui.QComboBox(self.QuickTab)
192 self.ClearAdvancedSearchComboBox.setObjectName(u'ClearAdvancedSearchComboBox')184 self.ClearAdvancedSearchComboBox.setObjectName(u'ClearAdvancedSearchComboBox')
193 self.AdvancedLayout.addWidget(self.ClearAdvancedSearchComboBox, 5, 2, 1, 1)185 self.AdvancedLayout.addWidget(self.ClearAdvancedSearchComboBox, 5, 2, 1, 1)
194
195 self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab)186 self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab)
196 self.AdvancedSearchButton.setObjectName(u'AdvancedSearchButton')187 self.AdvancedSearchButton.setObjectName(u'AdvancedSearchButton')
197 self.AdvancedLayout.addWidget(self.AdvancedSearchButton, 5, 3, 1, 1)188 self.AdvancedLayout.addWidget(self.AdvancedSearchButton, 5, 3, 1, 1)
198 self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')189 self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')
199
200 # Add the search tab widget to the page layout190 # Add the search tab widget to the page layout
201 self.PageLayout.addWidget(self.SearchTabWidget)191 self.PageLayout.addWidget(self.SearchTabWidget)
202
203 self.BibleListView = BibleList()192 self.BibleListView = BibleList()
204 self.BibleListView.setAlternatingRowColors(True)193 self.BibleListView.setAlternatingRowColors(True)
205 self.BibleListData = TextListData()194 self.BibleListData = TextListData()
206 self.BibleListView.setModel(self.BibleListData)195 self.BibleListView.setModel(self.BibleListData)
207 self.BibleListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)196 self.BibleListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
208 self.BibleListView.setDragEnabled(True)197 self.BibleListView.setDragEnabled(True)
209
210 self.PageLayout.addWidget(self.BibleListView)198 self.PageLayout.addWidget(self.BibleListView)
211
212 # Combo Boxes199 # Combo Boxes
213 QtCore.QObject.connect(self.AdvancedVersionComboBox,200 QtCore.QObject.connect(self.AdvancedVersionComboBox,
214 QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)201 QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)
@@ -226,7 +213,7 @@
226 QtCore.QObject.connect(self.QuickSearchButton,213 QtCore.QObject.connect(self.QuickSearchButton,
227 QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)214 QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)
228 QtCore.QObject.connect(self.BibleListView,215 QtCore.QObject.connect(self.BibleListView,
229 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onRowSelected)216 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onBiblePreviewClick)
230 # Context Menus217 # Context Menus
231 self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)218 self.BibleListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
232 self.BibleListView.addAction(self.contextMenuAction(219 self.BibleListView.addAction(self.contextMenuAction(
@@ -239,7 +226,6 @@
239 self.BibleListView, u':/system/system_add.png',226 self.BibleListView, u':/system/system_add.png',
240 translate(u'BibleMediaItem',u'&Add to Service'), self.onBibleAddClick))227 translate(u'BibleMediaItem',u'&Add to Service'), self.onBibleAddClick))
241228
242
243 def retranslateUi(self):229 def retranslateUi(self):
244 log.debug(u'retranslateUi')230 log.debug(u'retranslateUi')
245 self.QuickVersionLabel.setText(translate(u'BibleMediaItem', u'Version:'))231 self.QuickVersionLabel.setText(translate(u'BibleMediaItem', u'Version:'))
@@ -262,9 +248,6 @@
262 self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Clear'))248 self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Clear'))
263 self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Keep'))249 self.ClearAdvancedSearchComboBox.addItem(translate(u'BibleMediaItem', u'Keep'))
264250
265 def onRowSelected(self, row):
266 self.onBiblePreviewClick()
267
268 def initialise(self):251 def initialise(self):
269 log.debug(u'initialise')252 log.debug(u'initialise')
270 self.loadBibles()253 self.loadBibles()
@@ -277,7 +260,8 @@
277 # load bibles into the combo boxes260 # load bibles into the combo boxes
278 for bible in bibles:261 for bible in bibles:
279 self.QuickVersionComboBox.addItem(bible)262 self.QuickVersionComboBox.addItem(bible)
280 bibles = self.parent.biblemanager.get_bibles(u'partial') # Without HTTP263 # Without HTT
264 bibles = self.parent.biblemanager.get_bibles(u'partial')
281 first = True265 first = True
282 # load bibles into the combo boxes266 # load bibles into the combo boxes
283 for bible in bibles:267 for bible in bibles:
@@ -367,7 +351,7 @@
367 self.parent.preview_controller.addServiceItem(service_item)351 self.parent.preview_controller.addServiceItem(service_item)
368352
369 def generateSlideData(self, service_item):353 def generateSlideData(self, service_item):
370 log.debug(u'Bible Preview Button pressed')354 log.debug(u'generating slide data')
371 items = self.BibleListView.selectedIndexes()355 items = self.BibleListView.selectedIndexes()
372 old_chapter = u''356 old_chapter = u''
373 raw_slides=[]357 raw_slides=[]
@@ -459,7 +443,7 @@
459 end_chapter = ''443 end_chapter = ''
460 start_verse = ''444 start_verse = ''
461 end_verse = ''445 end_verse = ''
462 search = search.replace(u' ', ' ').strip()446 search = search.replace(u' ', u' ').strip()
463 original = search447 original = search
464 message = None448 message = None
465 # Remove book beware 0 index arrays449 # Remove book beware 0 index arrays
466450
=== modified file 'openlp/plugins/custom/lib/mediaitem.py'
--- openlp/plugins/custom/lib/mediaitem.py 2009-06-05 19:00:57 +0000
+++ openlp/plugins/custom/lib/mediaitem.py 2009-06-07 19:34:24 +0000
@@ -41,9 +41,7 @@
41 mimeData = QtCore.QMimeData()41 mimeData = QtCore.QMimeData()
42 drag.setMimeData(mimeData)42 drag.setMimeData(mimeData)
43 mimeData.setText(u'Custom')43 mimeData.setText(u'Custom')
44
45 dropAction = drag.start(QtCore.Qt.CopyAction)44 dropAction = drag.start(QtCore.Qt.CopyAction)
46
47 if dropAction == QtCore.Qt.CopyAction:45 if dropAction == QtCore.Qt.CopyAction:
48 self.close()46 self.close()
4947
@@ -65,36 +63,36 @@
65 # Create buttons for the toolbar63 # Create buttons for the toolbar
66 ## New Custom Button ##64 ## New Custom Button ##
67 self.addToolbarButton(65 self.addToolbarButton(
68 translate('CustomMediaItem',u'New Custom Item'),66 translate(u'CustomMediaItem',u'New Custom Item'),
69 translate('CustomMediaItem',u'Add a new Custom Item'),67 translate(u'CustomMediaItem',u'Add a new Custom Item'),
70 ':/custom/custom_new.png', self.onCustomNewClick, 'CustomNewItem')68 u':/custom/custom_new.png', self.onCustomNewClick, u'CustomNewItem')
71 ## Edit Custom Button ##69 ## Edit Custom Button ##
72 self.addToolbarButton(70 self.addToolbarButton(
73 translate('CustomMediaItem',u'Edit Custom Item'),71 translate(u'CustomMediaItem',u'Edit Custom Item'),
74 translate('CustomMediaItem',u'Edit the selected Custom Item'),72 translate(u'CustomMediaItem',u'Edit the selected Custom Item'),
75 ':/custom/custom_edit.png', self.onCustomEditClick, 'CustomEditItem')73 u':/custom/custom_edit.png', self.onCustomEditClick, u'CustomEditItem')
76 ## Delete Custom Button ##74 ## Delete Custom Button ##
77 self.addToolbarButton(75 self.addToolbarButton(
78 translate('CustomMediaItem',u'Delete Custom Item'),76 translate(u'CustomMediaItem',u'Delete Custom Item'),
79 translate('CustomMediaItem',u'Delete the selected Custom Item'),77 translate(u'CustomMediaItem',u'Delete the selected Custom Item'),
80 ':/custom/custom_delete.png', self.onCustomDeleteClick, 'CustomDeleteItem')78 u':/custom/custom_delete.png', self.onCustomDeleteClick, u'CustomDeleteItem')
81 ## Separator Line ##79 ## Separator Line ##
82 self.addToolbarSeparator()80 self.addToolbarSeparator()
83 ## Preview Custom Button ##81 ## Preview Custom Button ##
84 self.addToolbarButton(82 self.addToolbarButton(
85 translate('CustomMediaItem',u'Preview Custom Item'),83 translate(u'CustomMediaItem',u'Preview Custom Item'),
86 translate('CustomMediaItem',u'Preview the selected Custom Item'),84 translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
87 ':/system/system_preview.png', self.onCustomPreviewClick, 'CustomPreviewItem')85 u':/system/system_preview.png', self.onCustomPreviewClick, u'CustomPreviewItem')
88 ## Live Custom Button ##86 ## Live Custom Button ##
89 self.addToolbarButton(87 self.addToolbarButton(
90 translate('CustomMediaItem',u'Go Live'),88 translate(u'CustomMediaItem',u'Go Live'),
91 translate('CustomMediaItem', u'Send the selected Custom live'),89 translate(u'CustomMediaItem', u'Send the selected Custom live'),
92 ':/system/system_live.png', self.onCustomLiveClick, 'CustomLiveItem')90 u':/system/system_live.png', self.onCustomLiveClick, u'CustomLiveItem')
93 ## Add Custom Button ##91 ## Add Custom Button ##
94 self.addToolbarButton(92 self.addToolbarButton(
95 translate('CustomMediaItem',u'Add Custom To Service'),93 translate(u'CustomMediaItem',u'Add Custom To Service'),
96 translate('CustomMediaItem',u'Add the selected Custom(s) to the service'),94 translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
97 ':/system/system_add.png', self.onCustomAddClick, 'CustomAddItem')95 u':/system/system_add.png', self.onCustomAddClick, u'CustomAddItem')
98 # Add the Customlist widget96 # Add the Customlist widget
99 self.CustomWidget = QtGui.QWidget(self)97 self.CustomWidget = QtGui.QWidget(self)
100 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)98 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
@@ -103,64 +101,36 @@
103 sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())101 sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())
104 self.CustomWidget.setSizePolicy(sizePolicy)102 self.CustomWidget.setSizePolicy(sizePolicy)
105 self.CustomWidget.setObjectName(u'CustomWidget')103 self.CustomWidget.setObjectName(u'CustomWidget')
106
107# self.SearchLayout = QtGui.QGridLayout(self.CustomWidget)
108# self.SearchLayout.setObjectName('SearchLayout')
109# self.SearchTextLabel = QtGui.QLabel(self.CustomWidget)
110# self.SearchTextLabel.setObjectName('SearchTextLabel')
111# self.SearchTextLabel.setText('Search Text:')
112# self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)
113# self.SearchTextEdit = QtGui.QLineEdit(self.CustomWidget)
114# self.SearchTextEdit.setObjectName('SearchTextEdit')
115# self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
116#
117# self.ClearTextButton = QtGui.QPushButton(self.CustomWidget)
118# self.ClearTextButton.setObjectName('ClearTextButton')
119#
120# self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)
121# self.SearchTextButton = QtGui.QPushButton(self.CustomWidget)
122# self.SearchTextButton.setObjectName('SearchTextButton')
123# self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
124 # Add the Custom widget to the page layout104 # Add the Custom widget to the page layout
125 self.PageLayout.addWidget(self.CustomWidget)105 self.PageLayout.addWidget(self.CustomWidget)
126
127 self.CustomListView = CustomList()106 self.CustomListView = CustomList()
128 self.CustomListView.setAlternatingRowColors(True)107 self.CustomListView.setAlternatingRowColors(True)
129 self.CustomListData = TextListData()108 self.CustomListData = TextListData()
130 self.CustomListView.setModel(self.CustomListData)109 self.CustomListView.setModel(self.CustomListData)
131 self.CustomListView.setDragEnabled(True)110 self.CustomListView.setDragEnabled(True)
132
133 self.PageLayout.addWidget(self.CustomListView)111 self.PageLayout.addWidget(self.CustomListView)
134
135 # Signals112 # Signals
136# QtCore.QObject.connect(self.SearchTextButton,113 QtCore.QObject.connect(self.CustomListView,
137# QtCore.SIGNAL("pressed()"), self.onSearchTextButtonClick)114 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)
138# QtCore.QObject.connect(self.ClearTextButton,
139# QtCore.SIGNAL("pressed()"), self.onClearTextButtonClick)
140# QtCore.QObject.connect(self.SearchTextEdit,
141# QtCore.SIGNAL("textChanged(const QString&)"), self.onSearchTextEditChanged)
142# QtCore.QObject.connect(self.CustomListView,
143# QtCore.SIGNAL("itemPressed(QTableWidgetItem * item)"), self.onCustomSelected)
144
145 #define and add the context menu115 #define and add the context menu
146 self.CustomListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)116 self.CustomListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
147 self.CustomListView.addAction(self.contextMenuAction(self.CustomListView,117 self.CustomListView.addAction(self.contextMenuAction(self.CustomListView,
148 ':/custom/custom_edit.png', translate('CustomMediaItem', u'&Edit Custom'),118 ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),
149 self.onCustomEditClick))119 self.onCustomEditClick))
150 self.CustomListView.addAction(self.contextMenuSeparator(self.CustomListView))120 self.CustomListView.addAction(self.contextMenuSeparator(self.CustomListView))
151 self.CustomListView.addAction(self.contextMenuAction(121 self.CustomListView.addAction(self.contextMenuAction(
152 self.CustomListView, ':/system/system_preview.png',122 self.CustomListView, ':/system/system_preview.png',
153 translate('CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))123 translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
154 self.CustomListView.addAction(self.contextMenuAction(124 self.CustomListView.addAction(self.contextMenuAction(
155 self.CustomListView, ':/system/system_live.png',125 self.CustomListView, ':/system/system_live.png',
156 translate('CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))126 translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
157 self.CustomListView.addAction(self.contextMenuAction(127 self.CustomListView.addAction(self.contextMenuAction(
158 self.CustomListView, ':/system/system_add.png',128 self.CustomListView, ':/system/system_add.png',
159 translate('CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))129 translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
160130
161# def retranslateUi(self):131# def retranslateUi(self):
162# self.ClearTextButton.setText(translate('CustomMediaItem', u'Clear'))132# self.ClearTextButton.setText(translate(u'CustomMediaItem', u'Clear'))
163# self.SearchTextButton.setText(translate('CustomMediaItem', u'Search'))133# self.SearchTextButton.setText(translate(u'CustomMediaItem', u'Search'))
164134
165 def initialise(self):135 def initialise(self):
166 self.loadCustomList(self.parent.custommanager.get_all_slides())136 self.loadCustomList(self.parent.custommanager.get_all_slides())
@@ -177,7 +147,8 @@
177 self.SearchTextEdit.clear()147 self.SearchTextEdit.clear()
178148
179 def onSearchTextEditChanged(self, text):149 def onSearchTextEditChanged(self, text):
180 if len(text) > 3: # only search if > 3 characters150 # only search if > 3 characters
151 if len(text) > 3:
181 self.onSearchTextButtonClick()152 self.onSearchTextButtonClick()
182153
183 def onSearchTextButtonClick(self):154 def onSearchTextButtonClick(self):
@@ -209,21 +180,21 @@
209 def onCustomPreviewClick(self):180 def onCustomPreviewClick(self):
210 log.debug(u'Custom Preview Requested')181 log.debug(u'Custom Preview Requested')
211 service_item = ServiceItem(self.parent)182 service_item = ServiceItem(self.parent)
212 service_item.addIcon( ":/media/media_song.png")183 service_item.addIcon(u':/media/media_song.png')
213 self.generateSlideData(service_item)184 self.generateSlideData(service_item)
214 self.parent.preview_controller.addServiceItem(service_item)185 self.parent.preview_controller.addServiceItem(service_item)
215186
216 def onCustomLiveClick(self):187 def onCustomLiveClick(self):
217 log.debug(u'Custom Live Requested')188 log.debug(u'Custom Live Requested')
218 service_item = ServiceItem(self.parent)189 service_item = ServiceItem(self.parent)
219 service_item.addIcon( ":/media/media_song.png")190 service_item.addIcon(u':/media/media_song.png')
220 self.generateSlideData(service_item)191 self.generateSlideData(service_item)
221 self.parent.live_controller.addServiceItem(service_item)192 self.parent.live_controller.addServiceItem(service_item)
222193
223 def onCustomAddClick(self):194 def onCustomAddClick(self):
224 log.debug(u'Custom Add Requested')195 log.debug(u'Custom Add Requested')
225 service_item = ServiceItem(self.parent)196 service_item = ServiceItem(self.parent)
226 service_item.addIcon( ":/media/media_song.png")197 service_item.addIcon(u':/media/media_song.png')
227 self.generateSlideData(service_item)198 self.generateSlideData(service_item)
228 self.parent.service_manager.addServiceItem(service_item)199 self.parent.service_manager.addServiceItem(service_item)
229200
230201
=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py 2009-06-05 19:00:57 +0000
+++ openlp/plugins/images/lib/mediaitem.py 2009-06-07 19:34:24 +0000
@@ -42,9 +42,7 @@
42 mimeData = QtCore.QMimeData()42 mimeData = QtCore.QMimeData()
43 drag.setMimeData(mimeData)43 drag.setMimeData(mimeData)
44 mimeData.setText(u'Image')44 mimeData.setText(u'Image')
45
46 dropAction = drag.start(QtCore.Qt.CopyAction)45 dropAction = drag.start(QtCore.Qt.CopyAction)
47
48 if dropAction == QtCore.Qt.CopyAction:46 if dropAction == QtCore.Qt.CopyAction:
49 self.close()47 self.close()
5048
@@ -65,32 +63,31 @@
65 # Create buttons for the toolbar63 # Create buttons for the toolbar
66 ## New Song Button ##64 ## New Song Button ##
67 self.addToolbarButton(65 self.addToolbarButton(
68 translate('ImageMediaItem', u'Load Image'),66 translate(u'ImageMediaItem', u'Load Image'),
69 translate('ImageMediaItem', u'Load images into openlp.org'),67 translate(u'ImageMediaItem', u'Load images into openlp.org'),
70 ':/images/image_load.png', self.onImagesNewClick, 'ImageNewItem')68 u':/images/image_load.png', self.onImagesNewClick, u'ImageNewItem')
71 ## Delete Song Button ##69 ## Delete Song Button ##
72 self.addToolbarButton(70 self.addToolbarButton(
73 translate('ImageMediaItem', u'Delete Image'),71 translate(u'ImageMediaItem', u'Delete Image'),
74 translate('ImageMediaItem', u'Delete the selected image'),72 translate(u'ImageMediaItem', u'Delete the selected image'),
75 ':/images/image_delete.png', self.onImageDeleteClick, 'ImageDeleteItem')73 u':/images/image_delete.png', self.onImageDeleteClick, u'ImageDeleteItem')
76 ## Separator Line ##74 ## Separator Line ##
77 self.addToolbarSeparator()75 self.addToolbarSeparator()
78 ## Preview Song Button ##76 ## Preview Song Button ##
79 self.addToolbarButton(77 self.addToolbarButton(
80 translate('ImageMediaItem', u'Preview Song'),78 translate(u'ImageMediaItem', u'Preview Song'),
81 translate('ImageMediaItem', u'Preview the selected image'),79 translate(u'ImageMediaItem', u'Preview the selected image'),
82 ':/system/system_preview.png', self.onImagePreviewClick, 'ImagePreviewItem')80 u':/system/system_preview.png', self.onImagePreviewClick, u'ImagePreviewItem')
83 ## Live Song Button ##81 ## Live Song Button ##
84 self.addToolbarButton(82 self.addToolbarButton(
85 translate('ImageMediaItem', u'Go Live'),83 translate(u'ImageMediaItem', u'Go Live'),
86 translate('ImageMediaItem', u'Send the selected image live'),84 translate(u'ImageMediaItem', u'Send the selected image live'),
87 ':/system/system_live.png', self.onImageLiveClick, 'ImageLiveItem')85 u':/system/system_live.png', self.onImageLiveClick, u'ImageLiveItem')
88 ## Add Song Button ##86 ## Add Song Button ##
89 self.addToolbarButton(87 self.addToolbarButton(
90 translate('ImageMediaItem', u'Add Image To Service'),88 translate(u'ImageMediaItem', u'Add Image To Service'),
91 translate('ImageMediaItem', u'Add the selected image(s) to the service'),89 translate(u'ImageMediaItem', u'Add the selected image(s) to the service'),
92 ':/system/system_add.png', self.onImageAddClick, 'ImageAddItem')90 u':/system/system_add.png', self.onImageAddClick, u'ImageAddItem')
93
94 #Add the Image List widget91 #Add the Image List widget
95 self.ImageListView = ImageList()92 self.ImageListView = ImageList()
96 self.ImageListView.uniformItemSizes = True93 self.ImageListView.uniformItemSizes = True
@@ -101,33 +98,29 @@
101 self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)98 self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
102 self.ImageListView.setAlternatingRowColors(True)99 self.ImageListView.setAlternatingRowColors(True)
103 self.ImageListView.setDragEnabled(True)100 self.ImageListView.setDragEnabled(True)
104 self.ImageListView.setObjectName('ImageListView')101 self.ImageListView.setObjectName(u'ImageListView')
105
106 self.PageLayout.addWidget(self.ImageListView)102 self.PageLayout.addWidget(self.ImageListView)
107
108 #define and add the context menu103 #define and add the context menu
109 self.ImageListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)104 self.ImageListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
110
111 self.ImageListView.addAction(self.contextMenuAction(105 self.ImageListView.addAction(self.contextMenuAction(
112 self.ImageListView, ':/system/system_preview.png',106 self.ImageListView, ':/system/system_preview.png',
113 translate('ImageMediaItem', u'&Preview Image'),107 translate(u'ImageMediaItem', u'&Preview Image'),
114 self.onImagePreviewClick))108 self.onImagePreviewClick))
115 self.ImageListView.addAction(self.contextMenuAction(109 self.ImageListView.addAction(self.contextMenuAction(
116 self.ImageListView, ':/system/system_live.png',110 self.ImageListView, ':/system/system_live.png',
117 translate('ImageMediaItem', u'&Show Live'),111 translate(u'ImageMediaItem', u'&Show Live'),
118 self.onImageLiveClick))112 self.onImageLiveClick))
119 self.ImageListView.addAction(self.contextMenuAction(113 self.ImageListView.addAction(self.contextMenuAction(
120 self.ImageListView, ':/system/system_add.png',114 self.ImageListView, ':/system/system_add.png',
121 translate('ImageMediaItem', u'&Add to Service'),115 translate(u'ImageMediaItem', u'&Add to Service'),
122 self.onImageAddClick))116 self.onImageAddClick))
123117
124
125 def initialise(self):118 def initialise(self):
126 self.loadImageList(self.parent.config.load_list(u'images'))119 self.loadImageList(self.parent.config.load_list(u'images'))
127120
128 def onImagesNewClick(self):121 def onImagesNewClick(self):
129 files = QtGui.QFileDialog.getOpenFileNames(None,122 files = QtGui.QFileDialog.getOpenFileNames(None,
130 translate('ImageMediaItem', u'Select Image(s)'),123 translate(u'ImageMediaItem', u'Select Image(s)'),
131 self.parent.config.get_last_dir(),124 self.parent.config.get_last_dir(),
132 u'Images (*.jpg *.gif *.png *.bmp)')125 u'Images (*.jpg *.gif *.png *.bmp)')
133 log.info(u'New image(s)', str(files))126 log.info(u'New image(s)', str(files))
@@ -160,20 +153,20 @@
160 def onImagePreviewClick(self):153 def onImagePreviewClick(self):
161 log.debug(u'Image Preview Requested')154 log.debug(u'Image Preview Requested')
162 service_item = ServiceItem(self.parent)155 service_item = ServiceItem(self.parent)
163 service_item.addIcon( ":/media/media_image.png")156 service_item.addIcon(u':/media/media_image.png')
164 self.generateSlideData(service_item)157 self.generateSlideData(service_item)
165 self.parent.preview_controller.addServiceItem(service_item)158 self.parent.preview_controller.addServiceItem(service_item)
166159
167 def onImageLiveClick(self):160 def onImageLiveClick(self):
168 log.debug(u'Image Live Requested')161 log.debug(u'Image Live Requested')
169 service_item = ServiceItem(self.parent)162 service_item = ServiceItem(self.parent)
170 service_item.addIcon( ":/media/media_image.png")163 service_item.addIcon(u':/media/media_image.png')
171 self.generateSlideData(service_item)164 self.generateSlideData(service_item)
172 self.parent.live_controller.addServiceItem(service_item)165 self.parent.live_controller.addServiceItem(service_item)
173166
174 def onImageAddClick(self):167 def onImageAddClick(self):
175 log.debug(u'Image Add Requested')168 log.debug(u'Image Add Requested')
176 service_item = ServiceItem(self.parent)169 service_item = ServiceItem(self.parent)
177 service_item.addIcon( ":/media/media_image.png")170 service_item.addIcon(u':/media/media_image.png')
178 self.generateSlideData(service_item)171 self.generateSlideData(service_item)
179 self.parent.service_manager.addServiceItem(service_item)172 self.parent.service_manager.addServiceItem(service_item)
180173
=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py 2009-06-05 19:00:57 +0000
+++ openlp/plugins/songs/lib/mediaitem.py 2009-06-08 05:04:06 +0000
@@ -43,9 +43,7 @@
43 mimeData = QtCore.QMimeData()43 mimeData = QtCore.QMimeData()
44 drag.setMimeData(mimeData)44 drag.setMimeData(mimeData)
45 mimeData.setText(u'Song')45 mimeData.setText(u'Song')
46
47 dropAction = drag.start(QtCore.Qt.CopyAction)46 dropAction = drag.start(QtCore.Qt.CopyAction)
48
49 if dropAction == QtCore.Qt.CopyAction:47 if dropAction == QtCore.Qt.CopyAction:
50 self.close()48 self.close()
5149
@@ -54,8 +52,8 @@
54 This is the custom media manager item for Songs.52 This is the custom media manager item for Songs.
55 """53 """
56 global log54 global log
57 log = logging.getLogger("SongMediaItem")55 log = logging.getLogger(u'SongMediaItem')
58 log.info("Song Media Item loaded")56 log.info(u'Song Media Item loaded')
5957
60 def __init__(self, parent, icon, title):58 def __init__(self, parent, icon, title):
61 MediaManagerItem.__init__(self, parent, icon, title)59 MediaManagerItem.__init__(self, parent, icon, title)
@@ -66,30 +64,30 @@
66 self.addToolbar()64 self.addToolbar()
67 # Create buttons for the toolbar65 # Create buttons for the toolbar
68 ## New Song Button ##66 ## New Song Button ##
69 self.addToolbarButton(translate('SongMediaItem', u'New Song'),67 self.addToolbarButton(translate(u'SongMediaItem', u'New Song'),
70 translate('SongMediaItem', u'Add a new song'),68 translate(u'SongMediaItem', u'Add a new song'),
71 ':/songs/song_new.png', self.onSongNewClick, 'SongNewItem')69 ':/songs/song_new.png', self.onSongNewClick, 'SongNewItem')
72 ## Edit Song Button ##70 ## Edit Song Button ##
73 self.addToolbarButton(translate('SongMediaItem', u'Edit Song'),71 self.addToolbarButton(translate(u'SongMediaItem', u'Edit Song'),
74 translate('SongMediaItem', u'Edit the selected song'),72 translate(u'SongMediaItem', u'Edit the selected song'),
75 ':/songs/song_edit.png', self.onSongEditClick, 'SongEditItem')73 ':/songs/song_edit.png', self.onSongEditClick, 'SongEditItem')
76 ## Delete Song Button ##74 ## Delete Song Button ##
77 self.addToolbarButton(translate('SongMediaItem', u'Delete Song'),75 self.addToolbarButton(translate(u'SongMediaItem', u'Delete Song'),
78 translate('SongMediaItem', u'Delete the selected song'),76 translate(u'SongMediaItem', u'Delete the selected song'),
79 ':/songs/song_delete.png', self.onSongDeleteClick, 'SongDeleteItem')77 ':/songs/song_delete.png', self.onSongDeleteClick, 'SongDeleteItem')
80 ## Separator Line ##78 ## Separator Line ##
81 self.addToolbarSeparator()79 self.addToolbarSeparator()
82 ## Preview Song Button ##80 ## Preview Song Button ##
83 self.addToolbarButton(translate('SongMediaItem', u'Preview Song'),81 self.addToolbarButton(translate(u'SongMediaItem', u'Preview Song'),
84 translate('SongMediaItem', u'Preview the selected song'),82 translate(u'SongMediaItem', u'Preview the selected song'),
85 ':/system/system_preview.png', self.onSongPreviewClick, 'SongPreviewItem')83 ':/system/system_preview.png', self.onSongPreviewClick, 'SongPreviewItem')
86 ## Live Song Button ##84 ## Live Song Button ##
87 self.addToolbarButton(translate('SongMediaItem', u'Go Live'),85 self.addToolbarButton(translate(u'SongMediaItem', u'Go Live'),
88 translate('SongMediaItem', u'Send the selected song live'),86 translate(u'SongMediaItem', u'Send the selected song live'),
89 ':/system/system_live.png', self.onSongLiveClick, 'SongLiveItem')87 ':/system/system_live.png', self.onSongLiveClick, 'SongLiveItem')
90 ## Add Song Button ##88 ## Add Song Button ##
91 self.addToolbarButton(translate('SongMediaItem', u'Add Song To Service'),89 self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
92 translate('SongMediaItem', u'Add the selected song(s) to the service'),90 translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
93 ':/system/system_add.png', self.onSongAddClick, 'SongAddItem')91 ':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
94 ## Add the songlist widget ##92 ## Add the songlist widget ##
95 # Create the tab widget93 # Create the tab widget
@@ -99,92 +97,77 @@
99 sizePolicy.setVerticalStretch(0)97 sizePolicy.setVerticalStretch(0)
100 sizePolicy.setHeightForWidth(self.SongWidget.sizePolicy().hasHeightForWidth())98 sizePolicy.setHeightForWidth(self.SongWidget.sizePolicy().hasHeightForWidth())
101 self.SongWidget.setSizePolicy(sizePolicy)99 self.SongWidget.setSizePolicy(sizePolicy)
102 self.SongWidget.setObjectName('SongWidget')100 self.SongWidget.setObjectName(u'SongWidget')
103 self.SearchLayout = QtGui.QGridLayout(self.SongWidget)101 self.SearchLayout = QtGui.QGridLayout(self.SongWidget)
104 self.SearchLayout.setObjectName('SearchLayout')102 self.SearchLayout.setObjectName(u'SearchLayout')
105 self.SearchTypeComboBox = QtGui.QComboBox(self.SongWidget)103 self.SearchTypeComboBox = QtGui.QComboBox(self.SongWidget)
106 self.SearchTypeComboBox.setObjectName('SearchTypeComboBox')104 self.SearchTypeComboBox.setObjectName(u'SearchTypeComboBox')
107 self.SearchLayout.addWidget(self.SearchTypeComboBox, 0, 1, 1, 2)105 self.SearchLayout.addWidget(self.SearchTypeComboBox, 0, 1, 1, 2)
108 self.SearchTypeLabel = QtGui.QLabel(self.SongWidget)106 self.SearchTypeLabel = QtGui.QLabel(self.SongWidget)
109 self.SearchTypeLabel.setObjectName('SearchTypeLabel')107 self.SearchTypeLabel.setObjectName(u'SearchTypeLabel')
110 self.SearchLayout.addWidget(self.SearchTypeLabel, 0, 0, 1, 1)108 self.SearchLayout.addWidget(self.SearchTypeLabel, 0, 0, 1, 1)
111 self.SearchTextLabel = QtGui.QLabel(self.SongWidget)109 self.SearchTextLabel = QtGui.QLabel(self.SongWidget)
112 self.SearchTextLabel.setObjectName('SearchTextLabel')110 self.SearchTextLabel.setObjectName(u'SearchTextLabel')
113 self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)111 self.SearchLayout.addWidget(self.SearchTextLabel, 2, 0, 1, 1)
114 self.SearchTextEdit = QtGui.QLineEdit(self.SongWidget)112 self.SearchTextEdit = QtGui.QLineEdit(self.SongWidget)
115 self.SearchTextEdit.setObjectName('SearchTextEdit')113 self.SearchTextEdit.setObjectName(u'SearchTextEdit')
116 self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)114 self.SearchLayout.addWidget(self.SearchTextEdit, 2, 1, 1, 2)
117 self.ClearTextButton = QtGui.QPushButton(self.SongWidget)115 self.ClearTextButton = QtGui.QPushButton(self.SongWidget)
118 self.ClearTextButton.setObjectName('ClearTextButton')116 self.ClearTextButton.setObjectName(u'ClearTextButton')
119 self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)117 self.SearchLayout.addWidget(self.ClearTextButton, 3, 1, 1, 1)
120 self.SearchTextButton = QtGui.QPushButton(self.SongWidget)118 self.SearchTextButton = QtGui.QPushButton(self.SongWidget)
121 self.SearchTextButton.setObjectName('SearchTextButton')119 self.SearchTextButton.setObjectName(u'SearchTextButton')
122 self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)120 self.SearchLayout.addWidget(self.SearchTextButton, 3, 2, 1, 1)
123 # Add the song widget to the page layout121 # Add the song widget to the page layout
124 self.PageLayout.addWidget(self.SongWidget)122 self.PageLayout.addWidget(self.SongWidget)
125
126 self.SongListView = SongList()123 self.SongListView = SongList()
127 self.SongListView.setAlternatingRowColors(True)124 self.SongListView.setAlternatingRowColors(True)
128 self.SongListData = TextListData()125 self.SongListData = TextListData()
129 self.SongListView.setModel(self.SongListData)126 self.SongListView.setModel(self.SongListData)
130 self.SongListView.setDragEnabled(True)127 self.SongListView.setDragEnabled(True)
131128 self.SongListView.setObjectName(u'SongListView')
132# self.SongListView = QtGui.QTableWidget()
133# self.SongListView.setColumnCount(2)
134# self.SongListView.setColumnHidden(0, True)
135# self.SongListView.setColumnWidth(1, 240)
136# self.SongListView.setShowGrid(False)
137# self.SongListView.setSortingEnabled(False)
138# self.SongListView.setAlternatingRowColors(True)
139# self.SongListView.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
140# self.SongListView.horizontalHeader().setVisible(False)
141# self.SongListView.verticalHeader().setVisible(False)
142# self.SongListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
143 self.SongListView.setObjectName('SongListView')
144
145 self.PageLayout.addWidget(self.SongListView)129 self.PageLayout.addWidget(self.SongListView)
146 self.SongListView.setDragEnabled(True)130 self.SongListView.setDragEnabled(True)
147
148 # Signals and slots131 # Signals and slots
149 QtCore.QObject.connect(self.SearchTextButton,132 QtCore.QObject.connect(self.SearchTextButton,
150 QtCore.SIGNAL('pressed()'), self.onSearchTextButtonClick)133 QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)
151 QtCore.QObject.connect(self.ClearTextButton,134 QtCore.QObject.connect(self.ClearTextButton,
152 QtCore.SIGNAL('pressed()'), self.onClearTextButtonClick)135 QtCore.SIGNAL(u'pressed()'), self.onClearTextButtonClick)
153 QtCore.QObject.connect(self.SearchTextEdit,136 QtCore.QObject.connect(self.SearchTextEdit,
154 QtCore.SIGNAL('textChanged(const QString&)'), self.onSearchTextEditChanged)137 QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
155# QtCore.QObject.connect(self.SongListView,138 QtCore.QObject.connect(self.SongListView,
156# QtCore.SIGNAL('itemPressed(QTableWidgetItem * item)'), self.onSongSelected)139 QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
157 #define and add the context menu140 #define and add the context menu
158 self.SongListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)141 self.SongListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
159 self.SongListView.addAction(self.contextMenuAction(self.SongListView,142 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
160 ':/songs/song_new.png', translate('SongMediaItem', u'&Edit Song'),143 ':/songs/song_new.png', translate(u'SongMediaItem', u'&Edit Song'),
161 self.onSongEditClick))144 self.onSongEditClick))
162 self.SongListView.addAction(self.contextMenuSeparator(self.SongListView))145 self.SongListView.addAction(self.contextMenuSeparator(self.SongListView))
163 self.SongListView.addAction(self.contextMenuAction(self.SongListView,146 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
164 ':/system/system_preview.png', translate('SongMediaItem', u'&Preview Song'),147 ':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
165 self.onSongPreviewClick))148 self.onSongPreviewClick))
166 self.SongListView.addAction(self.contextMenuAction(self.SongListView,149 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
167 ':/system/system_live.png', translate('SongMediaItem', u'&Show Live'),150 ':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
168 self.onSongLiveClick))151 self.onSongLiveClick))
169 self.SongListView.addAction(self.contextMenuAction(self.SongListView,152 self.SongListView.addAction(self.contextMenuAction(self.SongListView,
170 ':/system/system_add.png', translate('SongMediaItem', u'&Add to Service'),153 ':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
171 self.onSongAddClick))154 self.onSongAddClick))
172155
173 def retranslateUi(self):156 def retranslateUi(self):
174 self.SearchTypeLabel.setText(translate('SongMediaItem', u'Search Type:'))157 self.SearchTypeLabel.setText(translate(u'SongMediaItem', u'Search Type:'))
175 self.SearchTextLabel.setText(translate('SongMediaItem', u'Search Text:'))158 self.SearchTextLabel.setText(translate(u'SongMediaItem', u'Search Text:'))
176 self.ClearTextButton.setText(translate('SongMediaItem', u'Clear'))159 self.ClearTextButton.setText(translate(u'SongMediaItem', u'Clear'))
177 self.SearchTextButton.setText(translate('SongMediaItem', u'Search'))160 self.SearchTextButton.setText(translate(u'SongMediaItem', u'Search'))
178161
179 def initialise(self):162 def initialise(self):
180 self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Titles'))163 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Titles'))
181 self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Lyrics'))164 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Lyrics'))
182 self.SearchTypeComboBox.addItem(translate('SongMediaItem', u'Authors'))165 self.SearchTypeComboBox.addItem(translate(u'SongMediaItem', u'Authors'))
183166
184 def displayResults(self, searchresults):167 def displayResults(self, searchresults):
185 log.debug("display results")168 log.debug(u'display results')
186 self.SongListData.resetStore()169 self.SongListData.resetStore()
187 #log.debug("Records returned from search %s", len(searchresults))170 #log.debug(u'Records returned from search %s", len(searchresults))
188 for song in searchresults:171 for song in searchresults:
189 author_list = u''172 author_list = u''
190 for author in song.authors:173 for author in song.authors:
@@ -192,7 +175,6 @@
192 author_list = author_list + u', '175 author_list = author_list + u', '
193 author_list = author_list + author.display_name176 author_list = author_list + author.display_name
194 song_detail = str(u'%s (%s)' % (str(song.title), str(author_list)))177 song_detail = str(u'%s (%s)' % (str(song.title), str(author_list)))
195
196 self.SongListData.addRow(song.id,song_detail)178 self.SongListData.addRow(song.id,song_detail)
197179
198 def onClearTextButtonClick(self):180 def onClearTextButtonClick(self):
@@ -205,7 +187,7 @@
205 search_length = 3187 search_length = 3
206 if self.SearchTypeComboBox.currentIndex() == 1:188 if self.SearchTypeComboBox.currentIndex() == 1:
207 search_length = 7189 search_length = 7
208 if len(text) > search_length: # only search if > 3 characters190 if len(text) > search_length:
209 self.onSearchTextButtonClick()191 self.onSearchTextButtonClick()
210192
211 def onSearchTextButtonClick(self):193 def onSearchTextButtonClick(self):
@@ -213,13 +195,13 @@
213 search_results = []195 search_results = []
214 search_type = self.SearchTypeComboBox.currentIndex()196 search_type = self.SearchTypeComboBox.currentIndex()
215 if search_type == 0:197 if search_type == 0:
216 log.debug("Titles Search")198 log.debug(u'Titles Search')
217 search_results = self.parent.songmanager.search_song_title(search_keywords)199 search_results = self.parent.songmanager.search_song_title(search_keywords)
218 elif search_type == 1:200 elif search_type == 1:
219 log.debug("Lyrics Search")201 log.debug(u'Lyrics Search')
220 search_results = self.parent.songmanager.search_song_lyrics(search_keywords)202 search_results = self.parent.songmanager.search_song_lyrics(search_keywords)
221 elif search_type == 2:203 elif search_type == 2:
222 log.debug("Authors Search")204 log.debug(u'Authors Search')
223 #searchresults = self.songmanager.get_song_from_author(searchtext)205 #searchresults = self.songmanager.get_song_from_author(searchtext)
224 self.displayResults(search_results)206 self.displayResults(search_results)
225207
@@ -242,7 +224,7 @@
242224
243 def onSongPreviewClick(self):225 def onSongPreviewClick(self):
244 service_item = ServiceItem(self.parent)226 service_item = ServiceItem(self.parent)
245 service_item.addIcon( ":/media/media_song.png")227 service_item.addIcon(u':/media/media_song.png')
246 self.generateSlideData(service_item)228 self.generateSlideData(service_item)
247 self.parent.preview_controller.addServiceItem(service_item)229 self.parent.preview_controller.addServiceItem(service_item)
248230
@@ -267,12 +249,12 @@
267249
268 def onSongLiveClick(self):250 def onSongLiveClick(self):
269 service_item = ServiceItem(self.parent)251 service_item = ServiceItem(self.parent)
270 service_item.addIcon( ":/media/media_song.png")252 service_item.addIcon(u':/media/media_song.png')
271 self.generateSlideData(service_item)253 self.generateSlideData(service_item)
272 self.parent.live_controller.addServiceItem(service_item)254 self.parent.live_controller.addServiceItem(service_item)
273255
274 def onSongAddClick(self):256 def onSongAddClick(self):
275 service_item = ServiceItem(self.parent)257 service_item = ServiceItem(self.parent)
276 service_item.addIcon( ":/media/media_song.png")258 service_item.addIcon( u':/media/media_song.png')
277 self.generateSlideData(service_item)259 self.generateSlideData(service_item)
278 self.parent.service_manager.addServiceItem(service_item)260 self.parent.service_manager.addServiceItem(service_item)