From 23d945a4541d21260321a13f647fd8888a81e702 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 28 Nov 2009 06:49:53 +0000 Subject: [PATCH] Replace phonon code, add framework for transitions --- openlp/core/lib/renderer.py | 2 +- openlp/core/ui/maindisplay.py | 50 +++++++++++----------- openlp/core/ui/slidecontroller.py | 30 ++++++------- openlp/plugins/songs/forms/editsongform.py | 2 +- 4 files changed, 41 insertions(+), 43 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index f825498df..69252ecde 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -261,7 +261,7 @@ class Renderer(object): bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()), True) log.debug(u'generate_frame_from_lines - Finish') - return self._frame + return {u'main':self._frame, u'trans':None} def _generate_background_frame(self): """ diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 72ded51f8..8e35ed896 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -26,7 +26,7 @@ import logging import os from PyQt4 import QtCore, QtGui -#from PyQt4.phonon import Phonon +from PyQt4.phonon import Phonon from openlp.core.lib import Receiver @@ -92,13 +92,13 @@ class MainDisplay(DisplayWidget): self.layout.setSpacing(0) self.layout.setMargin(0) self.layout.setObjectName(u'layout') - #self.mediaObject = Phonon.MediaObject(self) - #self.video = Phonon.VideoWidget() - #self.video.setVisible(False) - #self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject) - #Phonon.createPath(self.mediaObject, self.video) - #Phonon.createPath(self.mediaObject, self.audio) - #self.layout.insertWidget(0, self.video) + self.mediaObject = Phonon.MediaObject(self) + self.video = Phonon.VideoWidget() + self.video.setVisible(False) + self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject) + Phonon.createPath(self.mediaObject, self.video) + Phonon.createPath(self.mediaObject, self.audio) + self.layout.insertWidget(0, self.video) self.display = QtGui.QLabel(self) self.display.setScaledContents(True) self.layout.insertWidget(0, self.display) @@ -116,16 +116,16 @@ class MainDisplay(DisplayWidget): QtCore.SIGNAL(u'live_slide_hide'), self.hideDisplay) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'live_slide_show'), self.showDisplay) -# QtCore.QObject.connect(self.mediaObject, -# QtCore.SIGNAL(u'finished()'), self.onMediaFinish) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'media_start'), self.onMediaQueue) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'media_play'), self.onMediaPlay) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'media_pause'), self.onMediaPaws) -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'media_stop'), self.onMediaStop) + QtCore.QObject.connect(self.mediaObject, + QtCore.SIGNAL(u'finished()'), self.onMediaFinish) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'media_start'), self.onMediaQueue) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'media_play'), self.onMediaPlay) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'media_pause'), self.onMediaPaws) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'media_stop'), self.onMediaStop) def setup(self, screenNumber): """ @@ -183,27 +183,25 @@ class MainDisplay(DisplayWidget): if not self.primary: self.setVisible(True) - def frameView(self, frame): + def frameView(self, frame, transition=False): """ Called from a slide controller to display a frame if the alert is in progress the alert is added on top ``frame`` Image frame to be rendered """ - self.frame = frame if self.timer_id != 0 : self.displayAlert() elif not self.displayBlank: -# self.setWindowOpacity(0.5) -# self.show() - self.display.setPixmap(QtGui.QPixmap.fromImage(frame)) + if transition: + self.display.setPixmap(QtGui.QPixmap.fromImage(frame[u'main'])) + else: + self.display.setPixmap(QtGui.QPixmap.fromImage(frame)) # QtCore.QTimer.singleShot(500, self.aa ) if not self.isVisible(): self.setVisible(True) self.showFullScreen() -# -# def aa(self): -# self.setWindowOpacity(1) + self.frame = frame def blankDisplay(self, blanked=True): if blanked: diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 9d81c3cbf..5bb9a8765 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -26,7 +26,7 @@ import time import os from PyQt4 import QtCore, QtGui -#from PyQt4.phonon import Phonon +from PyQt4.phonon import Phonon from openlp.core.lib import OpenLPToolbar, Receiver, str_to_bool, PluginConfig @@ -197,11 +197,11 @@ class SlideController(QtGui.QWidget): self.Mediabar.addToolbarButton( u'Media Stop', u':/slides/media_playback_stop.png', self.trUtf8(u'Start playing media'), self.onMediaStop) - #self.volumeSlider = Phonon.VolumeSlider() - #self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) - #self.volumeSlider.setObjectName(u'volumeSlider') - #self.Mediabar.addToolbarWidget( - # u'Audio Volume', self.volumeSlider) + self.volumeSlider = Phonon.VolumeSlider() + self.volumeSlider.setGeometry(QtCore.QRect(90, 260, 221, 24)) + self.volumeSlider.setObjectName(u'volumeSlider') + self.Mediabar.addToolbarWidget( + u'Audio Volume', self.volumeSlider) self.ControllerLayout.addWidget(self.Mediabar) # Build the Song Toolbar if isLive: @@ -236,13 +236,13 @@ class SlideController(QtGui.QWidget): self.SlideLayout.setSpacing(0) self.SlideLayout.setMargin(0) self.SlideLayout.setObjectName(u'SlideLayout') - # self.mediaObject = Phonon.MediaObject(self) - #self.video = Phonon.VideoWidget() - #self.video.setVisible(False) - #self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject) - #Phonon.createPath(self.mediaObject, self.video) - #Phonon.createPath(self.mediaObject, self.audio) - #self.SlideLayout.insertWidget(0, self.video) + self.mediaObject = Phonon.MediaObject(self) + self.video = Phonon.VideoWidget() + self.video.setVisible(False) + self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self.mediaObject) + Phonon.createPath(self.mediaObject, self.video) + Phonon.createPath(self.mediaObject, self.audio) + self.SlideLayout.insertWidget(0, self.video) # Actual preview screen self.SlidePreview = QtGui.QLabel(self) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, @@ -517,10 +517,10 @@ class SlideController(QtGui.QWidget): else: before = time.time() frame = self.serviceItem.get_rendered_frame(row) - self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame)) + self.SlidePreview.setPixmap(QtGui.QPixmap.fromImage(frame[u'main'])) log.log(15, u'Slide Rendering took %4s' % (time.time() - before)) if self.isLive: - self.parent.mainDisplay.frameView(frame) + self.parent.mainDisplay.frameView(frame, True) self.selectedRow = row def onSlideChange(self, row): diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index db872184a..58e1ecf79 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -325,7 +325,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.verse_form.setVerse(tempText, True, verseId) self.verse_form.exec_() afterText, verse, subVerse = self.verse_form.getVerse() - data = u'%s:%s' %(verse , subVerse) + data = u'%s:%s' %(verse, subVerse) item.setData(QtCore.Qt.UserRole, QtCore.QVariant(data)) item.setText(afterText) #number of lines has change