Added an interface to the `pipx ensurepath` command. release-10.1.0

Sat, 29 Jun 2024 17:31:16 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 29 Jun 2024 17:31:16 +0200
changeset 23
4c18addf12b2
parent 22
f99e132d1391
child 24
db421f21a5ec

Added an interface to the `pipx ensurepath` command.

PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.Pipx.html file | annotate | diff | comparison | revisions
PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.PipxWidget.html file | annotate | diff | comparison | revisions
PipxInterface/Pipx.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.ts file | annotate | diff | comparison | revisions
PipxInterface/i18n/pipx_ru.ts file | annotate | diff | comparison | revisions
PluginPipxInterface.py file | annotate | diff | comparison | revisions
PluginPipxInterface.zip file | annotate | diff | comparison | revisions
changelog.md file | annotate | diff | comparison | revisions
--- a/PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.Pipx.html	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.Pipx.html	Sat Jun 29 17:31:16 2024 +0200
@@ -72,6 +72,10 @@
 <td>Public method to create a spec metadata file.</td>
 </tr>
 <tr>
+<td><a href="#Pipx.ensurePath">ensurePath</a></td>
+<td>Public method to ensure that the directory where pipx stores apps is in your PATH environment variable.</td>
+</tr>
+<tr>
 <td><a href="#Pipx.getInstalledPackages">getInstalledPackages</a></td>
 <td>Public method to get the installed packages.</td>
 </tr>
@@ -264,6 +268,14 @@
 tuple of (bool, str)
 </dd>
 </dl>
+<a NAME="Pipx.ensurePath" ID="Pipx.ensurePath"></a>
+<h4>Pipx.ensurePath</h4>
+<b>ensurePath</b>(<i></i>)
+<p>
+        Public method to ensure that the directory where pipx stores apps is
+        in your PATH environment variable.
+</p>
+
 <a NAME="Pipx.getInstalledPackages" ID="Pipx.getInstalledPackages"></a>
 <h4>Pipx.getInstalledPackages</h4>
 <b>getInstalledPackages</b>(<i></i>)
--- a/PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.PipxWidget.html	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/Documentation/Source/Plugin_Pipx_Interface.PipxInterface.PipxWidget.html	Sat Jun 29 17:31:16 2024 +0200
@@ -73,6 +73,10 @@
 <td>Private slot to create a spec metadata file needed by 'pipx install-all'.</td>
 </tr>
 <tr>
+<td><a href="#PipxWidget.__ensurePath">__ensurePath</a></td>
+<td>Private slot to ensure that the directory where pipx stores apps is in your PATH environment variable.</td>
+</tr>
+<tr>
 <td><a href="#PipxWidget.__initPipxMenu">__initPipxMenu</a></td>
 <td>Private method to create the super menu and attach it to the super menu button.</td>
 </tr>
@@ -204,6 +208,14 @@
         Private slot to create a spec metadata file needed by 'pipx install-all'.
 </p>
 
+<a NAME="PipxWidget.__ensurePath" ID="PipxWidget.__ensurePath"></a>
+<h4>PipxWidget.__ensurePath</h4>
+<b>__ensurePath</b>(<i></i>)
+<p>
+        Private slot to ensure that the directory where pipx stores apps is
+        in your PATH environment variable.
+</p>
+
 <a NAME="PipxWidget.__initPipxMenu" ID="PipxWidget.__initPipxMenu"></a>
 <h4>PipxWidget.__initPipxMenu</h4>
 <b>__initPipxMenu</b>(<i></i>)
--- a/PipxInterface/Pipx.py	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/Pipx.py	Sat Jun 29 17:31:16 2024 +0200
@@ -531,3 +531,14 @@
         res = dia.startProcess(self.__getPipxExecutable(), args)
         if res:
             dia.exec()
+
+    def ensurePath(self):
+        """
+        Public method to ensure that the directory where pipx stores apps is
+        in your PATH environment variable.
+        """
+        args = ["ensurepath"]
+        dia = PipxExecDialog(self.tr("Ensure PATH Modifications"))
+        res = dia.startProcess(self.__getPipxExecutable(), args)
+        if res:
+            dia.exec()
--- a/PipxInterface/PipxWidget.py	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/PipxWidget.py	Sat Jun 29 17:31:16 2024 +0200
@@ -168,6 +168,10 @@
             self.tr("Standalone Interpreters"), self.__showInterpreters
         )
         self.__pipxMenu.addSeparator()
+        self.__pipxMenu.addAction(
+            self.tr("Ensure PATH Modifications"), self.__ensurePath
+        )
+        self.__pipxMenu.addSeparator()
         self.__pipxMenu.addAction(self.tr("Configure..."), self.__pipxConfigure)
 
         self.__pipxMenu.aboutToShow.connect(self.__aboutToShowPipxMenu)
@@ -409,6 +413,14 @@
         """
         ericApp().getObject("UserInterface").showPreferences("pipxPage")
 
+    @pyqtSlot()
+    def __ensurePath(self):
+        """
+        Private slot to ensure that the directory where pipx stores apps is
+        in your PATH environment variable.
+        """
+        self.__pipx.ensurePath()
+
     #######################################################################
     ## Main widget related methods below
     #######################################################################
Binary file PipxInterface/i18n/pipx_de.qm has changed
--- a/PipxInterface/i18n/pipx_de.ts	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/i18n/pipx_de.ts	Sat Jun 29 17:31:16 2024 +0200
@@ -88,6 +88,11 @@
       <source>Prune Unused Interpreters</source>
       <translation>Ungenutzte Interpreter entfernen</translation>
     </message>
+    <message>
+      <location filename="../Pipx.py" line="541" />
+      <source>Ensure PATH Modifications</source>
+      <translation>PATH-Änderungen sicherstellen</translation>
+    </message>
   </context>
   <context>
     <name>PipxAppStartDialog</name>
@@ -434,13 +439,13 @@
       <translation>Installieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="195" />
+      <location filename="../PipxWidget.py" line="199" />
       <location filename="../PipxWidget.py" line="107" />
       <source>Install Packages</source>
       <translation>Pakete installieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="214" />
+      <location filename="../PipxWidget.py" line="218" />
       <location filename="../PipxWidget.py" line="110" />
       <source>Install All Packages</source>
       <translation>Alle Pakete installieren</translation>
@@ -451,16 +456,16 @@
       <translation>Ausgewähltes Paket neu installieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="312" />
+      <location filename="../PipxWidget.py" line="316" />
       <location filename="../PipxWidget.py" line="117" />
       <source>Re-Install All Packages</source>
       <translation>Alle Pakete neu installieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="270" />
-      <location filename="../PipxWidget.py" line="261" />
-      <location filename="../PipxWidget.py" line="249" />
-      <location filename="../PipxWidget.py" line="233" />
+      <location filename="../PipxWidget.py" line="274" />
+      <location filename="../PipxWidget.py" line="265" />
+      <location filename="../PipxWidget.py" line="253" />
+      <location filename="../PipxWidget.py" line="237" />
       <location filename="../PipxWidget.py" line="121" />
       <source>Create Spec Metadata File</source>
       <translation>Erzeuge Spec-Metadaten-Datei</translation>
@@ -501,7 +506,7 @@
       <translation>Ausgewähltes Paket deinstallieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="388" />
+      <location filename="../PipxWidget.py" line="392" />
       <location filename="../PipxWidget.py" line="153" />
       <source>Uninstall All Packages</source>
       <translation>Alle Pakete deinstallieren</translation>
@@ -512,84 +517,89 @@
       <translation>Eigenständige Interpreter</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="171" />
+      <location filename="../PipxWidget.py" line="172" />
+      <source>Ensure PATH Modifications</source>
+      <translation>PATH-Änderungen sicherstellen</translation>
+    </message>
+    <message>
+      <location filename="../PipxWidget.py" line="175" />
       <source>Configure...</source>
       <translation>Einstellungen...</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="235" />
+      <location filename="../PipxWidget.py" line="239" />
       <source>JSON Files (*.json);;All Files (*)</source>
       <translation>JSON Dateien (*.json);;Alle Dateien (*)</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="236" />
+      <location filename="../PipxWidget.py" line="240" />
       <source>JSON Files (*.json)</source>
       <translation>JSON-Dateien (*.json)</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="250" />
+      <location filename="../PipxWidget.py" line="254" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="262" />
+      <location filename="../PipxWidget.py" line="266" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; was created successfully.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Spec-Metadaten-Datei &lt;b&gt;{0}&lt;/b&gt; wurde erfolgreich erzeugt.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="271" />
+      <location filename="../PipxWidget.py" line="275" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation>&lt;p&gt;Die Spec-Metadaten-Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht erzeugt werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="287" />
+      <location filename="../PipxWidget.py" line="291" />
       <source>Re-Install Package</source>
       <translation>Paket neu installieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="288" />
+      <location filename="../PipxWidget.py" line="292" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be reinstalled?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Soll das Paket &lt;b&gt;{0}&lt;/b&gt; wirklich neu installiert werden?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="313" />
+      <location filename="../PipxWidget.py" line="317" />
       <source>Do you really want to reinstall all packages?</source>
       <translation>Sollen wirklich alle Pakete neu installiert werden?</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="372" />
+      <location filename="../PipxWidget.py" line="376" />
       <source>Uninstall Package</source>
       <translation>Paket deinstallieren</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="373" />
+      <location filename="../PipxWidget.py" line="377" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be uninstalled?&lt;/p&gt;</source>
       <translation>&lt;p&gt;Soll das Paket &lt;b&gt;{0}&lt;/b&gt; wirklich deinstalliert werden?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="389" />
+      <location filename="../PipxWidget.py" line="393" />
       <source>&lt;p&gt;Do you really want to uninstall &lt;b&gt;ALL&lt;/b&gt; packages?&lt;/p&gt;</source>
       <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="421" />
+      <location filename="../PipxWidget.py" line="433" />
       <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="446" />
+      <location filename="../PipxWidget.py" line="458" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation>{0} ({1})</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="464" />
+      <location filename="../PipxWidget.py" line="476" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation>{0}{1}</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="466" />
+      <location filename="../PipxWidget.py" line="478" />
       <source> (standalone)</source>
       <translation> (eigenständig)</translation>
     </message>
--- a/PipxInterface/i18n/pipx_empty.ts	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/i18n/pipx_empty.ts	Sat Jun 29 17:31:16 2024 +0200
@@ -88,6 +88,11 @@
       <source>Prune Unused Interpreters</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Pipx.py" line="541" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>PipxAppStartDialog</name>
@@ -434,13 +439,13 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="195" />
+      <location filename="../PipxWidget.py" line="199" />
       <location filename="../PipxWidget.py" line="107" />
       <source>Install Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="214" />
+      <location filename="../PipxWidget.py" line="218" />
       <location filename="../PipxWidget.py" line="110" />
       <source>Install All Packages</source>
       <translation type="unfinished" />
@@ -451,16 +456,16 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="312" />
+      <location filename="../PipxWidget.py" line="316" />
       <location filename="../PipxWidget.py" line="117" />
       <source>Re-Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="270" />
-      <location filename="../PipxWidget.py" line="261" />
-      <location filename="../PipxWidget.py" line="249" />
-      <location filename="../PipxWidget.py" line="233" />
+      <location filename="../PipxWidget.py" line="274" />
+      <location filename="../PipxWidget.py" line="265" />
+      <location filename="../PipxWidget.py" line="253" />
+      <location filename="../PipxWidget.py" line="237" />
       <location filename="../PipxWidget.py" line="121" />
       <source>Create Spec Metadata File</source>
       <translation type="unfinished" />
@@ -501,7 +506,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="388" />
+      <location filename="../PipxWidget.py" line="392" />
       <location filename="../PipxWidget.py" line="153" />
       <source>Uninstall All Packages</source>
       <translation type="unfinished" />
@@ -512,84 +517,89 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="171" />
+      <location filename="../PipxWidget.py" line="172" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../PipxWidget.py" line="175" />
       <source>Configure...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="235" />
+      <location filename="../PipxWidget.py" line="239" />
       <source>JSON Files (*.json);;All Files (*)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="236" />
+      <location filename="../PipxWidget.py" line="240" />
       <source>JSON Files (*.json)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="250" />
+      <location filename="../PipxWidget.py" line="254" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="262" />
+      <location filename="../PipxWidget.py" line="266" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; was created successfully.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="271" />
+      <location filename="../PipxWidget.py" line="275" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="287" />
+      <location filename="../PipxWidget.py" line="291" />
       <source>Re-Install Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="288" />
+      <location filename="../PipxWidget.py" line="292" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be reinstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="313" />
+      <location filename="../PipxWidget.py" line="317" />
       <source>Do you really want to reinstall all packages?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="372" />
+      <location filename="../PipxWidget.py" line="376" />
       <source>Uninstall Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="373" />
+      <location filename="../PipxWidget.py" line="377" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be uninstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="389" />
+      <location filename="../PipxWidget.py" line="393" />
       <source>&lt;p&gt;Do you really want to uninstall &lt;b&gt;ALL&lt;/b&gt; packages?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="421" />
+      <location filename="../PipxWidget.py" line="433" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="446" />
+      <location filename="../PipxWidget.py" line="458" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="464" />
+      <location filename="../PipxWidget.py" line="476" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="466" />
+      <location filename="../PipxWidget.py" line="478" />
       <source> (standalone)</source>
       <translation type="unfinished" />
     </message>
--- a/PipxInterface/i18n/pipx_en.ts	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/i18n/pipx_en.ts	Sat Jun 29 17:31:16 2024 +0200
@@ -88,6 +88,11 @@
       <source>Prune Unused Interpreters</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Pipx.py" line="541" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>PipxAppStartDialog</name>
@@ -434,13 +439,13 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="195" />
+      <location filename="../PipxWidget.py" line="199" />
       <location filename="../PipxWidget.py" line="107" />
       <source>Install Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="214" />
+      <location filename="../PipxWidget.py" line="218" />
       <location filename="../PipxWidget.py" line="110" />
       <source>Install All Packages</source>
       <translation type="unfinished" />
@@ -451,16 +456,16 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="312" />
+      <location filename="../PipxWidget.py" line="316" />
       <location filename="../PipxWidget.py" line="117" />
       <source>Re-Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="270" />
-      <location filename="../PipxWidget.py" line="261" />
-      <location filename="../PipxWidget.py" line="249" />
-      <location filename="../PipxWidget.py" line="233" />
+      <location filename="../PipxWidget.py" line="274" />
+      <location filename="../PipxWidget.py" line="265" />
+      <location filename="../PipxWidget.py" line="253" />
+      <location filename="../PipxWidget.py" line="237" />
       <location filename="../PipxWidget.py" line="121" />
       <source>Create Spec Metadata File</source>
       <translation type="unfinished" />
@@ -501,7 +506,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="388" />
+      <location filename="../PipxWidget.py" line="392" />
       <location filename="../PipxWidget.py" line="153" />
       <source>Uninstall All Packages</source>
       <translation type="unfinished" />
@@ -512,84 +517,89 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="171" />
+      <location filename="../PipxWidget.py" line="172" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../PipxWidget.py" line="175" />
       <source>Configure...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="235" />
+      <location filename="../PipxWidget.py" line="239" />
       <source>JSON Files (*.json);;All Files (*)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="236" />
+      <location filename="../PipxWidget.py" line="240" />
       <source>JSON Files (*.json)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="250" />
+      <location filename="../PipxWidget.py" line="254" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="262" />
+      <location filename="../PipxWidget.py" line="266" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; was created successfully.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="271" />
+      <location filename="../PipxWidget.py" line="275" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="287" />
+      <location filename="../PipxWidget.py" line="291" />
       <source>Re-Install Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="288" />
+      <location filename="../PipxWidget.py" line="292" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be reinstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="313" />
+      <location filename="../PipxWidget.py" line="317" />
       <source>Do you really want to reinstall all packages?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="372" />
+      <location filename="../PipxWidget.py" line="376" />
       <source>Uninstall Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="373" />
+      <location filename="../PipxWidget.py" line="377" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be uninstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="389" />
+      <location filename="../PipxWidget.py" line="393" />
       <source>&lt;p&gt;Do you really want to uninstall &lt;b&gt;ALL&lt;/b&gt; packages?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="421" />
+      <location filename="../PipxWidget.py" line="433" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="446" />
+      <location filename="../PipxWidget.py" line="458" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="464" />
+      <location filename="../PipxWidget.py" line="476" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="466" />
+      <location filename="../PipxWidget.py" line="478" />
       <source> (standalone)</source>
       <translation type="unfinished" />
     </message>
--- a/PipxInterface/i18n/pipx_es.ts	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/i18n/pipx_es.ts	Sat Jun 29 17:31:16 2024 +0200
@@ -88,6 +88,11 @@
       <source>Prune Unused Interpreters</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Pipx.py" line="541" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>PipxAppStartDialog</name>
@@ -434,13 +439,13 @@
       <translation type="unfinished">Instalar</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="195" />
+      <location filename="../PipxWidget.py" line="199" />
       <location filename="../PipxWidget.py" line="107" />
       <source>Install Packages</source>
       <translation type="unfinished">Instalar Packages</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="214" />
+      <location filename="../PipxWidget.py" line="218" />
       <location filename="../PipxWidget.py" line="110" />
       <source>Install All Packages</source>
       <translation type="unfinished" />
@@ -451,16 +456,16 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="312" />
+      <location filename="../PipxWidget.py" line="316" />
       <location filename="../PipxWidget.py" line="117" />
       <source>Re-Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="270" />
-      <location filename="../PipxWidget.py" line="261" />
-      <location filename="../PipxWidget.py" line="249" />
-      <location filename="../PipxWidget.py" line="233" />
+      <location filename="../PipxWidget.py" line="274" />
+      <location filename="../PipxWidget.py" line="265" />
+      <location filename="../PipxWidget.py" line="253" />
+      <location filename="../PipxWidget.py" line="237" />
       <location filename="../PipxWidget.py" line="121" />
       <source>Create Spec Metadata File</source>
       <translation type="unfinished" />
@@ -501,7 +506,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="388" />
+      <location filename="../PipxWidget.py" line="392" />
       <location filename="../PipxWidget.py" line="153" />
       <source>Uninstall All Packages</source>
       <translation type="unfinished" />
@@ -512,84 +517,89 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="171" />
+      <location filename="../PipxWidget.py" line="172" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../PipxWidget.py" line="175" />
       <source>Configure...</source>
       <translation type="unfinished">Configurar...</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="235" />
+      <location filename="../PipxWidget.py" line="239" />
       <source>JSON Files (*.json);;All Files (*)</source>
       <translation type="unfinished">Archivos JSON (*.json);;Todos los Archivos (*)</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="236" />
+      <location filename="../PipxWidget.py" line="240" />
       <source>JSON Files (*.json)</source>
       <translation type="unfinished">Archivos JSON (*.json)</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="250" />
+      <location filename="../PipxWidget.py" line="254" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished">&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Desea sobreescribirlo?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="262" />
+      <location filename="../PipxWidget.py" line="266" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; was created successfully.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="271" />
+      <location filename="../PipxWidget.py" line="275" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="287" />
+      <location filename="../PipxWidget.py" line="291" />
       <source>Re-Install Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="288" />
+      <location filename="../PipxWidget.py" line="292" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be reinstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="313" />
+      <location filename="../PipxWidget.py" line="317" />
       <source>Do you really want to reinstall all packages?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="372" />
+      <location filename="../PipxWidget.py" line="376" />
       <source>Uninstall Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="373" />
+      <location filename="../PipxWidget.py" line="377" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be uninstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="389" />
+      <location filename="../PipxWidget.py" line="393" />
       <source>&lt;p&gt;Do you really want to uninstall &lt;b&gt;ALL&lt;/b&gt; packages?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="421" />
+      <location filename="../PipxWidget.py" line="433" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="446" />
+      <location filename="../PipxWidget.py" line="458" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation type="unfinished">{0} ({1})</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="464" />
+      <location filename="../PipxWidget.py" line="476" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="466" />
+      <location filename="../PipxWidget.py" line="478" />
       <source> (standalone)</source>
       <translation type="unfinished" />
     </message>
--- a/PipxInterface/i18n/pipx_ru.ts	Fri Jun 28 19:30:03 2024 +0200
+++ b/PipxInterface/i18n/pipx_ru.ts	Sat Jun 29 17:31:16 2024 +0200
@@ -88,6 +88,11 @@
       <source>Prune Unused Interpreters</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../Pipx.py" line="541" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>PipxAppStartDialog</name>
@@ -434,13 +439,13 @@
       <translation type="unfinished">Установить</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="195" />
+      <location filename="../PipxWidget.py" line="199" />
       <location filename="../PipxWidget.py" line="107" />
       <source>Install Packages</source>
       <translation type="unfinished">Установить пакеты</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="214" />
+      <location filename="../PipxWidget.py" line="218" />
       <location filename="../PipxWidget.py" line="110" />
       <source>Install All Packages</source>
       <translation type="unfinished" />
@@ -451,16 +456,16 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="312" />
+      <location filename="../PipxWidget.py" line="316" />
       <location filename="../PipxWidget.py" line="117" />
       <source>Re-Install All Packages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="270" />
-      <location filename="../PipxWidget.py" line="261" />
-      <location filename="../PipxWidget.py" line="249" />
-      <location filename="../PipxWidget.py" line="233" />
+      <location filename="../PipxWidget.py" line="274" />
+      <location filename="../PipxWidget.py" line="265" />
+      <location filename="../PipxWidget.py" line="253" />
+      <location filename="../PipxWidget.py" line="237" />
       <location filename="../PipxWidget.py" line="121" />
       <source>Create Spec Metadata File</source>
       <translation type="unfinished" />
@@ -501,7 +506,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="388" />
+      <location filename="../PipxWidget.py" line="392" />
       <location filename="../PipxWidget.py" line="153" />
       <source>Uninstall All Packages</source>
       <translation type="unfinished" />
@@ -512,84 +517,89 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="171" />
+      <location filename="../PipxWidget.py" line="172" />
+      <source>Ensure PATH Modifications</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../PipxWidget.py" line="175" />
       <source>Configure...</source>
       <translation type="unfinished">Настроить...</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="235" />
+      <location filename="../PipxWidget.py" line="239" />
       <source>JSON Files (*.json);;All Files (*)</source>
       <translation type="unfinished">Файлы JSON (*.json);;Все файлы (*)</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="236" />
+      <location filename="../PipxWidget.py" line="240" />
       <source>JSON Files (*.json)</source>
       <translation type="unfinished">Файлы JSON (*.json)</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="250" />
+      <location filename="../PipxWidget.py" line="254" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished">&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; уже существует. Перезаписать?&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="262" />
+      <location filename="../PipxWidget.py" line="266" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; was created successfully.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="271" />
+      <location filename="../PipxWidget.py" line="275" />
       <source>&lt;p&gt;The spec metadata file &lt;b&gt;{0}&lt;/b&gt; could not be created.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="287" />
+      <location filename="../PipxWidget.py" line="291" />
       <source>Re-Install Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="288" />
+      <location filename="../PipxWidget.py" line="292" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be reinstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="313" />
+      <location filename="../PipxWidget.py" line="317" />
       <source>Do you really want to reinstall all packages?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="372" />
+      <location filename="../PipxWidget.py" line="376" />
       <source>Uninstall Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="373" />
+      <location filename="../PipxWidget.py" line="377" />
       <source>&lt;p&gt;Shall the package &lt;b&gt;{0}&lt;/b&gt; really be uninstalled?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="389" />
+      <location filename="../PipxWidget.py" line="393" />
       <source>&lt;p&gt;Do you really want to uninstall &lt;b&gt;ALL&lt;/b&gt; packages?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="421" />
+      <location filename="../PipxWidget.py" line="433" />
       <source>&lt;b&gt;pipx Version {0}&lt;/b&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="446" />
+      <location filename="../PipxWidget.py" line="458" />
       <source>{0} ({1})</source>
       <comment>current version, latest version</comment>
       <translation type="unfinished">{0} ({1})</translation>
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="464" />
+      <location filename="../PipxWidget.py" line="476" />
       <source>{0}{1}</source>
       <comment>Python version, standalone indicator</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PipxWidget.py" line="466" />
+      <location filename="../PipxWidget.py" line="478" />
       <source> (standalone)</source>
       <translation type="unfinished" />
     </message>
--- a/PluginPipxInterface.py	Fri Jun 28 19:30:03 2024 +0200
+++ b/PluginPipxInterface.py	Sat Jun 29 17:31:16 2024 +0200
@@ -35,7 +35,7 @@
     "author": "Detlev Offenbach <detlev@die-offenbachs.de>",
     "autoactivate": True,
     "deactivateable": True,
-    "version": "10.0.0",
+    "version": "10.1.0",
     "className": "PluginPipxInterface",
     "packageName": "PipxInterface",
     "shortDescription": "Graphical interface to the 'pipx' command.",
Binary file PluginPipxInterface.zip has changed
--- a/changelog.md	Fri Jun 28 19:30:03 2024 +0200
+++ b/changelog.md	Sat Jun 29 17:31:16 2024 +0200
@@ -1,6 +1,10 @@
 ChangeLog
 ---------
 
+__Version 10.1.0__
+
+- Added an interface to the `pipx ensurepath` command.
+
 __Version 10.0.0__
 
 - first release

eric ide

mercurial