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=logging.getLogger(u'ServiceItem')
log.info(u'Service Item created') log.info(u'Service Item created')
def __init__(self, hostplugin): def __init__(self, hostplugin=None):
""" """
Init Method Init Method
""" """
self.plugin = hostplugin 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.title = u''
self.items = [] self.items = []
self.iconic_representation = None self.iconic_representation = None
@ -47,7 +49,7 @@ class ServiceItem():
self.frames = [] self.frames = []
self.raw_footer = None self.raw_footer = None
self.theme = 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 = [] self.service_frames = []
def addIcon(self, icon): def addIcon(self, icon):
@ -60,15 +62,15 @@ class ServiceItem():
""" """
log.debug(u'Render called') log.debug(u'Render called')
if self.theme == None: if self.theme == None:
self.plugin.render_manager.set_override_theme(None) self.RenderManager.set_override_theme(None)
else: else:
self.plugin.render_manager.set_override_theme(self.theme) self.RenderManager.set_override_theme(self.theme)
log.debug(u'Formatting slides') log.debug(u'Formatting slides')
if self.service_item_type == u'text': if self.service_item_type == u'text':
for slide in self.service_frames: 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: 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}) self.frames.append({u'title': slide[u'title'], u'image': frame})
elif self.service_item_type == u'command': elif self.service_item_type == u'command':
self.frames = self.service_frames self.frames = self.service_frames
@ -77,7 +79,7 @@ class ServiceItem():
self.frames = self.service_frames self.frames = self.service_frames
self.service_frames = [] self.service_frames = []
else: 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): def add_from_image(self, frame_title, image):
self.service_item_type = u'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 This method returns some text which can be saved into the OOS
file to represent this item file to represent this item
""" """
oos_header = {u'type': self.shortname,u'theme':self.theme, u'title':self.title, oos_header = {u'plugin': self.shortname,u'theme':self.theme, u'title':self.title,
u'icon':self.icon, u'footer':self.raw_footer} u'icon':self.icon, u'footer':self.raw_footer, u'type':self.service_item_type}
oos_data = [] oos_data = []
if self.service_item_type == u'text': if self.service_item_type == u'text':
for slide in self.service_frames: for slide in self.service_frames:
oos_data.append(slide[u'raw_slide']) 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) This method takes some oostext (passed from the ServiceManager)
and parses it into the data actually required 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 os
import logging import logging
import cPickle
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, Event, \ 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 Clear the list to create a new service
""" """
self.service_data.clearItems() self.ServiceManagerList.clear()
self.serviceItems = []
def onDeleteFromService(self): def onDeleteFromService(self):
""" """
@ -146,16 +148,34 @@ class ServiceManager(QtGui.QWidget):
""" """
Save the current service Save the current service
""" """
service = [] filename = QtGui.QFileDialog.getSaveFileName(self, u'Save Order of Service',self.config.get_last_dir() )
for item in self.serviceItems: if filename != u'':
service.append({u'serviceitem':item[u'data'].get_oos_repr()}) self.config.set_last_dir(filename)
print service 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): def onLoadService(self):
""" """
Load an existing service from disk 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): def onThemeComboBoxSelected(self, currentIndex):
""" """