diff --git a/openlp/core/lib/settings.py b/openlp/core/lib/settings.py index 78e8004c4..fc20be4c0 100644 --- a/openlp/core/lib/settings.py +++ b/openlp/core/lib/settings.py @@ -228,7 +228,8 @@ class Settings(QtCore.QSettings): u'user interface/main window splitter geometry': QtCore.QByteArray(), u'user interface/main window state': QtCore.QByteArray(), u'user interface/preview panel': True, - u'user interface/preview splitter geometry': QtCore.QByteArray() + u'user interface/preview splitter geometry': QtCore.QByteArray(), + u'servicemanager/last directory': u'' } __file_path__ = u'' __obsolete_settings__ = [ diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index 976c177ef..902078ecc 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -484,6 +484,8 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.formattingTagForm = FormattingTagForm(self) self.shortcutForm = ShortcutListForm(self) self.recentFiles = [] + self.timer_id = 0 + self.timer_version_id = 0 # Set up the path with plugins plugin_path = AppLocation.get_directory(AppLocation.PluginsDir) self.plugin_manager = PluginManager(plugin_path) @@ -592,13 +594,12 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): def version_notice(self, version): """ Notifies the user that a newer version of OpenLP is available. - Triggered by delay thread. + Triggered by delay thread and cannot display popup. """ + log.debug(u'version_notice') version_text = translate('OpenLP.MainWindow', 'Version %s of OpenLP is now available for download (you are ' 'currently running version %s). \n\nYou can download the latest version from http://openlp.org/.') - QtGui.QMessageBox.question(self, - translate('OpenLP.MainWindow', 'OpenLP Version Updated'), - version_text % (version, get_application_version()[u'full'])) + self.version_text = version_text % (version, get_application_version()[u'full']) def show(self): """ @@ -618,6 +619,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.serviceManagerContents.load_file(filename) elif Settings().value(self.generalSettingsSection + u'/auto open'): self.serviceManagerContents.load_Last_file() + self.timer_version_id = self.startTimer(1000) view_mode = Settings().value(u'%s/view mode' % self.generalSettingsSection) if view_mode == u'default': self.modeDefaultItem.setChecked(True) @@ -1340,6 +1342,17 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.timer_id = 0 self.loadProgressBar.hide() self.application.process_events() + if event.timerId() == self.timer_version_id: + self.timer_version_id = 0 + # Has the thread passed some data to be displayed so display it and stop all waiting + if hasattr(self, u'version_text'): + QtGui.QMessageBox.question(self, translate('OpenLP.MainWindow', 'OpenLP Version Updated'), + self.version_text) + else: + # the thread has not confirmed it is running or it has not yet sent any data so lets keep waiting + if not hasattr(self,u'version_update_running') or self.version_update_running: + self.timer_version_id = self.startTimer(1000) + self.application.process_events() def set_new_data_path(self, new_data_path): """ diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 9d5c09e65..104567039 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -72,12 +72,12 @@ class VersionThread(QtCore.QThread): Run the thread. """ self.sleep(1) + log.debug(u'Version thread - run') app_version = get_application_version() version = check_latest_version(app_version) if LooseVersion(str(version)) > LooseVersion(str(app_version[u'full'])): Registry().execute(u'openlp_version_check', u'%s' % version) - class AppLocation(object): """ The :class:`AppLocation` class is a static class which retrieves a @@ -288,6 +288,8 @@ def check_latest_version(current_version): this_test = datetime.now().date() settings.setValue(u'last version test', this_test) settings.endGroup() + # Tell the main window whether there will ever be data to display + Registry().get(u'main_window').version_update_running = last_test != this_test if last_test != this_test: if current_version[u'build']: req = urllib2.Request(u'http://www.openlp.org/files/nightly_version.txt')