Fix up display levels and renames

This commit is contained in:
Tim Bentley 2010-07-02 06:16:30 +01:00
parent c892f9b38f
commit e3e6c82eac
4 changed files with 48 additions and 50 deletions

View File

@ -35,7 +35,6 @@ import uuid
from PyQt4 import QtGui from PyQt4 import QtGui
from openlp.core.lib import build_icon, resize_image from openlp.core.lib import build_icon, resize_image
from openlp.core.utils import AppLocation
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -93,7 +92,6 @@ class ServiceItem(object):
self.is_valid = True self.is_valid = True
self.cache = {} self.cache = {}
self.icon = None self.icon = None
self.serviceItemPath = AppLocation.get_section_data_path(u'serviceItems')
def add_capability(self, capability): def add_capability(self, capability):
""" """
@ -155,12 +153,9 @@ class ServiceItem(object):
del self.cache[len(self._display_frames)] del self.cache[len(self._display_frames)]
log.log(15, u'Formatting took %4s' % (time.time() - before)) log.log(15, u'Formatting took %4s' % (time.time() - before))
elif self.service_item_type == ServiceItemType.Image: elif self.service_item_type == ServiceItemType.Image:
for count, slide in enumerate(self._raw_frames): for slide in self._raw_frames:
slide[u'image'] = resize_image(slide[u'image'], slide[u'image'] = resize_image(slide[u'image'],
self.render_manager.width, self.render_manager.height) self.render_manager.width, self.render_manager.height)
path = os.path.join(self.serviceItemPath, self._uuid + unicode(count) + u'.png')
slide[u'image'].save(path)
slide[u'display'] = path
elif self.service_item_type == ServiceItemType.Command: elif self.service_item_type == ServiceItemType.Command:
pass pass
else: else:
@ -376,8 +371,7 @@ class ServiceItem(object):
if self.service_item_type == ServiceItemType.Text: if self.service_item_type == ServiceItemType.Text:
return self.render_individual(row) return self.render_individual(row)
else: else:
return {u'main':self._raw_frames[row][u'image'], return {u'main':self._raw_frames[row][u'image'], u'trans':None}
u'trans':None, u'display':self._raw_frames[row][u'display']}
def get_frame_title(self, row=0): def get_frame_title(self, row=0):
""" """

View File

@ -32,7 +32,6 @@ from PyQt4.phonon import Phonon
from openlp.core.lib import Receiver, resize_image from openlp.core.lib import Receiver, resize_image
from openlp.core.ui import HideMode from openlp.core.ui import HideMode
from openlp.core.utils import AppLocation
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -105,11 +104,17 @@ class DisplayManager(QtGui.QWidget):
""" """
self.mainDisplay.addAlert(alertMessage, location) self.mainDisplay.addAlert(alertMessage, location)
def displayImage(self, path): def displayImageWithText(self, frame):
""" """
Handles the addition of a background Image to the displays Handles the addition of a background Image to the displays
""" """
self.mainDisplay.displayImage(path) self.mainDisplay.addImageWithText(frame)
def displayImage(self, frame):
"""
Handles the addition of a background Image to the displays
"""
self.mainDisplay.displayImage(frame)
def displayVideo(self, path): def displayVideo(self, path):
""" """
@ -213,6 +218,7 @@ class MainDisplay(DisplayWidget):
pass pass
self.screens = screens self.screens = screens
self.setupScene() self.setupScene()
self.setupVideo()
self.setupImage() self.setupImage()
self.setupText() self.setupText()
self.setupAlert() self.setupAlert()
@ -249,7 +255,7 @@ class MainDisplay(DisplayWidget):
(self.screen[u'size'].width() - splash_image.width()) / 2, (self.screen[u'size'].width() - splash_image.width()) / 2,
(self.screen[u'size'].height() - splash_image.height()) / 2, (self.screen[u'size'].height() - splash_image.height()) / 2,
splash_image) splash_image)
#self.display_image.setPixmap(QtGui.QPixmap.fromImage(self.InitialFrame)) self.displayImage(self.InitialFrame)
self.repaint() self.repaint()
#Build a Black screen #Build a Black screen
painter = QtGui.QPainter() painter = QtGui.QPainter()
@ -278,18 +284,23 @@ class MainDisplay(DisplayWidget):
self.scene.setSceneRect(0,0,self.size().width(), self.size().height()) self.scene.setSceneRect(0,0,self.size().width(), self.size().height())
self.setScene(self.scene) self.setScene(self.scene)
def setupImage(self): def setupVideo(self):
self.webView = QtWebKit.QWebView() self.webView = QtWebKit.QWebView()
self.page = self.webView.page() self.page = self.webView.page()
self.imageDisplay = self.page.mainFrame() self.videoDisplay = self.page.mainFrame()
self.imageDisplay.setScrollBarPolicy(QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff) self.videoDisplay.setScrollBarPolicy(QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff)
self.imageDisplay.setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff) self.videoDisplay.setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff)
self.proxy = QtGui.QGraphicsProxyWidget() self.proxy = QtGui.QGraphicsProxyWidget()
self.proxy.setWidget(self.webView) self.proxy.setWidget(self.webView)
self.proxy.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint) self.proxy.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.FramelessWindowHint)
self.proxy.setZValue(2) self.proxy.setZValue(1)
self.scene.addItem(self.proxy) self.scene.addItem(self.proxy)
def setupImage(self):
self.imageDisplay = QtGui.QGraphicsPixmapItem()
self.imageDisplay.setZValue(2)
self.scene.addItem(self.imageDisplay)
def setupText(self): def setupText(self):
#self.displayText = QtGui.QGraphicsTextItem() #self.displayText = QtGui.QGraphicsTextItem()
self.displayText = QtGui.QGraphicsPixmapItem() self.displayText = QtGui.QGraphicsPixmapItem()
@ -305,9 +316,9 @@ class MainDisplay(DisplayWidget):
self.scene.addItem(self.alertText) self.scene.addItem(self.alertText)
def setupBlank(self): def setupBlank(self):
self.display_blank = QtGui.QGraphicsPixmapItem() self.displayBlank = QtGui.QGraphicsPixmapItem()
self.display_blank.setZValue(10) self.displayBlank.setZValue(10)
self.scene.addItem(self.display_blank) self.scene.addItem(self.displayBlank)
def resetDisplay(self): def resetDisplay(self):
log.debug(u'resetDisplay') log.debug(u'resetDisplay')
@ -334,14 +345,14 @@ class MainDisplay(DisplayWidget):
#self.display_image.setPixmap(self.transparent) #self.display_image.setPixmap(self.transparent)
self.setVisible(False) self.setVisible(False)
elif mode == HideMode.Blank: elif mode == HideMode.Blank:
self.display_blank.setPixmap( self.displayBlank.setPixmap(
QtGui.QPixmap.fromImage(self.blankFrame)) QtGui.QPixmap.fromImage(self.blankFrame))
else: else:
if self.parent.renderManager.renderer.bg_frame: if self.parent.renderManager.renderer.bg_frame:
self.display_blank.setPixmap(QtGui.QPixmap.fromImage( self.displayBlank.setPixmap(QtGui.QPixmap.fromImage(
self.parent.renderManager.renderer.bg_frame)) self.parent.renderManager.renderer.bg_frame))
else: else:
self.display_blank.setPixmap( self.displayBlank.setPixmap(
QtGui.QPixmap.fromImage(self.blankFrame)) QtGui.QPixmap.fromImage(self.blankFrame))
def showDisplay(self, message=u''): def showDisplay(self, message=u''):
@ -351,7 +362,7 @@ class MainDisplay(DisplayWidget):
Make the stored images None to release memory. Make the stored images None to release memory.
""" """
log.debug(u'showDisplay') log.debug(u'showDisplay')
self.display_blank.setPixmap(self.transparent) self.displayBlank.setPixmap(self.transparent)
#Trigger actions when display is active again #Trigger actions when display is active again
Receiver.send_message(u'maindisplay_active') Receiver.send_message(u'maindisplay_active')
@ -359,7 +370,8 @@ class MainDisplay(DisplayWidget):
log.debug(u'addImageWithText') log.debug(u'addImageWithText')
frame = resize_image( frame = resize_image(
frame, self.screen[u'size'].width(), self.screen[u'size'].height()) frame, self.screen[u'size'].width(), self.screen[u'size'].height())
self.display_image.setPixmap(QtGui.QPixmap.fromImage(frame)) self.imageDisplay.setPixmap(QtGui.QPixmap.fromImage(frame))
self.videoDisplay.setHtml(u'<html></html>')
def addAlert(self, message, location): def addAlert(self, message, location):
""" """
@ -379,14 +391,18 @@ class MainDisplay(DisplayWidget):
self.alertText.setPos(0,self.size().height() - 76) self.alertText.setPos(0,self.size().height() - 76)
self.alertText.setHtml(message) self.alertText.setHtml(message)
def displayImage(self, path): def displayImage(self, frame):
""" """
Places the Image passed on the display screen Places the Image passed on the display screen
``path`` ``frame``
The path to the image to be displayed The image to be displayed
""" """
log.debug(u'adddisplayImage') log.debug(u'adddisplayImage')
self.imageDisplay.setHtml(HTMLIMAGE % path) if isinstance(frame, QtGui.QImage):
self.imageDisplay.setPixmap(QtGui.QPixmap.fromImage(frame))
else:
self.imageDisplay.setPixmap(frame)
self.videoDisplay.setHtml(u'<html></html>')
def displayVideo(self, path): def displayVideo(self, path):
""" """
@ -395,8 +411,9 @@ class MainDisplay(DisplayWidget):
The path to the image to be displayed The path to the image to be displayed
""" """
log.debug(u'adddisplayVideo') log.debug(u'adddisplayVideo')
self.imageDisplay.setHtml(HTMLVIDEO % self.videoDisplay.setHtml(HTMLVIDEO %
(path, self.screen[u'size'].width(), self.screen[u'size'].height())) (path, self.screen[u'size'].width(), self.screen[u'size'].height()))
self.displayImage(self.transparent)
def frameView(self, frame, transition=False): def frameView(self, frame, transition=False):
""" """
@ -433,20 +450,6 @@ class MainDisplay(DisplayWidget):
if not self.isVisible() and self.screens.display: if not self.isVisible() and self.screens.display:
self.setVisible(True) self.setVisible(True)
def closeEvent(self, event):
"""
Shutting down cleans up background files
"""
serviceItemPath = AppLocation.get_section_data_path(u'serviceItems')
for file in os.listdir(serviceItemPath):
file_path = os.path.join(serviceItemPath, file)
try:
if os.path.isfile(file_path):
os.remove(file_path)
except OSError:
log.exception(u'Failed to clean up servicePath')
class VideoDisplay(Phonon.VideoWidget): class VideoDisplay(Phonon.VideoWidget):
""" """
This is the form that is used to display videos on the projector. This is the form that is used to display videos on the projector.

View File

@ -785,7 +785,7 @@ class SlideController(QtGui.QWidget):
if self.serviceItem.is_text(): if self.serviceItem.is_text():
self.mainDisplay.frameView(frame, True) self.mainDisplay.frameView(frame, True)
else: else:
self.displayManager.displayImage(frame[u'display']) self.displayManager.displayImage(frame[u'main'])
self.selectedRow = row self.selectedRow = row
Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix, Receiver.send_message(u'slidecontroller_%s_changed' % self.typePrefix,
row) row)

View File

@ -173,11 +173,12 @@ class ImageMediaItem(MediaManagerItem):
if check_item_selected(self.ListView, if check_item_selected(self.ListView,
translate('ImagePlugin.MediaItem', translate('ImagePlugin.MediaItem',
'You must select an item to process.')): 'You must select an item to process.')):
item = self.buildServiceItem() items = self.ListView.selectedIndexes()
item.render() for item in items:
self.parent.live_controller.displayManager. \ bitem = self.ListView.item(item.row())
displayImage(item.get_rendered_frame(0)[u'display']) filename = unicode(bitem.data(QtCore.Qt.UserRole).toString())
frame = QtGui.QImage(unicode(filename))
self.parent.live_controller.displayManager.displayImageWithText(frame)
def onPreviewClick(self): def onPreviewClick(self):
MediaManagerItem.onPreviewClick(self) MediaManagerItem.onPreviewClick(self)