AddonManager: don't close if a thread is still running

This commit is contained in:
Yorik van Havre
2017-08-18 11:52:31 -03:00
parent 9251691a06
commit b61ba45a3e

View File

@@ -150,9 +150,9 @@ class AddonsInstaller(QtGui.QDialog):
QtCore.QObject.connect(self.listMacros, QtCore.SIGNAL("currentRowChanged(int)"), self.show_macro)
QtCore.QObject.connect(self.buttonCheck, QtCore.SIGNAL("clicked()"), self.check_updates)
QtCore.QMetaObject.connectSlotsByName(self)
self.update()
if not NOGIT:
try:
import git
@@ -161,6 +161,19 @@ class AddonsInstaller(QtGui.QDialog):
else:
self.buttonCheck.show()
def reject(self):
# ensure all threads are finished before closing
oktoclose = True
for worker in ["update_worker","check_worker","show_worker","showmacro_worker",
"macro_worker","install_worker"]:
if hasattr(self,worker):
thread = getattr(self,worker)
if thread:
if not thread.isFinished():
oktoclose = False
if oktoclose:
QtGui.QDialog.reject(self)
def retranslateUi(self):
self.setWindowTitle(translate("AddonsInstaller","Addon manager"))
self.labelDescription.setText(translate("AddonsInstaller", "Downloading addon list..."))
@@ -439,7 +452,7 @@ class CheckWBWorker(QtCore.QThread):
return
self.progressbar_show.emit(True)
basedir = FreeCAD.ConfigGet("UserAppData")
moddir = basedir + os.sep + "Mod"
moddir = basedir + os.sep + "Mod"
self.info_label.emit(translate("AddonsInstaller", "Checking for new versions..."))
upds = 0
gitpython_warning = False