diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py
index 872b27bcacd7..affd95528061 100644
--- a/src/Mod/AddonManager/AddonManager.py
+++ b/src/Mod/AddonManager/AddonManager.py
@@ -232,6 +232,7 @@ def check_updates(self):
self.check_worker = CheckWBWorker(self.repos)
self.check_worker.mark.connect(self.mark)
self.check_worker.enable.connect(self.enable_updates)
+ self.check_worker.addon_repos.connect(self.update_repos)
self.check_worker.start()
def apply_updates(self):
@@ -263,7 +264,7 @@ def add_addon_repo(self, addon_repo):
addonicon = QtGui.QIcon(":/icons/" + addon_repo[0] + "_workbench_icon.svg")
if addonicon.isNull():
addonicon = QtGui.QIcon(":/icons/Group.svg")
- if addon_repo[2] == 1:
+ if addon_repo[2] > 0:
item = QtGui.QListWidgetItem(addonicon,str(addon_repo[0]) + str(" ("+translate("AddonsInstaller","Installed")+")"))
item.setForeground(QtGui.QBrush(QtGui.QColor(0,182,41)))
self.dialog.listWorkbenches.addItem(item)
@@ -348,7 +349,7 @@ def switchtab(self,idx):
def update_repos(self, repos):
- """convenience function to update the internal list of workbenches"""
+ """this function allows threads to update the main list of workbenches"""
self.repos = repos
diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py
index 86d44a1cec24..0eec92e9e44f 100644
--- a/src/Mod/AddonManager/addonmanager_workers.py
+++ b/src/Mod/AddonManager/addonmanager_workers.py
@@ -159,6 +159,7 @@ class CheckWBWorker(QtCore.QThread):
enable = QtCore.Signal(int)
mark = QtCore.Signal(str)
+ addon_repos = QtCore.Signal(object)
def __init__(self,repos):
@@ -208,6 +209,8 @@ def run(self):
if "git pull" in gitrepo.status():
self.mark.emit(repo[0])
upds.append(repo[0])
+ self.repos[self.repos.index(repo)][2] = 2 # mark as already installed AND already checked for updates
+ self.addon_repos.emit(self.repos)
self.enable.emit(len(upds))
self.stop = True
@@ -301,6 +304,8 @@ class ShowWorker(QtCore.QThread):
def __init__(self, repos, idx):
+ # repos is a list of [name,url,installbit,descr] lists
+ # installbit: 0 = not installed, 1 = installed, 2 = installed and checked for available updates
QtCore.QThread.__init__(self)
self.repos = repos
self.idx = idx
@@ -386,6 +391,8 @@ def run(self):
message = "" + translate("AddonsInstaller", "An update is available for this addon.") + "
" + desc + '
Addon repository: ' + self.repos[self.idx][1] + ''
else:
message = "" + translate("AddonsInstaller", "This addon is already installed.") + "
" + desc + '
Addon repository: ' + self.repos[self.idx][1] + ''
+ self.repos[self.idx][2] = 2 # mark as already installed AND already checked for updates
+ self.addon_repos.emit(self.repos)
else:
message = desc + '
Addon repository: ' + self.repos[self.idx][1] + ''