Tue, 10 Dec 2024 17:50:48 +0100
- Added a shortcut button to show the outdated dependencies of the selected package.
- Added the capability to upgrade just selected package dependencies.
--- a/PipxInterface/ConfigurationPage/Ui_PipxPage.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/ConfigurationPage/Ui_PipxPage.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/ConfigurationPage/PipxPage.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Pipx.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Pipx.py Tue Dec 10 17:50:48 2024 +0100 @@ -784,25 +784,37 @@ (d["name"], d["version"]) for d in dependenciesList if d["name"] != package ] - def upgradePackageDependencies(self, package): + def upgradePackageDependencies(self, package, dependencies=None): """ Public method to upgrade the dependencies of the given package. @param package name of the package @type str + @param dependencies list of dependencies to be upgraded or None to + upgrade all outdated dependencies (defaults to None) + @type list of str or None (optional) """ - outdatedDependencies = [ - d[0] for d in self.getOutdatedPackageDependencies(package=package) - ] - args = [ - "runpip", - package, - "install", - "--upgrade", - "--prefer-binary", - ] + outdatedDependencies + if dependencies is None: + dependencies = [ + d[0] for d in self.getOutdatedPackageDependencies(package=package) + ] - dia = PipxExecDialog(self.tr("Upgrade Dependencies"), parent=self.__ui) - res = dia.startProcess(self.__getPipxExecutable(), args) - if res: - dia.exec() + if dependencies: + args = [ + "runpip", + package, + "install", + "--upgrade", + "--prefer-binary", + ] + dependencies + + dia = PipxExecDialog(self.tr("Upgrade Dependencies"), parent=self.__ui) + res = dia.startProcess(self.__getPipxExecutable(), args) + if res: + dia.exec() + else: + EricMessageBox.information( + self.__ui, + self.tr("Upgrade Dependencies"), + self.tr("""All dependencies are already up-to-date."""), + )
--- a/PipxInterface/PipxDependenciesDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/PipxDependenciesDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -7,7 +7,13 @@ """ from PyQt6.QtCore import Qt, pyqtSlot -from PyQt6.QtWidgets import QAbstractButton, QDialog, QDialogButtonBox, QTreeWidgetItem +from PyQt6.QtWidgets import ( + QAbstractButton, + QAbstractItemView, + QDialog, + QDialogButtonBox, + QTreeWidgetItem, +) from .Ui_PipxDependenciesDialog import Ui_PipxDependenciesDialog @@ -25,7 +31,10 @@ InstalledVersionColumn = 1 AvailableVersionColumn = 2 - UpgradeDependenciesAction = 10 # sent by done() when dependencies shall be upgraded + UpgradeAllDependenciesAction = 10 + # sent by done() when all dependencies shall be upgraded + UpgradeSelectedDependenciesAction = 11 + # sent by done() when selected dependencies shall be upgraded def __init__(self, package, dependencies, mode, parent=None): """ @@ -43,7 +52,10 @@ super().__init__(parent) self.setupUi(self) - self.__upgradeButton = None + self.__mode = mode + + self.__upgradeAllButton = None + self.__upgradeSelectedButton = None if mode != PipxDependenciesDialog.OutdatedMode: self.dependenciesList.hideColumn( @@ -52,8 +64,16 @@ 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 + self.__upgradeSelectedButton = self.buttonBox.addButton( + self.tr("Upgrade Selected Dependencies"), + QDialogButtonBox.ButtonRole.ActionRole, + ) + self.__upgradeAllButton = self.buttonBox.addButton( + self.tr("Upgrade All Dependencies"), + QDialogButtonBox.ButtonRole.ActionRole, + ) + self.dependenciesList.setSelectionMode( + QAbstractItemView.SelectionMode.ExtendedSelection ) elif mode == PipxDependenciesDialog.UptodateMode: headerMsg = self.tr("Up-to-date Dependencies of package <b>{0}</b>") @@ -69,6 +89,12 @@ ) self.__resizeColumns() + if mode == PipxDependenciesDialog.OutdatedMode: + self.__upgradeAllButton.setEnabled( + self.dependenciesList.topLevelItemCount() + ) + self.__upgradeSelectedButton.setEnabled(False) + def __resizeColumns(self): """ Private method to resize the columns of the dependencies list. @@ -92,5 +118,35 @@ @param button reference to the clicked button @type QAbstractButton """ - if button == self.__upgradeButton: - self.done(PipxDependenciesDialog.UpgradeDependenciesAction) + if button == self.__upgradeAllButton: + self.done(PipxDependenciesDialog.UpgradeAllDependenciesAction) + elif button == self.__upgradeSelectedButton: + self.done(PipxDependenciesDialog.UpgradeSelectedDependenciesAction) + + @pyqtSlot() + def on_dependenciesList_itemSelectionChanged(self): + """ + Private slot to update the UI when the package selection changes. + """ + if self.__mode == PipxDependenciesDialog.OutdatedMode: + self.__upgradeSelectedButton.setEnabled( + len(self.dependenciesList.selectedItems()) + ) + + def getDependencies(self, selectedOnly=True): + """ + Public method to get the list of selected or all dependencies. + + @param selectedOnly flag indicated to get only the selected dependencies + (defaults to True) + @type boolTYPE (optional) + @return list of names of dependencies + @rtype list of str + """ + if selectedOnly: + return [itm.text(0) for itm in self.dependenciesList.selectedItems()] + else: + return [ + self.dependenciesList.topLevelItem(index).text(0) + for index in range(self.dependenciesList.topLevelItemCount()) + ]
--- a/PipxInterface/PipxWidget.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/PipxWidget.py Tue Dec 10 17:50:48 2024 +0100 @@ -65,17 +65,29 @@ else: self.layout().setContentsMargins(0, 0, 0, 0) + iconSuffix = "-dark" if ericApp().usesDarkPalette() else "-light" + self.pipxMenuButton.setIcon(EricPixmapCache.getIcon("superMenu")) self.refreshButton.setIcon(EricPixmapCache.getIcon("reload")) self.installButton.setIcon(EricPixmapCache.getIcon("plus")) self.outdatedButton.setIcon(EricPixmapCache.getIcon("question")) self.upgradeButton.setIcon(EricPixmapCache.getIcon("upgrade")) self.uninstallButton.setIcon(EricPixmapCache.getIcon("minus")) + self.showOutdatedDependenciesButton.setIcon( + EricPixmapCache.getIcon( + os.path.join( + "PipxInterface", "icons", "dependency{0}".format(iconSuffix) + ) + ) + ) self.installButton.clicked.connect(self.__installPackages) self.outdatedButton.clicked.connect(self.__checkOutdatedPackages) self.upgradeButton.clicked.connect(self.__upgradePackage) self.uninstallButton.clicked.connect(self.__uninstallPackage) + self.showOutdatedDependenciesButton.clicked.connect( + self.__showOutdatedDependencies + ) self.pipxMenuButton.setShowMenuInside(True) @@ -189,7 +201,7 @@ ) self.__dependenciseSubmenu.addSeparator() self.__upgradeDependenciesAct = self.__dependenciseSubmenu.addAction( - self.tr("Upgrade Dependencies"), self.__upgradeDependencies + self.tr("Upgrade All Dependencies"), self.__upgradeDependencies ) ################################################################### @@ -593,9 +605,14 @@ parent=self, ) result = dlg.exec() - if result == PipxDependenciesDialog.UpgradeDependenciesAction: - # 'Upgrade Dependencies' clicked - self.__upgradeDependencies() + if result == PipxDependenciesDialog.UpgradeAllDependenciesAction: + # 'Upgrade All Dependencies' clicked + dependencies = dlg.getDependencies(selectedOnly=False) + self.__upgradeDependencies(dependencies=dependencies) + elif result == PipxDependenciesDialog.UpgradeSelectedDependenciesAction: + # 'Upgrade Selected Dependencies' clicked + dependencies = dlg.getDependencies(selectedOnly=True) + self.__upgradeDependencies(dependencies=dependencies) @pyqtSlot() def __showUptodateDependencies(self): @@ -616,12 +633,18 @@ dlg.exec() @pyqtSlot() - def __upgradeDependencies(self): + def __upgradeDependencies(self, dependencies=None): """ Private slot to upgrade the outdated dependencies of the selected package. + + @param dependencies list of dependencies to be upgraded or None to + upgrade all outdated dependencies (defaults to None) + @type list of str or None (optional) """ package = self.__selectedPackages()[0] - self.__pipx.upgradePackageDependencies(package=package) + self.__pipx.upgradePackageDependencies( + package=package, dependencies=dependencies + ) packageItem = self.__getItemForPackage(package) if packageItem: self.__checkPackageOutdated(packageItem) @@ -828,6 +851,13 @@ ) self.uninstallButton.setEnabled(len(selectedPackageItems) == 1) + self.showOutdatedDependenciesButton.setEnabled( + len(selectedPackageItems) == 1 + and bool( + selectedPackageItems[0].data(0, PipxWidget.OutdatedDependenciesRole) + ) + ) + def __selectedPackages(self): """ Private method to determine the list of selected packages.
--- a/PipxInterface/PipxWidget.ui Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/PipxWidget.ui Tue Dec 10 17:50:48 2024 +0100 @@ -16,7 +16,7 @@ <item> <spacer name="horizontalSpacer_4"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -36,7 +36,7 @@ <item> <spacer name="horizontalSpacer"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -49,7 +49,7 @@ <item> <widget class="EricToolButton" name="pipxMenuButton"> <property name="popupMode"> - <enum>QToolButton::InstantPopup</enum> + <enum>QToolButton::ToolButtonPopupMode::InstantPopup</enum> </property> </widget> </item> @@ -125,7 +125,7 @@ <item> <spacer name="horizontalSpacer_2"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -171,9 +171,23 @@ </widget> </item> <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Orientation::Vertical</enum> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="showOutdatedDependenciesButton"> + <property name="toolTip"> + <string>Press to show a dialog with the outdated dependencies.</string> + </property> + </widget> + </item> + <item> <spacer name="horizontalSpacer_3"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -191,7 +205,7 @@ <bool>true</bool> </property> <property name="selectionMode"> - <enum>QAbstractItemView::ExtendedSelection</enum> + <enum>QAbstractItemView::SelectionMode::ExtendedSelection</enum> </property> <property name="sortingEnabled"> <bool>true</bool> @@ -229,6 +243,7 @@ <tabstop>outdatedButton</tabstop> <tabstop>upgradeButton</tabstop> <tabstop>uninstallButton</tabstop> + <tabstop>showOutdatedDependenciesButton</tabstop> <tabstop>pipxMenuButton</tabstop> <tabstop>venvsPathEdit</tabstop> <tabstop>applicationsPathEdit</tabstop>
--- a/PipxInterface/Ui_PipxAppStartDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxAppStartDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxAppStartDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxDependenciesDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxDependenciesDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxDependenciesDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxExecDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxExecDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxExecDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxInterpretersDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxInterpretersDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxInterpretersDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxPackagesInputDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxPackagesInputDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxPackagesInputDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxReinstallDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxReinstallDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxReinstallDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxSpecInputDialog.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxSpecInputDialog.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxSpecInputDialog.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.
--- a/PipxInterface/Ui_PipxWidget.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/Ui_PipxWidget.py Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'PipxInterface/PipxWidget.ui' # -# Created by: PyQt6 UI code generator 6.8.0.dev2411221125 +# Created by: PyQt6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. @@ -82,6 +82,14 @@ self.uninstallButton = QtWidgets.QToolButton(parent=PipxWidget) self.uninstallButton.setObjectName("uninstallButton") self.horizontalLayout_2.addWidget(self.uninstallButton) + self.line = QtWidgets.QFrame(parent=PipxWidget) + self.line.setFrameShape(QtWidgets.QFrame.Shape.VLine) + self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line.setObjectName("line") + self.horizontalLayout_2.addWidget(self.line) + self.showOutdatedDependenciesButton = QtWidgets.QToolButton(parent=PipxWidget) + self.showOutdatedDependenciesButton.setObjectName("showOutdatedDependenciesButton") + self.horizontalLayout_2.addWidget(self.showOutdatedDependenciesButton) spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) self.horizontalLayout_2.addItem(spacerItem3) self.verticalLayout.addLayout(self.horizontalLayout_2) @@ -98,7 +106,8 @@ PipxWidget.setTabOrder(self.installButton, self.outdatedButton) PipxWidget.setTabOrder(self.outdatedButton, self.upgradeButton) PipxWidget.setTabOrder(self.upgradeButton, self.uninstallButton) - PipxWidget.setTabOrder(self.uninstallButton, self.pipxMenuButton) + PipxWidget.setTabOrder(self.uninstallButton, self.showOutdatedDependenciesButton) + PipxWidget.setTabOrder(self.showOutdatedDependenciesButton, self.pipxMenuButton) PipxWidget.setTabOrder(self.pipxMenuButton, self.venvsPathEdit) PipxWidget.setTabOrder(self.venvsPathEdit, self.applicationsPathEdit) PipxWidget.setTabOrder(self.applicationsPathEdit, self.manPagesPathEdit) @@ -116,6 +125,7 @@ self.outdatedButton.setToolTip(_translate("PipxWidget", "Press to check for outdated packages.")) self.upgradeButton.setToolTip(_translate("PipxWidget", "Press to upgrade the selected package.")) self.uninstallButton.setToolTip(_translate("PipxWidget", "Press to uninstall the selected package.")) + self.showOutdatedDependenciesButton.setToolTip(_translate("PipxWidget", "Press to show a dialog with the outdated dependencies.")) self.packagesList.setSortingEnabled(True) self.packagesList.headerItem().setText(0, _translate("PipxWidget", "Package/Application")) self.packagesList.headerItem().setText(1, _translate("PipxWidget", "Version"))
--- a/PipxInterface/i18n/pipx_de.ts Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/i18n/pipx_de.ts Tue Dec 10 17:50:48 2024 +0100 @@ -138,10 +138,16 @@ <translation><p>Der Status der Abhängigkeiten des Pakets <b>{0}</b> konnte nicht ermittelt werden.</p><p>Ursache: {1}</p></translation> </message> <message> - <location filename="../Pipx.py" line="805" /> + <location filename="../Pipx.py" line="818" /> + <location filename="../Pipx.py" line="811" /> <source>Upgrade Dependencies</source> <translation>Abhängigkeiten aktualisieren</translation> </message> + <message> + <location filename="../Pipx.py" line="819" /> + <source>All dependencies are already up-to-date.</source> + <translation>Alle Abhängigkeiten sind bereits aktuell.</translation> + </message> </context> <context> <name>PipxAppStartDialog</name> @@ -199,22 +205,27 @@ <context> <name>PipxDependenciesDialog</name> <message> - <location filename="../PipxDependenciesDialog.py" line="54" /> + <location filename="../PipxDependenciesDialog.py" line="66" /> <source>Outdated Dependencies of package <b>{0}</b></source> <translation>Veraltete Abhängigkeiten des Pakets <b>{0}</b></translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="56" /> - <source>Upgrade Dependencies</source> - <translation>Abhängigkeiten aktualisieren</translation> + <location filename="../PipxDependenciesDialog.py" line="68" /> + <source>Upgrade Selected Dependencies</source> + <translation>Ausgewählte Abhängigkeiten aktualisieren</translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="59" /> + <location filename="../PipxDependenciesDialog.py" line="72" /> + <source>Upgrade All Dependencies</source> + <translation>Alle Abhängigkeiten aktualisieren</translation> + </message> + <message> + <location filename="../PipxDependenciesDialog.py" line="79" /> <source>Up-to-date Dependencies of package <b>{0}</b></source> <translation>Aktuelle Abhängigkeiten des Pakets <b>{0}</b></translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="61" /> + <location filename="../PipxDependenciesDialog.py" line="81" /> <source>Dependencies of package <b>{0}</b></source> <translation>Abhängigkeiten des Pakets <b>{0}</b></translation> </message> @@ -571,229 +582,229 @@ <context> <name>PipxWidget</name> <message> - <location filename="../PipxWidget.py" line="126" /> + <location filename="../PipxWidget.py" line="137" /> <source>Install</source> <translation>Installieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="259" /> - <location filename="../PipxWidget.py" line="128" /> + <location filename="../PipxWidget.py" line="270" /> + <location filename="../PipxWidget.py" line="139" /> <source>Install Packages</source> <translation>Pakete installieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="278" /> - <location filename="../PipxWidget.py" line="131" /> + <location filename="../PipxWidget.py" line="289" /> + <location filename="../PipxWidget.py" line="142" /> <source>Install All Packages</source> <translation>Alle Pakete installieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="135" /> + <location filename="../PipxWidget.py" line="146" /> <source>Re-Install Selected Package</source> <translation>Ausgewähltes Paket neu installieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="376" /> - <location filename="../PipxWidget.py" line="138" /> + <location filename="../PipxWidget.py" line="387" /> + <location filename="../PipxWidget.py" line="149" /> <source>Re-Install All Packages</source> <translation>Alle Pakete neu installieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="334" /> - <location filename="../PipxWidget.py" line="325" /> - <location filename="../PipxWidget.py" line="313" /> - <location filename="../PipxWidget.py" line="297" /> - <location filename="../PipxWidget.py" line="142" /> + <location filename="../PipxWidget.py" line="345" /> + <location filename="../PipxWidget.py" line="336" /> + <location filename="../PipxWidget.py" line="324" /> + <location filename="../PipxWidget.py" line="308" /> + <location filename="../PipxWidget.py" line="153" /> <source>Create Spec Metadata File</source> <translation>Erzeuge Spec-Metadaten-Datei</translation> </message> <message> - <location filename="../PipxWidget.py" line="149" /> + <location filename="../PipxWidget.py" line="160" /> <source>Upgrade</source> <translation>Aktualisieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="151" /> + <location filename="../PipxWidget.py" line="162" /> <source>Check Outdated Packages</source> <translation>Prüfe veraltete Pakete</translation> </message> <message> - <location filename="../PipxWidget.py" line="464" /> - <location filename="../PipxWidget.py" line="155" /> + <location filename="../PipxWidget.py" line="475" /> + <location filename="../PipxWidget.py" line="166" /> <source>Upgrade Selected Package</source> <translation>Ausgewähltes Paket aktualisieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="489" /> - <location filename="../PipxWidget.py" line="158" /> + <location filename="../PipxWidget.py" line="500" /> + <location filename="../PipxWidget.py" line="169" /> <source>Upgrade All Packages</source> <translation>Alle Pakete aktualisieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="162" /> + <location filename="../PipxWidget.py" line="173" /> <source>Upgrade Shared Libraries</source> <translation>Gemeinsame Bibliotheken aktualisieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="169" /> + <location filename="../PipxWidget.py" line="180" /> <source>Uninstall</source> <translation>Deinstallieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="171" /> + <location filename="../PipxWidget.py" line="182" /> <source>Uninstall Selected Package</source> <translation>Ausgewähltes Paket deinstallieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="531" /> - <location filename="../PipxWidget.py" line="174" /> + <location filename="../PipxWidget.py" line="542" /> + <location filename="../PipxWidget.py" line="185" /> <source>Uninstall All Packages</source> <translation>Alle Pakete deinstallieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="181" /> + <location filename="../PipxWidget.py" line="192" /> <source>Dependencies</source> <translation>Abhängigkeiten</translation> </message> <message> - <location filename="../PipxWidget.py" line="183" /> + <location filename="../PipxWidget.py" line="194" /> <source>Show All Dependencies</source> <translation>Zeige Alle Abhängigkeiten</translation> </message> <message> - <location filename="../PipxWidget.py" line="186" /> + <location filename="../PipxWidget.py" line="197" /> <source>Show Outdated Dependencies</source> <translation>Zeige Veraltete Abhängigkeiten</translation> </message> <message> - <location filename="../PipxWidget.py" line="189" /> + <location filename="../PipxWidget.py" line="200" /> <source>Show Up-to-date Dependencies</source> <translation>Zeige Aktuelle Abhängigkeiten</translation> </message> <message> - <location filename="../PipxWidget.py" line="193" /> - <source>Upgrade Dependencies</source> - <translation>Abhängigkeiten aktualisieren</translation> + <location filename="../PipxWidget.py" line="204" /> + <source>Upgrade All Dependencies</source> + <translation>Alle Abhängigkeiten aktualisieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="212" /> + <location filename="../PipxWidget.py" line="223" /> <source>Standalone Interpreters</source> <translation>Eigenständige Interpreter</translation> </message> <message> - <location filename="../PipxWidget.py" line="216" /> + <location filename="../PipxWidget.py" line="227" /> <source>Ensure PATH Modifications</source> <translation>PATH-Änderungen sicherstellen</translation> </message> <message> - <location filename="../PipxWidget.py" line="219" /> + <location filename="../PipxWidget.py" line="230" /> <source>Configure...</source> <translation>Einstellungen...</translation> </message> <message> - <location filename="../PipxWidget.py" line="299" /> + <location filename="../PipxWidget.py" line="310" /> <source>JSON Files (*.json);;All Files (*)</source> <translation>JSON Dateien (*.json);;Alle Dateien (*)</translation> </message> <message> - <location filename="../PipxWidget.py" line="300" /> + <location filename="../PipxWidget.py" line="311" /> <source>JSON Files (*.json)</source> <translation>JSON-Dateien (*.json)</translation> </message> <message> - <location filename="../PipxWidget.py" line="314" /> + <location filename="../PipxWidget.py" line="325" /> <source><p>The file <b>{0}</b> exists already. Overwrite it?</p></source> <translation><p>Die Datei <b>{0}</b> existiert bereits. Überschreiben?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="326" /> + <location filename="../PipxWidget.py" line="337" /> <source><p>The spec metadata file <b>{0}</b> was created successfully.</p></source> <translation><p>Die Spec-Metadaten-Datei <b>{0}</b> wurde erfolgreich erzeugt.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="335" /> + <location filename="../PipxWidget.py" line="346" /> <source><p>The spec metadata file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation><p>Die Spec-Metadaten-Datei <b>{0}</b> konnte nicht erzeugt werden.</p><p>Ursache: {1}</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="351" /> + <location filename="../PipxWidget.py" line="362" /> <source>Re-Install Package</source> <translation>Paket neu installieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="352" /> + <location filename="../PipxWidget.py" line="363" /> <source><p>Shall the package <b>{0}</b> really be reinstalled?</p></source> <translation><p>Soll das Paket <b>{0}</b> wirklich neu installiert werden?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="377" /> + <location filename="../PipxWidget.py" line="388" /> <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="465" /> + <location filename="../PipxWidget.py" line="476" /> <source><p>The selected package cannot be upgraded because some of its apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation><p>Das ausgewählte Paket kann nicht aktualisiert werden, da einige seiner Anwendungen ausgeführt werden.</p><ul><li>{0}</li></ul><p>Beende diese Anwendungen und versuche es erneut.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="490" /> + <location filename="../PipxWidget.py" line="501" /> <source><p>The packages cannot be upgraded because some of their apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation><p>Die Pakete können nicht aktualisiert werden, da einige ihrer Anwendungen ausgeführt werden.</p><ul><li>{0}</li></ul><p>Beende diese Anwendungen und versuche es erneut.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="515" /> + <location filename="../PipxWidget.py" line="526" /> <source>Uninstall Package</source> <translation>Paket deinstallieren</translation> </message> <message> - <location filename="../PipxWidget.py" line="516" /> + <location filename="../PipxWidget.py" line="527" /> <source><p>Shall the package <b>{0}</b> really be uninstalled?</p></source> <translation><p>Soll das Paket <b>{0}</b> wirklich deinstalliert werden?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="532" /> + <location filename="../PipxWidget.py" line="543" /> <source><p>Do you really want to uninstall <b>ALL</b> packages?</p></source> <translation><p>Sollen wirklich <b>ALLE</b> Pakete deinstalliert werden?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="639" /> + <location filename="../PipxWidget.py" line="664" /> <source><b>pipx Version {0}</b></source> <translation><b>pipx Version {0}</b></translation> </message> <message> - <location filename="../PipxWidget.py" line="669" /> + <location filename="../PipxWidget.py" line="694" /> <source>{0} ({1})</source> <comment>current version, latest version</comment> <translation>{0} ({1})</translation> </message> <message> - <location filename="../PipxWidget.py" line="677" /> + <location filename="../PipxWidget.py" line="702" /> <source>package and some dependencies outdated</source> <translation>Paket und einige Abhängigkeiten veraltet</translation> </message> <message> - <location filename="../PipxWidget.py" line="680" /> + <location filename="../PipxWidget.py" line="705" /> <source>package outdated</source> <translation>Paket veraltet</translation> </message> <message> - <location filename="../PipxWidget.py" line="694" /> + <location filename="../PipxWidget.py" line="719" /> <source>some dependencies outdated</source> <translation>einige Abhängigkeiten veraltet</translation> </message> <message> - <location filename="../PipxWidget.py" line="709" /> + <location filename="../PipxWidget.py" line="734" /> <source>everything up-to-date</source> <translation>alles aktuell</translation> </message> <message> - <location filename="../PipxWidget.py" line="736" /> + <location filename="../PipxWidget.py" line="761" /> <source>{0}{1}</source> <comment>Python version, standalone indicator</comment> <translation>{0}{1}</translation> </message> <message> - <location filename="../PipxWidget.py" line="738" /> + <location filename="../PipxWidget.py" line="763" /> <source> (standalone)</source> <translation> (eigenständig)</translation> </message> @@ -849,6 +860,11 @@ </message> <message> <location filename="../PipxWidget.ui" line="0" /> + <source>Press to show a dialog with the outdated dependencies.</source> + <translation>Drücken, um einen Dialog mit allen veralteten Abhängigkeiten anzuzeigen.</translation> + </message> + <message> + <location filename="../PipxWidget.ui" line="0" /> <source>Package/Application</source> <translation>Paket/Anwendung</translation> </message>
--- a/PipxInterface/i18n/pipx_empty.ts Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/i18n/pipx_empty.ts Tue Dec 10 17:50:48 2024 +0100 @@ -138,10 +138,16 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Pipx.py" line="805" /> + <location filename="../Pipx.py" line="818" /> + <location filename="../Pipx.py" line="811" /> <source>Upgrade Dependencies</source> <translation type="unfinished" /> </message> + <message> + <location filename="../Pipx.py" line="819" /> + <source>All dependencies are already up-to-date.</source> + <translation type="unfinished" /> + </message> </context> <context> <name>PipxAppStartDialog</name> @@ -199,22 +205,27 @@ <context> <name>PipxDependenciesDialog</name> <message> - <location filename="../PipxDependenciesDialog.py" line="54" /> + <location filename="../PipxDependenciesDialog.py" line="66" /> <source>Outdated Dependencies of package <b>{0}</b></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="56" /> - <source>Upgrade Dependencies</source> + <location filename="../PipxDependenciesDialog.py" line="68" /> + <source>Upgrade Selected Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="59" /> + <location filename="../PipxDependenciesDialog.py" line="72" /> + <source>Upgrade All Dependencies</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxDependenciesDialog.py" line="79" /> <source>Up-to-date Dependencies of package <b>{0}</b></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="61" /> + <location filename="../PipxDependenciesDialog.py" line="81" /> <source>Dependencies of package <b>{0}</b></source> <translation type="unfinished" /> </message> @@ -571,229 +582,229 @@ <context> <name>PipxWidget</name> <message> - <location filename="../PipxWidget.py" line="126" /> + <location filename="../PipxWidget.py" line="137" /> <source>Install</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="259" /> - <location filename="../PipxWidget.py" line="128" /> + <location filename="../PipxWidget.py" line="270" /> + <location filename="../PipxWidget.py" line="139" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="278" /> - <location filename="../PipxWidget.py" line="131" /> + <location filename="../PipxWidget.py" line="289" /> + <location filename="../PipxWidget.py" line="142" /> <source>Install All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="135" /> + <location filename="../PipxWidget.py" line="146" /> <source>Re-Install Selected Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="376" /> - <location filename="../PipxWidget.py" line="138" /> + <location filename="../PipxWidget.py" line="387" /> + <location filename="../PipxWidget.py" line="149" /> <source>Re-Install All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="334" /> - <location filename="../PipxWidget.py" line="325" /> - <location filename="../PipxWidget.py" line="313" /> - <location filename="../PipxWidget.py" line="297" /> - <location filename="../PipxWidget.py" line="142" /> + <location filename="../PipxWidget.py" line="345" /> + <location filename="../PipxWidget.py" line="336" /> + <location filename="../PipxWidget.py" line="324" /> + <location filename="../PipxWidget.py" line="308" /> + <location filename="../PipxWidget.py" line="153" /> <source>Create Spec Metadata File</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="149" /> + <location filename="../PipxWidget.py" line="160" /> <source>Upgrade</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="151" /> + <location filename="../PipxWidget.py" line="162" /> <source>Check Outdated Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="464" /> - <location filename="../PipxWidget.py" line="155" /> + <location filename="../PipxWidget.py" line="475" /> + <location filename="../PipxWidget.py" line="166" /> <source>Upgrade Selected Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="489" /> - <location filename="../PipxWidget.py" line="158" /> + <location filename="../PipxWidget.py" line="500" /> + <location filename="../PipxWidget.py" line="169" /> <source>Upgrade All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="162" /> + <location filename="../PipxWidget.py" line="173" /> <source>Upgrade Shared Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="169" /> + <location filename="../PipxWidget.py" line="180" /> <source>Uninstall</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="171" /> + <location filename="../PipxWidget.py" line="182" /> <source>Uninstall Selected Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="531" /> - <location filename="../PipxWidget.py" line="174" /> + <location filename="../PipxWidget.py" line="542" /> + <location filename="../PipxWidget.py" line="185" /> <source>Uninstall All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="181" /> + <location filename="../PipxWidget.py" line="192" /> <source>Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="183" /> + <location filename="../PipxWidget.py" line="194" /> <source>Show All Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="186" /> + <location filename="../PipxWidget.py" line="197" /> <source>Show Outdated Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="189" /> + <location filename="../PipxWidget.py" line="200" /> <source>Show Up-to-date Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="193" /> - <source>Upgrade Dependencies</source> + <location filename="../PipxWidget.py" line="204" /> + <source>Upgrade All Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="212" /> + <location filename="../PipxWidget.py" line="223" /> <source>Standalone Interpreters</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="216" /> + <location filename="../PipxWidget.py" line="227" /> <source>Ensure PATH Modifications</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="219" /> + <location filename="../PipxWidget.py" line="230" /> <source>Configure...</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="299" /> + <location filename="../PipxWidget.py" line="310" /> <source>JSON Files (*.json);;All Files (*)</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="300" /> + <location filename="../PipxWidget.py" line="311" /> <source>JSON Files (*.json)</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="314" /> + <location filename="../PipxWidget.py" line="325" /> <source><p>The file <b>{0}</b> exists already. Overwrite it?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="326" /> + <location filename="../PipxWidget.py" line="337" /> <source><p>The spec metadata file <b>{0}</b> was created successfully.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="335" /> + <location filename="../PipxWidget.py" line="346" /> <source><p>The spec metadata file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="351" /> + <location filename="../PipxWidget.py" line="362" /> <source>Re-Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="352" /> + <location filename="../PipxWidget.py" line="363" /> <source><p>Shall the package <b>{0}</b> really be reinstalled?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="377" /> + <location filename="../PipxWidget.py" line="388" /> <source>Do you really want to reinstall all packages?</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="465" /> + <location filename="../PipxWidget.py" line="476" /> <source><p>The selected package cannot be upgraded because some of its apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="490" /> + <location filename="../PipxWidget.py" line="501" /> <source><p>The packages cannot be upgraded because some of their apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="515" /> + <location filename="../PipxWidget.py" line="526" /> <source>Uninstall Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="516" /> + <location filename="../PipxWidget.py" line="527" /> <source><p>Shall the package <b>{0}</b> really be uninstalled?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="532" /> + <location filename="../PipxWidget.py" line="543" /> <source><p>Do you really want to uninstall <b>ALL</b> packages?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="639" /> + <location filename="../PipxWidget.py" line="664" /> <source><b>pipx Version {0}</b></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="669" /> + <location filename="../PipxWidget.py" line="694" /> <source>{0} ({1})</source> <comment>current version, latest version</comment> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="677" /> + <location filename="../PipxWidget.py" line="702" /> <source>package and some dependencies outdated</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="680" /> + <location filename="../PipxWidget.py" line="705" /> <source>package outdated</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="694" /> + <location filename="../PipxWidget.py" line="719" /> <source>some dependencies outdated</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="709" /> + <location filename="../PipxWidget.py" line="734" /> <source>everything up-to-date</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="736" /> + <location filename="../PipxWidget.py" line="761" /> <source>{0}{1}</source> <comment>Python version, standalone indicator</comment> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="738" /> + <location filename="../PipxWidget.py" line="763" /> <source> (standalone)</source> <translation type="unfinished" /> </message> @@ -849,6 +860,11 @@ </message> <message> <location filename="../PipxWidget.ui" line="0" /> + <source>Press to show a dialog with the outdated dependencies.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxWidget.ui" line="0" /> <source>Package/Application</source> <translation type="unfinished" /> </message>
--- a/PipxInterface/i18n/pipx_en.ts Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/i18n/pipx_en.ts Tue Dec 10 17:50:48 2024 +0100 @@ -138,10 +138,16 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Pipx.py" line="805" /> + <location filename="../Pipx.py" line="818" /> + <location filename="../Pipx.py" line="811" /> <source>Upgrade Dependencies</source> <translation type="unfinished" /> </message> + <message> + <location filename="../Pipx.py" line="819" /> + <source>All dependencies are already up-to-date.</source> + <translation type="unfinished" /> + </message> </context> <context> <name>PipxAppStartDialog</name> @@ -199,22 +205,27 @@ <context> <name>PipxDependenciesDialog</name> <message> - <location filename="../PipxDependenciesDialog.py" line="54" /> + <location filename="../PipxDependenciesDialog.py" line="66" /> <source>Outdated Dependencies of package <b>{0}</b></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="56" /> - <source>Upgrade Dependencies</source> + <location filename="../PipxDependenciesDialog.py" line="68" /> + <source>Upgrade Selected Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="59" /> + <location filename="../PipxDependenciesDialog.py" line="72" /> + <source>Upgrade All Dependencies</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxDependenciesDialog.py" line="79" /> <source>Up-to-date Dependencies of package <b>{0}</b></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="61" /> + <location filename="../PipxDependenciesDialog.py" line="81" /> <source>Dependencies of package <b>{0}</b></source> <translation type="unfinished" /> </message> @@ -571,229 +582,229 @@ <context> <name>PipxWidget</name> <message> - <location filename="../PipxWidget.py" line="126" /> + <location filename="../PipxWidget.py" line="137" /> <source>Install</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="259" /> - <location filename="../PipxWidget.py" line="128" /> + <location filename="../PipxWidget.py" line="270" /> + <location filename="../PipxWidget.py" line="139" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="278" /> - <location filename="../PipxWidget.py" line="131" /> + <location filename="../PipxWidget.py" line="289" /> + <location filename="../PipxWidget.py" line="142" /> <source>Install All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="135" /> + <location filename="../PipxWidget.py" line="146" /> <source>Re-Install Selected Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="376" /> - <location filename="../PipxWidget.py" line="138" /> + <location filename="../PipxWidget.py" line="387" /> + <location filename="../PipxWidget.py" line="149" /> <source>Re-Install All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="334" /> - <location filename="../PipxWidget.py" line="325" /> - <location filename="../PipxWidget.py" line="313" /> - <location filename="../PipxWidget.py" line="297" /> - <location filename="../PipxWidget.py" line="142" /> + <location filename="../PipxWidget.py" line="345" /> + <location filename="../PipxWidget.py" line="336" /> + <location filename="../PipxWidget.py" line="324" /> + <location filename="../PipxWidget.py" line="308" /> + <location filename="../PipxWidget.py" line="153" /> <source>Create Spec Metadata File</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="149" /> + <location filename="../PipxWidget.py" line="160" /> <source>Upgrade</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="151" /> + <location filename="../PipxWidget.py" line="162" /> <source>Check Outdated Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="464" /> - <location filename="../PipxWidget.py" line="155" /> + <location filename="../PipxWidget.py" line="475" /> + <location filename="../PipxWidget.py" line="166" /> <source>Upgrade Selected Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="489" /> - <location filename="../PipxWidget.py" line="158" /> + <location filename="../PipxWidget.py" line="500" /> + <location filename="../PipxWidget.py" line="169" /> <source>Upgrade All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="162" /> + <location filename="../PipxWidget.py" line="173" /> <source>Upgrade Shared Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="169" /> + <location filename="../PipxWidget.py" line="180" /> <source>Uninstall</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="171" /> + <location filename="../PipxWidget.py" line="182" /> <source>Uninstall Selected Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="531" /> - <location filename="../PipxWidget.py" line="174" /> + <location filename="../PipxWidget.py" line="542" /> + <location filename="../PipxWidget.py" line="185" /> <source>Uninstall All Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="181" /> + <location filename="../PipxWidget.py" line="192" /> <source>Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="183" /> + <location filename="../PipxWidget.py" line="194" /> <source>Show All Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="186" /> + <location filename="../PipxWidget.py" line="197" /> <source>Show Outdated Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="189" /> + <location filename="../PipxWidget.py" line="200" /> <source>Show Up-to-date Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="193" /> - <source>Upgrade Dependencies</source> + <location filename="../PipxWidget.py" line="204" /> + <source>Upgrade All Dependencies</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="212" /> + <location filename="../PipxWidget.py" line="223" /> <source>Standalone Interpreters</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="216" /> + <location filename="../PipxWidget.py" line="227" /> <source>Ensure PATH Modifications</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="219" /> + <location filename="../PipxWidget.py" line="230" /> <source>Configure...</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="299" /> + <location filename="../PipxWidget.py" line="310" /> <source>JSON Files (*.json);;All Files (*)</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="300" /> + <location filename="../PipxWidget.py" line="311" /> <source>JSON Files (*.json)</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="314" /> + <location filename="../PipxWidget.py" line="325" /> <source><p>The file <b>{0}</b> exists already. Overwrite it?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="326" /> + <location filename="../PipxWidget.py" line="337" /> <source><p>The spec metadata file <b>{0}</b> was created successfully.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="335" /> + <location filename="../PipxWidget.py" line="346" /> <source><p>The spec metadata file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="351" /> + <location filename="../PipxWidget.py" line="362" /> <source>Re-Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="352" /> + <location filename="../PipxWidget.py" line="363" /> <source><p>Shall the package <b>{0}</b> really be reinstalled?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="377" /> + <location filename="../PipxWidget.py" line="388" /> <source>Do you really want to reinstall all packages?</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="465" /> + <location filename="../PipxWidget.py" line="476" /> <source><p>The selected package cannot be upgraded because some of its apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="490" /> + <location filename="../PipxWidget.py" line="501" /> <source><p>The packages cannot be upgraded because some of their apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="515" /> + <location filename="../PipxWidget.py" line="526" /> <source>Uninstall Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="516" /> + <location filename="../PipxWidget.py" line="527" /> <source><p>Shall the package <b>{0}</b> really be uninstalled?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="532" /> + <location filename="../PipxWidget.py" line="543" /> <source><p>Do you really want to uninstall <b>ALL</b> packages?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="639" /> + <location filename="../PipxWidget.py" line="664" /> <source><b>pipx Version {0}</b></source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="669" /> + <location filename="../PipxWidget.py" line="694" /> <source>{0} ({1})</source> <comment>current version, latest version</comment> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="677" /> + <location filename="../PipxWidget.py" line="702" /> <source>package and some dependencies outdated</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="680" /> + <location filename="../PipxWidget.py" line="705" /> <source>package outdated</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="694" /> + <location filename="../PipxWidget.py" line="719" /> <source>some dependencies outdated</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="709" /> + <location filename="../PipxWidget.py" line="734" /> <source>everything up-to-date</source> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="736" /> + <location filename="../PipxWidget.py" line="761" /> <source>{0}{1}</source> <comment>Python version, standalone indicator</comment> <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="738" /> + <location filename="../PipxWidget.py" line="763" /> <source> (standalone)</source> <translation type="unfinished" /> </message> @@ -849,6 +860,11 @@ </message> <message> <location filename="../PipxWidget.ui" line="0" /> + <source>Press to show a dialog with the outdated dependencies.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxWidget.ui" line="0" /> <source>Package/Application</source> <translation type="unfinished" /> </message>
--- a/PipxInterface/i18n/pipx_es.ts Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/i18n/pipx_es.ts Tue Dec 10 17:50:48 2024 +0100 @@ -138,10 +138,16 @@ <translation><p>El estado de las dependencias del package <b>{0}</b> no se han podido determinar.</p><p>Razón: {1}</p></translation> </message> <message> - <location filename="../Pipx.py" line="805" /> + <location filename="../Pipx.py" line="818" /> + <location filename="../Pipx.py" line="811" /> <source>Upgrade Dependencies</source> <translation>Actualizar Dependencias</translation> </message> + <message> + <location filename="../Pipx.py" line="819" /> + <source>All dependencies are already up-to-date.</source> + <translation type="unfinished" /> + </message> </context> <context> <name>PipxAppStartDialog</name> @@ -199,22 +205,27 @@ <context> <name>PipxDependenciesDialog</name> <message> - <location filename="../PipxDependenciesDialog.py" line="54" /> + <location filename="../PipxDependenciesDialog.py" line="66" /> <source>Outdated Dependencies of package <b>{0}</b></source> <translation>Depedencias desactualizadas del package <b>{0}</b></translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="56" /> - <source>Upgrade Dependencies</source> - <translation>Actualizar Dependencias</translation> + <location filename="../PipxDependenciesDialog.py" line="68" /> + <source>Upgrade Selected Dependencies</source> + <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="59" /> + <location filename="../PipxDependenciesDialog.py" line="72" /> + <source>Upgrade All Dependencies</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxDependenciesDialog.py" line="79" /> <source>Up-to-date Dependencies of package <b>{0}</b></source> <translation>Dependencias actualizadas del package <b>{0}</b></translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="61" /> + <location filename="../PipxDependenciesDialog.py" line="81" /> <source>Dependencies of package <b>{0}</b></source> <translation>Dependencias del package <b>{0}</b></translation> </message> @@ -238,6 +249,10 @@ <source>Available Version</source> <translation>Versión Disponible</translation> </message> + <message> + <source>Upgrade Dependencies</source> + <translation type="vanished">Actualizar Dependencias</translation> + </message> </context> <context> <name>PipxExecDialog</name> @@ -571,229 +586,229 @@ <context> <name>PipxWidget</name> <message> - <location filename="../PipxWidget.py" line="126" /> + <location filename="../PipxWidget.py" line="137" /> <source>Install</source> <translation>Instalar</translation> </message> <message> - <location filename="../PipxWidget.py" line="259" /> - <location filename="../PipxWidget.py" line="128" /> + <location filename="../PipxWidget.py" line="270" /> + <location filename="../PipxWidget.py" line="139" /> <source>Install Packages</source> <translation>Instalar Packages</translation> </message> <message> - <location filename="../PipxWidget.py" line="278" /> - <location filename="../PipxWidget.py" line="131" /> + <location filename="../PipxWidget.py" line="289" /> + <location filename="../PipxWidget.py" line="142" /> <source>Install All Packages</source> <translation>Instalar Todos los Packages</translation> </message> <message> - <location filename="../PipxWidget.py" line="135" /> + <location filename="../PipxWidget.py" line="146" /> <source>Re-Install Selected Package</source> <translation>Reinstalar Package Seleccionado</translation> </message> <message> - <location filename="../PipxWidget.py" line="376" /> - <location filename="../PipxWidget.py" line="138" /> + <location filename="../PipxWidget.py" line="387" /> + <location filename="../PipxWidget.py" line="149" /> <source>Re-Install All Packages</source> <translation>Reinstalar Todos los Packages</translation> </message> <message> - <location filename="../PipxWidget.py" line="334" /> - <location filename="../PipxWidget.py" line="325" /> - <location filename="../PipxWidget.py" line="313" /> - <location filename="../PipxWidget.py" line="297" /> - <location filename="../PipxWidget.py" line="142" /> + <location filename="../PipxWidget.py" line="345" /> + <location filename="../PipxWidget.py" line="336" /> + <location filename="../PipxWidget.py" line="324" /> + <location filename="../PipxWidget.py" line="308" /> + <location filename="../PipxWidget.py" line="153" /> <source>Create Spec Metadata File</source> <translation>Crear Archivo de Metadatos de Spec</translation> </message> <message> - <location filename="../PipxWidget.py" line="149" /> + <location filename="../PipxWidget.py" line="160" /> <source>Upgrade</source> <translation>Actualizar</translation> </message> <message> - <location filename="../PipxWidget.py" line="151" /> + <location filename="../PipxWidget.py" line="162" /> <source>Check Outdated Packages</source> <translation>Comprobar Packages Desactualizados</translation> </message> <message> - <location filename="../PipxWidget.py" line="464" /> - <location filename="../PipxWidget.py" line="155" /> + <location filename="../PipxWidget.py" line="475" /> + <location filename="../PipxWidget.py" line="166" /> <source>Upgrade Selected Package</source> <translation>Actualizar Package Seleccionado</translation> </message> <message> - <location filename="../PipxWidget.py" line="489" /> - <location filename="../PipxWidget.py" line="158" /> + <location filename="../PipxWidget.py" line="500" /> + <location filename="../PipxWidget.py" line="169" /> <source>Upgrade All Packages</source> <translation>Actualizar Todos los Packages</translation> </message> <message> - <location filename="../PipxWidget.py" line="162" /> + <location filename="../PipxWidget.py" line="173" /> <source>Upgrade Shared Libraries</source> <translation>Actualizar Bibliotecas Compartidas</translation> </message> <message> - <location filename="../PipxWidget.py" line="169" /> + <location filename="../PipxWidget.py" line="180" /> <source>Uninstall</source> <translation>Desinstalar</translation> </message> <message> - <location filename="../PipxWidget.py" line="171" /> + <location filename="../PipxWidget.py" line="182" /> <source>Uninstall Selected Package</source> <translation>Desinstalar Package Seleccionado</translation> </message> <message> - <location filename="../PipxWidget.py" line="531" /> - <location filename="../PipxWidget.py" line="174" /> + <location filename="../PipxWidget.py" line="542" /> + <location filename="../PipxWidget.py" line="185" /> <source>Uninstall All Packages</source> <translation>Desinstalar Todos los Packages</translation> </message> <message> - <location filename="../PipxWidget.py" line="181" /> + <location filename="../PipxWidget.py" line="192" /> <source>Dependencies</source> <translation>Dependencias</translation> </message> <message> - <location filename="../PipxWidget.py" line="183" /> + <location filename="../PipxWidget.py" line="194" /> <source>Show All Dependencies</source> <translation>Mostrar Todas las Dependencias</translation> </message> <message> - <location filename="../PipxWidget.py" line="186" /> + <location filename="../PipxWidget.py" line="197" /> <source>Show Outdated Dependencies</source> <translation>Mostrar Dependencias Desactualizadas</translation> </message> <message> - <location filename="../PipxWidget.py" line="189" /> + <location filename="../PipxWidget.py" line="200" /> <source>Show Up-to-date Dependencies</source> <translation>Mostrar Dependencias Actualizadas</translation> </message> <message> - <location filename="../PipxWidget.py" line="193" /> - <source>Upgrade Dependencies</source> - <translation>Actualizar Dependencias</translation> + <location filename="../PipxWidget.py" line="204" /> + <source>Upgrade All Dependencies</source> + <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="212" /> + <location filename="../PipxWidget.py" line="223" /> <source>Standalone Interpreters</source> <translation>Intérpretes Independientes</translation> </message> <message> - <location filename="../PipxWidget.py" line="216" /> + <location filename="../PipxWidget.py" line="227" /> <source>Ensure PATH Modifications</source> <translation>Asegurar modificaciones de PATH</translation> </message> <message> - <location filename="../PipxWidget.py" line="219" /> + <location filename="../PipxWidget.py" line="230" /> <source>Configure...</source> <translation>Configurar...</translation> </message> <message> - <location filename="../PipxWidget.py" line="299" /> + <location filename="../PipxWidget.py" line="310" /> <source>JSON Files (*.json);;All Files (*)</source> <translation>Archivos JSON (*.json);;Todos los Archivos (*)</translation> </message> <message> - <location filename="../PipxWidget.py" line="300" /> + <location filename="../PipxWidget.py" line="311" /> <source>JSON Files (*.json)</source> <translation>Archivos JSON (*.json)</translation> </message> <message> - <location filename="../PipxWidget.py" line="314" /> + <location filename="../PipxWidget.py" line="325" /> <source><p>The file <b>{0}</b> exists already. Overwrite it?</p></source> <translation><p>El archivo <b>{0}</b> ya existe. ¿Desea sobreescribirlo?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="326" /> + <location filename="../PipxWidget.py" line="337" /> <source><p>The spec metadata file <b>{0}</b> was created successfully.</p></source> <translation><p>El archivo de metadatos de spec <b>{0}</b> se ha creado con éxito</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="335" /> + <location filename="../PipxWidget.py" line="346" /> <source><p>The spec metadata file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation><p>El archivo de metadatos de spec <b>{0}</b> no se ha podido crear.</p><p>Razón: {1}</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="351" /> + <location filename="../PipxWidget.py" line="362" /> <source>Re-Install Package</source> <translation>Reinstalar Package</translation> </message> <message> - <location filename="../PipxWidget.py" line="352" /> + <location filename="../PipxWidget.py" line="363" /> <source><p>Shall the package <b>{0}</b> really be reinstalled?</p></source> <translation><p>¿Debe ser el package <b>{0}</b> reinstalado seguro?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="377" /> + <location filename="../PipxWidget.py" line="388" /> <source>Do you really want to reinstall all packages?</source> <translation>¿Desea seguro reinstalar todos los packages?</translation> </message> <message> - <location filename="../PipxWidget.py" line="465" /> + <location filename="../PipxWidget.py" line="476" /> <source><p>The selected package cannot be upgraded because some of its apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation><p>El package seleccionado no se puede actualizar porque algunas de sus apps están en ejecución.</p><ul><li>{0}</li></ul><p>Detener estasapps e intentar de nuevo.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="490" /> + <location filename="../PipxWidget.py" line="501" /> <source><p>The packages cannot be upgraded because some of their apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation><p>Los packages no se pueden actualizar porque algunas de sus apps están en ejecución.</p><ul><li>{0}</li></ul><p>Detener estas apps e intentar de nuevo.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="515" /> + <location filename="../PipxWidget.py" line="526" /> <source>Uninstall Package</source> <translation>Desinstalar Package</translation> </message> <message> - <location filename="../PipxWidget.py" line="516" /> + <location filename="../PipxWidget.py" line="527" /> <source><p>Shall the package <b>{0}</b> really be uninstalled?</p></source> <translation><p>¿Debe ser el package <b>{0}</b> desinstalado seguro?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="532" /> + <location filename="../PipxWidget.py" line="543" /> <source><p>Do you really want to uninstall <b>ALL</b> packages?</p></source> <translation><p>¿Desea seguro desinstalar <b>TODOS</b> los packages?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="639" /> + <location filename="../PipxWidget.py" line="664" /> <source><b>pipx Version {0}</b></source> <translation><b>pipx Versión {0}</b></translation> </message> <message> - <location filename="../PipxWidget.py" line="669" /> + <location filename="../PipxWidget.py" line="694" /> <source>{0} ({1})</source> <comment>current version, latest version</comment> <translation>{0} ({1})</translation> </message> <message> - <location filename="../PipxWidget.py" line="677" /> + <location filename="../PipxWidget.py" line="702" /> <source>package and some dependencies outdated</source> <translation>package y algunas dependencias desactualizados</translation> </message> <message> - <location filename="../PipxWidget.py" line="680" /> + <location filename="../PipxWidget.py" line="705" /> <source>package outdated</source> <translation>package desactualizado</translation> </message> <message> - <location filename="../PipxWidget.py" line="694" /> + <location filename="../PipxWidget.py" line="719" /> <source>some dependencies outdated</source> <translation>algunas dependencias desactualizadas</translation> </message> <message> - <location filename="../PipxWidget.py" line="709" /> + <location filename="../PipxWidget.py" line="734" /> <source>everything up-to-date</source> <translation>todo actualizado</translation> </message> <message> - <location filename="../PipxWidget.py" line="736" /> + <location filename="../PipxWidget.py" line="761" /> <source>{0}{1}</source> <comment>Python version, standalone indicator</comment> <translation>{0}{1}</translation> </message> <message> - <location filename="../PipxWidget.py" line="738" /> + <location filename="../PipxWidget.py" line="763" /> <source> (standalone)</source> <translation> (independiente)</translation> </message> @@ -849,6 +864,11 @@ </message> <message> <location filename="../PipxWidget.ui" line="0" /> + <source>Press to show a dialog with the outdated dependencies.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxWidget.ui" line="0" /> <source>Package/Application</source> <translation>Package/Aplicación</translation> </message> @@ -863,6 +883,10 @@ <translation type="unfinished" /> </message> <message> + <source>Upgrade Dependencies</source> + <translation type="vanished">Actualizar Dependencias</translation> + </message> + <message> <source>Python Version</source> <translation type="vanished">Versión de python</translation> </message>
--- a/PipxInterface/i18n/pipx_ru.ts Tue Dec 10 17:43:42 2024 +0100 +++ b/PipxInterface/i18n/pipx_ru.ts Tue Dec 10 17:50:48 2024 +0100 @@ -138,10 +138,16 @@ <translation><p>Не удалось определить статус зависимостей пакета <b>{0}</b>.</p><p>Причина: {1}</p></translation> </message> <message> - <location filename="../Pipx.py" line="805" /> + <location filename="../Pipx.py" line="818" /> + <location filename="../Pipx.py" line="811" /> <source>Upgrade Dependencies</source> <translation>Обновление зависимостей</translation> </message> + <message> + <location filename="../Pipx.py" line="819" /> + <source>All dependencies are already up-to-date.</source> + <translation type="unfinished" /> + </message> </context> <context> <name>PipxAppStartDialog</name> @@ -199,22 +205,27 @@ <context> <name>PipxDependenciesDialog</name> <message> - <location filename="../PipxDependenciesDialog.py" line="54" /> + <location filename="../PipxDependenciesDialog.py" line="66" /> <source>Outdated Dependencies of package <b>{0}</b></source> <translation>Устаревшие зависимости пакета <b>{0}</b></translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="56" /> - <source>Upgrade Dependencies</source> - <translation>Обновить зависимости</translation> + <location filename="../PipxDependenciesDialog.py" line="68" /> + <source>Upgrade Selected Dependencies</source> + <translation type="unfinished" /> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="59" /> + <location filename="../PipxDependenciesDialog.py" line="72" /> + <source>Upgrade All Dependencies</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxDependenciesDialog.py" line="79" /> <source>Up-to-date Dependencies of package <b>{0}</b></source> <translation>Обновленные зависимости пакета <b>{0}</b></translation> </message> <message> - <location filename="../PipxDependenciesDialog.py" line="61" /> + <location filename="../PipxDependenciesDialog.py" line="81" /> <source>Dependencies of package <b>{0}</b></source> <translation>Зависимости пакета <b>{0}</b></translation> </message> @@ -238,6 +249,10 @@ <source>Available Version</source> <translation>Доступная версия</translation> </message> + <message> + <source>Upgrade Dependencies</source> + <translation type="vanished">Обновить зависимости</translation> + </message> </context> <context> <name>PipxExecDialog</name> @@ -571,229 +586,229 @@ <context> <name>PipxWidget</name> <message> - <location filename="../PipxWidget.py" line="126" /> + <location filename="../PipxWidget.py" line="137" /> <source>Install</source> <translation>Установить</translation> </message> <message> - <location filename="../PipxWidget.py" line="259" /> - <location filename="../PipxWidget.py" line="128" /> + <location filename="../PipxWidget.py" line="270" /> + <location filename="../PipxWidget.py" line="139" /> <source>Install Packages</source> <translation>Установить пакеты</translation> </message> <message> - <location filename="../PipxWidget.py" line="278" /> - <location filename="../PipxWidget.py" line="131" /> + <location filename="../PipxWidget.py" line="289" /> + <location filename="../PipxWidget.py" line="142" /> <source>Install All Packages</source> <translation>Установить все пакеты</translation> </message> <message> - <location filename="../PipxWidget.py" line="135" /> + <location filename="../PipxWidget.py" line="146" /> <source>Re-Install Selected Package</source> <translation>Переустановить выбранный пакет</translation> </message> <message> - <location filename="../PipxWidget.py" line="376" /> - <location filename="../PipxWidget.py" line="138" /> + <location filename="../PipxWidget.py" line="387" /> + <location filename="../PipxWidget.py" line="149" /> <source>Re-Install All Packages</source> <translation>Переустановить все пакеты</translation> </message> <message> - <location filename="../PipxWidget.py" line="334" /> - <location filename="../PipxWidget.py" line="325" /> - <location filename="../PipxWidget.py" line="313" /> - <location filename="../PipxWidget.py" line="297" /> - <location filename="../PipxWidget.py" line="142" /> + <location filename="../PipxWidget.py" line="345" /> + <location filename="../PipxWidget.py" line="336" /> + <location filename="../PipxWidget.py" line="324" /> + <location filename="../PipxWidget.py" line="308" /> + <location filename="../PipxWidget.py" line="153" /> <source>Create Spec Metadata File</source> <translation>Создать файл спецификации метаданных</translation> </message> <message> - <location filename="../PipxWidget.py" line="149" /> + <location filename="../PipxWidget.py" line="160" /> <source>Upgrade</source> <translation>Обновить</translation> </message> <message> - <location filename="../PipxWidget.py" line="151" /> + <location filename="../PipxWidget.py" line="162" /> <source>Check Outdated Packages</source> <translation>Проверить устаревшие пакеты</translation> </message> <message> - <location filename="../PipxWidget.py" line="464" /> - <location filename="../PipxWidget.py" line="155" /> + <location filename="../PipxWidget.py" line="475" /> + <location filename="../PipxWidget.py" line="166" /> <source>Upgrade Selected Package</source> <translation>Обновить выбранный пакет</translation> </message> <message> - <location filename="../PipxWidget.py" line="489" /> - <location filename="../PipxWidget.py" line="158" /> + <location filename="../PipxWidget.py" line="500" /> + <location filename="../PipxWidget.py" line="169" /> <source>Upgrade All Packages</source> <translation>Обновить все пакеты</translation> </message> <message> - <location filename="../PipxWidget.py" line="162" /> + <location filename="../PipxWidget.py" line="173" /> <source>Upgrade Shared Libraries</source> <translation>Обновить общие библиотеки</translation> </message> <message> - <location filename="../PipxWidget.py" line="169" /> + <location filename="../PipxWidget.py" line="180" /> <source>Uninstall</source> <translation>Деинсталировать</translation> </message> <message> - <location filename="../PipxWidget.py" line="171" /> + <location filename="../PipxWidget.py" line="182" /> <source>Uninstall Selected Package</source> <translation>Деинсталировать выбранный пакет</translation> </message> <message> - <location filename="../PipxWidget.py" line="531" /> - <location filename="../PipxWidget.py" line="174" /> + <location filename="../PipxWidget.py" line="542" /> + <location filename="../PipxWidget.py" line="185" /> <source>Uninstall All Packages</source> <translation>Деинсталировать все пакеты</translation> </message> <message> - <location filename="../PipxWidget.py" line="181" /> + <location filename="../PipxWidget.py" line="192" /> <source>Dependencies</source> <translation>Зависимости</translation> </message> <message> - <location filename="../PipxWidget.py" line="183" /> + <location filename="../PipxWidget.py" line="194" /> <source>Show All Dependencies</source> <translation>Показать все зависимости</translation> </message> <message> - <location filename="../PipxWidget.py" line="186" /> + <location filename="../PipxWidget.py" line="197" /> <source>Show Outdated Dependencies</source> <translation>Показать устаревшие зависимости</translation> </message> <message> - <location filename="../PipxWidget.py" line="189" /> + <location filename="../PipxWidget.py" line="200" /> <source>Show Up-to-date Dependencies</source> <translation>Показать актуальные зависимости</translation> </message> <message> - <location filename="../PipxWidget.py" line="193" /> - <source>Upgrade Dependencies</source> - <translation>Обновить зависимости</translation> + <location filename="../PipxWidget.py" line="204" /> + <source>Upgrade All Dependencies</source> + <translation type="unfinished" /> </message> <message> - <location filename="../PipxWidget.py" line="212" /> + <location filename="../PipxWidget.py" line="223" /> <source>Standalone Interpreters</source> <translation>Автономные интерпретаторы</translation> </message> <message> - <location filename="../PipxWidget.py" line="216" /> + <location filename="../PipxWidget.py" line="227" /> <source>Ensure PATH Modifications</source> <translation>Внести изменения в переменную PATH</translation> </message> <message> - <location filename="../PipxWidget.py" line="219" /> + <location filename="../PipxWidget.py" line="230" /> <source>Configure...</source> <translation>Настройка...</translation> </message> <message> - <location filename="../PipxWidget.py" line="299" /> + <location filename="../PipxWidget.py" line="310" /> <source>JSON Files (*.json);;All Files (*)</source> <translation>Файлы JSON (*.json);;Все файлы (*)</translation> </message> <message> - <location filename="../PipxWidget.py" line="300" /> + <location filename="../PipxWidget.py" line="311" /> <source>JSON Files (*.json)</source> <translation>Файлы JSON (*.json)</translation> </message> <message> - <location filename="../PipxWidget.py" line="314" /> + <location filename="../PipxWidget.py" line="325" /> <source><p>The file <b>{0}</b> exists already. Overwrite it?</p></source> <translation><p>Файл <b>{0}</b> уже существует. Перезаписать?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="326" /> + <location filename="../PipxWidget.py" line="337" /> <source><p>The spec metadata file <b>{0}</b> was created successfully.</p></source> <translation><p>Файл спецификации метаданных <b>{0}</b> был успешно создан.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="335" /> + <location filename="../PipxWidget.py" line="346" /> <source><p>The spec metadata file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation><p>Не удалось создать файл спецификации метаданных <b>{0}</b>.</p><p>Причина: {1}</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="351" /> + <location filename="../PipxWidget.py" line="362" /> <source>Re-Install Package</source> <translation>Переустановить пакет</translation> </message> <message> - <location filename="../PipxWidget.py" line="352" /> + <location filename="../PipxWidget.py" line="363" /> <source><p>Shall the package <b>{0}</b> really be reinstalled?</p></source> <translation><p>Действительно ли пакет <b>{0}</b> должен быть переустановлен?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="377" /> + <location filename="../PipxWidget.py" line="388" /> <source>Do you really want to reinstall all packages?</source> <translation>Вы действительно хотите переустановить все пакеты?</translation> </message> <message> - <location filename="../PipxWidget.py" line="465" /> + <location filename="../PipxWidget.py" line="476" /> <source><p>The selected package cannot be upgraded because some of its apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation><p>Выбранный пакет не может быть обновлен, поскольку некоторые из его приложений запущены.</p><ul><li>{0}</li></ul><p>Остановите эти приложения и повторите попытку.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="490" /> + <location filename="../PipxWidget.py" line="501" /> <source><p>The packages cannot be upgraded because some of their apps are running.</p><ul><li>{0}</li></ul><p>Stop these apps and try again.</p></source> <translation><p>Обновление пакетов невозможно, поскольку некоторые из их приложений запущены.</p><ul><li>{0}</li></ul><p>Остановите эти приложения и повторите попытку.</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="515" /> + <location filename="../PipxWidget.py" line="526" /> <source>Uninstall Package</source> <translation>Деинсталировать пакет</translation> </message> <message> - <location filename="../PipxWidget.py" line="516" /> + <location filename="../PipxWidget.py" line="527" /> <source><p>Shall the package <b>{0}</b> really be uninstalled?</p></source> <translation><p>Действительно ли пакет <b>{0}</b> должен быть удален?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="532" /> + <location filename="../PipxWidget.py" line="543" /> <source><p>Do you really want to uninstall <b>ALL</b> packages?</p></source> <translation><p>Вы действительно хотите удалить </b>ВСЕ </b> пакеты?</p></translation> </message> <message> - <location filename="../PipxWidget.py" line="642" /> + <location filename="../PipxWidget.py" line="664" /> <source><b>pipx Version {0}</b></source> <translation><b>Версия pipx {0}</b></translation> </message> <message> - <location filename="../PipxWidget.py" line="672" /> + <location filename="../PipxWidget.py" line="694" /> <source>{0} ({1})</source> <comment>current version, latest version</comment> <translation>{0} ({1})</translation> </message> <message> - <location filename="../PipxWidget.py" line="680" /> + <location filename="../PipxWidget.py" line="702" /> <source>package and some dependencies outdated</source> <translation>пакет и некоторые зависимости устарели</translation> </message> <message> - <location filename="../PipxWidget.py" line="683" /> + <location filename="../PipxWidget.py" line="705" /> <source>package outdated</source> <translation>пакет устарел</translation> </message> <message> - <location filename="../PipxWidget.py" line="697" /> + <location filename="../PipxWidget.py" line="719" /> <source>some dependencies outdated</source> <translation>некоторые зависимости устарели</translation> </message> <message> - <location filename="../PipxWidget.py" line="712" /> + <location filename="../PipxWidget.py" line="734" /> <source>everything up-to-date</source> <translation>все обновлено</translation> </message> <message> - <location filename="../PipxWidget.py" line="739" /> + <location filename="../PipxWidget.py" line="761" /> <source>{0}{1}</source> <comment>Python version, standalone indicator</comment> <translation /> </message> <message> - <location filename="../PipxWidget.py" line="741" /> + <location filename="../PipxWidget.py" line="763" /> <source> (standalone)</source> <translation> (автономный)</translation> </message> @@ -849,6 +864,11 @@ </message> <message> <location filename="../PipxWidget.ui" line="0" /> + <source>Press to show a dialog with the outdated dependencies.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../PipxWidget.ui" line="0" /> <source>Package/Application</source> <translation>Пакет/Приложение</translation> </message> @@ -862,6 +882,10 @@ <source>Installed With</source> <translation>Установлен с</translation> </message> + <message> + <source>Upgrade Dependencies</source> + <translation type="vanished">Обновить зависимости</translation> + </message> </context> <context> <name>PluginPipxInterface</name>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PipxInterface/icons/dependency-dark.svg Tue Dec 10 17:50:48 2024 +0100 @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 22 22" + version="1.1" + id="svg6180" + sodipodi:docname="dependency-dark.svg" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview6182" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="46.681818" + inkscape:cx="11.439143" + inkscape:cy="11.257059" + inkscape:window-width="1795" + inkscape:window-height="1284" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg6180" /> + <defs + id="defs3051"> + <style + type="text/css" + id="current-color-scheme"> + .ColorScheme-Text { + color:#232629; + } + </style> + </defs> + <path + style="fill:#eff0f1;fill-opacity:1;stroke:none;stroke-width:1.195;stroke-dasharray:none" + d="m 5,1 -4,8.75 1.0223214,0.559083 2.40625,-5.2636729 V 9.75 H 5.5714286 V 5.0454101 L 7.9776789,10.309083 9,9.75 Z M 4.4285714,11 v 2.5 H 5.5714286 V 11 Z m 0,3.75 v 2.5 h 1.1428572 v -2.5 z m 0,3.75 V 21 h 1.1428572 v -2.5 z" + class="ColorScheme-Text" + id="path6178" /> + <path + style="color:#232629;fill:#eff0f1;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none" + d="M 15.466,1 C 13.54,1 11.718,1.5270024 10,2.5795899 l 0.855,2.2338866 c 0.859,-0.4793999 1.631,-0.8218484 2.318,-1.0302734 0.697,-0.2084125 1.406,-0.3125 2.129,-0.3125 1.085,0 1.918,0.2753118 2.497,0.8276368 0.579,0.5523375 0.868,1.3437507 0.868,2.3754882 0,0.5523375 -0.06,1.0382031 -0.189,1.4550782 -0.127,0.41685 -0.344,0.8331375 -0.651,1.25 -0.308,0.4168624 -0.955,1.1041887 -1.94,2.0629887 C 14.677,12.696058 13.411,14.92375 13.3,17.25 h 2.2 v -0.03906 c 0,-0.94835 0.144,-1.709514 0.433,-2.282714 0.299,-0.583613 0.895,-1.318753 1.79,-2.20459 1.094,-1.052588 1.823,-1.843975 2.185,-2.375488 0.371,-0.5315 0.646,-1.0929746 0.827,-1.6870122 C 20.916,8.0670983 21.006,7.383996 21.006,6.612796 21.006,4.841121 20.513,3.4639905 19.528,2.484378 18.536,1.494325 17.184,1 15.466,1 Z M 13.3,18.5 V 21 h 2.2 v -2.5 z" + class="ColorScheme-Text" + id="path10323" /> +</svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PipxInterface/icons/dependency-light.svg Tue Dec 10 17:50:48 2024 +0100 @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 22 22" + version="1.1" + id="svg6180" + sodipodi:docname="dependency-light.svg" + inkscape:version="1.2.2 (b0a8486541, 2022-12-01)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview6182" + pagecolor="#ffffff" + bordercolor="#000000" + borderopacity="0.25" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + showgrid="false" + inkscape:zoom="46.681818" + inkscape:cx="11.439143" + inkscape:cy="11.257059" + inkscape:window-width="1795" + inkscape:window-height="1284" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg6180" /> + <defs + id="defs3051"> + <style + type="text/css" + id="current-color-scheme"> + .ColorScheme-Text { + color:#232629; + } + </style> + </defs> + <path + style="fill:currentColor;fill-opacity:1;stroke:none;stroke-width:1.19522" + d="m 5,1 -4,8.75 1.0223214,0.559083 2.40625,-5.2636729 V 9.75 H 5.5714286 V 5.0454101 L 7.9776789,10.309083 9,9.75 Z M 4.4285714,11 v 2.5 H 5.5714286 V 11 Z m 0,3.75 v 2.5 h 1.1428572 v -2.5 z m 0,3.75 V 21 h 1.1428572 v -2.5 z" + class="ColorScheme-Text" + id="path6178" /> + <path + style="color:#232629;fill:currentColor;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none" + d="M 15.466,1 C 13.54,1 11.718,1.5270024 10,2.5795899 l 0.855,2.2338866 c 0.859,-0.4793999 1.631,-0.8218484 2.318,-1.0302734 0.697,-0.2084125 1.406,-0.3125 2.129,-0.3125 1.085,0 1.918,0.2753118 2.497,0.8276368 0.579,0.5523375 0.868,1.3437507 0.868,2.3754882 0,0.5523375 -0.06,1.0382031 -0.189,1.4550782 -0.127,0.41685 -0.344,0.8331375 -0.651,1.25 -0.308,0.4168624 -0.955,1.1041887 -1.94,2.0629887 C 14.677,12.696058 13.411,14.92375 13.3,17.25 h 2.2 v -0.03906 c 0,-0.94835 0.144,-1.709514 0.433,-2.282714 0.299,-0.583613 0.895,-1.318753 1.79,-2.20459 1.094,-1.052588 1.823,-1.843975 2.185,-2.375488 0.371,-0.5315 0.646,-1.0929746 0.827,-1.6870122 C 20.916,8.0670983 21.006,7.383996 21.006,6.612796 21.006,4.841121 20.513,3.4639905 19.528,2.484378 18.536,1.494325 17.184,1 15.466,1 Z M 13.3,18.5 V 21 h 2.2 v -2.5 z" + class="ColorScheme-Text" + id="path10323" /> +</svg>
--- a/PluginPipxInterface.py Tue Dec 10 17:43:42 2024 +0100 +++ b/PluginPipxInterface.py Tue Dec 10 17:50:48 2024 +0100 @@ -36,7 +36,7 @@ "author": "Detlev Offenbach <detlev@die-offenbachs.de>", "autoactivate": True, "deactivateable": True, - "version": "10.5.6", + "version": "10.6.0", "className": "PluginPipxInterface", "packageName": "PipxInterface", "shortDescription": "Graphical interface to the 'pipx' command.",
--- a/changelog.md Tue Dec 10 17:43:42 2024 +0100 +++ b/changelog.md Tue Dec 10 17:50:48 2024 +0100 @@ -1,6 +1,11 @@ ChangeLog --------- +__Version 10.6.0__ + +- Added a shortcut button to show the outdated dependencies of the selected package. +- Added the capability to upgrade just selected package dependencies. + __Version 10.5.6__ - bug fixes