Added an 'Upgrade Dependencies' button to the dialog showing outdated dependencies.

Sun, 29 Sep 2024 17:53:18 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 29 Sep 2024 17:53:18 +0200
changeset 90
0949844ea0e3
parent 89
771c43e4122c
child 91
7a0c5b9c73be

Added an 'Upgrade Dependencies' button to the dialog showing outdated dependencies.

PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.PipxDependenciesDialog.html file | annotate | diff | comparison | revisions
PipxInterface/PipxDependenciesDialog.py file | annotate | diff | comparison | revisions
PipxInterface/PipxWidget.py file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_de.qm file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_de.ts file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_empty.ts file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_en.ts file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_es.qm file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_es.ts file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_ru.qm file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_ru.ts file | annotate | diff | comparison | revisions
PluginPipxInterface.py file | annotate | diff | comparison | revisions
changelog.md file | annotate | diff | comparison | revisions
--- a/PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.PipxDependenciesDialog.html	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.PipxDependenciesDialog.html	Sun Sep 29 17:53:18 2024 +0200
@@ -46,6 +46,7 @@
 <tr><td>DependencyColumn</td></tr>
 <tr><td>InstalledVersionColumn</td></tr>
 <tr><td>OutdatedMode</td></tr>
+<tr><td>UpgradeDependenciesAction</td></tr>
 <tr><td>UptodateMode</td></tr>
 </table>
 
@@ -64,6 +65,10 @@
 <td><a href="#PipxDependenciesDialog.__resizeColumns">__resizeColumns</a></td>
 <td>Private method to resize the columns of the dependencies list.</td>
 </tr>
+<tr>
+<td><a href="#PipxDependenciesDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td>
+<td>Private slot handling a button click of the button box.</td>
+</tr>
 </table>
 
 <h3>Static Methods</h3>
@@ -105,6 +110,20 @@
         Private method to resize the columns of the dependencies list.
 </p>
 
+<a NAME="PipxDependenciesDialog.on_buttonBox_clicked" ID="PipxDependenciesDialog.on_buttonBox_clicked"></a>
+<h4>PipxDependenciesDialog.on_buttonBox_clicked</h4>
+<b>on_buttonBox_clicked</b>(<i>button</i>)
+<p>
+        Private slot handling a button click of the button box.
+</p>
+
+<dl>
+
+<dt><i>button</i> (QAbstractButton)</dt>
+<dd>
+reference to the clicked button
+</dd>
+</dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
--- a/PipxInterface/PipxDependenciesDialog.py	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/PipxDependenciesDialog.py	Sun Sep 29 17:53:18 2024 +0200
@@ -6,8 +6,8 @@
 Module implementing a dialog to show the package dependencies.
 """
 
-from PyQt6.QtCore import Qt
-from PyQt6.QtWidgets import QDialog, QTreeWidgetItem
+from PyQt6.QtCore import Qt, pyqtSlot
+from PyQt6.QtWidgets import QAbstractButton, QDialog, QDialogButtonBox, QTreeWidgetItem
 
 from .Ui_PipxDependenciesDialog import Ui_PipxDependenciesDialog
 
@@ -25,6 +25,8 @@
     InstalledVersionColumn = 1
     AvailableVersionColumn = 2
 
+    UpgradeDependenciesAction = 10  # sent by done() when dependencies shall be upgraded
+
     def __init__(self, package, dependencies, mode, parent=None):
         """
         Constructor
@@ -41,6 +43,8 @@
         super().__init__(parent)
         self.setupUi(self)
 
+        self.__upgradeButton = None
+
         if mode != PipxDependenciesDialog.OutdatedMode:
             self.dependenciesList.hideColumn(
                 PipxDependenciesDialog.AvailableVersionColumn
@@ -48,6 +52,9 @@
 
         if mode == PipxDependenciesDialog.OutdatedMode:
             headerMsg = self.tr("Outdated Dependencies of package <b>{0}</b>")
+            self.__upgradeButton = self.buttonBox.addButton(
+                self.tr("Upgrade Dependencies"), QDialogButtonBox.ButtonRole.ActionRole
+            )
         elif mode == PipxDependenciesDialog.UptodateMode:
             headerMsg = self.tr("Up-to-date Dependencies of package <b>{0}</b>")
         else:
@@ -76,3 +83,14 @@
         self.dependenciesList.resizeColumnToContents(
             PipxDependenciesDialog.AvailableVersionColumn
         )
+
+    @pyqtSlot(QAbstractButton)
+    def on_buttonBox_clicked(self, button):
+        """
+        Private slot handling a button click of the button box.
+
+        @param button reference to the clicked button
+        @type QAbstractButton
+        """
+        if button == self.__upgradeButton:
+            self.done(PipxDependenciesDialog.UpgradeDependenciesAction)
--- a/PipxInterface/PipxWidget.py	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/PipxWidget.py	Sun Sep 29 17:53:18 2024 +0200
@@ -591,7 +591,10 @@
             dependencies=dependencies,
             mode=PipxDependenciesDialog.OutdatedMode,
         )
-        dlg.exec()
+        result = dlg.exec()
+        if result == PipxDependenciesDialog.UpgradeDependenciesAction:
+            # 'Upgrade Dependencies' clicked
+            self.__upgradeDependencies()
 
     @pyqtSlot()
     def __showUptodateDependencies(self):
Binary file PipxInterface/i18n/pipx_de.qm has changed
--- a/PipxInterface/i18n/pipx_de.ts	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/i18n/pipx_de.ts	Sun Sep 29 17:53:18 2024 +0200
@@ -4,141 +4,141 @@
   <context>
     <name>Pipx</name>
     <message>
-      <location filename="../Pipx.py" line="274" />
-      <location filename="../Pipx.py" line="164" />
+      <location filename="../Pipx.py" line="273" />
+      <location filename="../Pipx.py" line="163" />
       <source>&lt;p&gt;Message: {0}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Meldung: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="286" />
-      <location filename="../Pipx.py" line="278" />
-      <location filename="../Pipx.py" line="167" />
+      <location filename="../Pipx.py" line="285" />
+      <location filename="../Pipx.py" line="277" />
+      <location filename="../Pipx.py" line="166" />
       <source>&lt;p&gt;pipx exited with an error ({0}).&lt;/p&gt;{1}</source>
       <translation>&lt;p&gt;pipx wurde mit einem Fehler beendet ({0}).&lt;/p&gt;{1}</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="176" />
+      <location filename="../Pipx.py" line="175" />
       <source>pipx did not finish within 30 seconds.</source>
       <translation>pipx endete nicht innerhalb 30 Sekunden.</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="232" />
-      <location filename="../Pipx.py" line="178" />
+      <location filename="../Pipx.py" line="231" />
+      <location filename="../Pipx.py" line="177" />
       <source>pipx could not be started.</source>
       <translation>pipx konnte nicht gestarted werden.</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="232" />
+      <location filename="../Pipx.py" line="231" />
       <source>pipx Start Error</source>
       <translation>pipx Startfehler</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="237" />
+      <location filename="../Pipx.py" line="236" />
       <source>pipx Runtime Error</source>
       <translation>pipx Laufzeitfehler</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="238" />
+      <location filename="../Pipx.py" line="237" />
       <source>&lt;p&gt;The pipx process reported an error.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Der pipx Prozess meldete einen Fehler.&lt;/p&gt;&lt;p&gt;Fehler: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="258" />
+      <location filename="../Pipx.py" line="257" />
       <source>pipx did not finish within {0} seconds.</source>
       <translation>pipx endete nicht innerhalb {0} Sekunden.</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="264" />
+      <location filename="../Pipx.py" line="263" />
       <source>pipx Timeout Error</source>
       <translation>pipx Zeitüberschreitungsfehler</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="285" />
+      <location filename="../Pipx.py" line="284" />
       <source>pipx Execution Error</source>
       <translation>pipx Ausführungsfehler</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="410" />
+      <location filename="../Pipx.py" line="409" />
       <source>Install Packages</source>
       <translation>Pakete installieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="455" />
+      <location filename="../Pipx.py" line="454" />
       <source>Install All Packages</source>
       <translation>Alle Pakete installieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="505" />
+      <location filename="../Pipx.py" line="504" />
       <source>Re-Install Package</source>
       <translation>Paket neu installieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="536" />
+      <location filename="../Pipx.py" line="535" />
       <source>Re-Install All Packages</source>
       <translation>Alle Pakete neu installieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="549" />
+      <location filename="../Pipx.py" line="548" />
       <source>Uninstall Package</source>
       <translation>Paket deinstallieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="559" />
+      <location filename="../Pipx.py" line="558" />
       <source>Uninstall All Packages</source>
       <translation>Alle Pakete deinstallieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="576" />
+      <location filename="../Pipx.py" line="575" />
       <source>Upgrade Package</source>
       <translation>Paket aktualisieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="586" />
+      <location filename="../Pipx.py" line="585" />
       <source>Upgrade All Packages</source>
       <translation>Alle Pakete aktualisieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="596" />
+      <location filename="../Pipx.py" line="595" />
       <source>Upgrade Shared Libraries</source>
       <translation>Gemeinsame Bibliotheken aktualisieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="610" />
+      <location filename="../Pipx.py" line="609" />
       <source>Upgrade Interpreters</source>
       <translation>Interpreter aktualisieren</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="623" />
+      <location filename="../Pipx.py" line="622" />
       <source>Prune Unused Interpreters</source>
       <translation>Ungenutzte Interpreter entfernen</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="634" />
+      <location filename="../Pipx.py" line="633" />
       <source>Ensure PATH Modifications</source>
       <translation>PATH-Änderungen sicherstellen</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="673" />
+      <location filename="../Pipx.py" line="672" />
       <source>Check Outdated Package</source>
       <translation>Prüfe veraltete Pakete</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="674" />
+      <location filename="../Pipx.py" line="673" />
       <source>&lt;p&gt;The status of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Der Status des Paketes &lt;b&gt;{0}&lt;/b&gt; konnte nicht bestimmt werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="735" />
+      <location filename="../Pipx.py" line="734" />
       <source>Get Package Dependencies</source>
       <translation>Paketabhängigkeiten abrufen</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="736" />
+      <location filename="../Pipx.py" line="735" />
       <source>&lt;p&gt;The status of dependencies of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Der Status der Abhängigkeiten des Pakets &lt;b&gt;{0}&lt;/b&gt; konnte nicht ermittelt werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Pipx.py" line="806" />
+      <location filename="../Pipx.py" line="805" />
       <source>Upgrade Dependencies</source>
       <translation>Abhängigkeiten aktualisieren</translation>
     </message>
@@ -199,17 +199,22 @@
   <context>
     <name>PipxDependenciesDialog</name>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="50" />
+      <location filename="../PipxDependenciesDialog.py" line="54" />
       <source>Outdated Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Veraltete Abhängigkeiten des Pakets &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="52" />
+      <location filename="../PipxDependenciesDialog.py" line="56" />
+      <source>Upgrade Dependencies</source>
+      <translation>Abhängigkeiten aktualisieren</translation>
+    </message>
+    <message>
+      <location filename="../PipxDependenciesDialog.py" line="59" />
       <source>Up-to-date Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Aktuelle Abhängigkeiten des Pakets &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="54" />
+      <location filename="../PipxDependenciesDialog.py" line="61" />
       <source>Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Abhängigkeiten des Pakets &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
@@ -751,44 +756,44 @@
       <translation>&lt;p&gt;Sollen wirklich &lt;b&gt;ALLE&lt;/b&gt; Pakete deinstalliert werden?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="636" />
+      <location filename="../PipxWidget.py" line="639" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation>&lt;b&gt;pipx Version {0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="666" />
+      <location filename="../PipxWidget.py" line="669" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation>{0} ({1})</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="674" />
+      <location filename="../PipxWidget.py" line="677" />
       <source>package and some dependencies outdated</source>
       <translation>Paket und einige Abhängigkeiten veraltet</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="677" />
+      <location filename="../PipxWidget.py" line="680" />
       <source>package outdated</source>
       <translation>Paket veraltet</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="691" />
+      <location filename="../PipxWidget.py" line="694" />
       <source>some dependencies outdated</source>
       <translation>einige Abhängigkeiten veraltet</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="706" />
+      <location filename="../PipxWidget.py" line="709" />
       <source>everything up-to-date</source>
       <translation>alles aktuell</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="733" />
+      <location filename="../PipxWidget.py" line="736" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation>{0}{1}</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="735" />
+      <location filename="../PipxWidget.py" line="738" />
       <source> (standalone)</source>
       <translation> (eigenständig)</translation>
     </message>
--- a/PipxInterface/i18n/pipx_empty.ts	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/i18n/pipx_empty.ts	Sun Sep 29 17:53:18 2024 +0200
@@ -4,141 +4,141 @@
   <context>
     <name>Pipx</name>
     <message>
-      <location filename="../Pipx.py" line="274" />
-      <location filename="../Pipx.py" line="164" />
+      <location filename="../Pipx.py" line="273" />
+      <location filename="../Pipx.py" line="163" />
       <source>&lt;p&gt;Message: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="286" />
-      <location filename="../Pipx.py" line="278" />
-      <location filename="../Pipx.py" line="167" />
+      <location filename="../Pipx.py" line="285" />
+      <location filename="../Pipx.py" line="277" />
+      <location filename="../Pipx.py" line="166" />
       <source>&lt;p&gt;pipx exited with an error ({0}).&lt;/p&gt;{1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="176" />
+      <location filename="../Pipx.py" line="175" />
       <source>pipx did not finish within 30 seconds.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="232" />
-      <location filename="../Pipx.py" line="178" />
+      <location filename="../Pipx.py" line="231" />
+      <location filename="../Pipx.py" line="177" />
       <source>pipx could not be started.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="232" />
+      <location filename="../Pipx.py" line="231" />
       <source>pipx Start Error</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Pipx.py" line="236" />
+      <source>pipx Runtime Error</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Pipx.py" line="237" />
-      <source>pipx Runtime Error</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Pipx.py" line="238" />
       <source>&lt;p&gt;The pipx process reported an error.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="258" />
+      <location filename="../Pipx.py" line="257" />
       <source>pipx did not finish within {0} seconds.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="264" />
+      <location filename="../Pipx.py" line="263" />
       <source>pipx Timeout Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="285" />
+      <location filename="../Pipx.py" line="284" />
       <source>pipx Execution Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="410" />
+      <location filename="../Pipx.py" line="409" />
       <source>Install Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="455" />
+      <location filename="../Pipx.py" line="454" />
       <source>Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="505" />
+      <location filename="../Pipx.py" line="504" />
       <source>Re-Install Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="536" />
+      <location filename="../Pipx.py" line="535" />
       <source>Re-Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="549" />
+      <location filename="../Pipx.py" line="548" />
       <source>Uninstall Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="559" />
+      <location filename="../Pipx.py" line="558" />
       <source>Uninstall All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="576" />
+      <location filename="../Pipx.py" line="575" />
       <source>Upgrade Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="586" />
+      <location filename="../Pipx.py" line="585" />
       <source>Upgrade All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="596" />
+      <location filename="../Pipx.py" line="595" />
       <source>Upgrade Shared Libraries</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="610" />
+      <location filename="../Pipx.py" line="609" />
       <source>Upgrade Interpreters</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="623" />
+      <location filename="../Pipx.py" line="622" />
       <source>Prune Unused Interpreters</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="634" />
+      <location filename="../Pipx.py" line="633" />
       <source>Ensure PATH Modifications</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Pipx.py" line="672" />
+      <source>Check Outdated Package</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Pipx.py" line="673" />
-      <source>Check Outdated Package</source>
+      <source>&lt;p&gt;The status of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="674" />
-      <source>&lt;p&gt;The status of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <location filename="../Pipx.py" line="734" />
+      <source>Get Package Dependencies</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Pipx.py" line="735" />
-      <source>Get Package Dependencies</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Pipx.py" line="736" />
       <source>&lt;p&gt;The status of dependencies of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="806" />
+      <location filename="../Pipx.py" line="805" />
       <source>Upgrade Dependencies</source>
       <translation type="unfinished" />
     </message>
@@ -199,17 +199,22 @@
   <context>
     <name>PipxDependenciesDialog</name>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="50" />
+      <location filename="../PipxDependenciesDialog.py" line="54" />
       <source>Outdated Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="52" />
+      <location filename="../PipxDependenciesDialog.py" line="56" />
+      <source>Upgrade Dependencies</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../PipxDependenciesDialog.py" line="59" />
       <source>Up-to-date Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="54" />
+      <location filename="../PipxDependenciesDialog.py" line="61" />
       <source>Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -751,44 +756,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="636" />
+      <location filename="../PipxWidget.py" line="639" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="666" />
+      <location filename="../PipxWidget.py" line="669" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="674" />
+      <location filename="../PipxWidget.py" line="677" />
       <source>package and some dependencies outdated</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="677" />
+      <location filename="../PipxWidget.py" line="680" />
       <source>package outdated</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="691" />
+      <location filename="../PipxWidget.py" line="694" />
       <source>some dependencies outdated</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="706" />
+      <location filename="../PipxWidget.py" line="709" />
       <source>everything up-to-date</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="733" />
+      <location filename="../PipxWidget.py" line="736" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="735" />
+      <location filename="../PipxWidget.py" line="738" />
       <source> (standalone)</source>
       <translation type="unfinished" />
     </message>
--- a/PipxInterface/i18n/pipx_en.ts	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/i18n/pipx_en.ts	Sun Sep 29 17:53:18 2024 +0200
@@ -4,141 +4,141 @@
   <context>
     <name>Pipx</name>
     <message>
-      <location filename="../Pipx.py" line="274" />
-      <location filename="../Pipx.py" line="164" />
+      <location filename="../Pipx.py" line="273" />
+      <location filename="../Pipx.py" line="163" />
       <source>&lt;p&gt;Message: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="286" />
-      <location filename="../Pipx.py" line="278" />
-      <location filename="../Pipx.py" line="167" />
+      <location filename="../Pipx.py" line="285" />
+      <location filename="../Pipx.py" line="277" />
+      <location filename="../Pipx.py" line="166" />
       <source>&lt;p&gt;pipx exited with an error ({0}).&lt;/p&gt;{1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="176" />
+      <location filename="../Pipx.py" line="175" />
       <source>pipx did not finish within 30 seconds.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="232" />
-      <location filename="../Pipx.py" line="178" />
+      <location filename="../Pipx.py" line="231" />
+      <location filename="../Pipx.py" line="177" />
       <source>pipx could not be started.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="232" />
+      <location filename="../Pipx.py" line="231" />
       <source>pipx Start Error</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Pipx.py" line="236" />
+      <source>pipx Runtime Error</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Pipx.py" line="237" />
-      <source>pipx Runtime Error</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Pipx.py" line="238" />
       <source>&lt;p&gt;The pipx process reported an error.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="258" />
+      <location filename="../Pipx.py" line="257" />
       <source>pipx did not finish within {0} seconds.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="264" />
+      <location filename="../Pipx.py" line="263" />
       <source>pipx Timeout Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="285" />
+      <location filename="../Pipx.py" line="284" />
       <source>pipx Execution Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="410" />
+      <location filename="../Pipx.py" line="409" />
       <source>Install Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="455" />
+      <location filename="../Pipx.py" line="454" />
       <source>Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="505" />
+      <location filename="../Pipx.py" line="504" />
       <source>Re-Install Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="536" />
+      <location filename="../Pipx.py" line="535" />
       <source>Re-Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="549" />
+      <location filename="../Pipx.py" line="548" />
       <source>Uninstall Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="559" />
+      <location filename="../Pipx.py" line="558" />
       <source>Uninstall All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="576" />
+      <location filename="../Pipx.py" line="575" />
       <source>Upgrade Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="586" />
+      <location filename="../Pipx.py" line="585" />
       <source>Upgrade All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="596" />
+      <location filename="../Pipx.py" line="595" />
       <source>Upgrade Shared Libraries</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="610" />
+      <location filename="../Pipx.py" line="609" />
       <source>Upgrade Interpreters</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="623" />
+      <location filename="../Pipx.py" line="622" />
       <source>Prune Unused Interpreters</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="634" />
+      <location filename="../Pipx.py" line="633" />
       <source>Ensure PATH Modifications</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Pipx.py" line="672" />
+      <source>Check Outdated Package</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Pipx.py" line="673" />
-      <source>Check Outdated Package</source>
+      <source>&lt;p&gt;The status of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="674" />
-      <source>&lt;p&gt;The status of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <location filename="../Pipx.py" line="734" />
+      <source>Get Package Dependencies</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Pipx.py" line="735" />
-      <source>Get Package Dependencies</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Pipx.py" line="736" />
       <source>&lt;p&gt;The status of dependencies of package &lt;b&gt;{0}&lt;/b&gt; could not be determined.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Pipx.py" line="806" />
+      <location filename="../Pipx.py" line="805" />
       <source>Upgrade Dependencies</source>
       <translation type="unfinished" />
     </message>
@@ -199,17 +199,22 @@
   <context>
     <name>PipxDependenciesDialog</name>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="50" />
+      <location filename="../PipxDependenciesDialog.py" line="54" />
       <source>Outdated Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="52" />
+      <location filename="../PipxDependenciesDialog.py" line="56" />
+      <source>Upgrade Dependencies</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../PipxDependenciesDialog.py" line="59" />
       <source>Up-to-date Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="54" />
+      <location filename="../PipxDependenciesDialog.py" line="61" />
       <source>Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -751,44 +756,44 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="636" />
+      <location filename="../PipxWidget.py" line="639" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="666" />
+      <location filename="../PipxWidget.py" line="669" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="674" />
+      <location filename="../PipxWidget.py" line="677" />
       <source>package and some dependencies outdated</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="677" />
+      <location filename="../PipxWidget.py" line="680" />
       <source>package outdated</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="691" />
+      <location filename="../PipxWidget.py" line="694" />
       <source>some dependencies outdated</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="706" />
+      <location filename="../PipxWidget.py" line="709" />
       <source>everything up-to-date</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="733" />
+      <location filename="../PipxWidget.py" line="736" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="735" />
+      <location filename="../PipxWidget.py" line="738" />
       <source> (standalone)</source>
       <translation type="unfinished" />
     </message>
Binary file PipxInterface/i18n/pipx_es.qm has changed
--- a/PipxInterface/i18n/pipx_es.ts	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/i18n/pipx_es.ts	Sun Sep 29 17:53:18 2024 +0200
@@ -199,17 +199,22 @@
   <context>
     <name>PipxDependenciesDialog</name>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="50" />
+      <location filename="../PipxDependenciesDialog.py" line="54" />
       <source>Outdated Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Depedencias desactualizadas del package &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="52" />
+      <location filename="../PipxDependenciesDialog.py" line="56" />
+      <source>Upgrade Dependencies</source>
+      <translation>Actualizar Dependencias</translation>
+    </message>
+    <message>
+      <location filename="../PipxDependenciesDialog.py" line="59" />
       <source>Up-to-date Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Dependencias actualizadas del package &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="54" />
+      <location filename="../PipxDependenciesDialog.py" line="61" />
       <source>Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Dependencias del package &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
@@ -751,44 +756,44 @@
       <translation>&lt;p&gt;¿Desea seguro desinstalar &lt;b&gt;TODOS&lt;/b&gt; los packages?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="636" />
+      <location filename="../PipxWidget.py" line="639" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation>&lt;b&gt;pipx Versión {0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="666" />
+      <location filename="../PipxWidget.py" line="669" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation>{0} ({1})</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="674" />
+      <location filename="../PipxWidget.py" line="677" />
       <source>package and some dependencies outdated</source>
       <translation>package y algunas dependencias desactualizados</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="677" />
+      <location filename="../PipxWidget.py" line="680" />
       <source>package outdated</source>
       <translation>package desactualizado</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="691" />
+      <location filename="../PipxWidget.py" line="694" />
       <source>some dependencies outdated</source>
       <translation>algunas dependencias desactualizadas</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="706" />
+      <location filename="../PipxWidget.py" line="709" />
       <source>everything up-to-date</source>
       <translation>todo actualizado</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="733" />
+      <location filename="../PipxWidget.py" line="736" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation>{0}{1}</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="735" />
+      <location filename="../PipxWidget.py" line="738" />
       <source> (standalone)</source>
       <translation> (independiente)</translation>
     </message>
Binary file PipxInterface/i18n/pipx_ru.qm has changed
--- a/PipxInterface/i18n/pipx_ru.ts	Sun Sep 29 11:34:31 2024 +0200
+++ b/PipxInterface/i18n/pipx_ru.ts	Sun Sep 29 17:53:18 2024 +0200
@@ -199,17 +199,22 @@
   <context>
     <name>PipxDependenciesDialog</name>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="50" />
+      <location filename="../PipxDependenciesDialog.py" line="54" />
       <source>Outdated Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Устаревшие зависимости пакета &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="52" />
+      <location filename="../PipxDependenciesDialog.py" line="56" />
+      <source>Upgrade Dependencies</source>
+      <translation>Обновить зависимости</translation>
+    </message>
+    <message>
+      <location filename="../PipxDependenciesDialog.py" line="59" />
       <source>Up-to-date Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Обновленные зависимости пакета &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxDependenciesDialog.py" line="54" />
+      <location filename="../PipxDependenciesDialog.py" line="61" />
       <source>Dependencies of package &lt;b&gt;{0}&lt;/b&gt;</source>
       <translation>Зависимости пакета &lt;b&gt;{0}&lt;/b&gt;</translation>
     </message>
@@ -751,44 +756,44 @@
       <translation>&lt;p&gt;Вы действительно хотите удалить &lt;/b&gt;ВСЕ &lt;/b&gt; пакеты?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="636" />
+      <location filename="../PipxWidget.py" line="639" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation>&lt;b&gt;Версия pipx {0}&lt;/b&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="666" />
+      <location filename="../PipxWidget.py" line="669" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation>{0} ({1})</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="674" />
+      <location filename="../PipxWidget.py" line="677" />
       <source>package and some dependencies outdated</source>
       <translation>пакет и некоторые зависимости устарели</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="677" />
+      <location filename="../PipxWidget.py" line="680" />
       <source>package outdated</source>
       <translation>пакет устарел</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="691" />
+      <location filename="../PipxWidget.py" line="694" />
       <source>some dependencies outdated</source>
       <translation>некоторые зависимости устарели</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="706" />
+      <location filename="../PipxWidget.py" line="709" />
       <source>everything up-to-date</source>
       <translation>все обновлено</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="733" />
+      <location filename="../PipxWidget.py" line="736" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="735" />
+      <location filename="../PipxWidget.py" line="738" />
       <source> (standalone)</source>
       <translation> (автономный)</translation>
     </message>
--- a/PluginPipxInterface.py	Sun Sep 29 11:34:31 2024 +0200
+++ b/PluginPipxInterface.py	Sun Sep 29 17:53:18 2024 +0200
@@ -36,7 +36,7 @@
     "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
     "autoactivate": True,
     "deactivateable": True,
-    "version": "10.5.1",
+    "version": "10.5.2",
     "className": "PluginPipxInterface",
     "packageName": "PipxInterface",
     "shortDescription": "Graphical interface to the 'pipx' command.",
--- a/changelog.md	Sun Sep 29 11:34:31 2024 +0200
+++ b/changelog.md	Sun Sep 29 17:53:18 2024 +0200
@@ -1,6 +1,10 @@
 ChangeLog
 ---------
 
+__Version 10.5.2__
+
+- Added an 'Upgrade Dependencies' button to the dialog showing outdated dependencies.
+
 __Version 10.5.1__
 
 - Updated Spanish translations.

eric ide

mercurial