add affected package tree
This commit is contained in:
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…
x
Reference in New Issue
Block a user