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