forked from openlp/openlp
fixed crash on cancel when thread is still running
This commit is contained in:
parent
4a83129b63
commit
f96073000f
@ -56,6 +56,9 @@ class ThemeScreenshotThread(QtCore.QThread):
|
|||||||
themes = themes.split(u',')
|
themes = themes.split(u',')
|
||||||
config = self.parent().config
|
config = self.parent().config
|
||||||
for theme in themes:
|
for theme in themes:
|
||||||
|
# Stop if the wizard has been cancelled.
|
||||||
|
if self.parent().downloadCancelled:
|
||||||
|
return
|
||||||
title = config.get(u'theme_%s' % theme, u'title')
|
title = config.get(u'theme_%s' % theme, u'title')
|
||||||
filename = config.get(u'theme_%s' % theme, u'filename')
|
filename = config.get(u'theme_%s' % theme, u'filename')
|
||||||
screenshot = config.get(u'theme_%s' % theme, u'screenshot')
|
screenshot = config.get(u'theme_%s' % theme, u'screenshot')
|
||||||
@ -86,7 +89,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
|||||||
files = self.webAccess.read()
|
files = self.webAccess.read()
|
||||||
self.config.readfp(io.BytesIO(files))
|
self.config.readfp(io.BytesIO(files))
|
||||||
self.updateScreenListCombo()
|
self.updateScreenListCombo()
|
||||||
self.downloadCanceled = False
|
self.downloadCancelled = False
|
||||||
self.downloading = unicode(translate('OpenLP.FirstTimeWizard',
|
self.downloading = unicode(translate('OpenLP.FirstTimeWizard',
|
||||||
'Downloading %s...'))
|
'Downloading %s...'))
|
||||||
QtCore.QObject.connect(self.cancelButton, QtCore.SIGNAL('clicked()'),
|
QtCore.QObject.connect(self.cancelButton, QtCore.SIGNAL('clicked()'),
|
||||||
@ -242,11 +245,12 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
|||||||
Process the triggering of the cancel button.
|
Process the triggering of the cancel button.
|
||||||
"""
|
"""
|
||||||
if self.lastId == FirstTimePage.NoInternet or \
|
if self.lastId == FirstTimePage.NoInternet or \
|
||||||
(self.lastId <= FirstTimePage.Plugins and \
|
(self.lastId <= FirstTimePage.Plugins and not self.hasRunWizard):
|
||||||
not self.hasRunWizard):
|
|
||||||
QtCore.QCoreApplication.exit()
|
QtCore.QCoreApplication.exit()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
self.downloadCanceled = True
|
self.downloadCancelled = True
|
||||||
|
while self.themeScreenshotThread.isRunning():
|
||||||
|
time.sleep(0.1)
|
||||||
Receiver.send_message(u'cursor_normal')
|
Receiver.send_message(u'cursor_normal')
|
||||||
|
|
||||||
def onNoInternetFinishButtonClicked(self):
|
def onNoInternetFinishButtonClicked(self):
|
||||||
@ -272,7 +276,7 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
|||||||
filesize = urlfile.headers["Content-Length"]
|
filesize = urlfile.headers["Content-Length"]
|
||||||
filename = open(fpath, "wb")
|
filename = open(fpath, "wb")
|
||||||
# Download until finished or canceled.
|
# Download until finished or canceled.
|
||||||
while not self.downloadCanceled:
|
while not self.downloadCancelled:
|
||||||
data = urlfile.read(block_size)
|
data = urlfile.read(block_size)
|
||||||
if not data:
|
if not data:
|
||||||
break
|
break
|
||||||
@ -280,8 +284,8 @@ class FirstTimeForm(QtGui.QWizard, Ui_FirstTimeWizard):
|
|||||||
block_count += 1
|
block_count += 1
|
||||||
self._downloadProgress(block_count, block_size, filesize)
|
self._downloadProgress(block_count, block_size, filesize)
|
||||||
filename.close()
|
filename.close()
|
||||||
# Delete file if canceled, it may be a partial file.
|
# Delete file if cancelled, it may be a partial file.
|
||||||
if self.downloadCanceled:
|
if self.downloadCancelled:
|
||||||
os.remove(fpath)
|
os.remove(fpath)
|
||||||
|
|
||||||
def _buildThemeScreenshots(self):
|
def _buildThemeScreenshots(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user