diff --git a/openlp.pyw b/openlp.pyw index f1b627940..2bdcb1e2a 100755 --- a/openlp.pyw +++ b/openlp.pyw @@ -140,7 +140,7 @@ class OpenLP(QtGui.QApplication): log.info(u'Screen %d found with resolution %s', screen, self.desktop().availableGeometry(screen)) # start the main app window - self.mainWindow = MainWindow(screens, app_version) + self.mainWindow = MainWindow(screens, app_version, self) self.mainWindow.show() if show_splash: # now kill the splashscreen diff --git a/openlp/core/lib/eventreceiver.py b/openlp/core/lib/eventreceiver.py index 5b79fc40a..2e1cf9d39 100644 --- a/openlp/core/lib/eventreceiver.py +++ b/openlp/core/lib/eventreceiver.py @@ -115,6 +115,9 @@ class EventReceiver(QtCore.QObject): ``version_check`` Version has changed so pop up window. + ``mainDisplay_active`` + Version has changed so pop up window. + """ def __init__(self): """ diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py index 4883cd732..9fade885d 100644 --- a/openlp/core/ui/maindisplay.py +++ b/openlp/core/ui/maindisplay.py @@ -42,7 +42,8 @@ class DisplayWidget(QtGui.QWidget): log.info(u'MainDisplay loaded') def __init__(self, parent=None, name=None): - QtGui.QWidget.__init__(self, parent) + QtGui.QWidget.__init__(self, parent, QtCore.Qt.WindowStaysOnTopHint)# \ + #| QtCore.Qt.FramelessWindowHint) self.parent = parent self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item', QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop', @@ -81,7 +82,7 @@ class MainDisplay(DisplayWidget): """ log.info(u'MainDisplay Loaded') - def __init__(self, parent, screens): + def __init__(self, parent, screens, application): """ The constructor for the display form. @@ -94,9 +95,9 @@ class MainDisplay(DisplayWidget): log.debug(u'Initilisation started') DisplayWidget.__init__(self, None) self.parent = parent + self.application = application self.setWindowTitle(u'OpenLP Display') self.setAttribute(QtCore.Qt.WA_TranslucentBackground) - self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.screens = screens self.display_image = QtGui.QLabel(self) self.display_image.setScaledContents(True) @@ -184,6 +185,8 @@ class MainDisplay(DisplayWidget): self.display_image.setPixmap(self.transparent) self.display_alert.setPixmap(self.transparent) self.display_text.setPixmap(self.transparent) + self.raise_() + self.setFocus() def showDisplay(self): log.debug(u'showDisplay') @@ -268,8 +271,9 @@ class MainDisplay(DisplayWidget): def onMediaQueue(self, message): log.debug(u'Queue new media message %s' % message) - self.hideDisplay() + self.application.setActiveWindow(self) self.activateWindow() + self.hideDisplay() class VideoWidget(QtGui.QWidget): """ @@ -279,33 +283,14 @@ class VideoWidget(QtGui.QWidget): log.info(u'MainDisplay loaded') def __init__(self, parent=None, name=None): - QtGui.QWidget.__init__(self, None) + QtGui.QWidget.__init__(self, None, QtCore.Qt.WindowStaysOnBottomHint) self.parent = parent - self.hotkey_map = {QtCore.Qt.Key_Return: 'servicemanager_next_item', - QtCore.Qt.Key_Space: 'live_slidecontroller_next_noloop', - QtCore.Qt.Key_Enter: 'live_slidecontroller_next_noloop', - QtCore.Qt.Key_0: 'servicemanager_next_item', - QtCore.Qt.Key_Backspace: 'live_slidecontroller_previous_noloop'} + # QtCore.Qt.FramelessWindowHint \ def keyPressEvent(self, event): if type(event) == QtGui.QKeyEvent: #here accept the event and do something - if event.key() == QtCore.Qt.Key_Up: - Receiver.send_message(u'live_slidecontroller_previous') - event.accept() - elif event.key() == QtCore.Qt.Key_Down: - Receiver.send_message(u'live_slidecontroller_next') - event.accept() - elif event.key() == QtCore.Qt.Key_PageUp: - Receiver.send_message(u'live_slidecontroller_first') - event.accept() - elif event.key() == QtCore.Qt.Key_PageDown: - Receiver.send_message(u'live_slidecontroller_last') - event.accept() - elif event.key() in self.hotkey_map: - Receiver.send_message(self.hotkey_map[event.key()]) - event.accept() - elif event.key() == QtCore.Qt.Key_Escape: + if event.key() == QtCore.Qt.Key_Escape: self.resetDisplay() event.accept() event.ignore() @@ -334,7 +319,6 @@ class VideoDisplay(VideoWidget): self.parent = parent self.screens = screens self.setAttribute(QtCore.Qt.WA_TranslucentBackground) - self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.mediaObject = Phonon.MediaObject(self) self.video = Phonon.VideoWidget() self.video.setVisible(False) @@ -382,7 +366,6 @@ class VideoDisplay(VideoWidget): self.video.setFullScreen(True) self.mediaObject.play() self.setVisible(True) - self.lower() def onMediaPause(self): log.debug(u'VideoDisplay Media paused by user') diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index b6cf8412c..73227b9cd 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -432,7 +432,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ log.info(u'MainWindow loaded') - def __init__(self, screens, applicationVersion): + def __init__(self, screens, applicationVersion, application): """ This constructor sets up the interface, the various managers, and the plugins. @@ -444,7 +444,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.settingsmanager = SettingsManager(screens) self.generalConfig = PluginConfig(u'General') self.videoDisplay = VideoDisplay(self, screens) - self.mainDisplay = MainDisplay(self, screens) + self.mainDisplay = MainDisplay(self, screens, application) self.aboutForm = AboutForm(self, applicationVersion) self.settingsForm = SettingsForm(self.screens, self, self) # Set up the path with plugins @@ -555,6 +555,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def versionCheck(self, version): """ Checks the version of the Application called from openlp.pyw + Triggered by delay thread. """ app_version = self.applicationVersion[u'full'] version_text = unicode(self.trUtf8('Version %s of OpenLP is now ' @@ -583,6 +584,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.mainDisplay.raise_() def blankCheck(self): + """ + Check and display message if screen blank on setup. + Triggered by delay thread. + """ if str_to_bool(self.generalConfig.get_config(u'screen blank', False)) \ and str_to_bool(self.generalConfig.get_config(u'blank warning', False)): self.LiveController.onBlankDisplay(True) @@ -593,6 +598,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtGui.QMessageBox.Ok) def versionThread(self): + """ + Start an initial setup thread to delay notifications + """ vT = VersionThread(self, self.applicationVersion, self.generalConfig) vT.start() @@ -617,8 +625,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.settingsForm.exec_() def screenChanged(self): + """ + The screen has changed to so tell the displays to update_display + their locations + """ self.RenderManager.update_display() self.mainDisplay.setup() + self.videoDisplay.setup() + self.setFocus() self.activateWindow() def closeEvent(self, event): @@ -636,20 +650,14 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): QtGui.QMessageBox.Save) if ret == QtGui.QMessageBox.Save: self.ServiceManagerContents.onSaveService() - self.mainDisplay.close() - self.videoDisplay.close() self.cleanUp() event.accept() elif ret == QtGui.QMessageBox.Discard: - self.mainDisplay.close() - self.videoDisplay.close() self.cleanUp() event.accept() else: event.ignore() else: - self.mainDisplay.close() - self.videoDisplay.close() self.cleanUp() event.accept() @@ -662,6 +670,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): # Call the cleanup method to shutdown plugins. log.info(u'cleanup plugins') self.plugin_manager.finalise_plugins() + #Close down the displays + self.mainDisplay.close() + self.videoDisplay.close() def serviceChanged(self, reset=False, serviceName=None): """