Video clean ups and bug fixes from 800

This commit is contained in:
Tim Bentley 2010-04-29 21:56:27 +01:00
parent 39a4593bd3
commit 4e6c56c430
7 changed files with 74 additions and 99 deletions

View File

@ -49,7 +49,6 @@ class ItemCapabilities(object):
RequiresMedia = 4
AllowsLoop = 5
class ServiceItem(object):
"""
The service item is a base class for the plugins to use to interact with

View File

@ -23,6 +23,16 @@
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
class HideMode(object):
"""
This is basically an enumeration class which specifies the mode of a Bible.
Mode refers to whether or not a Bible in OpenLP is a full Bible or needs to
be downloaded from the Internet on an as-needed basis.
"""
Blank = 1
Theme = 2
Screen = 3
from slidecontroller import HideMode
from servicenoteform import ServiceNoteForm
from serviceitemeditform import ServiceItemEditForm

View File

@ -131,16 +131,10 @@ class MainDisplay(DisplayWidget):
self.displayBlank = False
self.blankFrame = None
self.frame = None
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_blank'), self.blankDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_hide_theme'), self.hideThemeDisplay)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'videodisplay_start'), self.hideDisplay)
def setup(self):
"""
@ -203,67 +197,26 @@ class MainDisplay(DisplayWidget):
else:
self.showFullScreen()
def blankDisplay(self):#, blankType=HideMode.Blank, blanked=True):
log.debug(u'Blank main Display ')
def hideDisplay(self, mode=HideMode.Screen):
"""
Hide the display by making all layers transparent
Store the images so they can be replaced when required
"""
log.debug(u'hideDisplay mode = %d', mode)
self.storeImage = QtGui.QPixmap(self.display_image.pixmap())
self.storeText = QtGui.QPixmap(self.display_text.pixmap())
self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
self.display_alert.setPixmap(self.transparent)
self.display_text.setPixmap(self.transparent)
self.moveToTop()
# if blanked:
# self.displayBlank = True
# if blankType == HideMode.Blank:
# self.display_text.setPixmap(
# QtGui.QPixmap.fromImage(self.blankFrame))
# elif blankType == HideMode.Theme:
# theme = self.parent.RenderManager.renderer.bg_frame
# if not theme:
# theme = self.blankFrame
# self.display_text.setPixmap(QtGui.QPixmap.fromImage(theme))
# self.waitingFrame = None
# self.waitingFrameTrans = False
# else:
# self.displayBlank = False
# if self.waitingFrame:
# self.frameView(self.waitingFrame, self.waitingFrameTrans)
# elif self.display_frame:
# self.frameView(self.display_frame)
def hideDisplay(self):
"""
Hide the display by making all layers transparent
Store the images so they can be replaced when required
"""
log.debug(u'hideDisplay')
self.storeImage = QtGui.QPixmap(self.display_image.pixmap())
self.storeText = QtGui.QPixmap(self.display_text.pixmap())
self.display_image.setPixmap(self.transparent)
self.display_alert.setPixmap(self.transparent)
self.display_text.setPixmap(self.transparent)
self.moveToTop()
def hideThemeDisplay(self):
"""
Hide the display by making all layers transparent
Add the theme background to the image layer unless it has
not been generated in which case make it black.
Store the images so they can be replaced when required
"""
log.debug(u'hideDisplay')
self.storeImage = QtGui.QPixmap(self.display_image.pixmap())
self.storeText = QtGui.QPixmap(self.display_text.pixmap())
if self.parent.renderManager.renderer.bg_frame:
self.display_image.setPixmap(QtGui.QPixmap.fromImage(\
self.parent.renderManager.renderer.bg_frame))
else:
if mode == HideMode.Screen:
self.display_image.setPixmap(self.transparent)
elif mode == HideMode.Blank:
self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
self.display_alert.setPixmap(self.transparent)
self.display_text.setPixmap(self.transparent)
else:
if self.parent.renderManager.renderer.bg_frame:
self.display_image.setPixmap(QtGui.QPixmap.fromImage(\
self.parent.renderManager.renderer.bg_frame))
else:
self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
self.moveToTop()
def moveToTop(self):
@ -370,6 +323,7 @@ class VideoDisplay(Phonon.VideoWidget):
self.setWindowTitle(u'OpenLP Video Display')
self.parent = parent
self.screens = screens
self.hidden = False
self.mediaObject = Phonon.MediaObject()
self.setAspectRatio(aspect)
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
@ -377,6 +331,10 @@ class VideoDisplay(Phonon.VideoWidget):
Phonon.createPath(self.mediaObject, self.audioObject)
self.setWindowFlags(QtCore.Qt.WindowStaysOnBottomHint \
| QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_hide'), self.mediaHide)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'maindisplay_show'), self.mediaShow)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue)
QtCore.QObject.connect(Receiver.get_receiver(),
@ -421,10 +379,15 @@ class VideoDisplay(Phonon.VideoWidget):
file = os.path.join(message[0].get_frame_path(),
message[0].get_frame_title())
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
self.onMediaPlay()
self._play()
def onMediaPlay(self):
log.debug(u'VideoDisplay Play the new media, Live ')
if not self.hidden:
log.debug(u'VideoDisplay Play the new media, Live ')
self._play()
def _play(self):
log.debug(u'VideoDisplay _play called')
self.mediaObject.play()
self.setVisible(True)
self.showFullScreen()
@ -444,3 +407,13 @@ class VideoDisplay(Phonon.VideoWidget):
self.mediaObject.clearQueue()
self.setVisible(False)
def mediaHide(self):
self.mediaObject.pause()
self.hidden = True
self.setVisible(False)
def mediaShow(self):
if self.hidden:
self.hidden = False
self._play()

View File

@ -30,18 +30,9 @@ import os
from PyQt4 import QtCore, QtGui
from PyQt4.phonon import Phonon
from openlp.core.lib import ItemCapabilities
class HideMode(object):
"""
This is basically an enumeration class which specifies the mode of a Bible.
Mode refers to whether or not a Bible in OpenLP is a full Bible or needs to
be downloaded from the Internet on an as-needed basis.
"""
Blank = 1
Theme = 2
from openlp.core.lib import OpenLPToolbar, Receiver, resize_image
from openlp.core.ui import HideMode
from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
ItemCapabilities
log = logging.getLogger(__name__)
@ -599,7 +590,7 @@ class SlideController(QtGui.QWidget):
self.generalSettingsSection + u'/screen blank',
QtCore.QVariant(checked))
if checked:
Receiver.send_message(u'maindisplay_blank')
Receiver.send_message(u'maindisplay_hide', HideMode.Blank)
else:
Receiver.send_message(u'maindisplay_show')
@ -611,7 +602,7 @@ class SlideController(QtGui.QWidget):
self.blankButton.setChecked(False)
self.hideButton.setChecked(False)
if checked:
Receiver.send_message(u'maindisplay_hide_theme')
Receiver.send_message(u'maindisplay_hide', HideMode.Theme)
else:
Receiver.send_message(u'maindisplay_show')
@ -623,30 +614,10 @@ class SlideController(QtGui.QWidget):
self.blankButton.setChecked(False)
self.themeButton.setChecked(False)
if checked:
Receiver.send_message(u'maindisplay_hide')
Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
else:
Receiver.send_message(u'maindisplay_show')
def blankScreen(self, checked):
"""
Blank the display screen.
"""
self.hideButton.setChecked(False)
self.themeButton.setChecked(False)
# if self.serviceItem is not None:
# if checked:
# Receiver.send_message(
# u'%s_blank' % self.serviceItem.name.lower(),
# [self.serviceItem, self.isLive])
# else:
# Receiver.send_message(u'%s_unblank'
# % self.serviceItem.name.lower(),
# [self.serviceItem, self.isLive])
if checked:
Receiver.send_message(u'maindisplay_blank')
else:
Receiver.send_message(u'maindisplay_show4')
def onSlideSelected(self):
"""
Generate the preview when you click on a slide.
@ -787,6 +758,9 @@ class SlideController(QtGui.QWidget):
self.onSlideSelectedNext()
def onEditSong(self):
"""
From the preview display requires the service Item to be editied
"""
self.songEdit = True
Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(),
u'P:%s' % self.serviceItem.editId)
@ -801,9 +775,14 @@ class SlideController(QtGui.QWidget):
self.serviceItem, row)
def onMediaStart(self, item):
"""
Respond to the arrival of a media service item
"""
log.debug(u'SlideController onMediaStart')
if self.isLive:
Receiver.send_message(u'videodisplay_start',
[item, self.blankButton.isChecked()])
Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
else:
self.mediaObject.stop()
self.mediaObject.clearQueue()
@ -814,12 +793,20 @@ class SlideController(QtGui.QWidget):
self.onMediaPlay()
def onMediaPause(self):
"""
Respond to the Pause from the media Toolbar
"""
log.debug(u'SlideController onMediaPause')
if self.isLive:
Receiver.send_message(u'videodisplay_pause')
else:
self.mediaObject.pause()
def onMediaPlay(self):
"""
Respond to the Play from the media Toolbar
"""
log.debug(u'SlideController onMediaPlay')
if self.isLive:
Receiver.send_message(u'videodisplay_play')
else:
@ -828,6 +815,10 @@ class SlideController(QtGui.QWidget):
self.mediaObject.play()
def onMediaStop(self):
"""
Respond to the Stop from the media Toolbar
"""
log.debug(u'SlideController onMediaStop')
if self.isLive:
Receiver.send_message(u'videodisplay_stop')
else:

View File

@ -122,7 +122,7 @@ class ImageMediaItem(MediaManagerItem):
#if not present do not worry
pass
self.ListView.takeItem(item.row())
SettingsManager.set_list(
SettingsManager.set_list(self.SettingsSection,\
self.SettingsSection, self.getFileList())
def loadList(self, list):

View File

@ -97,7 +97,8 @@ class MediaMediaItem(MediaManagerItem):
if item:
row = self.ListView.row(item)
self.ListView.takeItem(row)
SettingsManager.set_list(self.SettingsSection, self.getFileList())
SettingsManager.set_list(self.SettingsSection, \
self.SettingsSection, self.getFileList())
def loadList(self, list):
for file in list:

View File

@ -167,7 +167,8 @@ class PresentationMediaItem(MediaManagerItem):
if item:
row = self.ListView.row(item)
self.ListView.takeItem(row)
SettingsManager.set_list(self.SettingsSection, self.getFileList())
SettingsManager.set_list(self.SettingsSection,\
self.SettingsSection, self.getFileList())
filepath = unicode((item.data(QtCore.Qt.UserRole)).toString())
#not sure of this has errors
#John please can you look at .