Merged in display fixes from lp:~raoul-snyman/openlp/fixes

bzr-revno: 657
This commit is contained in:
Raoul Snyman 2009-11-05 19:33:38 +02:00
commit 3853a257b3
2 changed files with 29 additions and 26 deletions

View File

@ -30,7 +30,7 @@ from PyQt4.phonon import Phonon
from openlp.core.lib import Receiver, str_to_bool from openlp.core.lib import Receiver, str_to_bool
class DisplayLabel(QtGui.QWidget): class DisplayWidget(QtGui.QWidget):
""" """
Customised version of QTableWidget which can respond to keyboard Customised version of QTableWidget which can respond to keyboard
events. events.
@ -40,7 +40,7 @@ class DisplayLabel(QtGui.QWidget):
log.info(u'MainDisplay loaded') log.info(u'MainDisplay loaded')
def __init__(self, parent=None, name=None): def __init__(self, parent=None, name=None):
QQtGui.QWidget.__init__(self, parent) QtGui.QWidget.__init__(self, parent)
self.parent = parent self.parent = parent
def keyPressEvent(self, event): def keyPressEvent(self, event):
@ -65,7 +65,7 @@ class DisplayLabel(QtGui.QWidget):
else: else:
event.ignore() event.ignore()
class MainDisplay(DisplayLabel): class MainDisplay(DisplayWidget):
""" """
This is the form that is used to display things on the projector. This is the form that is used to display things on the projector.
""" """
@ -84,7 +84,7 @@ class MainDisplay(DisplayLabel):
The list of screens. The list of screens.
""" """
log.debug(u'Initilisation started') log.debug(u'Initilisation started')
QtGui.QWidget.__init__(self, None) DisplayWidget.__init__(self, None)
self.parent = parent self.parent = parent
self.setWindowTitle(u'OpenLP Display') self.setWindowTitle(u'OpenLP Display')
self.screens = screens self.screens = screens
@ -136,7 +136,8 @@ class MainDisplay(DisplayLabel):
Sets up the screen on a particular screen. Sets up the screen on a particular screen.
@param (integer) screen This is the screen number. @param (integer) screen This is the screen number.
""" """
log.debug(u'Setup %s for %s ' %(self.screens, screenNumber) ) log.debug(u'Setup %s for %s ' %(self.screens, screenNumber))
self.setVisible(False)
screen = self.screens[screenNumber] screen = self.screens[screenNumber]
if screen[u'number'] != screenNumber: if screen[u'number'] != screenNumber:
# We will most probably never actually hit this bit, but just in # We will most probably never actually hit this bit, but just in
@ -147,26 +148,19 @@ class MainDisplay(DisplayLabel):
screen = scrn screen = scrn
break break
self.setGeometry(screen[u'size']) self.setGeometry(screen[u'size'])
if not screen[u'primary']:
self.showFullScreen()
self.primary = False
else:
self.setVisible(False)
self.primary = True
#Build a custom splash screen #Build a custom splash screen
if str_to_bool(self.parent.generalConfig.get_config(u'show splash', u'True')): self.InitialFrame = QtGui.QImage(
self.InitialFrame = QtGui.QImage( screen[u'size'].width(), screen[u'size'].height(),
screen[u'size'].width(), screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied)
QtGui.QImage.Format_ARGB32_Premultiplied) splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png')
splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') painter_image = QtGui.QPainter()
painter_image = QtGui.QPainter() painter_image.begin(self.InitialFrame)
painter_image.begin(self.InitialFrame) painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white)
painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white) painter_image.drawImage(
painter_image.drawImage( (screen[u'size'].width() - splash_image.width()) / 2,
(screen[u'size'].width() - splash_image.width()) / 2, (screen[u'size'].height() - splash_image.height()) / 2,
(screen[u'size'].height() - splash_image.height()) / 2, splash_image)
splash_image) self.frameView(self.InitialFrame)
self.frameView(self.InitialFrame)
#Build a Black screen #Build a Black screen
painter = QtGui.QPainter() painter = QtGui.QPainter()
self.blankFrame = QtGui.QImage( self.blankFrame = QtGui.QImage(
@ -174,6 +168,13 @@ class MainDisplay(DisplayLabel):
QtGui.QImage.Format_ARGB32_Premultiplied) QtGui.QImage.Format_ARGB32_Premultiplied)
painter.begin(self.blankFrame) painter.begin(self.blankFrame)
painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black)
# To display or not to display?
if not screen[u'primary']:
self.showFullScreen()
self.primary = False
else:
self.setVisible(False)
self.primary = True
def resetDisplay(self): def resetDisplay(self):
if self.primary: if self.primary:

View File

@ -544,7 +544,6 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
monitor number does not exist. monitor number does not exist.
""" """
screen_number = int(self.generalConfig.get_config(u'Monitor', 0)) screen_number = int(self.generalConfig.get_config(u'Monitor', 0))
monitor_exists = False monitor_exists = False
for screen in self.screenList: for screen in self.screenList:
if screen[u'number'] == screen_number: if screen[u'number'] == screen_number:
@ -560,7 +559,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.showMaximized() self.showMaximized()
screen_number = self.getMonitorNumber() screen_number = self.getMonitorNumber()
self.mainDisplay.setup(screen_number) self.mainDisplay.setup(screen_number)
self.setFocus() if self.mainDisplay.isVisible():
self.mainDisplay.setFocus()
self.activateWindow()
if str_to_bool(self.generalConfig.get_config(u'Auto Open', False)): if str_to_bool(self.generalConfig.get_config(u'Auto Open', False)):
self.ServiceManagerContents.onLoadService(True) self.ServiceManagerContents.onLoadService(True)
if str_to_bool(self.generalConfig.get_config(u'Screen Blank', False)) \ if str_to_bool(self.generalConfig.get_config(u'Screen Blank', False)) \
@ -601,6 +602,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
if updated_display != self.RenderManager.current_display: if updated_display != self.RenderManager.current_display:
self.RenderManager.update_display(updated_display) self.RenderManager.update_display(updated_display)
self.mainDisplay.setup(updated_display) self.mainDisplay.setup(updated_display)
self.activateWindow()
def closeEvent(self, event): def closeEvent(self, event):
""" """