[ui][settings] more general settings and improvements

This commit is contained in:
Vinícius Moreira
2020-01-24 19:35:50 -03:00
parent b530cbe0fc
commit 2c550a38fe
27 changed files with 101 additions and 41 deletions

View File

@@ -68,13 +68,14 @@ class SelectViewType(Enum):
class SingleSelectComponent(InputViewComponent):
def __init__(self, type_: SelectViewType, label: str, options: List[InputOption], default_option: InputOption = None, max_per_line: int = 1, id_: str = None):
def __init__(self, type_: SelectViewType, label: str, options: List[InputOption], default_option: InputOption = None, max_per_line: int = 1, tooltip: str = None, id_: str = None):
super(SingleSelectComponent, self).__init__(id_=id_)
self.type = type_
self.label = label
self.options = options
self.value = default_option
self.max_per_line = max_per_line
self.tooltip = tooltip
def get_selected(self):
if self.value:

View File

@@ -512,6 +512,7 @@ class AppImageManager(SoftwareManager):
default_option=[o for o in enabled_opts if o.value == config['db_updater']['enabled']][0],
max_per_line=len(enabled_opts),
type_=SelectViewType.RADIO,
tooltip=self.i18n['appimage.config.db_updates.activated.tip'].format(app=self.context.app_name),
id_='up_enabled'),
TextInputComponent(label=self.i18n['interval'],
value=str(config['db_updater']['interval']),

View File

@@ -19,4 +19,5 @@ appimage.install.download.error=No sha pogut baixar el fitxer {}. El servidor
appimage.install.appimagelauncher.error = {appimgl} no permet la instal·lació de {app}. Desinstal·leu {appimgl}, reinicieu el sistema i torneu a provar dinstal·lar {app}.
appimage.config.db_updates=Actualització de la base de dades
appimage.config.db_updates.activated=activada
appimage.config.db_updates.activated.tip={app} és capaç de verificar si hi ha actualitzacions de les aplicacions instal·lades
appimage.config.db_updates.interval.tip=Interval d'actualització a SECONDS

View File

@@ -19,4 +19,5 @@ appimage.install.download.error=Das Herunterladen der Datei {} ist fehlgeschlage
appimage.install.appimagelauncher.error={appimgl} verhindert die installation von {app}. Deinstalliere {appimgl}, starte deinen Computer neu und versuche die installation von {app} erneut.
appimage.config.db_updates=Datenbankaktualisierung
appimage.config.db_updates.activated=aktiviert
appimage.config.db_updates.activated.tip={app} kann überprüfen, ob Aktualisierungen für Ihre installierten Anwendungen vorhanden sind
appimage.config.db_updates.interval.tip=Aktualisierungsintervall in SEKUNDEN

View File

@@ -19,4 +19,5 @@ appimage.install.download.error=It was not possible to download the file {}. The
appimage.install.appimagelauncher.error={appimgl} is not allowing {app} to be installed. Uninstall {appimgl}, reboot your system and try to install {app} again.
appimage.config.db_updates=Database update
appimage.config.db_updates.activated=activated
appimage.config.db_updates.activated.tip={app} is able to verify if there are updates for your installed applications
appimage.config.db_updates.interval.tip=Update interval in SECONDS

View File

@@ -19,4 +19,5 @@ appimage.install.download.error=No fue posible descargar el archivo {}. El servi
appimage.install.appimagelauncher.error={appimgl} no permite la instalación de {app}. Desinstale {appimgl}, reinicie su sistema e intente instalar {app} nuevamente.
appimage.config.db_updates=Actualización de la base de datos
appimage.config.db_updates.activated=activada
appimage.config.db_updates.activated.tip={app} puede verificar si hay actualizaciones para sus aplicaciones instaladas
appimage.config.db_updates.interval.tip=Intervalo de actualización en SEGUNDOS

View File

@@ -19,5 +19,6 @@ appimage.install.download.error=Non è stato possibile scaricare il file {}. Il
appimage.install.appimagelauncher.error={appimgl} non consente l'installazione di {app}. Disinstallare {appimgl}, riavviare il sistema e provare a installare nuovamente {app}.
appimage.config.db_updates=Aggiornamento della banca dati
appimage.config.db_updates.activated=attivata
appimage.config.db_updates.activated.tip={app} è in grado di verificare se ci sono aggiornamenti per le tue applicazioni installate
appimage.config.db_updates.interval.tip=Intervallo di aggiornamento in SECONDI

View File

@@ -19,4 +19,5 @@ appimage.install.download.error=Não foi possível baixar o arquivo {}. O servid
appimage.install.appimagelauncher.error={appimgl} não está permitindo que o {app} seja instalado. Desinstale o {appimgl}, reinicie o sistema e tente instalar o {app} novamente.
appimage.config.db_updates=Atualização da base de dados
appimage.config.db_updates.activated=ativada
appimage.config.db_updates.activated.tip=O {app} consegue verificar se há atualizações para seus aplicativos instalados
appimage.config.db_updates.interval.tip=Intervalo de atualização em SEGUNDOS

View File

@@ -891,11 +891,11 @@ class ArchManager(SoftwareManager):
def get_settings(self) -> ViewComponent:
config = read_config()
optz_opts = [InputOption(label=self.i18n['yes'].capitalize(), value=True, tooltip=self.i18n['arch.config.optimize.true.tip']),
InputOption(label=self.i18n['no'].capitalize(), value=False, tooltip=self.i18n['arch.config.optimize.false.tip'])]
optz_opts = [InputOption(label=self.i18n['yes'].capitalize(), value=True),
InputOption(label=self.i18n['no'].capitalize(), value=False)]
trans_check_opts = [InputOption(label=self.i18n['yes'].capitalize(), value=True, tooltip=self.i18n['arch.config.trans_dep_check.true.tip']),
InputOption(label=self.i18n['no'].capitalize(), value=False, tooltip=self.i18n['arch.config.trans_dep_check.false.tip'])]
trans_check_opts = [InputOption(label=self.i18n['yes'].capitalize(), value=True),
InputOption(label=self.i18n['no'].capitalize(), value=False)]
fields = [
SingleSelectComponent(label=self.i18n['arch.config.optimize'].capitalize(),
@@ -903,12 +903,14 @@ class ArchManager(SoftwareManager):
default_option=[o for o in optz_opts if o.value == config['optimize']][0],
max_per_line=len(optz_opts),
type_=SelectViewType.RADIO,
tooltip=self.i18n['arch.config.optimize.tip'],
id_='opts'),
SingleSelectComponent(label=self.i18n['arch.config.trans_dep_check'].capitalize(),
options=trans_check_opts,
default_option=[o for o in trans_check_opts if o.value == config['transitive_checking']][0],
max_per_line=len(trans_check_opts),
type_=SelectViewType.RADIO,
tooltip=self.i18n['arch.config.trans_dep_check.tip'],
id_='dep_check')]
return PanelComponent([FormComponent(fields, label=self.i18n['installation'].capitalize())])

View File

@@ -104,7 +104,5 @@ arch.aur.install.validity_check.body=Alguns dels fitxers font necessaris per a l
arch.makepkg.optimizing=Optimitzant la recopilació
arch.config.optimize=optimitzar
arch.config.trans_dep_check=verificar dependències
arch.config.optimize.true.tip=La configuració optimitzada s'utilitzarà per fer més ràpida la instal·lació dels paquets
arch.config.optimize.false.tip=La configuració predeterminada del sistema s'utilitzarà per realitzar la instal·lació dels paquets
arch.config.trans_dep_check.true.tip=Si totes les dependències del paquet shan de verificar abans de la instal·lació.
arch.config.trans_dep_check.false.tip=Si s'han de destapar les dependències del paquet durant la seva instal·lació
arch.config.optimize.tip=La configuració optimitzada s'utilitzarà per fer més ràpida la instal·lació dels paquets, en cas contrari s'utilitzarà la configuració del sistema
arch.config.trans_dep_check.tip=Si totes les dependències del paquet shan de verificar abans de començar la instal·lació. En cas contrari, es descobriran durant la instal·lació

View File

@@ -104,7 +104,5 @@ aur.info.conflicts with=Konflikt mit
arch.makepkg.optimizing=Optimiert die Zusammenstellung
arch.config.optimize=optimieren
arch.config.trans_dep_check=Um Abhängigkeiten zu verifizieren
arch.config.optimize.true.tip=Optimierte Einstellungen werden verwendet, um die Paketinstallation zu beschleunigen
arch.config.optimize.false.tip=Für die Installation der Pakete werden die Standardsystemeinstellungen verwendet
arch.config.trans_dep_check.true.tip=Wenn alle Paketabhängigkeiten überprüft werden sollen, bevor die Installation beginnt
arch.config.trans_dep_check.false.tip=Wenn die Paketabhängigkeiten bei der Installation aufgedeckt werden sollen
arch.config.optimize.tip=Optimierte Einstellungen werden verwendet, um die Paketinstallation zu beschleunigen, andernfalls werden die Systemeinstellungen verwendet
arch.config.trans_dep_check.tip=Wenn alle Paketabhängigkeiten überprüft werden sollen, bevor die Installation beginnt. Andernfalls werden sie während der Installation erkannt

View File

@@ -104,7 +104,5 @@ aur.info.conflicts with=conflicts with
arch.makepkg.optimizing=Optimizing the compilation
arch.config.optimize=optimize
arch.config.trans_dep_check=check dependencies
arch.config.optimize.true.tip=Optimized settings will be used in order to make the packages installation faster
arch.config.optimize.false.tip=The default system settings will be used to perform the packages installation
arch.config.trans_dep_check.true.tip=If all the package dependencies should be verified before the installation starts
arch.config.trans_dep_check.false.tip=If the package dependencies should be uncovered during its installation
arch.config.optimize.tip=Optimized settings will be used in order to make the packages installation faster, otherwise the system settings will be used
arch.config.trans_dep_check.tip=If all the package dependencies should be verified before the installation starts. Otherwise they will be discovered during the installation

View File

@@ -104,7 +104,5 @@ arch.aur.install.validity_check.body=Algunos de los archivos fuente necesarios p
arch.makepkg.optimizing=Optimizando la compilación
arch.config.optimize=optimizar
arch.config.trans_dep_check=verificar dependencias
arch.config.optimize.true.tip=Se utilizará una configuración optimizada para acelerar la instalación de los paquetes
arch.config.optimize.false.tip=Se utilizará la configuración predeterminada del sistema para realizar la instalación de paquetes
arch.config.trans_dep_check.true.tip=Si todas las dependencias del paquete deben ser verificadas antes de que comience la instalación
arch.config.trans_dep_check.false.tip=Si las dependencias del paquete deben ser descubiertas durante su instalación
arch.config.optimize.tip=Se usará una configuración optimizada para acelerar la instalación de los paquetes, de lo contrario se usará la configuración del sistema
arch.config.trans_dep_check.tip=Si todas las dependencias del paquete deben ser verificadas antes de que comience la instalación. De lo contrario, se descubrirán durante la instalación.

View File

@@ -72,7 +72,5 @@ arch.aur.install.validity_check.body=Alcuni dei file di origine necessari per l'
arch.makepkg.optimizing=Ottimizzando la compilazione
arch.config.optimize=ottimizzare
arch.config.trans_dep_check=verificare dipendenze
arch.config.optimize.true.tip=Le impostazioni ottimizzate verranno utilizzate per rendere l'installazione dei pacchetti più veloce
arch.config.optimize.false.tip=Le impostazioni di sistema predefinite verranno utilizzate per eseguire l'installazione dei pacchetti
arch.config.trans_dep_check.true.tip=Se tutte le dipendenze del pacchetto devono essere verificate prima dell'inizio dell'installazione
arch.config.trans_dep_check.false.tip=Se le dipendenze del pacchetto devono essere scoperte durante la sua installazione
arch.config.optimize.tip=Le impostazioni ottimizzate verranno utilizzate per rendere l'installazione dei pacchetti più veloce, altrimenti verranno utilizzate le impostazioni di sistema
arch.config.trans_dep_check.tip=Se tutte le dipendenze del pacchetto devono essere verificate prima dell'inizio dell'installazione. Altrimenti verranno scoperti durante l'installazione

View File

@@ -104,7 +104,5 @@ arch.aur.install.validity_check.body=Alguns dos arquivos-fonte necessários para
arch.makepkg.optimizing=Otimizando a compilação
arch.config.optimize=otimizar
arch.config.trans_dep_check=verificar dependências
arch.config.optimize.true.tip=Utilizará configurações otimizadas para que a instalação de pacotes seja mais rápida
arch.config.optimize.false.tip=Utilizará as configurações padrões do sistema para realizar a instalação de pacotes
arch.config.trans_dep_check.true.tip=Se todas as dependências do pacote devem ser verificadas antes da instalação começar
arch.config.trans_dep_check.false.tip=Se as dependências do pacote devem ser descobertas durante a instalação
arch.config.optimize.tip=Utilizará configurações otimizadas para que a instalação de pacotes seja mais rápida, caso contrário utilizará a do sistema
arch.config.trans_dep_check.tip=Se todas as dependências do pacote devem ser verificadas antes da instalação começar, caso contrário elas serão descobertas durante a instalação

View File

@@ -909,6 +909,7 @@ class WebApplicationManager(SoftwareManager):
options=native_opts,
default_option=[o for o in native_opts if o.value == config['environment']['system']][0],
type_=SelectViewType.COMBO,
tooltip=self.i18n['web.settings.nativefier.tip'],
id_='nativefier')
form_env = FormComponent(label=self.i18n['web.settings.nativefier.env'].capitalize(), components=[input_electron, select_nativefier])

View File

@@ -60,8 +60,9 @@ web.info.08_icon_path=icon
web.info.09_size=size
web.info.10_config_dir=configuration dir
web.settings.electron.version.label=Electron version
web.settings.electron.version.tooltip=An alternative Electron version to render the new installed apps
web.settings.electron.version.tooltip=Defines an alternative Electron version to render the new installed apps
web.settings.nativefier.env=environment
web.settings.nativefier.system=system
web.settings.nativefier.env.tooltip=The Nativefier version installed on the isolated {app} environment will be used to install applications
web.settings.nativefier.system.tooltip=The Nativefier version installed on your system will be used to install applications
web.settings.nativefier.system.tooltip=The Nativefier version installed on your system will be used to install applications
web.settings.nativefier.tip=Defines which Nativefier version should be used to generate the Web applications

View File

@@ -60,8 +60,9 @@ web.info.08_icon_path=icono
web.info.09_size=tamaño
web.info.10_config_dir=directorio de configuración
web.settings.electron.version.label=Versión del Electron
web.settings.electron.version.tooltip=Una versión alternativa del Electron para renderizar las nuevas aplicaciones instaladas
web.settings.electron.version.tooltip=Define una versión alternativa del Electron para renderizar las nuevas aplicaciones instaladas
web.settings.nativefier.env=ambiente
web.settings.nativefier.system=sistema
web.settings.nativefier.env.tooltip=Se utilizará la versión de Nativefier instalada en el ambiente aislado de {app} para instalar aplicaciones
web.settings.nativefier.system.tooltip=Se utilizará la versión de Nativefier instalada en su sistema para instalar aplicaciones
web.settings.nativefier.system.tooltip=Se utilizará la versión de Nativefier instalada en su sistema para instalar aplicaciones
web.settings.nativefier.tip=Define qué versión de Nativefier debe usarse para generar las aplicaciones Web

View File

@@ -60,8 +60,9 @@ web.info.08_icon_path=ícone
web.info.09_size=tamanho
web.info.10_config_dir=diretório de configuração
web.settings.electron.version.label=Versão do Electron
web.settings.electron.version.tooltip=Uma versão alternativa do Electron para renderizar os novos aplicativos instalados
web.settings.electron.version.tooltip=Define uma versão alternativa do Electron para renderizar os novos aplicativos instalados
web.settings.nativefier.env=ambiente
web.settings.nativefier.system=sistema
web.settings.nativefier.env.tooltip=A versão do Nativefier instalada no ambiente isolado do {app} será utilizada para instalar aplicativos
web.settings.nativefier.system.tooltip=A versão do Nativefier instalada no seu sistema será utilizada para instalar aplicativos
web.settings.nativefier.system.tooltip=A versão do Nativefier instalada no seu sistema será utilizada para instalar aplicativos
web.settings.nativefier.tip=Define qual versão do Nativefier será utilizada para gerar os aplicativos Web

View File

@@ -407,7 +407,7 @@ class GenericSoftwareManager(SoftwareManager):
return [m for m in self.managers if self._can_work(m)]
def _gen_settings_panel(self) -> TabComponent:
# core_config = read_config()
core_config = read_config()
current_locale = self.i18n.current_key
locale_opts = [InputOption(label=self.i18n['locale.{}'.format(k)].capitalize(), value=k) for k in translation.get_available_keys()]
@@ -417,7 +417,20 @@ class GenericSoftwareManager(SoftwareManager):
type_=SelectViewType.COMBO,
id_='locale')
return TabComponent(self.i18n['core.config.tab_label'].capitalize(), PanelComponent([FormComponent([select_locale])]), None, 'core')
disk_cache = core_config['disk_cache']['enabled']
dcache_opts = [InputOption(label=self.i18n['yes'].capitalize(), value=True),
InputOption(label=self.i18n['no'].capitalize(), value=False)]
select_dcache = SingleSelectComponent(label=self.i18n['core.config.disk_cache'],
options=dcache_opts,
default_option=[o for o in dcache_opts if o.value == disk_cache][0],
type_=SelectViewType.RADIO,
tooltip=self.i18n['core.config.disk_cache.tip'].format(app=self.context.app_name),
max_per_line=len(dcache_opts),
id_='dcache')
sub_comps = [select_locale, select_dcache]
return TabComponent(self.i18n['core.config.tab_label'].capitalize(), PanelComponent([FormComponent(sub_comps)]), None, 'core')
def _save_settings(self, panel: PanelComponent) -> Tuple[bool, List[str]]:
core_config = config.read_config()
@@ -428,6 +441,8 @@ class GenericSoftwareManager(SoftwareManager):
if locale != self.i18n.current_key:
core_config['locale'] = locale
core_config['disk_cache']['enabled'] = main_form.get_component('dcache').get_selected()
try:
config.save(core_config)
return True, None
@@ -435,7 +450,7 @@ class GenericSoftwareManager(SoftwareManager):
return False, [traceback.format_exc()]
def get_settings(self) -> ViewComponent:
tabs = []
tabs = list()
tabs.append(self._gen_settings_panel())

View File

@@ -1,7 +1,7 @@
from pathlib import Path
from typing import Tuple
from PyQt5.QtCore import Qt
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon, QPixmap, QIntValidator
from PyQt5.QtWidgets import QRadioButton, QGroupBox, QCheckBox, QComboBox, QGridLayout, QWidget, \
QLabel, QSizePolicy, QLineEdit, QToolButton, QHBoxLayout, QFormLayout, QFileDialog, QTabWidget, QVBoxLayout
@@ -337,7 +337,19 @@ class FormQt(QGroupBox):
label, field = self._new_text_input(c)
self.layout().addRow(label, field)
elif isinstance(c, SingleSelectComponent):
label = QLabel(c.label.capitalize() if c.label else '')
label = QWidget()
label.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
label.setLayout(QHBoxLayout())
label_comp = QLabel()
label.layout().addWidget(label_comp)
if c.label:
label_comp.setText(c.label.capitalize())
if c.tooltip:
label.layout().addWidget(self.gen_tip_icon(c.tooltip))
field = ComboBoxQt(c) if c.type == SelectViewType.COMBO else RadioBoxQt(c)
self.layout().addRow(label, field)
elif isinstance(c, FileChooserComponent):
@@ -350,6 +362,12 @@ class FormQt(QGroupBox):
self.layout().addRow(QLabel(), QLabel())
def gen_tip_icon(self, tip: str) -> QLabel:
tip_icon = QLabel()
tip_icon.setToolTip(tip.strip())
tip_icon.setPixmap(QIcon(resource.get_path('img/about.svg')).pixmap(QSize(12, 12)))
return tip_icon
def _new_text_input(self, c: TextInputComponent) -> Tuple[QLabel, QLineEdit]:
line_edit = QLineEdit()
@@ -373,7 +391,21 @@ class FormQt(QGroupBox):
c.value = text
line_edit.textChanged.connect(update_model)
return QLabel(c.label.capitalize() if c.label else ''), line_edit
label = QWidget()
label.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
label.setLayout(QHBoxLayout())
label_component = QLabel()
label.layout().addWidget(label_component)
if label:
label_component.setText(c.label.capitalize())
if c.tooltip:
label.layout().addWidget(self.gen_tip_icon(c.tooltip))
return label, line_edit
def _new_file_chooser(self, c: FileChooserComponent) -> Tuple[QLabel, QLineEdit]:
chooser = QLineEdit()

View File

@@ -223,6 +223,7 @@ user=usuari
example.short=ex
core.config.tab_label=general
core.config.locale.label=idioma
core.config.disk_cache=Cau em disco
locale.en=anglès
locale.es=castellà
locale.pt=portuguès

View File

@@ -178,6 +178,8 @@ user=Benutzer
example.short=z.B
core.config.tab_label=Allgemeines
core.config.locale.label=Sprache
core.config.disk_cache=Festplattencache
core.config.disk_cache.tip={app} speichert einige Daten zu Ihren installierten Anwendungen auf der Festplatte, um sie bei den nächsten Initialisierungen schneller zu laden
locale.en=englisch
locale.es=spanisch
locale.pt=portugiesisch

View File

@@ -182,6 +182,8 @@ user=user
example.short=e.g
core.config.tab_label=general
core.config.locale.label=language
core.config.disk_cache=Disk cache
core.config.disk_cache.tip={app} will save some data about your installed applications on the disk to load them faster in the next initializations
locale.en=english
locale.es=spanish
locale.pt=portuguese

View File

@@ -222,6 +222,8 @@ user=usuario
example.short=p.ej
core.config.tab_label=general
core.config.locale.label=idioma
core.config.disk_cache=Cache em disco
core.config.disk_cache.tip={app} guardará algunos datos sobre sus aplicaciones instaladas en el disco para cargarlas más rápido en las próximas inicializaciones
locale.es=inglés
locale.es=español
locale.pt=portugués

View File

@@ -178,6 +178,8 @@ icon_button.tooltip.disabled=Questa azione non è disponibile
user=utente
core.config.tab_label=generale
core.config.locale.label=idioma
core.config.disk_cache=cache nel disco
core.config.disk_cache.tip={app} salverà alcuni dati sulle applicazioni installate sul disco per caricarle più velocemente nelle successive inizializzazioni
example.short=es
locale.en=inglese
locale.es=spagnolo

View File

@@ -225,6 +225,8 @@ user=usuário
example.short=ex
core.config.tab_label=geral
core.config.locale.label=idioma
core.config.disk_cache=Cache em disco
core.config.disk_cache.tip={app} gravará alguns dados sobre seus aplicativos instalados no disco para que eles sejam carregados rapidamente nas próximas inicializações
locale.en=inglês
locale.es=espanhol
locale.pt=português