forked from openlp/openlp
Video clean ups and bug fixes from 800
This commit is contained in:
parent
39a4593bd3
commit
4e6c56c430
@ -49,7 +49,6 @@ class ItemCapabilities(object):
|
|||||||
RequiresMedia = 4
|
RequiresMedia = 4
|
||||||
AllowsLoop = 5
|
AllowsLoop = 5
|
||||||
|
|
||||||
|
|
||||||
class ServiceItem(object):
|
class ServiceItem(object):
|
||||||
"""
|
"""
|
||||||
The service item is a base class for the plugins to use to interact with
|
The service item is a base class for the plugins to use to interact with
|
||||||
|
@ -23,6 +23,16 @@
|
|||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# 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 slidecontroller import HideMode
|
||||||
from servicenoteform import ServiceNoteForm
|
from servicenoteform import ServiceNoteForm
|
||||||
from serviceitemeditform import ServiceItemEditForm
|
from serviceitemeditform import ServiceItemEditForm
|
||||||
|
@ -131,16 +131,10 @@ class MainDisplay(DisplayWidget):
|
|||||||
self.displayBlank = False
|
self.displayBlank = False
|
||||||
self.blankFrame = None
|
self.blankFrame = None
|
||||||
self.frame = None
|
self.frame = None
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
|
||||||
QtCore.SIGNAL(u'maindisplay_blank'), self.blankDisplay)
|
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay)
|
QtCore.SIGNAL(u'maindisplay_hide'), self.hideDisplay)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'maindisplay_show'), self.showDisplay)
|
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):
|
def setup(self):
|
||||||
"""
|
"""
|
||||||
@ -203,67 +197,26 @@ class MainDisplay(DisplayWidget):
|
|||||||
else:
|
else:
|
||||||
self.showFullScreen()
|
self.showFullScreen()
|
||||||
|
|
||||||
def blankDisplay(self):#, blankType=HideMode.Blank, blanked=True):
|
def hideDisplay(self, mode=HideMode.Screen):
|
||||||
log.debug(u'Blank main Display ')
|
|
||||||
"""
|
"""
|
||||||
Hide the display by making all layers transparent
|
Hide the display by making all layers transparent
|
||||||
Store the images so they can be replaced when required
|
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.storeImage = QtGui.QPixmap(self.display_image.pixmap())
|
||||||
self.storeText = QtGui.QPixmap(self.display_text.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_alert.setPixmap(self.transparent)
|
||||||
self.display_text.setPixmap(self.transparent)
|
self.display_text.setPixmap(self.transparent)
|
||||||
self.moveToTop()
|
if mode == HideMode.Screen:
|
||||||
# if blanked:
|
self.display_image.setPixmap(self.transparent)
|
||||||
# self.displayBlank = True
|
elif mode == HideMode.Blank:
|
||||||
# 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:
|
|
||||||
self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
|
self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.blankFrame))
|
||||||
self.display_alert.setPixmap(self.transparent)
|
else:
|
||||||
self.display_text.setPixmap(self.transparent)
|
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()
|
self.moveToTop()
|
||||||
|
|
||||||
def moveToTop(self):
|
def moveToTop(self):
|
||||||
@ -370,6 +323,7 @@ class VideoDisplay(Phonon.VideoWidget):
|
|||||||
self.setWindowTitle(u'OpenLP Video Display')
|
self.setWindowTitle(u'OpenLP Video Display')
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.screens = screens
|
self.screens = screens
|
||||||
|
self.hidden = False
|
||||||
self.mediaObject = Phonon.MediaObject()
|
self.mediaObject = Phonon.MediaObject()
|
||||||
self.setAspectRatio(aspect)
|
self.setAspectRatio(aspect)
|
||||||
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
|
self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
|
||||||
@ -377,6 +331,10 @@ class VideoDisplay(Phonon.VideoWidget):
|
|||||||
Phonon.createPath(self.mediaObject, self.audioObject)
|
Phonon.createPath(self.mediaObject, self.audioObject)
|
||||||
self.setWindowFlags(QtCore.Qt.WindowStaysOnBottomHint \
|
self.setWindowFlags(QtCore.Qt.WindowStaysOnBottomHint \
|
||||||
| QtCore.Qt.FramelessWindowHint | QtCore.Qt.Dialog)
|
| 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.QObject.connect(Receiver.get_receiver(),
|
||||||
QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue)
|
QtCore.SIGNAL(u'videodisplay_start'), self.onMediaQueue)
|
||||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
@ -421,10 +379,15 @@ class VideoDisplay(Phonon.VideoWidget):
|
|||||||
file = os.path.join(message[0].get_frame_path(),
|
file = os.path.join(message[0].get_frame_path(),
|
||||||
message[0].get_frame_title())
|
message[0].get_frame_title())
|
||||||
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
|
source = self.mediaObject.setCurrentSource(Phonon.MediaSource(file))
|
||||||
self.onMediaPlay()
|
self._play()
|
||||||
|
|
||||||
def onMediaPlay(self):
|
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.mediaObject.play()
|
||||||
self.setVisible(True)
|
self.setVisible(True)
|
||||||
self.showFullScreen()
|
self.showFullScreen()
|
||||||
@ -444,3 +407,13 @@ class VideoDisplay(Phonon.VideoWidget):
|
|||||||
self.mediaObject.clearQueue()
|
self.mediaObject.clearQueue()
|
||||||
self.setVisible(False)
|
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()
|
||||||
|
|
||||||
|
@ -30,18 +30,9 @@ import os
|
|||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
from PyQt4.phonon import Phonon
|
from PyQt4.phonon import Phonon
|
||||||
|
|
||||||
from openlp.core.lib import ItemCapabilities
|
from openlp.core.ui import HideMode
|
||||||
|
from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
|
||||||
class HideMode(object):
|
ItemCapabilities
|
||||||
"""
|
|
||||||
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
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -599,7 +590,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.generalSettingsSection + u'/screen blank',
|
self.generalSettingsSection + u'/screen blank',
|
||||||
QtCore.QVariant(checked))
|
QtCore.QVariant(checked))
|
||||||
if checked:
|
if checked:
|
||||||
Receiver.send_message(u'maindisplay_blank')
|
Receiver.send_message(u'maindisplay_hide', HideMode.Blank)
|
||||||
else:
|
else:
|
||||||
Receiver.send_message(u'maindisplay_show')
|
Receiver.send_message(u'maindisplay_show')
|
||||||
|
|
||||||
@ -611,7 +602,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.blankButton.setChecked(False)
|
self.blankButton.setChecked(False)
|
||||||
self.hideButton.setChecked(False)
|
self.hideButton.setChecked(False)
|
||||||
if checked:
|
if checked:
|
||||||
Receiver.send_message(u'maindisplay_hide_theme')
|
Receiver.send_message(u'maindisplay_hide', HideMode.Theme)
|
||||||
else:
|
else:
|
||||||
Receiver.send_message(u'maindisplay_show')
|
Receiver.send_message(u'maindisplay_show')
|
||||||
|
|
||||||
@ -623,30 +614,10 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.blankButton.setChecked(False)
|
self.blankButton.setChecked(False)
|
||||||
self.themeButton.setChecked(False)
|
self.themeButton.setChecked(False)
|
||||||
if checked:
|
if checked:
|
||||||
Receiver.send_message(u'maindisplay_hide')
|
Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
|
||||||
else:
|
else:
|
||||||
Receiver.send_message(u'maindisplay_show')
|
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):
|
def onSlideSelected(self):
|
||||||
"""
|
"""
|
||||||
Generate the preview when you click on a slide.
|
Generate the preview when you click on a slide.
|
||||||
@ -787,6 +758,9 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.onSlideSelectedNext()
|
self.onSlideSelectedNext()
|
||||||
|
|
||||||
def onEditSong(self):
|
def onEditSong(self):
|
||||||
|
"""
|
||||||
|
From the preview display requires the service Item to be editied
|
||||||
|
"""
|
||||||
self.songEdit = True
|
self.songEdit = True
|
||||||
Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(),
|
Receiver.send_message(u'%s_edit' % self.serviceItem.name.lower(),
|
||||||
u'P:%s' % self.serviceItem.editId)
|
u'P:%s' % self.serviceItem.editId)
|
||||||
@ -801,9 +775,14 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.serviceItem, row)
|
self.serviceItem, row)
|
||||||
|
|
||||||
def onMediaStart(self, item):
|
def onMediaStart(self, item):
|
||||||
|
"""
|
||||||
|
Respond to the arrival of a media service item
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaStart')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_start',
|
Receiver.send_message(u'videodisplay_start',
|
||||||
[item, self.blankButton.isChecked()])
|
[item, self.blankButton.isChecked()])
|
||||||
|
Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
|
||||||
else:
|
else:
|
||||||
self.mediaObject.stop()
|
self.mediaObject.stop()
|
||||||
self.mediaObject.clearQueue()
|
self.mediaObject.clearQueue()
|
||||||
@ -814,12 +793,20 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.onMediaPlay()
|
self.onMediaPlay()
|
||||||
|
|
||||||
def onMediaPause(self):
|
def onMediaPause(self):
|
||||||
|
"""
|
||||||
|
Respond to the Pause from the media Toolbar
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaPause')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_pause')
|
Receiver.send_message(u'videodisplay_pause')
|
||||||
else:
|
else:
|
||||||
self.mediaObject.pause()
|
self.mediaObject.pause()
|
||||||
|
|
||||||
def onMediaPlay(self):
|
def onMediaPlay(self):
|
||||||
|
"""
|
||||||
|
Respond to the Play from the media Toolbar
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaPlay')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_play')
|
Receiver.send_message(u'videodisplay_play')
|
||||||
else:
|
else:
|
||||||
@ -828,6 +815,10 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.mediaObject.play()
|
self.mediaObject.play()
|
||||||
|
|
||||||
def onMediaStop(self):
|
def onMediaStop(self):
|
||||||
|
"""
|
||||||
|
Respond to the Stop from the media Toolbar
|
||||||
|
"""
|
||||||
|
log.debug(u'SlideController onMediaStop')
|
||||||
if self.isLive:
|
if self.isLive:
|
||||||
Receiver.send_message(u'videodisplay_stop')
|
Receiver.send_message(u'videodisplay_stop')
|
||||||
else:
|
else:
|
||||||
|
@ -122,7 +122,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||||||
#if not present do not worry
|
#if not present do not worry
|
||||||
pass
|
pass
|
||||||
self.ListView.takeItem(item.row())
|
self.ListView.takeItem(item.row())
|
||||||
SettingsManager.set_list(
|
SettingsManager.set_list(self.SettingsSection,\
|
||||||
self.SettingsSection, self.getFileList())
|
self.SettingsSection, self.getFileList())
|
||||||
|
|
||||||
def loadList(self, list):
|
def loadList(self, list):
|
||||||
|
@ -97,7 +97,8 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
if item:
|
if item:
|
||||||
row = self.ListView.row(item)
|
row = self.ListView.row(item)
|
||||||
self.ListView.takeItem(row)
|
self.ListView.takeItem(row)
|
||||||
SettingsManager.set_list(self.SettingsSection, self.getFileList())
|
SettingsManager.set_list(self.SettingsSection, \
|
||||||
|
self.SettingsSection, self.getFileList())
|
||||||
|
|
||||||
def loadList(self, list):
|
def loadList(self, list):
|
||||||
for file in list:
|
for file in list:
|
||||||
|
@ -167,7 +167,8 @@ class PresentationMediaItem(MediaManagerItem):
|
|||||||
if item:
|
if item:
|
||||||
row = self.ListView.row(item)
|
row = self.ListView.row(item)
|
||||||
self.ListView.takeItem(row)
|
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())
|
filepath = unicode((item.data(QtCore.Qt.UserRole)).toString())
|
||||||
#not sure of this has errors
|
#not sure of this has errors
|
||||||
#John please can you look at .
|
#John please can you look at .
|
||||||
|
Loading…
Reference in New Issue
Block a user