diff --git a/CHANGELOG.md b/CHANGELOG.md index a91ac27a..133de460 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - the "Skip" button on the initialization panel is now enabled after 10 seconds [#310](https://github.com/vinifmor/bauh/issues/310) - faster package icons download - faster packages filtering (`type`, `category`, `name`, etc... up to **95% less time**) + - on the package information dialog is now possible to open fields associated with URLs in the browser [#340](https://github.com/vinifmor/bauh/issues/340) - displaying a text warning before installing an unverified package (unverified = not verified by the system maintainers or a trustable source) - at the moment the following packaging formats are considered completely **unverified**: AppImage, AUR, native Web application - Snap supports both verified and unverified software diff --git a/bauh/view/qt/info.py b/bauh/view/qt/info.py index f12f2d29..a0b6153c 100644 --- a/bauh/view/qt/info.py +++ b/bauh/view/qt/info.py @@ -1,4 +1,6 @@ +import subprocess from collections.abc import Iterable +from subprocess import Popen from PyQt5.QtCore import Qt from PyQt5.QtGui import QIcon, QCursor @@ -7,6 +9,7 @@ from PyQt5.QtWidgets import QDialog, QVBoxLayout, QGroupBox, \ QHBoxLayout from bauh.api.abstract.cache import MemoryCache +from bauh.commons.regex import RE_URL from bauh.view.qt.components import new_spacer from bauh.view.qt.qt_utils import get_current_screen_geometry from bauh.view.util.translation import I18n @@ -64,7 +67,7 @@ class InfoDialog(QDialog): val = str(pkg_info[attr]).strip() show_val = val - i18n_val = i18n.get('{}.{}'.format(i18n_key, val.lower())) + i18n_val = i18n.get(f"{i18n_key}.{val.lower()}") if i18n_val: val = i18n_val @@ -82,7 +85,8 @@ class InfoDialog(QDialog): self.gbox_info.layout().addWidget(label, idx, 0) self.gbox_info.layout().addWidget(text, idx, 1) - self._gen_show_button(idx, show_val) + + self._gen_show_button(idx=idx, val=show_val) layout.addWidget(scroll) @@ -113,18 +117,35 @@ class InfoDialog(QDialog): self.setMaximumHeight(int(screen_height * 0.8)) self.adjustSize() - def _gen_show_button(self, idx: int, val): + @staticmethod + def open_url(url: str): + Popen(["xdg-open", url], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, stdin=subprocess.DEVNULL) - def show_full_field(): - self.gbox_info.hide() - self.bt_back.setVisible(True) - self.text_field.show() - self.text_field.setPlainText(val) + def _show_full_field_val(self, val: str): + self.gbox_info.hide() + self.bt_back.setVisible(True) + self.text_field.show() + self.text_field.setPlainText(val) - bt_full_field = QPushButton(self.i18n['show'].capitalize()) - bt_full_field.setObjectName('show') + def _gen_show_button(self, idx: int, val: str): + + is_url = bool(RE_URL.match(val)) if val else False + + if is_url: + bt_label = self.i18n["manage_window.info.open_url"] + + def _show_field(): + self.open_url(val) + else: + bt_label = self.i18n["show"].capitalize() + + def _show_field(): + self._show_full_field_val(val) + + bt_full_field = QPushButton(bt_label) + bt_full_field.setObjectName("show") bt_full_field.setCursor(QCursor(Qt.PointingHandCursor)) - bt_full_field.clicked.connect(show_full_field) + bt_full_field.clicked.connect(_show_field) self.gbox_info.layout().addWidget(bt_full_field, idx, 2) def back_to_info(self): diff --git a/bauh/view/resources/locale/ca b/bauh/view/resources/locale/ca index 64467e65..8959b99a 100644 --- a/bauh/view/resources/locale/ca +++ b/bauh/view/resources/locale/ca @@ -351,6 +351,7 @@ manage_window.columns.installed=Installed manage_window.columns.latest_version=Versió més recent manage_window.columns.update=Voleu actualitzar? manage_window.info.no_info=There is no information available for {} +manage_window.info.open_url=Obrir manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Actualitzacions manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/de b/bauh/view/resources/locale/de index 2b668f4c..9fda673b 100644 --- a/bauh/view/resources/locale/de +++ b/bauh/view/resources/locale/de @@ -353,6 +353,7 @@ manage_window.columns.installed=Installiert manage_window.columns.latest_version=Neueste Version manage_window.columns.update=Upgraden? manage_window.info.no_info=Es sind keine Informationen verfügbar für {} +manage_window.info.open_url=Öffnen manage_window.label.apps_displayed.tip=Anwendungen angezeigt / verfügbar manage_window.label.updates=Aktualisierungen manage_window.name_filter.button_tooltip=Klicken Sie hier, um Anwendungen nach Namen zu filtern diff --git a/bauh/view/resources/locale/en b/bauh/view/resources/locale/en index 3c51e6e6..631cd38f 100644 --- a/bauh/view/resources/locale/en +++ b/bauh/view/resources/locale/en @@ -353,6 +353,7 @@ manage_window.columns.installed=Installed manage_window.columns.latest_version=Latest Version manage_window.columns.update=Upgrade ? manage_window.info.no_info=There is no information available for {} +manage_window.info.open_url=Open manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Updates manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/es b/bauh/view/resources/locale/es index eeaff4c7..b3974962 100644 --- a/bauh/view/resources/locale/es +++ b/bauh/view/resources/locale/es @@ -352,6 +352,7 @@ manage_window.columns.installed=Instaladas manage_window.columns.latest_version=Versión más reciente manage_window.columns.update=¿Quiere actualizar? manage_window.info.no_info=No hay información disponible para {} +manage_window.info.open_url=Abrir manage_window.label.apps_displayed.tip=Applicaciones mostradas / disponibles manage_window.label.updates=Actualizaciones manage_window.name_filter.button_tooltip=Haga clic aquí para filtrar aplicaciones por nombre diff --git a/bauh/view/resources/locale/fr b/bauh/view/resources/locale/fr index 93f31150..36c4e0fd 100644 --- a/bauh/view/resources/locale/fr +++ b/bauh/view/resources/locale/fr @@ -349,6 +349,7 @@ manage_window.columns.installed=Installé manage_window.columns.latest_version=Dernière Version manage_window.columns.update=Mettre à jour ? manage_window.info.no_info=There is no information available for {} +manage_window.info.open_url=Ouvrir manage_window.label.updates=Mises à jour manage_window.name_filter.placeholder=Filtrer par nom manage_window.name_filter.tooltip=Taper ici pour filtrer les applications par nom diff --git a/bauh/view/resources/locale/it b/bauh/view/resources/locale/it index e3a8c44c..affc7c1b 100644 --- a/bauh/view/resources/locale/it +++ b/bauh/view/resources/locale/it @@ -352,6 +352,7 @@ manage_window.columns.installed=Installed manage_window.columns.latest_version=Ultima Versione manage_window.columns.update=Upgrade ? manage_window.info.no_info=There is no information available for {} +manage_window.info.open_url=Aprire manage_window.label.apps_displayed.tip=Applications displayed / available manage_window.label.updates=Aggiornamenti manage_window.name_filter.button_tooltip=Click here to filter apps by name diff --git a/bauh/view/resources/locale/pt b/bauh/view/resources/locale/pt index 63d68d60..5face897 100644 --- a/bauh/view/resources/locale/pt +++ b/bauh/view/resources/locale/pt @@ -351,6 +351,7 @@ manage_window.columns.installed=Instalado manage_window.columns.latest_version=Última Versão manage_window.columns.update=Atualizar ? manage_window.info.no_info=Não há informação disponível para {} +manage_window.info.open_url=Abrir manage_window.label.apps_displayed.tip=Aplicações exibidas / disponíveis manage_window.label.updates=Atualizações manage_window.name_filter.button_tooltip=Clique aqui para filtrar aplicativos por nome diff --git a/bauh/view/resources/locale/ru b/bauh/view/resources/locale/ru index 5d9ed67d..0e28a95e 100644 --- a/bauh/view/resources/locale/ru +++ b/bauh/view/resources/locale/ru @@ -353,6 +353,7 @@ manage_window.columns.installed=Установленно manage_window.columns.latest_version=Последняя версия manage_window.columns.update=Обновить? manage_window.info.no_info=Информация не доступна для {} +manage_window.info.open_url=Открыть manage_window.label.apps_displayed.tip=Отображаемые / доступные приложения manage_window.label.updates=Обновления manage_window.name_filter.button_tooltip=Нажмите здесь, чтобы отфильтровать приложения по названию diff --git a/bauh/view/resources/locale/tr b/bauh/view/resources/locale/tr index 60d13751..907681f7 100644 --- a/bauh/view/resources/locale/tr +++ b/bauh/view/resources/locale/tr @@ -350,6 +350,7 @@ manage_window.columns.installed=Yüklü manage_window.columns.latest_version=Son sürüm manage_window.columns.update=Yükselt ? manage_window.info.no_info={} için bilgi yok +manage_window.info.open_url=Açmak manage_window.label.apps_displayed.tip=Görüntülenen uygulamalar / mevcut olanlar manage_window.label.updates=Güncellemeler manage_window.name_filter.button_tooltip=Click here to filter apps by name