Cleanups and ratio changes

This commit is contained in:
Tim Bentley 2010-07-24 17:55:06 +01:00
parent b76a946bff
commit 63b4696621
5 changed files with 164 additions and 107 deletions

View File

@ -174,13 +174,14 @@ def image_to_byte(image):
The image to converted. The image to converted.
""" """
byte_array = QtCore.QByteArray() byte_array = QtCore.QByteArray()
buffer = QtCore.QBuffer(byte_array) #// use buffer to store pixmap into byteArray # use buffer to store pixmap into byteArray
buffer.open(QtCore.QIODevice.WriteOnly) buffie = QtCore.QBuffer(byte_array)
buffie.open(QtCore.QIODevice.WriteOnly)
if isinstance(image, QtGui.QImage): if isinstance(image, QtGui.QImage):
pixmap = QtGui.QPixmap.fromImage(image) pixmap = QtGui.QPixmap.fromImage(image)
else: else:
pixmap = QtGui.QPixmap(image) pixmap = QtGui.QPixmap(image)
pixmap.save(buffer, "PNG") pixmap.save(buffie, "PNG")
#convert to base64 encoding so does not get missed! #convert to base64 encoding so does not get missed!
return byte_array.toBase64() return byte_array.toBase64()

View File

@ -40,6 +40,7 @@ HTMLSRC = u"""
%s %s
%s %s
%s %s
%s
</style> </style>
<script language="javascript"> <script language="javascript">
var t = null; var t = null;
@ -74,6 +75,7 @@ HTMLSRC = u"""
<div id="footer" class="footer"></div> <div id="footer" class="footer"></div>
<div id="alert"></div> <div id="alert"></div>
<video id="video"></video> <video id="video"></video>
<blank id="blank"></blank>
%s %s
</body> </body>
</html> </html>
@ -83,11 +85,13 @@ def build_html(item, screen, alert):
height = screen[u'size'].height() height = screen[u'size'].height()
html = HTMLSRC % (build_video(width, height), html = HTMLSRC % (build_video(width, height),
build_image(width, height), build_image(width, height),
build_lyrics(item, width, height), build_lyrics(item),
build_footer(item, width, height), build_footer(item),
build_alert(width, height, alert), build_alert(width, alert),
build_image(width, height), build_image(width, height),
build_blank(width, height),
build_image_src(item.bg_frame)) build_image_src(item.bg_frame))
print html
return html return html
def build_video(width, height): def build_video(width, height):
@ -103,6 +107,18 @@ def build_video(width, height):
""" """
return video % (width, height) return video % (width, height)
def build_blank(width, height):
blank = """
#blank {
position: absolute;
left: 0px;
top: 0px;
width: %spx
height: %spx;
z-index:10;
}
"""
return blank % (width, height)
def build_image(width, height): def build_image(width, height):
image = """ image = """
@ -124,7 +140,7 @@ def build_image_src(image):
""" """
return image_src % image_to_byte(image) return image_src % image_to_byte(image)
def build_lyrics(item, width, height): def build_lyrics(item):
lyrics = """ lyrics = """
#lyrics {position: absolute; %s z-index:3; %s; %s %s } #lyrics {position: absolute; %s z-index:3; %s; %s %s }
table {border=0;margin=0padding=0;} table {border=0;margin=0padding=0;}
@ -136,9 +152,10 @@ def build_lyrics(item, width, height):
font = u'' font = u''
text = u'' text = u''
if theme: if theme:
position = u' left: %spx; top: %spx; width: %spx; height: %spx; ' %\ position = u' left: %spx; top: %spx; width: %spx; height: %spx; ' % \
(item.main.x(), item.main.y(), item.main.width(), item.main.height()) (item.main.x(), item.main.y(), item.main.width(),
font = u' font-family %s; font-size: %spx;' %\ item.main.height())
font = u' font-family %s; font-size: %spx;' % \
(theme.font_main_name, theme.font_main_proportion) (theme.font_main_name, theme.font_main_proportion)
align = u'' align = u''
if theme.display_horizontalAlign == 2: if theme.display_horizontalAlign == 2:
@ -153,7 +170,8 @@ def build_lyrics(item, width, height):
valign = u'vertical-align=bottom;' valign = u'vertical-align=bottom;'
text = u'color:%s; %s %s' % (theme.font_main_color, align, valign) text = u'color:%s; %s %s' % (theme.font_main_color, align, valign)
if theme.display_shadow and theme.display_outline: if theme.display_shadow and theme.display_outline:
fontworks = u'text-shadow: -%spx 0 %s, 0 %spx %s, %spx 0 %s, 0 -%spx %s, %spx %spx %spx %s' %\ fontworks = u'text-shadow: -%spx 0 %s, 0 %spx %s, %spx 0 %s, 0 ' \
'-%spx %s, %spx %spx %spx %s' % \
(theme.display_outline_size, theme.display_outline_color, (theme.display_outline_size, theme.display_outline_color,
theme.display_outline_size, theme.display_outline_color, theme.display_outline_size, theme.display_outline_color,
theme.display_outline_size, theme.display_outline_color, theme.display_outline_size, theme.display_outline_color,
@ -161,11 +179,12 @@ def build_lyrics(item, width, height):
theme.display_shadow_size, theme.display_shadow_size, theme.display_shadow_size, theme.display_shadow_size,
theme.display_shadow_size, theme.display_shadow_color) theme.display_shadow_size, theme.display_shadow_color)
elif theme.display_shadow: elif theme.display_shadow:
fontworks = u'text-shadow: %spx %spx %spx %s' %\ fontworks = u'text-shadow: %spx %spx %spx %s' % \
(theme.display_shadow_size, theme.display_shadow_size, (theme.display_shadow_size, theme.display_shadow_size,
theme.display_shadow_size, theme.display_shadow_color) theme.display_shadow_size, theme.display_shadow_color)
elif theme.display_outline: elif theme.display_outline:
fontworks = u'text-shadow: -%spx 0 %s, 0 %spx %s, %spx 0 %s, 0 -%spx %s' %\ fontworks = u'text-shadow: -%spx 0 %s, 0 %spx %s,' \
' %spx 0 %s, 0 -%spx %s' % \
(theme.display_outline_size, theme.display_outline_color, (theme.display_outline_size, theme.display_outline_color,
theme.display_outline_size, theme.display_outline_color, theme.display_outline_size, theme.display_outline_color,
theme.display_outline_size, theme.display_outline_color, theme.display_outline_size, theme.display_outline_color,
@ -174,7 +193,7 @@ def build_lyrics(item, width, height):
print lyrics_html print lyrics_html
return lyrics_html return lyrics_html
def build_footer(item, width, height): def build_footer(item):
lyrics = """ lyrics = """
#footer {position: absolute; %s z-index:3; %s; %s } #footer {position: absolute; %s z-index:3; %s; %s }
""" """
@ -184,9 +203,10 @@ def build_footer(item, width, height):
font = u'' font = u''
text = u'' text = u''
if theme: if theme:
position = u' left: %spx; top: %spx; width: %spx; height: %spx; ' %\ position = u' left: %spx; top: %spx; width: %spx; height: %spx; ' % \
(item.footer.x(), item.footer.y(), item.footer.width(), item.footer.height()) (item.footer.x(), item.footer.y(), item.footer.width(),
font = u' font-family %s; font-size: %spx;' %\ item.footer.height())
font = u' font-family %s; font-size: %spx;' % \
(theme.font_footer_name, theme.font_footer_proportion) (theme.font_footer_name, theme.font_footer_proportion)
align = u'' align = u''
if theme.display_horizontalAlign == 2: if theme.display_horizontalAlign == 2:
@ -205,7 +225,7 @@ def build_footer(item, width, height):
return lyrics_html return lyrics_html
def build_alert(width, height, alert): def build_alert(width, alert):
alert = """ alert = """
#alert { #alert {
position: absolute; position: absolute;

View File

@ -36,18 +36,6 @@ log = logging.getLogger(__name__)
#http://www.steveheffernan.com/html5-video-player/demo-video-player.html #http://www.steveheffernan.com/html5-video-player/demo-video-player.html
## 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'videodisplay_start'), self.onStartVideo)
## QtCore.QObject.connect(Receiver.get_receiver(),
## QtCore.SIGNAL(u'videodisplay_stop'), self.onStopVideo)
## QtCore.QObject.connect(Receiver.get_receiver(),
## QtCore.SIGNAL(u'config_updated'), self.setup)
class DisplayWidget(QtGui.QGraphicsView): class DisplayWidget(QtGui.QGraphicsView):
""" """
Customised version of QTableWidget which can respond to keyboard Customised version of QTableWidget which can respond to keyboard
@ -55,44 +43,44 @@ class DisplayWidget(QtGui.QGraphicsView):
""" """
log.info(u'Display Widget loaded') log.info(u'Display Widget loaded')
def __init__(self, live, parent=None, name=None): def __init__(self, live, parent=None):
QtGui.QGraphicsView.__init__(self) QtGui.QGraphicsView.__init__(self)
self.parent = parent self.parent = parent
self.live = live self.live = live
# self.hotkey_map = { self.hotkey_map = {
# QtCore.Qt.Key_Return: 'servicemanager_next_item', QtCore.Qt.Key_Return: 'servicemanager_next_item',
# QtCore.Qt.Key_Space: 'slidecontroller_live_next_noloop', QtCore.Qt.Key_Space: 'slidecontroller_live_next_noloop',
# QtCore.Qt.Key_Enter: 'slidecontroller_live_next_noloop', QtCore.Qt.Key_Enter: 'slidecontroller_live_next_noloop',
# QtCore.Qt.Key_0: 'servicemanager_next_item', QtCore.Qt.Key_0: 'servicemanager_next_item',
# QtCore.Qt.Key_Backspace: 'slidecontroller_live_previous_noloop'} QtCore.Qt.Key_Backspace: 'slidecontroller_live_previous_noloop'}
def keyPressEvent(self, event): def keyPressEvent(self, event):
# Key events only needed for live # Key events only needed for live
if not self.live: if not self.live:
return return
# if isinstance(event, QtGui.QKeyEvent): if isinstance(event, QtGui.QKeyEvent):
# #here accept the event and do something # Here accept the event and do something
# if event.key() == QtCore.Qt.Key_Up: if event.key() == QtCore.Qt.Key_Up:
# Receiver.send_message(u'slidecontroller_live_previous') Receiver.send_message(u'slidecontroller_live_previous')
# event.accept() event.accept()
# elif event.key() == QtCore.Qt.Key_Down: elif event.key() == QtCore.Qt.Key_Down:
# Receiver.send_message(u'slidecontroller_live_next') Receiver.send_message(u'slidecontroller_live_next')
# event.accept() event.accept()
# elif event.key() == QtCore.Qt.Key_PageUp: elif event.key() == QtCore.Qt.Key_PageUp:
# Receiver.send_message(u'slidecontroller_live_first') Receiver.send_message(u'slidecontroller_live_first')
# event.accept() event.accept()
# elif event.key() == QtCore.Qt.Key_PageDown: elif event.key() == QtCore.Qt.Key_PageDown:
# Receiver.send_message(u'slidecontroller_live_last') Receiver.send_message(u'slidecontroller_live_last')
# event.accept() event.accept()
# elif event.key() in self.hotkey_map: elif event.key() in self.hotkey_map:
# Receiver.send_message(self.hotkey_map[event.key()]) Receiver.send_message(self.hotkey_map[event.key()])
# event.accept() event.accept()
# elif event.key() == QtCore.Qt.Key_Escape: elif event.key() == QtCore.Qt.Key_Escape:
# self.resetDisplay() self.resetDisplay()
# event.accept() event.accept()
# event.ignore() event.ignore()
# else: else:
# event.ignore() event.ignore()
class MainDisplay(DisplayWidget): class MainDisplay(DisplayWidget):
@ -104,14 +92,18 @@ class MainDisplay(DisplayWidget):
self.setWindowTitle(u'OpenLP Display') self.setWindowTitle(u'OpenLP Display')
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | self.setWindowFlags(QtCore.Qt.FramelessWindowHint |
QtCore.Qt.WindowStaysOnTopHint) QtCore.Qt.WindowStaysOnTopHint)
self.currvideo = False
self.video1 = "c:\\users\\jonathan\\Desktop\\Wildlife.wmv"
self.video2 = "c:\\users\\jonathan\\Desktop\\movie.ogg"
self.currslide = False
self.slide1 = "<sup>[1:1]</sup> In the beginning God created the heavens and the earth.<br/><br/><sup> [1:2]</sup> Now the earth was formless and empty, darkness was over the surface of the deep, and the Spirit of God was hovering over the waters.<br/><br/><sup>[1:3]</sup> And God said, \"Let there be light,\" and there was light.<br/><br/><sup>[1:4]</sup> God saw that the light was good, and he separated the light from the darkness.<br/><br/>"
self.slide2 = "<br /><br />This is the chorus<br />Blah Blah Blah<br />Blah Blah Blah<br />Blah Blah Blah<br />Blah Blah Blah<br />Blah Blah Blah"
self.alerttext = "<p>Red Alert! Raise Shields!</p>" self.alerttext = "<p>Red Alert! Raise Shields!</p>"
if self.isLive:
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'videodisplay_start'), self.onStartVideo)
## QtCore.QObject.connect(Receiver.get_receiver(),
## QtCore.SIGNAL(u'videodisplay_stop'), self.onStopVideo)
## QtCore.QObject.connect(Receiver.get_receiver(),
## QtCore.SIGNAL(u'config_updated'), self.setup)
def setup(self): def setup(self):
log.debug(u'Setup %s for %s ' % ( log.debug(u'Setup %s for %s ' % (
@ -130,6 +122,14 @@ class MainDisplay(DisplayWidget):
self.frame.setScrollBarPolicy(QtCore.Qt.Horizontal, self.frame.setScrollBarPolicy(QtCore.Qt.Horizontal,
QtCore.Qt.ScrollBarAlwaysOff) QtCore.Qt.ScrollBarAlwaysOff)
if self.isLive: if self.isLive:
# Build the initial frame.
self.black = QtGui.QImage(
self.screens.current[u'size'].width(),
self.screens.current[u'size'].height(),
QtGui.QImage.Format_ARGB32_Premultiplied)
painter_image = QtGui.QPainter()
painter_image.begin(self.black)
painter_image.fillRect(self.black.rect(), QtCore.Qt.black)
#Build the initial frame. #Build the initial frame.
initialFrame = QtGui.QImage( initialFrame = QtGui.QImage(
self.screens.current[u'size'].width(), self.screens.current[u'size'].width(),
@ -147,6 +147,11 @@ class MainDisplay(DisplayWidget):
serviceItem.bg_frame = initialFrame serviceItem.bg_frame = initialFrame
self.webView.setHtml(build_html(serviceItem, self.screen, None)) self.webView.setHtml(build_html(serviceItem, self.screen, None))
self.show() self.show()
# To display or not to display?
if not self.screen[u'primary']:
self.primary = False
else:
self.primary = True
def next(self): def next(self):
if self.currslide: if self.currslide:
@ -158,14 +163,33 @@ class MainDisplay(DisplayWidget):
self.currslide = not self.currslide self.currslide = not self.currslide
def text(self, slide): def text(self, slide):
"""
Add the slide text from slideController
`slide`
The slide text to be displayed
"""
print slide print slide
self.frame.findFirstElement('div#lyrics').setInnerXml(slide) self.frame.findFirstElement('div#lyrics').setInnerXml(slide)
return self.preview() return self.preview()
def alert(self): def alert(self):
"""
Add the alert text
`slide`
The slide text to be displayed
"""
self.frame.findFirstElement('div#alert').setInnerXml(self.alerttext) self.frame.findFirstElement('div#alert').setInnerXml(self.alerttext)
def image(self, image): def image(self, image):
"""
Add an image as the background. The image is converted to a
bytestream on route.
`Image`
The Image to be displayed can be QImage or QPixmap
"""
image = resize_image(image, self.screen[u'size'].width(), image = resize_image(image, self.screen[u'size'].width(),
self.screen[u'size'].height()) self.screen[u'size'].height())
self.frame.evaluateJavaScript( self.frame.evaluateJavaScript(
@ -180,14 +204,14 @@ class MainDisplay(DisplayWidget):
'src', unicode('data:image/png;base64,%s' % image_to_byte(self.serviceItem.bg_frame))) 'src', unicode('data:image/png;base64,%s' % image_to_byte(self.serviceItem.bg_frame)))
def video(self, videoPath, noSound=False): def video(self, videoPath, noSound=False):
if self.currimage: self.frame.findFirstElement('video').setAttribute('src', videoPath)
self.frame.findFirstElement('video').setAttribute('src', videoPath)
self.frame.evaluateJavaScript( self.frame.evaluateJavaScript(
"document.getElementById('video').style.visibility = 'visible'") "document.getElementById('video').style.visibility = 'visible'")
self.frame.evaluateJavaScript( self.frame.evaluateJavaScript(
"document.getElementById('image').style.visibility = 'hidden'") "document.getElementById('image').style.visibility = 'hidden'")
self.frame.evaluateJavaScript("document.getElementById('video').play()") self.frame.evaluateJavaScript("document.getElementById('video').play()")
self.currimage = not self.currimage if noSound:
self.frame.evaluateJavaScript("document.getElementById('video').mute()")
def loaded(self): def loaded(self):
self.loaded = True self.loaded = True
@ -227,20 +251,20 @@ class MainDisplay(DisplayWidget):
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) log.debug(u'hideDisplay mode = %d', mode)
#self.displayText.setPixmap(self.transparent)
if mode == HideMode.Screen: if mode == HideMode.Screen:
#self.display_image.setPixmap(self.transparent)
self.setVisible(False) self.setVisible(False)
elif mode == HideMode.Blank: elif mode == HideMode.Blank:
self.displayBlank.setPixmap( self.frame.findFirstElement('img').setAttribute(
QtGui.QPixmap.fromImage(self.blankFrame)) 'src', unicode('data:image/png;base64,%s' \
% image_to_byte(self.black)))
else: else:
if self.parent.renderManager.renderer.bg_frame: if self.serviceItem:
self.displayBlank.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.displayBlank.setPixmap( self.frame.findFirstElement('img').setAttribute(
QtGui.QPixmap.fromImage(self.blankFrame)) 'src', unicode('data:image/png;base64,%s' \
% image_to_byte(self.black)))
if mode != HideMode.Screen and self.isHidden(): if mode != HideMode.Screen and self.isHidden():
self.setVisible(True) self.setVisible(True)
@ -251,10 +275,10 @@ 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.displayBlank.setPixmap(self.transparent) self.frame.findFirstElement('img').setAttribute('src', u'')
if self.isHidden(): if self.isHidden():
self.setVisible(True) self.setVisible(True)
#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')
class AudioPlayer(QtCore.QObject): class AudioPlayer(QtCore.QObject):

View File

@ -786,7 +786,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
their locations their locations
""" """
self.RenderManager.update_display() self.RenderManager.update_display()
#self.displayManager.setup()
self.setFocus() self.setFocus()
self.activateWindow() self.activateWindow()

View File

@ -36,23 +36,23 @@ from openlp.core.lib import OpenLPToolbar, Receiver, resize_image, \
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class SlideThread(QtCore.QThread): #class SlideThread(QtCore.QThread):
""" # """
A special Qt thread class to speed up the display of text based frames. # A special Qt thread class to speed up the display of text based frames.
This is threaded so it loads the frames in background # This is threaded so it loads the frames in background
""" # """
def __init__(self, parent, prefix, count): # def __init__(self, parent, prefix, count):
QtCore.QThread.__init__(self, parent) # QtCore.QThread.__init__(self, parent)
self.prefix = prefix # self.prefix = prefix
self.count = count # self.count = count
#
def run(self): # def run(self):
""" # """
Run the thread. # Run the thread.
""" # """
time.sleep(1) # time.sleep(1)
for i in range(0, self.count): # for i in range(0, self.count):
Receiver.send_message(u'%s_slide_cache' % self.prefix, i) # Receiver.send_message(u'%s_slide_cache' % self.prefix, i)
class SlideList(QtGui.QTableWidget): class SlideList(QtGui.QTableWidget):
""" """
@ -105,8 +105,9 @@ class SlideController(QtGui.QWidget):
self.isLive = isLive self.isLive = isLive
self.parent = parent self.parent = parent
self.screens = screens self.screens = screens
self.ratio = float(self.screens.current[u'size'].width()) / \
float(self.screens.current[u'size'].height())
self.display = MainDisplay(self, screens, isLive) self.display = MainDisplay(self, screens, isLive)
#self.displayManager = self.parent.displayManager
self.loopList = [ self.loopList = [
u'Start Loop', u'Start Loop',
u'Loop Separator', u'Loop Separator',
@ -322,7 +323,7 @@ class SlideController(QtGui.QWidget):
self.SlidePreview.setSizePolicy(sizePolicy) self.SlidePreview.setSizePolicy(sizePolicy)
self.SlidePreview.setFixedSize( self.SlidePreview.setFixedSize(
QtCore.QSize(self.settingsmanager.slidecontroller_image, QtCore.QSize(self.settingsmanager.slidecontroller_image,
self.settingsmanager.slidecontroller_image / 1.3 )) self.settingsmanager.slidecontroller_image / self.ratio ))
self.SlidePreview.setFrameShape(QtGui.QFrame.Box) self.SlidePreview.setFrameShape(QtGui.QFrame.Box)
self.SlidePreview.setFrameShadow(QtGui.QFrame.Plain) self.SlidePreview.setFrameShadow(QtGui.QFrame.Plain)
self.SlidePreview.setLineWidth(1) self.SlidePreview.setLineWidth(1)
@ -389,9 +390,21 @@ class SlideController(QtGui.QWidget):
QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter) QtCore.SIGNAL(u'splitterMoved(int, int)'), self.trackSplitter)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem) QtCore.SIGNAL(u'config_updated'), self.refreshServiceItem)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'config_screen_changed'), self.screenSizeChanged)
QtCore.QObject.connect(Receiver.get_receiver(), QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_slide_cache' % self.typePrefix), self.slideCache) QtCore.SIGNAL(u'%s_slide_cache' % self.typePrefix), self.slideCache)
def screenSizeChanged(self):
# rebuild display as screen size changed
self.display = MainDisplay(self, self.screens, self.isLive)
self.ratio = float(self.screens.current[u'size'].width()) / \
float(self.screens.current[u'size'].height())
self.display.setup()
self.SlidePreview.setFixedSize(
QtCore.QSize(self.settingsmanager.slidecontroller_image,
self.settingsmanager.slidecontroller_image / (self.ratio )))
def widthChanged(self): def widthChanged(self):
""" """
Handle changes of width from the splitter between the live and preview Handle changes of width from the splitter between the live and preview
@ -606,10 +619,10 @@ class SlideController(QtGui.QWidget):
self.PreviewListWidget.setFocus() self.PreviewListWidget.setFocus()
Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix, Receiver.send_message(u'slidecontroller_%s_started' % self.typePrefix,
[serviceItem]) [serviceItem])
if self.serviceItem.is_text(): # if self.serviceItem.is_text():
st = SlideThread( # st = SlideThread(
self, self.typePrefix, len(self.serviceItem.get_frames())) # self, self.typePrefix, len(self.serviceItem.get_frames()))
st.start() # st.start()
log.log(15, u'Display Rendering took %4s' % (time.time() - before)) log.log(15, u'Display Rendering took %4s' % (time.time() - before))
def onTextRequest(self): def onTextRequest(self):
@ -632,7 +645,7 @@ class SlideController(QtGui.QWidget):
Receiver.send_message(u'slidecontroller_%s_text_response' Receiver.send_message(u'slidecontroller_%s_text_response'
% self.typePrefix, data) % self.typePrefix, data)
#Screen event methods # Screen event methods
def onSlideSelectedFirst(self): def onSlideSelectedFirst(self):
""" """
Go to the first slide. Go to the first slide.
@ -667,8 +680,8 @@ class SlideController(QtGui.QWidget):
Allow the main display to blank the main display at startup time Allow the main display to blank the main display at startup time
""" """
log.debug(u'mainDisplaySetBackground') log.debug(u'mainDisplaySetBackground')
if not self.mainDisplay.primary: if not self.display.primary:
self.onBlankDisplay(True) self.display.hideDisplay()
def onSlideBlank(self): def onSlideBlank(self):
""" """
@ -986,4 +999,4 @@ class SlideController(QtGui.QWidget):
text = text.replace(u'<br>', u'\n').replace(u'<p>', u'')\ text = text.replace(u'<br>', u'\n').replace(u'<p>', u'')\
.replace(u'</p>', u'').replace(u'<sup>', u'')\ .replace(u'</p>', u'').replace(u'<sup>', u'')\
.replace(u'</sup>', u'') .replace(u'</sup>', u'')
return text return text