add affected package tree

ubuntu/groovy
Hans P. Möller 4 years ago
parent f2460f2e39
commit deba950283

@ -21,17 +21,19 @@
import sys import sys
import subprocess import subprocess
from pathlib import Path from pathlib import Path
# from optparse import OptionParser import apt_pkg
from argparse import ArgumentParser from argparse import ArgumentParser
from PyQt5.QtWidgets import (QWidget, QApplication, QLabel, QPushButton, from PyQt5.QtWidgets import (QWidget, QApplication, QLabel, QPushButton,
QHBoxLayout, QVBoxLayout) QHBoxLayout, QVBoxLayout, QTreeWidget,
QTreeWidgetItem)
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
class Dialog(QWidget): class Dialog(QWidget):
''' UI ''' ''' UI '''
def __init__(self, upgrades, security_upgrades, reboot_required, upg_path): def __init__(self, upgrades, security_upgrades, reboot_required, upg_path):
QWidget.__init__(self) QWidget.__init__(self)
self.upgrades = upgrades self.upgrades = upgrades
@ -39,6 +41,14 @@ class Dialog(QWidget):
self.upg_path = upg_path self.upg_path = upg_path
self.reboot_required = reboot_required self.reboot_required = reboot_required
apt_pkg.init()
try:
self.cache = apt_pkg.Cache()
except SystemError as e:
sys.stderr.write("Error: Opening the cache (%s)" % e)
sys.exit(-1)
self.depcache = apt_pkg.DepCache(self.cache)
self.initUI() self.initUI()
self.upgradeBtn.clicked.connect(self.call_upgrade) self.upgradeBtn.clicked.connect(self.call_upgrade)
self.closeBtn.clicked.connect(self.call_reject) self.closeBtn.clicked.connect(self.call_reject)
@ -47,6 +57,12 @@ class Dialog(QWidget):
''' UI initialization ''' ''' UI initialization '''
self.label = QLabel() self.label = QLabel()
self.label.setAlignment(Qt.AlignHCenter) self.label.setAlignment(Qt.AlignHCenter)
self.tw = QTreeWidget()
self.tw.setColumnCount(1)
self.tw.setHeaderLabels(['Affected Packages'])
self.tw.setHeaderHidden(True)
self.upgradeBtn = QPushButton("Upgrade") self.upgradeBtn = QPushButton("Upgrade")
self.closeBtn = QPushButton("Close") self.closeBtn = QPushButton("Close")
text = "" text = ""
@ -59,6 +75,7 @@ class Dialog(QWidget):
vbox = QVBoxLayout() vbox = QVBoxLayout()
vbox.addWidget(self.label) vbox.addWidget(self.label)
vbox.addWidget(self.tw)
vbox.addLayout(hbox) vbox.addLayout(hbox)
if self.upg_path is None: if self.upg_path is None:
@ -70,10 +87,43 @@ class Dialog(QWidget):
self.center() self.center()
if self.upgrades > 0: if self.upgrades > 0:
self.depcache.upgrade(True) # True for non safe.
pkg_install = list()
pkg_upgrade = list()
pkg_delete = list()
for p in self.cache.packages:
if self.depcache.marked_delete(p):
pkg_delete.append(p.name)
elif self.depcache.marked_install(p):
pkg_install.append(p.name)
elif self.depcache.marked_upgrade(p):
pkg_upgrade.append(p.name)
text = "There are upgrades available. Do you want to do a system" text = "There are upgrades available. Do you want to do a system"
text += " upgrade?\nThis will mean packages could be upgraded," text += " upgrade?\nThis will mean packages could be upgraded,"
text += " installed, or removed." text += " installed, or removed."
if len(pkg_delete) > 0:
toDelete = QTreeWidgetItem(['Remove'])
for p in pkg_delete:
td_child = QTreeWidgetItem([p])
toDelete.addChild(td_child)
toDelete.setIcon(0, QIcon.fromTheme("edit-delete"))
self.tw.addTopLevelItem(toDelete)
if len(pkg_install) > 0:
toInstall = QTreeWidgetItem(['Install'])
for p in pkg_install:
td_child = QTreeWidgetItem([p])
toInstall.addChild(td_child)
toInstall.setIcon(0, QIcon.fromTheme("system-software-install"))
self.tw.addTopLevelItem(toInstall)
if len(pkg_upgrade) > 0:
toUpgrade = QTreeWidgetItem(['Upgrade'])
for p in pkg_upgrade:
td_child = QTreeWidgetItem([p])
toUpgrade.addChild(td_child)
toUpgrade.setIcon(0, QIcon.fromTheme("system-software-update"))
self.tw.addTopLevelItem(toUpgrade)
if self.reboot_required: if self.reboot_required:
if text == "": if text == "":
text = "Reboot is needed" text = "Reboot is needed"

Loading…
Cancel
Save