Fix up Order of Service code for Text events

This commit is contained in:
Tim Bentley 2009-06-08 21:36:33 +01:00
parent f9f67c59ea
commit ade5671319
2 changed files with 48 additions and 19 deletions

View File

@ -32,12 +32,14 @@ class ServiceItem():
log=logging.getLogger(u'ServiceItem')
log.info(u'Service Item created')
def __init__(self, hostplugin):
def __init__(self, hostplugin=None):
"""
Init Method
"""
self.plugin = hostplugin
self.shortname = hostplugin.name
if hostplugin is not None:
self.RenderManager = self.plugin.render_manager
self.shortname = hostplugin.name
self.title = u''
self.items = []
self.iconic_representation = None
@ -47,7 +49,7 @@ class ServiceItem():
self.frames = []
self.raw_footer = None
self.theme = None
log.debug(u'Service item created for %s ', self.shortname)
#log.debug(u'Service item created for %s ', self.shortname)
self.service_frames = []
def addIcon(self, icon):
@ -60,15 +62,15 @@ class ServiceItem():
"""
log.debug(u'Render called')
if self.theme == None:
self.plugin.render_manager.set_override_theme(None)
self.RenderManager.set_override_theme(None)
else:
self.plugin.render_manager.set_override_theme(self.theme)
self.RenderManager.set_override_theme(self.theme)
log.debug(u'Formatting slides')
if self.service_item_type == u'text':
for slide in self.service_frames:
formated = self.plugin.render_manager.format_slide(slide[u'raw_slide'])
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
for format in formated:
frame = self.plugin.render_manager.generate_slide(format, self.raw_footer)
frame = self.RenderManager.generate_slide(format, self.raw_footer)
self.frames.append({u'title': slide[u'title'], u'image': frame})
elif self.service_item_type == u'command':
self.frames = self.service_frames
@ -77,7 +79,7 @@ class ServiceItem():
self.frames = self.service_frames
self.service_frames = []
else:
log.error(u'Invalid value rendere :%s' % self.service_item_type)
log.error(u'Invalid value renderer :%s' % self.service_item_type)
def add_from_image(self, frame_title, image):
self.service_item_type = u'image'
@ -97,17 +99,24 @@ class ServiceItem():
This method returns some text which can be saved into the OOS
file to represent this item
"""
oos_header = {u'type': self.shortname,u'theme':self.theme, u'title':self.title,
u'icon':self.icon, u'footer':self.raw_footer}
oos_header = {u'plugin': self.shortname,u'theme':self.theme, u'title':self.title,
u'icon':self.icon, u'footer':self.raw_footer, u'type':self.service_item_type}
oos_data = []
if self.service_item_type == u'text':
for slide in self.service_frames:
oos_data.append(slide[u'raw_slide'])
return {u'header': oos_header, u'data': oos_data}
return {u'header': oos_header, u'data': self.service_frames}
def set_from_oos(self, oostext):
def set_from_oos(self, serviceitem):
"""
This method takes some oostext (passed from the ServiceManager)
and parses it into the data actually required
"""
pass
header = serviceitem[u'serviceitem'][u'header']
self.title = header[u'title']
self.service_item_type = header[u'type']
self.shortname = header[u'plugin']
self.theme = header[u'theme']
self.addIcon(header[u'icon'])
self.raw_footer = header[u'footer']
self.service_frames = serviceitem[u'serviceitem'][u'data']

View File

@ -19,6 +19,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
"""
import os
import logging
import cPickle
from PyQt4 import QtCore, QtGui
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \
@ -134,7 +135,8 @@ class ServiceManager(QtGui.QWidget):
"""
Clear the list to create a new service
"""
self.service_data.clearItems()
self.ServiceManagerList.clear()
self.serviceItems = []
def onDeleteFromService(self):
"""
@ -146,16 +148,34 @@ class ServiceManager(QtGui.QWidget):
"""
Save the current service
"""
service = []
for item in self.serviceItems:
service.append({u'serviceitem':item[u'data'].get_oos_repr()})
print service
filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() )
if filename != u'':
self.config.set_last_dir(filename)
print filename
service = []
for item in self.serviceItems:
service.append({u'serviceitem':item[u'data'].get_oos_repr()})
file = open(filename+u'.oos', u'wb')
cPickle.dump(service, file)
file.close()
def onLoadService(self):
"""
Load an existing service from disk
"""
pass
filename = QtGui.QFileDialog.getOpenFileName(self, u'Open Order of Service',self.config.get_last_dir(),
u'Services (*.oos)')
if filename != u'':
self.config.set_last_dir(filename)
file = open(filename, u'r')
items = cPickle.load(file)
file.close()
self.onNewService()
for item in items:
serviceitem = ServiceItem()
serviceitem.RenderManager = self.parent.RenderManager
serviceitem.set_from_oos(item)
self.addServiceItem(serviceitem)
def onThemeComboBoxSelected(self, currentIndex):
"""