diff --git a/bauh/view/qt/view_model.py b/bauh/view/qt/view_model.py index 8540fac6..8c802b33 100644 --- a/bauh/view/qt/view_model.py +++ b/bauh/view/qt/view_model.py @@ -17,15 +17,21 @@ def get_type_label(type_: str, gem: str, i18n: I18n) -> str: class PackageView: def __init__(self, model: SoftwarePackage, i18n: I18n): - self.model = model - self.update_checked = model.update - self.status = PackageViewStatus.LOADING if model.status == PackageStatus.LOADING_DATA else PackageViewStatus.READY + self.model = None + self.update_checked = None + self.status = None + self.update_model(model) self.table_index = -1 self.i18n = i18n def get_type_label(self) -> str: return get_type_label(self.model.get_type(), self.model.gem_name, self.i18n) + def update_model(self, model: SoftwarePackage): + self.model = model + self.update_checked = model.update + self.status = PackageViewStatus.LOADING if model.status == PackageStatus.LOADING_DATA else PackageViewStatus.READY + def __repr__(self): return '{} ( {} )'.format(self.model.name, self.get_type_label()) diff --git a/bauh/view/qt/window.py b/bauh/view/qt/window.py index 91dcc87e..f56db7ec 100755 --- a/bauh/view/qt/window.py +++ b/bauh/view/qt/window.py @@ -667,13 +667,13 @@ class ManageWindow(QWidget): for model in res['removed']: if pkgv.model == model: if list_idx == 0: # updates the model - pkgv.model = model + pkgv.update_model(model) if not self.search_performed or list_idx == 2: # always from the installed packages removed_idxs.append(pkgv_idx) if self.search_performed and list_idx == 1: # only for displayed - self.table_apps.update_package(pkgv) + self.table_apps.update_package(pkgv, change_update_col=True) break # as the model has been found, stops the loop @@ -690,6 +690,8 @@ class ManageWindow(QWidget): for new_idx, pkgv in enumerate(self.pkgs): # updating the package indexes pkgv.table_index = new_idx + self.update_bt_upgrade() + self.update_custom_actions() notify_tray() @@ -1243,10 +1245,10 @@ class ManageWindow(QWidget): if models_updated: installed_available_idxs = [] for idx, available in enumerate(self.pkgs_available): - for pidx, p in enumerate(models_updated): - if available.model == p: - available.model = p - if p.installed: + for pidx, model in enumerate(models_updated): + if available.model == model: + available.update_model(model) + if model.installed: installed_available_idxs.append((idx, pidx, available)) # re-indexing all installed so they always will be be displayed when no filters are applied @@ -1263,16 +1265,18 @@ class ManageWindow(QWidget): # updating the respective table rows: for displayed in self.pkgs: - for p in models_updated: - if displayed.model == p: - self.table_apps.update_package(displayed) + for model in models_updated: + if displayed.model == model: + self.table_apps.update_package(displayed, change_update_col=True) + + self.update_bt_upgrade() # updating installed packages if res['removed'] and self.pkgs_installed: to_remove = [] - for idx, p in enumerate(self.pkgs_installed): + for idx, model in enumerate(self.pkgs_installed): for model in res['removed']: - if p.model == model: + if model.model == model: to_remove.append(idx) if to_remove: @@ -1282,8 +1286,8 @@ class ManageWindow(QWidget): del self.pkgs_installed[idx - decrement] if res['installed']: - for idx, p in enumerate(res['installed']): - self.pkgs_installed.insert(idx, PackageView(p, self.i18n)) + for idx, model in enumerate(res['installed']): + self.pkgs_installed.insert(idx, PackageView(model, self.i18n)) self.ref_checkbox_only_apps.setVisible(False) self.update_custom_actions()