Various changes see loog for details

bzr-revno: 516
This commit is contained in:
Tim Bentley 2009-09-01 20:35:02 +01:00
commit 8df57d5bad
15 changed files with 215 additions and 253 deletions

View File

@ -20,7 +20,8 @@ Place, Suite 330, Boston, MA 02111-1307 USA
"""
import sys
import logging
import logging, logging.handlers
from optparse import OptionParser
from PyQt4 import QtCore, QtGui
@ -28,9 +29,15 @@ from openlp.core.lib import Receiver
from openlp.core.resources import *
from openlp.core.ui import MainWindow, SplashScreen
logging.basicConfig(level=logging.DEBUG,
format=u'%(asctime)s:%(msecs)3d %(name)-15s %(levelname)-8s %(message)s',
datefmt=u'%m-%d %H:%M:%S', filename=u'openlp.log', filemode=u'w')
filename=u'openlp.log'
log = logging.getLogger()
log.setLevel(logging.INFO)
logfile = logging.handlers.RotatingFileHandler(filename ,maxBytes=200000, backupCount=5)
logfile.setLevel(logging.DEBUG)
logfile.setFormatter(logging.Formatter(u'%(asctime)s %(name)-15s %(levelname)-8s %(message)s'))
log.addHandler(logfile)
class OpenLP(QtGui.QApplication):
"""
@ -38,8 +45,7 @@ class OpenLP(QtGui.QApplication):
class in order to provide the core of the application.
"""
global log
log = logging.getLogger(u'OpenLP Application')
log.info(u'Application Loaded')
log.info(u'OpenLP Application Loaded')
def run(self):
"""
@ -74,10 +80,19 @@ class OpenLP(QtGui.QApplication):
self.splash.finish(self.mainWindow)
sys.exit(app.exec_())
def main():
usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-d", "--debug",dest="debug",action="store_true",
help="Switch on Debugging ")
(options, args) = parser.parse_args()
if options.debug is not None:
log.setLevel(logging.DEBUG)
if __name__ == u'__main__':
"""
Instantiate and run the application.
"""
main()
app = OpenLP(sys.argv)
#import cProfile
#cProfile.run("app.run()", "profile.out")

View File

@ -234,17 +234,20 @@ class MediaManagerItem(QtGui.QWidget):
def onPreviewClick(self):
log.debug(self.PluginTextShort+u' Preview Requested')
service_item = self.buildServiceItem()
self.parent.preview_controller.addServiceItem(service_item)
if service_item is not None:
self.parent.preview_controller.addServiceItem(service_item)
def onLiveClick(self):
log.debug(self.PluginTextShort + u' Live Requested')
service_item = self.buildServiceItem()
self.parent.live_controller.addServiceItem(service_item)
if service_item is not None:
self.parent.live_controller.addServiceItem(service_item)
def onAddClick(self):
log.debug(self.PluginTextShort+u' Add Requested')
service_item = self.buildServiceItem()
self.parent.service_manager.addServiceItem(service_item)
if service_item is not None:
self.parent.service_manager.addServiceItem(service_item)
def buildServiceItem(self):
"""
@ -252,6 +255,8 @@ class MediaManagerItem(QtGui.QWidget):
"""
service_item = ServiceItem(self.parent)
service_item.addIcon(u':/media/media_'+self.PluginTextShort.lower()+u'.png')
self.generateSlideData(service_item)
self.ListView.clearSelection()
return service_item
if self.generateSlideData(service_item):
self.ListView.clearSelection()
return service_item
else:
return None

View File

@ -147,7 +147,8 @@ class Renderer(object):
# print words
verses = []
words = words.replace(u'\r\n', u'\n')
verses_text = words.split(u'\n\n')
verses_text = words.split(u'\n')
#print verses_text
text = []
for verse in verses_text:
lines = verse.split(u'\n')
@ -173,7 +174,10 @@ class Renderer(object):
split_lines = []
count = 0
for line in text:
# print "C", line , len(line)
#print "C", line , len(line)
#Must be a blank line so keep it.
if len(line) == 0:
line = u' '
while len(line) > 0:
# print "C1", line , len(line)
if len(line) > ave_line_width:
@ -391,29 +395,8 @@ class Renderer(object):
Defaults to *False*. Whether or not this is a live screen.
"""
x, y = tlcorner
# We draw the text to see how big it is and then iterate to make it fit
# when we line wrap we do in in the "lyrics" style, so the second line is
# right aligned with a "hanging indent"
#print "----------------------------"
#print line
# words = line.split(u' ')
# thisline = u' '.join(words)
# lastword = len(words)
# lines = []
maxx = self._rect.width();
maxy = self._rect.height();
# while (len(words) > 0):
# w , h = self._get_extent_and_render(thisline, footer)
# print "m", w, h, x, maxx
# rhs = w + x
# if rhs < maxx - self._right_margin:
# lines.append(thisline)
# words = words[lastword:]
# thisline = ' '.join(words)
# lastword = len(words)
# else:
# lastword -= 1
# thisline = ' '.join(words[:lastword])
lines = []
lines.append(line)
startx = x

View File

@ -58,7 +58,7 @@ class RenderManager(object):
else:
self.current_display = screen_number
self.renderer = Renderer()
self.calculate_default(self.screen_list[self.current_display][u'size'])
#self.calculate_default(self.screen_list[self.current_display][u'size'])
self.theme = u''
self.service_theme = u''
self.global_style = u''
@ -133,6 +133,7 @@ class RenderManager(object):
def build_text_rectangle(self, theme):
"""
Builds a text block using the settings in ``theme``.
One is needed per slide
``theme``
The theme to build a text block for.
@ -149,8 +150,8 @@ class RenderManager(object):
footer_rect = QtCore.QRect(10,self.footer_start, self.width - 1, self.height-self.footer_start)
else:
footer_rect = QtCore.QRect(int(theme.font_footer_x),int(theme.font_footer_y),
int(theme.font_footer_width)-1, int(theme.font_footer_height)-1)
self.renderer.set_text_rectangle(main_rect,footer_rect)
int(theme.font_footer_width)-1, int(theme.font_footer_height) - 1)
self.renderer.set_text_rectangle(main_rect, footer_rect)
def generate_preview(self, themedata):
"""
@ -178,15 +179,15 @@ class RenderManager(object):
def format_slide(self, words):
"""
Calculate how much text can fid on a slide.
Calculate how much text can fit on a slide.
``words``
The words to go on the slides.
"""
log.debug(u'format slide')
self.calculate_default(self.screen_list[self.current_display][u'size'])
#self.calculate_default(self.screen_list[self.current_display][u'size'])
self.build_text_rectangle(self.themedata)
self.renderer.set_frame_dest(self.width, self.height)
#self.renderer.set_frame_dest(self.width, self.height)
return self.renderer.format_slide(words, False)
def generate_slide(self, main_text, footer_text):
@ -200,7 +201,6 @@ class RenderManager(object):
The text for the slide footer.
"""
log.debug(u'generate slide')
self.calculate_default(self.screen_list[self.current_display][u'size'])
self.build_text_rectangle(self.themedata)
self.renderer.set_frame_dest(self.width, self.height)
return self.renderer.generate_frame_from_lines(main_text, footer_text)
@ -233,6 +233,7 @@ class RenderManager(object):
The QWidget instance of the screen.
"""
log.debug(u'calculate default %s', screen)
#size fixed so reflects the preview size.
if self.current_display == 0:
self.width = 1024
self.height = 768

View File

@ -96,7 +96,6 @@ class ServiceItem(object):
self.frames.append({u'title': slide[u'title'], u'image': frame})
elif self.service_item_type == ServiceType.Command:
self.frames = self.service_frames
self.service_frames = []
elif self.service_item_type == ServiceType.Image:
for slide in self.service_frames:
slide[u'image'] = self.RenderManager.resize_image(slide[u'image'])
@ -135,7 +134,7 @@ class ServiceItem(object):
frame_title = frame_title.split(u'\n')[0]
self.service_frames.append({u'title': frame_title, u'raw_slide': raw_slide})
def add_from_command(self, frame_title, command):
def add_from_command(self, path , frame_title):
"""
Add a slide from a command.
@ -146,7 +145,8 @@ class ServiceItem(object):
The command of/for the slide.
"""
self.service_item_type = ServiceType.Command
self.service_frames.append({u'title': frame_title, u'command': command})
self.service_item_path = path
self.service_frames.append({u'title': frame_title, u'command': None})
def get_oos_repr(self):
"""
@ -168,6 +168,9 @@ class ServiceItem(object):
elif self.service_item_type == ServiceType.Image:
for slide in self.service_frames:
oos_data.append(slide[u'title'])
elif self.service_item_type == ServiceType.Command:
for slide in self.service_frames:
oos_data.append(slide[u'title'])
return {u'header': oos_header, u'data': oos_data}
def set_from_oos(self, serviceitem, path=None):
@ -196,3 +199,7 @@ class ServiceItem(object):
filename = os.path.join(path, text_image)
real_image = QtGui.QImage(unicode(filename))
self.add_from_image(path, text_image, real_image)
elif self.service_item_type == ServiceType.Command:
for text_image in serviceitem[u'serviceitem'][u'data']:
filename = os.path.join(path, text_image)
self.add_from_command(path, text_image)

View File

@ -510,45 +510,60 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.VerticalComboBox.setCurrentIndex(int(self.theme.display_verticalAlign))
def stateChanging(self, theme):
if theme.background_type == u'solid':
self.Color1PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_color))
self.Color1Label.setText(translate(u'ThemeManager', u'Background Color:'))
self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
self.ImageLabel.setVisible(False)
self.ImageLineEdit.setVisible(False)
self.ImageFilenameWidget.setVisible(False)
self.GradientLabel.setVisible(False)
self.GradientComboBox.setVisible(False)
elif theme.background_type == u'gradient':
self.Color1PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_startColor))
self.Color2PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_endColor))
self.Color1Label.setText(translate(u'ThemeManager', u'First Color:'))
self.Color2Label.setText(translate(u'ThemeManager', u'Second Color:'))
self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(True)
self.Color2PushButton.setVisible(True)
self.ImageLabel.setVisible(False)
self.ImageLineEdit.setVisible(False)
self.ImageFilenameWidget.setVisible(False)
self.GradientLabel.setVisible(True)
self.GradientComboBox.setVisible(True)
else: # must be image
self.Color1Label.setVisible(False)
self.Color1PushButton.setVisible(False)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
self.ImageLabel.setVisible(True)
self.ImageLineEdit.setVisible(True)
self.ImageFilenameWidget.setVisible(True)
self.GradientLabel.setVisible(False)
self.GradientComboBox.setVisible(False)
if theme.background_mode == u'transparent':
self.Color1Label.setVisible(False)
self.Color1PushButton.setVisible(False)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
self.ImageLabel.setVisible(False)
self.ImageLineEdit.setVisible(False)
self.ImageFilenameWidget.setVisible(False)
self.GradientLabel.setVisible(False)
self.GradientComboBox.setVisible(False)
self.BackgroundTypeComboBox.setVisible(False)
self.BackgroundTypeLabel.setVisible(False)
else:
self.BackgroundTypeComboBox.setVisible(True)
self.BackgroundTypeLabel.setVisible(True)
if theme.background_type == u'solid':
self.Color1PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_color))
self.Color1Label.setText(translate(u'ThemeManager', u'Background Color:'))
self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
self.ImageLabel.setVisible(False)
self.ImageLineEdit.setVisible(False)
self.ImageFilenameWidget.setVisible(False)
self.GradientLabel.setVisible(False)
self.GradientComboBox.setVisible(False)
elif theme.background_type == u'gradient':
self.Color1PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_startColor))
self.Color2PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_endColor))
self.Color1Label.setText(translate(u'ThemeManager', u'First Color:'))
self.Color2Label.setText(translate(u'ThemeManager', u'Second Color:'))
self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(True)
self.Color2PushButton.setVisible(True)
self.ImageLabel.setVisible(False)
self.ImageLineEdit.setVisible(False)
self.ImageFilenameWidget.setVisible(False)
self.GradientLabel.setVisible(True)
self.GradientComboBox.setVisible(True)
else: # must be image
self.Color1Label.setVisible(False)
self.Color1PushButton.setVisible(False)
self.Color2Label.setVisible(False)
self.Color2PushButton.setVisible(False)
self.ImageLabel.setVisible(True)
self.ImageLineEdit.setVisible(True)
self.ImageFilenameWidget.setVisible(True)
self.GradientLabel.setVisible(False)
self.GradientComboBox.setVisible(False)
if theme.font_main_override == False:
self.FontMainXSpinBox.setEnabled(False)

View File

@ -25,7 +25,7 @@ import shutil
from PyQt4 import QtCore, QtGui
from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \
RenderManager, translate, buildIcon, \
RenderManager, translate, buildIcon, ServiceType, \
contextMenuAction, contextMenuSeparator, Receiver
from openlp.core.utils import ConfigHelper
@ -341,7 +341,8 @@ class ServiceManager(QtGui.QWidget):
zip = zipfile.ZipFile(unicode(filename) + u'.oos', 'w')
for item in self.serviceItems:
service.append({u'serviceitem':item[u'data'].get_oos_repr()})
if item[u'data'].service_item_type == u'image':
if item[u'data'].service_item_type == ServiceType.Image or \
item[u'data'].service_item_type == ServiceType.Command:
for frame in item[u'data'].frames:
path_from = unicode(item[u'data'].service_item_path + u'/' + frame[u'title'])
zip.write(path_from)
@ -354,7 +355,7 @@ class ServiceManager(QtGui.QWidget):
os.remove(servicefile)
except:
pass #if not present do not worry
self.parent.OosChanged(True, self.serviceName)
self.parent.OosChanged(True, filename + u'.oos')
def onLoadService(self):
"""
@ -368,31 +369,34 @@ class ServiceManager(QtGui.QWidget):
name = filename.split(os.path.sep)
if filename != u'':
self.config.set_last_dir(filename)
zip = zipfile.ZipFile(unicode(filename))
filexml = None
themename = None
for file in zip.namelist():
names = file.split(os.path.sep)
file_to = os.path.join(self.servicePath, names[len(names) - 1])
file_data = zip.read(file)
f = open(file_to, u'w')
f.write(file_data)
f.close()
if file_to.endswith(u'ood'):
p_file = file_to
f = open(p_file, u'r')
items = cPickle.load(f)
f.close()
self.onNewService()
for item in items:
serviceitem = ServiceItem()
serviceitem.RenderManager = self.parent.RenderManager
serviceitem.set_from_oos(item, self.servicePath )
self.addServiceItem(serviceitem)
try:
os.remove(p_file)
zip = zipfile.ZipFile(unicode(filename))
filexml = None
themename = None
for file in zip.namelist():
names = file.split(os.path.sep)
file_to = os.path.join(self.servicePath, names[len(names) - 1])
file_data = zip.read(file)
f = open(file_to, u'w')
f.write(file_data)
f.close()
if file_to.endswith(u'ood'):
p_file = file_to
f = open(p_file, u'r')
items = cPickle.load(f)
f.close()
self.onNewService()
for item in items:
serviceitem = ServiceItem()
serviceitem.RenderManager = self.parent.RenderManager
serviceitem.set_from_oos(item, self.servicePath )
self.addServiceItem(serviceitem)
try:
os.remove(p_file)
except:
#if not present do not worry
pass
except:
#if not present do not worry
pass
self.serviceName = name[len(name) - 1]
self.parent.OosChanged(True, self.serviceName)

View File

@ -228,6 +228,7 @@ class SlideController(QtGui.QWidget):
request the correct the toolbar of the plugin
Called by plugins
"""
log.debug(u'addServiceItem')
item.render()
self.enableToolBar(item)
self.displayServiceManagerItems(item, 0)
@ -238,6 +239,7 @@ class SlideController(QtGui.QWidget):
request the correct the toolbar of the plugin
Called by ServiceManager
"""
log.debug(u'addServiceItem')
self.enableToolBar(item)
self.displayServiceManagerItems(item, slideno)
@ -246,7 +248,7 @@ class SlideController(QtGui.QWidget):
Loads a ServiceItem into the system from ServiceManager
Display the slide number passed
"""
log.debug(u'add Service Manager Item')
log.debug(u'displayServiceManagerItems Start')
self.serviceitem = serviceitem
slide_pixmap = QtGui.QPixmap.fromImage(self.serviceitem.frames[0][u'image'])
slide_width = 300
@ -273,6 +275,7 @@ class SlideController(QtGui.QWidget):
self.PreviewListWidget.selectRow(slideno)
self.onSlideSelected()
self.PreviewListWidget.setFocus()
log.debug(u'displayServiceManagerItems End')
#Screen event methods
def onSlideSelectedFirst(self):

View File

@ -341,8 +341,10 @@ class BibleMediaItem(MediaManagerItem):
def generateSlideData(self, service_item):
log.debug(u'generating slide data')
items = self.ListView.selectedIndexes()
if len(items) ==0:
return False
old_chapter = u''
raw_slides=[]
raw_slides = []
raw_footer = []
bible_text = u''
for item in items:
@ -389,6 +391,7 @@ class BibleMediaItem(MediaManagerItem):
for slide in raw_slides:
service_item.add_from_text(slide[:30], slide)
service_item.raw_footer = raw_footer
return True
def formatVerse(self, old_chapter, chapter, verse, opening, closing):
loc = opening
@ -432,27 +435,30 @@ class BibleMediaItem(MediaManagerItem):
combo.addItem(unicode(i))
def displayResults(self, bible):
for verse in self.search_results:
for count, verse in enumerate(self.search_results):
bible_text = u' %s %d:%d (%s)' % (verse.book.name,
verse.chapter, verse.verse, bible)
bible_verse = QtGui.QListWidgetItem(bible_text)
bible_verse.setData(QtCore.Qt.UserRole,
QtCore.QVariant(bible_text))
self.ListView.addItem(bible_verse)
cr = self.ListView.setCurrentRow(count)
if cr is not None:
cr.setSelected(True)
def searchByReference(self, bible, search):
log.debug(u'searchByReference %s ,%s', bible, search)
book = ''
start_chapter = ''
end_chapter = ''
start_verse = ''
end_verse = ''
book = u''
start_chapter = u''
end_chapter = u''
start_verse = u''
end_verse = u''
search = search.replace(u' ', u' ').strip()
original = search
message = None
# Remove book beware 0 index arrays
for i in range (len(search)-1, 0, - 1):
if search[i] == ' ':
if search[i] == u' ':
book = search[:i]
# remove book from string
search = search[i:]
@ -466,7 +472,7 @@ class BibleMediaItem(MediaManagerItem):
# number : found
i = search.rfind(u' ')
if i == -1:
chapter = ''
chapter = u''
else:
chapter = search[i:len(search)]
hyphen = chapter.find(u'-')
@ -493,29 +499,25 @@ class BibleMediaItem(MediaManagerItem):
end_verse = start_verse
else:
sp1 = sp[1].split(u':')
#print "2nd details", sp1, len(sp1)
if len(sp1) == 1:
end_chapter = start_chapter
end_verse = sp1[0]
else:
end_chapter = sp1[0]
end_verse = sp1[1]
#print 'search = ' + unicode(original)
#print 'results = ' + unicode(book) + ' @ '+ unicode(start_chapter)+' @ '+ unicode(end_chapter)+' @ '+ unicode(start_verse)+ ' @ '+ unicode(end_verse)
if end_chapter == '':
if end_chapter == u'':
end_chapter = start_chapter.rstrip()
if start_verse == '':
if end_verse == '':
if start_verse == u'':
if end_verse == u'':
start_verse = 1
else:
start_verse = end_verse
if end_verse == '':
if end_verse == u'':
end_verse = 99
if start_chapter == '':
if start_chapter == u'':
message = u'No chapter found for search criteria'
#print 'message = ' + unicode(message)
#print 'search = ' + unicode(original)
#print 'results = ' + unicode(book) + ' @ '+ unicode(start_chapter)+' @ '+ unicode(end_chapter)+' @ '+ unicode(start_verse)+ ' @ '+ unicode(end_verse)
log.debug(u'results = %s @ %s : %s @ %s : %s'% \
(unicode(book), unicode(start_chapter), unicode(end_chapter), unicode(start_verse), unicode(end_verse)))
if message == None:
self.search_results = None
self.search_results = self.parent.biblemanager.get_verse_text(bible, book,

View File

@ -68,17 +68,17 @@ class CustomMediaItem(MediaManagerItem):
self.addToolbarButton(
translate(u'CustomMediaItem',u'Preview Custom Item'),
translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
u':/system/system_preview.png', self.onCustomPreviewClick, u'CustomPreviewItem')
u':/system/system_preview.png', self.onPreviewClick, u'CustomPreviewItem')
## Live Custom Button ##
self.addToolbarButton(
translate(u'CustomMediaItem',u'Go Live'),
translate(u'CustomMediaItem', u'Send the selected Custom live'),
u':/system/system_live.png', self.onCustomLiveClick, u'CustomLiveItem')
u':/system/system_live.png', self.onLiveClick, u'CustomLiveItem')
## Add Custom Button ##
self.addToolbarButton(
translate(u'CustomMediaItem',u'Add Custom To Service'),
translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
u':/system/system_add.png', self.onCustomAddClick, u'CustomAddItem')
u':/system/system_add.png', self.onAddClick, u'CustomAddItem')
# Add the CustomListView widget
self.CustomWidget = QtGui.QWidget(self)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
@ -95,7 +95,7 @@ class CustomMediaItem(MediaManagerItem):
self.PageLayout.addWidget(self.ListView)
# Signals
QtCore.QObject.connect(self.ListView,
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onCustomPreviewClick)
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
#define and add the context menu
self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
self.ListView.addAction(contextMenuAction(self.ListView,
@ -104,13 +104,13 @@ class CustomMediaItem(MediaManagerItem):
self.ListView.addAction(contextMenuSeparator(self.ListView))
self.ListView.addAction(contextMenuAction(
self.ListView, ':/system/system_preview.png',
translate(u'CustomMediaItem',u'&Preview Custom'), self.onCustomPreviewClick))
translate(u'CustomMediaItem',u'&Preview Custom'), self.onPreviewClick))
self.ListView.addAction(contextMenuAction(
self.ListView, ':/system/system_live.png',
translate(u'CustomMediaItem',u'&Show Live'), self.onCustomLiveClick))
translate(u'CustomMediaItem',u'&Show Live'), self.onLiveClick))
self.ListView.addAction(contextMenuAction(
self.ListView, ':/system/system_add.png',
translate(u'CustomMediaItem',u'&Add to Service'), self.onCustomAddClick))
translate(u'CustomMediaItem',u'&Add to Service'), self.onAddClick))
def initialise(self):
self.loadCustomListView(self.parent.custommanager.get_all_slides())
@ -143,33 +143,14 @@ class CustomMediaItem(MediaManagerItem):
row = self.ListView.row(item)
self.ListView.takeItem(row)
def onCustomPreviewClick(self):
log.debug(u'Custom Preview Requested')
service_item = ServiceItem(self.parent)
service_item.addIcon(u':/media/media_song.png')
self.generateSlideData(service_item)
self.parent.preview_controller.addServiceItem(service_item)
def onCustomLiveClick(self):
log.debug(u'Custom Live Requested')
service_item = ServiceItem(self.parent)
service_item.addIcon(u':/media/media_song.png')
self.generateSlideData(service_item)
self.parent.live_controller.addServiceItem(service_item)
def onCustomAddClick(self):
log.debug(u'Custom Add Requested')
service_item = ServiceItem(self.parent)
service_item.addIcon(u':/media/media_song.png')
self.generateSlideData(service_item)
self.parent.service_manager.addServiceItem(service_item)
def generateSlideData(self, service_item):
raw_slides =[]
raw_footer = []
slide = None
theme = None
item = self.ListView.currentItem()
if item is None:
return False
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
customSlide = self.parent.custommanager.get_custom(item_id)
title = customSlide.title
@ -187,3 +168,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

View File

@ -1,63 +0,0 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
"""
OpenLP - Open Source Lyrics Projection
Copyright (c) 2008 Raoul Snyman
Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
"""
import logging
import os
from PyQt4 import QtCore, QtGui
from openlp.core.lib import OpenLPToolbar, translate, Receiver
from openlp.core.ui.slidecontroller import MasterToolbar
class ImageToolbar(MasterToolbar):
def __init__(self, parent, isLive):
MasterToolbar.__init__(self, isLive)
self.parent = parent
self.Toolbar = None
self.isLive = isLive
def defineZone5(self):
self.Toolbar.addSeparator()
self.Toolbar.addToolbarButton(u'Start Loop',
u':/media/media_time.png',
translate(u'SlideController', u'Start continuous loop'),
self.onStartLoop)
self.Toolbar.addToolbarButton(u'Stop Loop',
u':/media/media_stop.png',
translate(u'SlideController', u'Stop continuous loop'),
self.onStopLoop)
self.Toolbar.addSeparator()
self.DelaySpinBox = QtGui.QSpinBox(self.Toolbar)
self.SpinWidget = QtGui.QWidgetAction(self.Toolbar)
self.SpinWidget.setDefaultWidget(self.DelaySpinBox)
self.Toolbar.addAction(self.SpinWidget)
self.DelaySpinBox.setValue(self.parent.parent.ImageTab.loop_delay)
self.DelaySpinBox.setSuffix(translate(u'ImageSlideController', u's'))
def onStartLoop(self):
"""
Trigger the slide controller to start to loop passing the delay
"""
Receiver().send_message(u'%sslide_start_loop' % self.prefix, self.DelaySpinBox.value())
def onStopLoop(self):
"""
Trigger the slide controller to stop the loop
"""
Receiver().send_message(u'%sslide_stop_loop' % self.prefix)

View File

@ -95,6 +95,8 @@ class ImageMediaItem(MediaManagerItem):
def generateSlideData(self, service_item):
items = self.ListView.selectedIndexes()
if len(items) == 0:
return False
service_item.title = u'Image(s)'
for item in items:
bitem = self.ListView.item(item.row())
@ -102,3 +104,4 @@ class ImageMediaItem(MediaManagerItem):
frame = QtGui.QImage(unicode(filename))
(path, name) = os.path.split(filename)
service_item.add_from_image(path, name, frame)
return True

View File

@ -100,12 +100,15 @@ class MediaMediaItem(MediaManagerItem):
def generateSlideData(self, service_item):
indexes = self.ListView.selectedIndexes()
if len(items) > 1:
return False
service_item.title = u'Media'
for index in indexes:
filename = self.ListData.getFilename(index)
frame = QtGui.QImage(unicode(filename))
(path, name) = os.path.split(filename)
service_item.add_from_image(path, name, frame)
return True
def onPreviewClick(self):
log.debug(u'Media Preview Button pressed')

View File

@ -43,7 +43,7 @@ class PresentationMediaItem(MediaManagerItem):
self.controllers = controllers
self.TranslationContext = u'PresentationPlugin'
self.PluginTextShort = u'Presentation'
self.ConfigSection = u'presentation'
self.ConfigSection = u'presentations'
self.hasFileIcon = True
self.hasNewIcon = False
self.hasEditIcon = False
@ -81,9 +81,6 @@ class PresentationMediaItem(MediaManagerItem):
for item in self.controllers:
#load the drop down selection
self.DisplayTypeComboBox.addItem(item)
#load the preview toolbars
#self.parent.preview_controller.registerToolbar(item, self.controllers[item])
#self.parent.live_controller.registerToolbar(item, self.controllers[item])
def loadList(self, list):
for file in list:
@ -102,11 +99,13 @@ class PresentationMediaItem(MediaManagerItem):
def generateSlideData(self, service_item):
items = self.ListView.selectedIndexes()
service_item.title = self.DisplayTypeComboBox.currentText()
if len(items) > 1:
return False
service_item.title = unicode(self.DisplayTypeComboBox.currentText())
service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
for item in items:
bitem = self.ListView.item(item.row())
filename = unicode((bitem.data(QtCore.Qt.UserRole)).toString())
frame = QtGui.QImage(unicode(filename))
(path, name) = os.path.split(filename)
service_item.add_using_toolbar(path, name)
service_item.add_from_command(path, name)
return True

View File

@ -68,15 +68,15 @@ class SongMediaItem(MediaManagerItem):
## Preview Song Button ##
self.addToolbarButton(translate(u'SongMediaItem', u'Preview Song'),
translate(u'SongMediaItem', u'Preview the selected song'),
':/system/system_preview.png', self.onSongPreviewClick, 'SongPreviewItem')
':/system/system_preview.png', self.onPreviewClick, 'SongPreviewItem')
## Live Song Button ##
self.addToolbarButton(translate(u'SongMediaItem', u'Go Live'),
translate(u'SongMediaItem', u'Send the selected song live'),
':/system/system_live.png', self.onSongLiveClick, 'SongLiveItem')
':/system/system_live.png', self.onLiveClick, 'SongLiveItem')
## Add Song Button ##
self.addToolbarButton(translate(u'SongMediaItem', u'Add Song To Service'),
translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
':/system/system_add.png', self.onAddClick, 'SongAddItem')
self.addToolbarSeparator()
## Song Maintenance Button ##
self.addToolbarButton(translate(u'SongMediaItem', u'Song Maintenance'),
@ -127,7 +127,7 @@ class SongMediaItem(MediaManagerItem):
QtCore.QObject.connect(self.SearchTextEdit,
QtCore.SIGNAL(u'textChanged(const QString&)'), self.onSearchTextEditChanged)
QtCore.QObject.connect(self.ListView,
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onSongPreviewClick)
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'load_song_list'), self.onSearchTextButtonClick)
@ -139,13 +139,13 @@ class SongMediaItem(MediaManagerItem):
self.ListView.addAction(contextMenuSeparator(self.ListView))
self.ListView.addAction(contextMenuAction(self.ListView,
':/system/system_preview.png', translate(u'SongMediaItem', u'&Preview Song'),
self.onSongPreviewClick))
self.onPreviewClick))
self.ListView.addAction(contextMenuAction(self.ListView,
':/system/system_live.png', translate(u'SongMediaItem', u'&Show Live'),
self.onSongLiveClick))
self.onLiveClick))
self.ListView.addAction(contextMenuAction(self.ListView,
':/system/system_add.png', translate(u'SongMediaItem', u'&Add to Service'),
self.onSongAddClick))
self.onAddClick))
def retranslateUi(self):
self.SearchTypeLabel.setText(translate(u'SongMediaItem', u'Search Type:'))
@ -246,12 +246,12 @@ class SongMediaItem(MediaManagerItem):
self.parent.songmanager.delete_song(item_id)
row = self.ListView.row(item)
self.ListView.takeItem(row)
def onSongPreviewClick(self):
service_item = ServiceItem(self.parent)
service_item.addIcon(u':/media/media_song.png')
self.generateSlideData(service_item)
self.parent.preview_controller.addServiceItem(service_item)
#
# def onSongPreviewClick(self):
# service_item = ServiceItem(self.parent)
# service_item.addIcon(u':/media/media_song.png')
# self.generateSlideData(service_item)
# self.parent.preview_controller.addServiceItem(service_item)
def generateSlideData(self, service_item):
raw_slides =[]
@ -259,6 +259,8 @@ class SongMediaItem(MediaManagerItem):
author_list = u''
ccl = u''
item = self.ListView.currentItem()
if item is None:
return False
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
song = self.parent.songmanager.get_song(item_id)
service_item.theme = song.theme_name
@ -286,15 +288,16 @@ class SongMediaItem(MediaManagerItem):
raw_footer.append(song.copyright )
raw_footer.append(unicode(translate(u'SongMediaItem', u'CCL Licence: ') + ccl ))
service_item.raw_footer = raw_footer
return True
def onSongLiveClick(self):
service_item = ServiceItem(self.parent)
service_item.addIcon(u':/media/media_song.png')
self.generateSlideData(service_item)
self.parent.live_controller.addServiceItem(service_item)
def onSongAddClick(self):
service_item = ServiceItem(self.parent)
service_item.addIcon( u':/media/media_song.png')
self.generateSlideData(service_item)
self.parent.service_manager.addServiceItem(service_item)
# def onSongLiveClick(self):
# service_item = ServiceItem(self.parent)
# service_item.addIcon(u':/media/media_song.png')
# self.generateSlideData(service_item)
# self.parent.live_controller.addServiceItem(service_item)
#
# def onSongAddClick(self):
# service_item = ServiceItem(self.parent)
# service_item.addIcon( u':/media/media_song.png')
# self.generateSlideData(service_item)
# self.parent.service_manager.addServiceItem(service_item)