From 9fa14f3e3ab9ebcef372fd51d09994874634b369 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sun, 20 May 2012 17:52:21 +0200 Subject: [PATCH] attempt to fix bug 923496 Fixes: https://launchpad.net/bugs/923496 --- openlp/core/__init__.py | 3 ++- openlp/core/ui/mainwindow.py | 18 +++++++++++++----- openlp/core/ui/slidecontroller.py | 4 ++-- openlp/core/utils/__init__.py | 3 +-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index 71c27a1d0..c26757535 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -127,7 +127,7 @@ class OpenLP(QtGui.QApplication): # make sure Qt really display the splash screen self.processEvents() # start the main app window - self.mainWindow = MainWindow(self.clipboard(), self.args) + self.mainWindow = MainWindow(self) self.mainWindow.show() if show_splash: # now kill the splashscreen @@ -146,6 +146,7 @@ class OpenLP(QtGui.QApplication): Receiver.send_message(u'live_display_blank_check') self.mainWindow.appStartup() # Skip exec_() for gui tests + self.eventLoopIsActive = True if not testing: return self.exec_() diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index e4a4e1616..8e9d2be88 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -542,14 +542,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ log.info(u'MainWindow loaded') - def __init__(self, clipboard, arguments): + def __init__(self, parent): """ This constructor sets up the interface, the various managers, and the plugins. """ QtGui.QMainWindow.__init__(self) - self.clipboard = clipboard - self.arguments = arguments + self.parent = lambda: parent + self.clipboard = self.parent().clipboard() + self.arguments = self.parent().args # Set up settings sections for the main application # (not for use by plugins) self.uiSettingsSection = u'user interface' @@ -830,7 +831,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): translate('OpenLP.MainWindow', 'OpenLP Main Display Blanked'), translate('OpenLP.MainWindow', - 'The Main Display has been blanked out')) + 'The Main Display has been blanked out')) def onErrorMessage(self, data): Receiver.send_message(u'close_splash') @@ -1132,6 +1133,11 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): """ Hook to close the main window and display windows on exit """ + # The MainApplication did not even enter the event loop (this happens + # when OpenLP is not fully loaded). Just ignore the event. + if not hasattr(self.parent(), u'eventLoopIsActive'): + event.ignore() + return # If we just did a settings import, close without saving changes. if self.settingsImported: event.accept() @@ -1184,7 +1190,9 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): # Save settings self.saveSettings() # Close down the display - self.liveController.display.close() + if self.liveController.display: + self.liveController.display.close() + self.liveController.display = None def serviceChanged(self, reset=False, serviceName=None): """ diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 1dc005aa6..66e0c6515 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -73,6 +73,7 @@ class Controller(QtGui.QWidget): controller = self Receiver.send_message('%s' % sender, [controller, args]) + class SlideController(Controller): """ SlideController is the slide controller widget. This widget is what the @@ -577,8 +578,7 @@ class SlideController(Controller): # rebuild display as screen size changed if self.display: self.display.close() - self.display = MainDisplay(self, self.imageManager, self.isLive, - self) + self.display = MainDisplay(self, self.imageManager, self.isLive, self) self.display.setup() if self.isLive: self.__addActionsToWidget(self.display) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 9d00e22b7..f73237c06 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -34,7 +34,6 @@ import os import re from subprocess import Popen, PIPE import sys -import time import urllib2 from PyQt4 import QtGui, QtCore @@ -69,7 +68,7 @@ class VersionThread(QtCore.QThread): """ Run the thread. """ - time.sleep(1) + self.sleep(1) app_version = get_application_version() version = check_latest_version(app_version) if LooseVersion(str(version)) > LooseVersion(str(app_version[u'full'])):