From a07afc46dfd07e677e93ea42c9beb8cafb908178 Mon Sep 17 00:00:00 2001 From: Dimitris Zlatanidis Date: Sun, 25 Dec 2022 18:18:41 +0200 Subject: [PATCH] Added dialog for remove dependencies --- slpkg/remove_packages.py | 1 - slpkg/views/views.py | 41 +++++++++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/slpkg/remove_packages.py b/slpkg/remove_packages.py index 6556e4f2..aa206ddb 100644 --- a/slpkg/remove_packages.py +++ b/slpkg/remove_packages.py @@ -1,7 +1,6 @@ #!/usr/bin/python3 # -*- coding: utf-8 -*- - import subprocess from slpkg.configs import Configs diff --git a/slpkg/views/views.py b/slpkg/views/views.py index 4d774691..7d9b34c6 100644 --- a/slpkg/views/views.py +++ b/slpkg/views/views.py @@ -7,6 +7,7 @@ from slpkg.configs import Configs from slpkg.queries import SBoQueries from slpkg.utilities import Utilities from slpkg.blacklist import Blacklist +from slpkg.dialog_box import DialogBox from slpkg.models.models import LogsDependencies from slpkg.models.models import session as Session @@ -21,6 +22,7 @@ class ViewMessage: self.session = Session self.utils = Utilities() self.black = Blacklist() + self.dialog = DialogBox() self.installed_packages = [] def build_packages(self, slackbuilds: list, dependencies: list): @@ -68,7 +70,6 @@ class ViewMessage: print('The following packages will be removed:\n') slackbuilds, dependencies, deps = [], [], [] for pkg in packages: - self._view_removed(pkg) slackbuilds.append(pkg) requires = self.session.query( @@ -78,18 +79,48 @@ class ViewMessage: if requires: deps.append(requires) + for i in range(0, len(deps)): + for dep in deps[i][0].split(): + dependencies.append(dep) + + if deps and '--resolve-off' not in self.flags: + dependencies = self.choose_dependencies_for_remove(dependencies) + + for pkg in slackbuilds: + self._view_removed(pkg) + if deps and '--resolve-off' not in self.flags: print('\nDependencies:') - for i in range(0, len(deps)): - for dep in deps[i][0].split(): - self._view_removed(dep) - dependencies.append(dep) + for pkg in dependencies: + self._view_removed(pkg) self._view_total(slackbuilds, dependencies, option='remove') return self.installed_packages, dependencies + def choose_dependencies_for_remove(self, dependencies): + """ Choose packages for upgrade. """ + height = 10 + width = 70 + list_height = 0 + choices = [] + title = " Uncheck dependencies if you don't want to remove " + + for package in dependencies: + repo_ver = SBoQueries(package).version() + choices += [(package, repo_ver, True)] + + text = f'There are {len(choices)} dependencies:' + + code, tags = self.dialog.checklist(text, title, height, width, list_height, choices, dependencies) + + if not code: + return dependencies + + os.system('clear') + return tags + def _view_download(self, sbo: str, version: str): """ View packages for download only. """ color = self.colors()