Refactor Service Item and clean up Slide Controller

bzr-revno: 673
This commit is contained in:
Tim Bentley 2009-11-15 16:57:11 +00:00
commit 6139f049d4
8 changed files with 160 additions and 159 deletions

View File

@ -193,17 +193,17 @@ class RenderManager(object):
self.renderer.set_theme(themedata)
self.build_text_rectangle(themedata)
self.renderer.set_frame_dest(self.width, self.height, True)
verse = []
verse.append(u'Amazing Grace!')
verse.append(u'How sweet the sound')
verse.append(u'To save a wretch like me;')
verse.append(u'I once was lost but now am found,')
verse.append(u'Was blind, but now I see.')
verse = u'Amazing Grace!\n'\
'How sweet the sound\n'\
'To save a wretch like me;\n'\
'I once was lost but now am found,\n'\
'Was blind, but now I see.'
footer = []
footer.append(u'Amazing Grace (John Newton)' )
footer.append(u'Public Domain')
footer.append(u'CCLI xxx')
return self.renderer.generate_frame_from_lines(verse, footer)
formatted = self.renderer.format_slide(verse, False)
return self.renderer.generate_frame_from_lines(formatted[0], footer)
def format_slide(self, words):
"""

View File

@ -29,7 +29,7 @@ import uuid
from PyQt4 import QtGui
from openlp.core.lib import buildIcon
from openlp.core.lib import buildIcon, Receiver
class ServiceItemType(object):
"""
@ -49,31 +49,28 @@ class ServiceItem(object):
log = logging.getLogger(u'ServiceItem')
log.info(u'Service Item created')
def __init__(self, hostplugin=None):
def __init__(self, plugin=None):
"""
Set up the service item.
``hostplugin``
``plugin``
The plugin that this service item belongs to.
"""
self.plugin = hostplugin
if hostplugin:
self.RenderManager = self.plugin.render_manager
self.shortname = hostplugin.name
self.name = self.plugin.name
if plugin:
self.RenderManager = plugin.render_manager
self.name = plugin.name
self.title = u''
self.audit = u''
self.items = []
self.iconic_representation = None
self.raw_slides = None
self.frames = []
self.raw_footer = None
self.theme = None
self.service_item_path = None
self.service_item_type = None
self.editEnabled = False
self.service_frames = []
self.uuid = unicode(uuid.uuid1())
self.edit_enabled = False
self._raw_frames = []
self._display_frames = []
self._uuid = unicode(uuid.uuid1())
def addIcon(self, icon):
"""
@ -92,32 +89,27 @@ class ServiceItem(object):
The render method is what generates the frames for the screen.
"""
log.debug(u'Render called')
self.frames = []
self._display_frames = []
if self.service_item_type == ServiceItemType.Text:
log.debug(u'Formatting slides')
if self.theme is None:
self.RenderManager.set_override_theme(None)
else:
self.RenderManager.set_override_theme(self.theme)
for slide in self.service_frames:
for slide in self._raw_frames:
before = time.time()
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
for format in formated:
frame = None
lines = u''
for line in format:
lines += line + u'\n'
title = lines.split(u'\n')[0]
self.frames.append({u'title': title, u'text': lines,
u'image': frame})
log.info(u'Formatting took %4s' % (time.time() - before))
elif self.service_item_type == ServiceItemType.Command:
self.frames = self.service_frames
self._display_frames.append({u'title': title, u'text': lines})
log.log(15, u'Formatting took %4s' % (time.time() - before))
elif self.service_item_type == ServiceItemType.Image:
for slide in self.service_frames:
for slide in self._raw_frames:
slide[u'image'] = \
self.RenderManager.resize_image(slide[u'image'])
self.frames = self.service_frames
else:
log.error(u'Invalid value renderer :%s' % self.service_item_type)
@ -132,19 +124,19 @@ class ServiceItem(object):
self.RenderManager.set_override_theme(None)
else:
self.RenderManager.set_override_theme(self.theme)
format = self.frames[row][u'text'].split(u'\n')
format = self._display_frames[row][u'text'].split(u'\n')
frame = self.RenderManager.generate_slide(format,
self.raw_footer)
return frame
def add_from_image(self, path, frame_title, image):
def add_from_image(self, path, title, image):
"""
Add an image slide to the service item.
``path``
The directory in which the image file is located.
``frame_title``
``title``
A title for the slide in the service item.
``image``
@ -152,10 +144,10 @@ class ServiceItem(object):
"""
self.service_item_type = ServiceItemType.Image
self.service_item_path = path
self.service_frames.append(
{u'title': frame_title, u'text': None, u'image': image})
self._raw_frames.append(
{u'title': title, u'image': image})
def add_from_text(self, frame_title, raw_slide):
def add_from_text(self, title, raw_slide):
"""
Add a text slide to the service item.
@ -166,24 +158,27 @@ class ServiceItem(object):
The raw text of the slide.
"""
self.service_item_type = ServiceItemType.Text
frame_title = frame_title.split(u'\n')[0]
self.service_frames.append(
{u'title': frame_title, u'raw_slide': raw_slide})
title = title.split(u'\n')[0]
self._raw_frames.append(
{u'title': title, u'raw_slide': raw_slide})
def add_from_command(self, path, frame_title, image):
def add_from_command(self, path, file_name, image):
"""
Add a slide from a command.
``frame_title``
``path``
The title of the slide in the service item.
``command``
``file_name``
The title of the slide in the service item.
``image``
The command of/for the slide.
"""
self.service_item_type = ServiceItemType.Command
self.service_item_path = path
self.service_frames.append(
{u'title': frame_title, u'command': None, u'text':None, u'image': image})
self._raw_frames.append(
{u'title': file_name, u'image': image})
def get_service_repr(self):
"""
@ -192,7 +187,7 @@ class ServiceItem(object):
"""
service_header = {
u'name': self.name.lower(),
u'plugin': self.shortname,
u'plugin': self.name,
u'theme':self.theme,
u'title':self.title,
u'icon':self.icon,
@ -202,13 +197,13 @@ class ServiceItem(object):
}
service_data = []
if self.service_item_type == ServiceItemType.Text:
for slide in self.service_frames:
for slide in self._raw_frames:
service_data.append(slide)
elif self.service_item_type == ServiceItemType.Image:
for slide in self.service_frames:
for slide in self._raw_frames:
service_data.append(slide[u'title'])
elif self.service_item_type == ServiceItemType.Command:
for slide in self.service_frames:
for slide in self._raw_frames:
service_data.append({u'title':slide[u'title'], u'image':slide[u'image']})
return {u'header': service_header, u'data': service_data}
@ -234,7 +229,7 @@ class ServiceItem(object):
self.audit = header[u'audit']
if self.service_item_type == ServiceItemType.Text:
for slide in serviceitem[u'serviceitem'][u'data']:
self.service_frames.append(slide)
self._raw_frames.append(slide)
elif self.service_item_type == ServiceItemType.Image:
for text_image in serviceitem[u'serviceitem'][u'data']:
filename = os.path.join(path, text_image)
@ -247,11 +242,11 @@ class ServiceItem(object):
def merge(self, other):
"""
Updates the uuid with the value from the original one
The uuid is unique for a give service item but this allows one to
Updates the _uuid with the value from the original one
The _uuid is unique for a give service item but this allows one to
replace an original version.
"""
self.uuid = other.uuid
self._uuid = other._uuid
def __eq__(self, other):
"""
@ -259,25 +254,51 @@ class ServiceItem(object):
"""
if not other:
return False
return self.uuid == other.uuid
return self._uuid == other._uuid
def __ne__(self, other):
"""
Confirms the service items are not for the same instance
"""
return self.uuid != other.uuid
return self._uuid != other._uuid
def isSong(self):
def is_song(self):
return self.name == u'Songs'
def isMedia(self):
def is_media(self):
return self.name.lower() == u'media'
def isCommand(self):
def is_command(self):
return self.service_item_type == ServiceItemType.Command
def isImage(self):
def is_image(self):
return self.service_item_type == ServiceItemType.Image
def isText(self):
def is_text(self):
return self.service_item_type == ServiceItemType.Text
def get_frames(self):
if self.service_item_type == ServiceItemType.Text:
return self._display_frames
else:
return self._raw_frames
def get_rendered_frame(self, row):
"""
Returns the correct frame for a given list and
renders it if required.
"""
if self.service_item_type == ServiceItemType.Text:
return self.render_individual(row)
else:
return self._raw_frames[row][u'image']
def get_frame_title(self, row=0):
"""
Returns the title of the raw frame
"""
return self._raw_frames[row][u'title']
def request_audit(self):
if self.audit:
Receiver.send_message(u'songusage_live', self.audit)

View File

@ -47,7 +47,7 @@ class ServiceManagerList(QtGui.QTreeWidget):
# else:
# pos = parentitem.data(0, QtCore.Qt.UserRole).toInt()[0]
# serviceItem = self.parent.serviceItems[pos - 1]
# if serviceItem[u'data'].editEnabled:
# if serviceItem[u'data'].edit_enabled:
# self.parent.editAction.setVisible(True)
# else:
# self.parent.editAction.setVisible(False)
@ -387,14 +387,14 @@ class ServiceManager(QtGui.QWidget):
#Repaint the screen
self.ServiceManagerList.clear()
for itemcount, item in enumerate(self.serviceItems):
serviceitem = item[u'data']
serviceitem = item[u'service_item']
treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList)
treewidgetitem.setText(0,serviceitem.title)
treewidgetitem.setIcon(0,serviceitem.iconic_representation)
treewidgetitem.setData(0, QtCore.Qt.UserRole,
QtCore.QVariant(item[u'order']))
treewidgetitem.setExpanded(item[u'expanded'])
for count, frame in enumerate(serviceitem.frames):
for count, frame in enumerate(serviceitem.get_frames()):
treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem)
text = frame[u'title']
treewidgetitem1.setText(0,text[:40])
@ -430,12 +430,12 @@ class ServiceManager(QtGui.QWidget):
zip = zipfile.ZipFile(unicode(filename), 'w')
for item in self.serviceItems:
service.append(
{u'serviceitem':item[u'data'].get_service_repr()})
if item[u'data'].service_item_type == ServiceItemType.Image or \
item[u'data'].service_item_type == ServiceItemType.Command:
for frame in item[u'data'].frames:
{u'serviceitem':item[u'service_item'].get_service_repr()})
if item[u'service_item'].service_item_type == ServiceItemType.Image or \
item[u'service_item'].service_item_type == ServiceItemType.Command:
for frame in item[u'service_item'].frames:
path_from = unicode(os.path.join(
item[u'data'].service_item_path, frame[u'title']))
item[u'service_item'].service_item_path, frame[u'title']))
zip.write(path_from)
file = open(servicefile, u'wb')
cPickle.dump(service, file)
@ -541,7 +541,7 @@ class ServiceManager(QtGui.QWidget):
tempServiceItems = self.serviceItems
self.onNewService()
for item in tempServiceItems:
self.addServiceItem(item[u'data'])
self.addServiceItem(item[u'service_item'])
def addServiceItem(self, item):
"""
@ -554,19 +554,19 @@ class ServiceManager(QtGui.QWidget):
sitem, count = self.findServiceItem()
item.render()
if self.remoteEditTriggered:
item.merge(self.serviceItems[sitem][u'data'])
self.serviceItems[sitem][u'data'] = item
item.merge(self.serviceItems[sitem][u'service_item'])
self.serviceItems[sitem][u'service_item'] = item
self.remoteEditTriggered = False
self.repaintServiceList(sitem + 1, 0)
self.parent.LiveController.replaceServiceManagerItem(item)
else:
if sitem == -1:
self.serviceItems.append({u'data': item,
self.serviceItems.append({u'service_item': item,
u'order': len(self.serviceItems) + 1,
u'expanded':True})
self.repaintServiceList(len(self.serviceItems) + 1, 0)
else:
self.serviceItems.insert(sitem + 1, {u'data': item,
self.serviceItems.insert(sitem + 1, {u'service_item': item,
u'order': len(self.serviceItems)+1,
u'expanded':True})
self.repaintServiceList(sitem + 1, 0)
@ -578,7 +578,7 @@ class ServiceManager(QtGui.QWidget):
"""
item, count = self.findServiceItem()
self.parent.PreviewController.addServiceManagerItem(
self.serviceItems[item][u'data'], count)
self.serviceItems[item][u'service_item'], count)
def makeLive(self):
"""
@ -586,17 +586,18 @@ class ServiceManager(QtGui.QWidget):
"""
item, count = self.findServiceItem()
self.parent.LiveController.addServiceManagerItem(
self.serviceItems[item][u'data'], count)
self.serviceItems[item][u'service_item'], count)
def remoteEdit(self):
"""
Posts a remote edit message to a plugin to allow item to be edited.
"""
item, count = self.findServiceItem()
if self.serviceItems[item][u'data'].editEnabled:
if self.serviceItems[item][u'service_item'].edit_enabled:
self.remoteEditTriggered = True
Receiver.send_message(u'%s_edit' % self.serviceItems[item][u'data'].name, u'L:%s' %
self.serviceItems[item][u'data'].editId )
Receiver.send_message(u'%s_edit' %
self.serviceItems[item][u'service_item'].name, u'L:%s' %
self.serviceItems[item][u'service_item'].editId )
def onRemoteEditClear(self):
self.remoteEditTriggered = False
@ -694,5 +695,5 @@ class ServiceManager(QtGui.QWidget):
def onThemeChangeAction(self):
theme = unicode(self.sender().text())
item, count = self.findServiceItem()
self.serviceItems[item][u'data'].theme = theme
self.serviceItems[item][u'service_item'].theme = theme
self.regenerateServiceItems()

View File

@ -85,9 +85,9 @@ class SlideController(QtGui.QWidget):
u'Edit Song',
]
self.timer_id = 0
self.commandItem = None
self.songEdit = False
self.row = 0
self.selectedRow = 0
self.serviceItem = None
self.Panel = QtGui.QWidget(parent.ControlSplitter)
# Layout for holding panel
self.PanelLayout = QtGui.QVBoxLayout(self.Panel)
@ -295,15 +295,12 @@ class SlideController(QtGui.QWidget):
Handle changes of width from the splitter between the live and preview
controller. Event only issues when changes have finished
"""
if not self.commandItem:
return
width = self.parent.ControlSplitter.sizes()[self.split]
height = width * self.parent.RenderManager.screen_ratio
self.PreviewListWidget.setColumnWidth(0, width)
for framenumber, frame in enumerate(self.commandItem.frames):
if frame[u'text']:
return
self.PreviewListWidget.setRowHeight(framenumber, height)
if self.serviceItem and not self.serviceItem.is_text():
for framenumber, frame in enumerate(self.serviceItem.get_frames()):
self.PreviewListWidget.setRowHeight(framenumber, height)
def trackSplitter(self, tab, pos):
"""
@ -347,9 +344,9 @@ class SlideController(QtGui.QWidget):
self.Songbar.setVisible(False)
self.Mediabar.setVisible(False)
self.Toolbar.makeWidgetsInvisible(self.image_list)
if item.isText():
if item.is_text():
self.Toolbar.makeWidgetsInvisible(self.image_list)
if item.isSong() and \
if item.is_song() and \
str_to_bool(self.songsconfig.get_config(u'display songbar', True)):
for action in self.Songbar.actions:
self.Songbar.actions[action].setVisible(False)
@ -364,11 +361,11 @@ class SlideController(QtGui.QWidget):
#More than 20 verses hard luck
pass
self.Songbar.setVisible(True)
elif item.isImage():
elif item.is_image():
#Not sensible to allow loops with 1 frame
if len(item.frames) > 1:
if len(item.get_frames()) > 1:
self.Toolbar.makeWidgetsVisible(self.image_list)
elif item.isMedia():
elif item.is_media():
self.Toolbar.setVisible(False)
self.Mediabar.setVisible(True)
self.volumeSlider.setAudioOutput(self.parent.mainDisplay.audio)
@ -380,47 +377,33 @@ class SlideController(QtGui.QWidget):
self.Toolbar.setVisible(True)
self.Mediabar.setVisible(False)
self.Toolbar.makeWidgetsInvisible(self.song_edit_list)
if item.editEnabled and item.fromPlugin:
if item.edit_enabled and item.fromPlugin:
self.Toolbar.makeWidgetsVisible(self.song_edit_list)
elif item.isMedia():
elif item.is_media():
self.Toolbar.setVisible(False)
self.Mediabar.setVisible(True)
self.volumeSlider.setAudioOutput(self.audio)
def addServiceItem(self, item):
"""
Method to install the service item into the controller and
request the correct the toolbar of the plugin
Method to install the service item into the controller
Called by plugins
"""
log.debug(u'addServiceItem')
#If old item was a command tell it to stop
if self.commandItem and self.commandItem.isCommand():
self.onMediaStop()
self.commandItem = item
before = time.time()
item.render()
log.log(15, u'Rendering took %4s' % (time.time() - before))
self.enableToolBar(item)
if item.isCommand():
if self.isLive:
Receiver.send_message(u'%s_start' % item.name.lower(), \
[item.shortname, item.service_item_path,
item.service_frames[0][u'title'], self.isLive])
else:
if item.isMedia():
self.onMediaStart(item)
slideno = 0
if self.songEdit:
slideno = self.row
slideno = self.selectedRow
self.songEdit = False
self.displayServiceManagerItems(item, slideno)
self.addServiceManagerItem(item, slideno)
def replaceServiceManagerItem(self, item):
"""
Replacement item following a remote edit
"""
if item.__eq__(self.commandItem):
if item.__eq__(self.serviceItem):
self.addServiceManagerItem(item, self.PreviewListWidget.currentRow())
def addServiceManagerItem(self, item, slideno):
@ -431,17 +414,16 @@ class SlideController(QtGui.QWidget):
"""
log.debug(u'addServiceManagerItem')
#If old item was a command tell it to stop
if self.commandItem and self.commandItem.isCommand():
if self.serviceItem and self.serviceItem.is_command():
self.onMediaStop()
self.commandItem = item
self.enableToolBar(item)
if item.isCommand():
if item.is_command():
if self.isLive:
Receiver.send_message(u'%s_start' % item.name.lower(), \
[item.shortname, item.service_item_path,
item.service_frames[0][u'title'], slideno, self.isLive])
[item.title, item.service_item_path,
item.get_frame_title(), slideno, self.isLive])
else:
if item.isMedia():
if item.is_media():
self.onMediaStart(item)
self.displayServiceManagerItems(item, slideno)
@ -455,17 +437,17 @@ class SlideController(QtGui.QWidget):
#Set pointing cursor when we have somthing to point at
self.PreviewListWidget.setCursor(QtCore.Qt.PointingHandCursor)
before = time.time()
self.serviceitem = serviceitem
self.serviceItem = serviceitem
self.PreviewListWidget.clear()
self.PreviewListWidget.setRowCount(0)
self.PreviewListWidget.setColumnWidth(0, width)
for framenumber, frame in enumerate(self.serviceitem.frames):
for framenumber, frame in enumerate(self.serviceItem.get_frames()):
self.PreviewListWidget.setRowCount(
self.PreviewListWidget.rowCount() + 1)
item = QtGui.QTableWidgetItem()
slide_height = 0
#It is a Image
if frame[u'text'] is None:
if not self.serviceItem.is_text():
label = QtGui.QLabel()
label.setMargin(4)
pixmap = self.parent.RenderManager.resize_image(frame[u'image'])
@ -478,7 +460,7 @@ class SlideController(QtGui.QWidget):
self.PreviewListWidget.setItem(framenumber, 0, item)
if slide_height != 0:
self.PreviewListWidget.setRowHeight(framenumber, slide_height)
if self.serviceitem.frames[0][u'text']:
if self.serviceItem.is_text():
self.PreviewListWidget.resizeRowsToContents()
self.PreviewListWidget.setColumnWidth(
0, self.PreviewListWidget.viewport().size().width())
@ -489,8 +471,8 @@ class SlideController(QtGui.QWidget):
self.onSlideSelected()
self.PreviewListWidget.setFocus()
log.log(15, u'Display Rendering took %4s' % (time.time() - before))
if self.serviceitem.audit and self.isLive:
Receiver.send_message(u'songusage_live', self.serviceitem.audit)
if self.isLive:
self.serviceItem.request_audit()
log.debug(u'displayServiceManagerItems End')
#Screen event methods
@ -498,8 +480,8 @@ class SlideController(QtGui.QWidget):
"""
Go to the first slide.
"""
if self.commandItem and self.commandItem.isCommand():
Receiver.send_message(u'%s_first'% self.commandItem.name.lower())
if self.serviceItem.is_command():
Receiver.send_message(u'%s_first'% self.serviceItem.name.lower())
self.updatePreview()
else:
self.PreviewListWidget.selectRow(0)
@ -512,11 +494,11 @@ class SlideController(QtGui.QWidget):
"""
Blank the screen.
"""
if self.commandItem and self.commandItem.isCommand():
if self.serviceItem and self.serviceItem.is_command():
if blanked:
Receiver.send_message(u'%s_blank'% self.commandItem.name.lower())
Receiver.send_message(u'%s_blank'% self.serviceItem.name.lower())
else:
Receiver.send_message(u'%s_unblank'% self.commandItem.name.lower())
Receiver.send_message(u'%s_unblank'% self.serviceItem.name.lower())
else:
self.parent.mainDisplay.blankDisplay(blanked)
@ -526,22 +508,20 @@ class SlideController(QtGui.QWidget):
if this is the Live Controller also display on the screen
"""
row = self.PreviewListWidget.currentRow()
self.row = 0
self.selectedRow = 0
if row > -1 and row < self.PreviewListWidget.rowCount():
if self.commandItem.isCommand():
Receiver.send_message(u'%s_slide'% self.commandItem.name.lower(), [row])
if self.serviceItem.is_command():
Receiver.send_message(u'%s_slide'% self.serviceItem.name.lower(), [row])
if self.isLive:
self.updatePreview()
else:
frame = self.serviceitem.frames[row][u'image']
before = time.time()
if frame is None:
frame = self.serviceitem.render_individual(row)
frame = self.serviceItem.get_rendered_frame(row)
self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame))
log.log(15, u'Slide Rendering took %4s' % (time.time() - before))
if self.isLive:
self.parent.mainDisplay.frameView(frame)
self.row = row
self.selectedRow = row
def onSlideChange(self, row):
"""
@ -573,8 +553,8 @@ class SlideController(QtGui.QWidget):
"""
Go to the next slide.
"""
if self.commandItem and self.commandItem.isCommand():
Receiver.send_message(u'%s_next'% self.commandItem.name.lower())
if self.serviceItem.is_command():
Receiver.send_message(u'%s_next'% self.serviceItem.name.lower())
self.updatePreview()
else:
row = self.PreviewListWidget.currentRow() + 1
@ -587,9 +567,9 @@ class SlideController(QtGui.QWidget):
"""
Go to the previous slide.
"""
if self.commandItem and self.commandItem.isCommand():
if self.serviceItem.is_command():
Receiver.send_message(
u'%s_previous'% self.commandItem.name.lower())
u'%s_previous'% self.serviceItem.name.lower())
self.updatePreview()
else:
row = self.PreviewListWidget.currentRow() - 1
@ -602,8 +582,8 @@ class SlideController(QtGui.QWidget):
"""
Go to the last slide.
"""
if self.commandItem and self.commandItem.isCommand():
Receiver.send_message(u'%s_last'% self.commandItem.name.lower())
if self.serviceItem.is_command():
Receiver.send_message(u'%s_last'% self.serviceItem.name.lower())
self.updatePreview()
else:
self.PreviewListWidget.selectRow(self.PreviewListWidget.rowCount() - 1)
@ -632,8 +612,8 @@ class SlideController(QtGui.QWidget):
def onEditSong(self):
self.songEdit = True
Receiver.send_message(u'%s_edit' % self.commandItem.name, u'P:%s' %
self.commandItem.editId )
Receiver.send_message(u'%s_edit' % self.serviceItem.name, u'P:%s' %
self.serviceItem.editId )
def onGoLive(self):
"""
@ -642,24 +622,24 @@ class SlideController(QtGui.QWidget):
row = self.PreviewListWidget.currentRow()
if row > -1 and row < self.PreviewListWidget.rowCount():
self.parent.LiveController.addServiceManagerItem(
self.commandItem, row)
self.serviceItem, row)
def onMediaStart(self, item):
self.mediaObject.stop()
self.mediaObject.clearQueue()
file = os.path.join(item.service_item_path, item.service_frames[0][u'title'])
file = os.path.join(item.service_item_path, item.get_frame_title())
self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
self.onMediaPlay()
def onMediaPause(self):
if self.isLive:
Receiver.send_message(u'%s_pause'% self.commandItem.name.lower())
Receiver.send_message(u'%s_pause'% self.serviceItem.name.lower())
else:
self.mediaObject.pause()
def onMediaPlay(self):
if self.isLive:
Receiver.send_message(u'%s_play'% self.commandItem.name.lower(), self.isLive)
Receiver.send_message(u'%s_play'% self.serviceItem.name.lower(), self.isLive)
else:
self.SlidePreview.hide()
self.video.show()
@ -667,7 +647,7 @@ class SlideController(QtGui.QWidget):
def onMediaStop(self):
if self.isLive:
Receiver.send_message(u'%s_stop'% self.commandItem.name.lower())
Receiver.send_message(u'%s_stop'% self.serviceItem.name.lower())
else:
self.mediaObject.stop()
self.video.hide()

View File

@ -145,7 +145,7 @@ class CustomMediaItem(MediaManagerItem):
customSlide = self.parent.custommanager.get_custom(item_id)
title = customSlide.title
credit = customSlide.credits
service_item.editEnabled = True
service_item.edit_enabled = True
service_item.editId = item_id
theme = customSlide.theme_name
if len(theme) is not 0 :
@ -159,4 +159,4 @@ class CustomMediaItem(MediaManagerItem):
for slide in raw_slides:
service_item.add_from_text(slide[:30], slide)
service_item.raw_footer = raw_footer
return True
return True

View File

@ -136,18 +136,18 @@ class PresentationMediaItem(MediaManagerItem):
return False
service_item.title = unicode(self.DisplayTypeComboBox.currentText())
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
cont = self.controllers[service_item.shortname]
controller = self.controllers[service_item.shortname]
for item in items:
bitem = self.ListView.item(item.row())
filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString())
(path, name) = os.path.split(filename)
cont.store_filename(filename)
if cont.get_slide_preview_file(1) is None:
cont.load_presentation(filename)
controller.store_filename(filename)
if controller.get_slide_preview_file(1) is None:
controller.load_presentation(filename)
i = 1
img = cont.get_slide_preview_file(i)
img = controller.get_slide_preview_file(i)
while img:
service_item.add_from_command(path, name, img)
i = i + 1
img = cont.get_slide_preview_file(i)
img = controller.get_slide_preview_file(i)
return True

View File

@ -287,7 +287,7 @@ class SongMediaItem(MediaManagerItem):
item_id = self.remoteSong
song = self.parent.songmanager.get_song(item_id)
service_item.theme = song.theme_name
service_item.editEnabled = True
service_item.edit_enabled = True
service_item.editId = item_id
service_item.verse_order = song.verse_order
if song.lyrics.startswith(u'<?xml version='):
@ -320,4 +320,3 @@ class SongMediaItem(MediaManagerItem):
song.title, author_audit, song.copyright, song.ccli_number
]
return True

View File

@ -1 +1 @@
1.9.0-672
1.9.0-673