From e1b581a0a6b9b467abe35e8aabfff7d6baff04e7 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 26 Jul 2019 22:21:51 -0300 Subject: [PATCH] AddonManager: Don't check addons for updates if they have already been checked for updates --- src/Mod/AddonManager/AddonManager.py | 5 +++-- src/Mod/AddonManager/addonmanager_workers.py | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) 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] + ''