mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-07 00:04:15 +02:00
[ui][settings] gem selector moved to settings
This commit is contained in:
@@ -84,14 +84,17 @@ class SingleSelectComponent(InputViewComponent):
|
||||
|
||||
class MultipleSelectComponent(InputViewComponent):
|
||||
|
||||
def __init__(self, label: str, options: List[InputOption], default_options: Set[InputOption] = None, max_per_line: int = 1, id_: str = None):
|
||||
def __init__(self, label: str, options: List[InputOption], default_options: Set[InputOption] = None,
|
||||
max_per_line: int = 1, tooltip: str = None, spaces: bool = True, id_: str = None):
|
||||
super(MultipleSelectComponent, self).__init__(id_=id_)
|
||||
|
||||
if not options:
|
||||
raise Exception("'options' cannot be None or empty")
|
||||
|
||||
self.options = options
|
||||
self.spaces= spaces
|
||||
self.label = label
|
||||
self.tooltip = tooltip
|
||||
self.values = default_options if default_options else set()
|
||||
self.max_per_line = max_per_line
|
||||
|
||||
@@ -144,9 +147,10 @@ class TextInputComponent(ViewComponent):
|
||||
|
||||
class FormComponent(ViewComponent):
|
||||
|
||||
def __init__(self, components: List[ViewComponent], label: str = None, id_: str = None):
|
||||
def __init__(self, components: List[ViewComponent], label: str = None, spaces: bool = True, id_: str = None):
|
||||
super(FormComponent, self).__init__(id_=id_)
|
||||
self.label = label
|
||||
self.spaces = spaces
|
||||
self.components = components
|
||||
self.component_map = {c.id: c for c in components if c.id} if components else None
|
||||
|
||||
@@ -167,12 +171,11 @@ class FileChooserComponent(ViewComponent):
|
||||
|
||||
class TabComponent(ViewComponent):
|
||||
|
||||
def __init__(self, label: str, content: ViewComponent, icon_path: str = None, tooltip: str = None, id_: str = None):
|
||||
def __init__(self, label: str, content: ViewComponent, icon_path: str = None, id_: str = None):
|
||||
super(TabComponent, self).__init__(id_=id_)
|
||||
self.label = label
|
||||
self.content = content
|
||||
self.icon_path = icon_path
|
||||
self.tooltip = tooltip
|
||||
|
||||
|
||||
class TabGroupComponent(ViewComponent):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
gem.flatpak.info=Aplicacions disponibles als dipòsits configurats en el vostre sistema
|
||||
gem.flatpak.info=Aplicacions disponibles a Flathub i altres repositoris configurats al vostre sistema
|
||||
flatpak.info.arch=arquitectura
|
||||
flatpak.info.branch=branca
|
||||
flatpak.info.collection=col·lecció
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
gem.flatpak.info=Applications available in the repositories configured on your system
|
||||
gem.flatpak.info=Applications available on Flathub and other repositories configured on your system
|
||||
flatpak.notification.no_remotes=No Flatpak remotes set. It will not be possible to search for Flatpak apps.
|
||||
flatpak.notification.disable=If you do not want to use Flatpak applications, uncheck {} in {}
|
||||
flatpak.downgrade.impossible.title=Error
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
gem.flatpak.info=Aplicativos disponibles en los repositorios configurados en su sistema
|
||||
gem.flatpak.info=Aplicativos disponibles en Flathub y otros repositorios configurados en su sistema
|
||||
flatpak.info.arch=arquitectura
|
||||
flatpak.info.branch=rama
|
||||
flatpak.info.collection=colección
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
gem.flatpak.info=Applicazioni disponibili nei repository configurati sul sistema
|
||||
gem.flatpak.info=Applicazioni disponibili su Flathub e altri repository configurati sul tuo sistema
|
||||
flatpak.notification.no_remotes=Nessun set remoti Flatpak. Non sarà possibile cercare app Flatpak.
|
||||
flatpak.notification.disable=Ise non si desidera utilizzare le applicazioni Flatpak, deselezionare {} in {}
|
||||
flatpak.downgrade.impossible.title=Errore
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
gem.flatpak.info=Aplicativos disponíveis nos repositórios configurados do seu sistema
|
||||
gem.flatpak.info=Aplicativos disponíveis no Flathub e outros repositórios configurados no seu sistema
|
||||
flatpak.info.arch=arquitetura
|
||||
flatpak.info.branch=ramo
|
||||
flatpak.info.collection=coleção
|
||||
|
||||
@@ -12,9 +12,11 @@ from bauh.api.abstract.disk import DiskCacheLoader
|
||||
from bauh.api.abstract.handler import ProcessWatcher
|
||||
from bauh.api.abstract.model import SoftwarePackage, PackageUpdate, PackageHistory, PackageSuggestion, PackageAction
|
||||
from bauh.api.abstract.view import FormComponent, ViewComponent, TabGroupComponent, TabComponent, SingleSelectComponent, \
|
||||
InputOption, PanelComponent, SelectViewType, TextInputComponent, FileChooserComponent, MultipleSelectComponent
|
||||
InputOption, PanelComponent, SelectViewType, TextInputComponent, FileChooserComponent, MultipleSelectComponent, \
|
||||
TextComponent
|
||||
from bauh.api.exception import NoInternetException
|
||||
from bauh.commons import internet
|
||||
from bauh.commons.html import bold
|
||||
from bauh.view.core import config
|
||||
from bauh.view.core.config import read_config
|
||||
from bauh.view.util import translation
|
||||
@@ -409,7 +411,7 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
|
||||
def _gen_bool_component(self, label: str, tooltip: str, value: bool, id_: str) -> SingleSelectComponent:
|
||||
opts = [InputOption(label=self.i18n['yes'].capitalize(), value=True),
|
||||
InputOption(label=self.i18n['no'].capitalize(), value=False)]
|
||||
InputOption(label=self.i18n['no'].capitalize(), value=False)]
|
||||
|
||||
return SingleSelectComponent(label=label,
|
||||
options=opts,
|
||||
@@ -443,7 +445,7 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
only_int=True,
|
||||
id_="sugs_by_type")
|
||||
|
||||
sub_comps = [FormComponent([select_locale, select_sysnotify, select_sugs, inp_sugs])]
|
||||
sub_comps = [FormComponent([select_locale, select_sysnotify, select_sugs, inp_sugs], spaces=False)]
|
||||
return TabComponent(self.i18n['core.config.tab.general'].capitalize(), PanelComponent(sub_comps), None, 'core.gen')
|
||||
|
||||
def _gen_adv_settings(self, core_config: dict) -> TabComponent:
|
||||
@@ -476,7 +478,7 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
id_="down_mthread",
|
||||
value=core_config['download']['multithreaded'])
|
||||
|
||||
sub_comps = [FormComponent([select_dcache, select_dmthread, select_dep_check, input_data_exp, input_icon_exp])]
|
||||
sub_comps = [FormComponent([select_dcache, select_dmthread, select_dep_check, input_data_exp, input_icon_exp], spaces=False)]
|
||||
return TabComponent(self.i18n['core.config.tab.advanced'].capitalize(), PanelComponent(sub_comps), None, 'core.adv')
|
||||
|
||||
def _gen_tray_settings(self, core_config: dict) -> TabComponent:
|
||||
@@ -499,7 +501,7 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
file_path=str(core_config['ui']['tray']['updates_icon']) if core_config['ui']['tray']['updates_icon'] else None,
|
||||
allowed_extensions=allowed_exts)
|
||||
|
||||
sub_comps = [FormComponent([input_update_interval, select_def_icon, select_up_icon])]
|
||||
sub_comps = [FormComponent([input_update_interval, select_def_icon, select_up_icon], spaces=False)]
|
||||
return TabComponent(self.i18n['core.config.tab.tray'].capitalize(), PanelComponent(sub_comps), None, 'core.tray')
|
||||
|
||||
def _gen_ui_settings(self, core_config: dict) -> TabComponent:
|
||||
@@ -528,10 +530,14 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
id_="down_icons",
|
||||
value=core_config['download']['icons'])
|
||||
|
||||
sub_comps = [FormComponent([select_hdpi, select_dicons, select_style, input_maxd])]
|
||||
sub_comps = [FormComponent([select_hdpi, select_dicons, select_style, input_maxd], spaces=False)]
|
||||
return TabComponent(self.i18n['core.config.tab.ui'].capitalize(), PanelComponent(sub_comps), None, 'core.ui')
|
||||
|
||||
def _save_settings(self, general: PanelComponent, advanced: PanelComponent, ui: PanelComponent, tray: PanelComponent) -> Tuple[bool, List[str]]:
|
||||
def _save_settings(self, general: PanelComponent,
|
||||
advanced: PanelComponent,
|
||||
ui: PanelComponent,
|
||||
tray: PanelComponent,
|
||||
gems_panel: PanelComponent) -> Tuple[bool, List[str]]:
|
||||
core_config = config.read_config()
|
||||
|
||||
# general
|
||||
@@ -587,6 +593,16 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
if style != cur_style:
|
||||
core_config['ui']['style'] = style
|
||||
|
||||
# gems
|
||||
checked_gems = gems_panel.get_component('gems').get_selected_values()
|
||||
|
||||
for man in self.managers:
|
||||
modname = man.__module__.split('.')[-2]
|
||||
enabled = modname in checked_gems
|
||||
man.set_enabled(enabled)
|
||||
|
||||
core_config['gems'] = None if core_config['gems'] is None and len(checked_gems) == len(self.managers) else checked_gems
|
||||
|
||||
try:
|
||||
config.save(core_config)
|
||||
return True, None
|
||||
@@ -596,12 +612,6 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
def get_settings(self) -> ViewComponent:
|
||||
tabs = list()
|
||||
|
||||
core_config = read_config()
|
||||
tabs.append(self._gen_general_settings(core_config))
|
||||
tabs.append(self._gen_ui_settings(core_config))
|
||||
tabs.append(self._gen_tray_settings(core_config))
|
||||
tabs.append(self._gen_adv_settings(core_config))
|
||||
|
||||
gem_opts, def_gem_opts, gem_tabs = [], set(), []
|
||||
|
||||
for man in self.managers:
|
||||
@@ -611,7 +621,7 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
icon_path = "{r}/gems/{n}/resources/img/{n}.svg".format(r=ROOT_DIR, n=modname)
|
||||
|
||||
if man_comp:
|
||||
gem_tabs.append(TabComponent(label=None, content=man_comp, icon_path=icon_path, tooltip=modname.capitalize(), id_=modname))
|
||||
gem_tabs.append(TabComponent(label=modname.capitalize(), content=man_comp, icon_path=icon_path, id_=modname))
|
||||
|
||||
opt = InputOption(label=self.i18n.get('gem.{}.label'.format(modname), modname.capitalize()),
|
||||
tooltip=self.i18n.get('gem.{}.info'.format(modname)),
|
||||
@@ -622,9 +632,23 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
if man.is_enabled() and man in self.working_managers:
|
||||
def_gem_opts.add(opt)
|
||||
|
||||
core_config = read_config()
|
||||
tabs.append(self._gen_general_settings(core_config))
|
||||
|
||||
if gem_opts:
|
||||
form_types = FormComponent(components=[MultipleSelectComponent(label=None, options=gem_opts, default_options=def_gem_opts)])
|
||||
tabs.append(TabComponent(label='Types', content=PanelComponent([form_types])))
|
||||
type_help = TextComponent(html=self.i18n['core.config.types.tip'])
|
||||
gem_selector = MultipleSelectComponent(label=None,
|
||||
tooltip=None,
|
||||
options=gem_opts,
|
||||
default_options=def_gem_opts,
|
||||
id_="gems")
|
||||
tabs.append(TabComponent(label=self.i18n['core.config.tab.types'],
|
||||
content=PanelComponent([type_help, gem_selector]),
|
||||
id_='core.types'))
|
||||
|
||||
tabs.append(self._gen_ui_settings(core_config))
|
||||
tabs.append(self._gen_tray_settings(core_config))
|
||||
tabs.append(self._gen_adv_settings(core_config))
|
||||
|
||||
for tab in gem_tabs:
|
||||
tabs.append(tab)
|
||||
@@ -638,7 +662,8 @@ class GenericSoftwareManager(SoftwareManager):
|
||||
success, errors = self._save_settings(general=component.get_tab('core.gen').content,
|
||||
advanced=component.get_tab('core.adv').content,
|
||||
tray=component.get_tab('core.tray').content,
|
||||
ui=component.get_tab('core.ui').content)
|
||||
ui=component.get_tab('core.ui').content,
|
||||
gems_panel=component.get_tab('core.types').content)
|
||||
|
||||
if not success:
|
||||
saved = False
|
||||
|
||||
@@ -10,7 +10,7 @@ from PyQt5.QtWidgets import QRadioButton, QGroupBox, QCheckBox, QComboBox, QGrid
|
||||
|
||||
from bauh.api.abstract.view import SingleSelectComponent, InputOption, MultipleSelectComponent, SelectViewType, \
|
||||
TextInputComponent, FormComponent, FileChooserComponent, ViewComponent, TabGroupComponent, PanelComponent, \
|
||||
TwoStateButtonComponent
|
||||
TwoStateButtonComponent, TextComponent
|
||||
from bauh.view.qt import css
|
||||
from bauh.view.util import resource
|
||||
from bauh.view.util.translation import I18n
|
||||
@@ -267,6 +267,62 @@ class MultipleSelectQt(QGroupBox):
|
||||
self.layout().addWidget(QLabel(), line + 1, 1)
|
||||
|
||||
|
||||
class FormMultipleSelectQt(QWidget):
|
||||
|
||||
def __init__(self, model: MultipleSelectComponent, parent: QWidget = None):
|
||||
super(FormMultipleSelectQt, self).__init__(parent=parent)
|
||||
self.model = model
|
||||
self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred)
|
||||
|
||||
self._layout = QGridLayout()
|
||||
self.setLayout(self._layout)
|
||||
|
||||
if model.label:
|
||||
line = 1
|
||||
self.layout().addWidget(QLabel(), 0, 1)
|
||||
else:
|
||||
line = 0
|
||||
|
||||
col = 0
|
||||
|
||||
pixmap_help = QPixmap()
|
||||
|
||||
for op in model.options: # loads the help icon if at least one option has a tooltip
|
||||
if op.tooltip:
|
||||
with open(resource.get_path('img/about.svg'), 'rb') as f:
|
||||
pixmap_help.loadFromData(f.read())
|
||||
pixmap_help = pixmap_help.scaled(16, 16, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
||||
break
|
||||
|
||||
for op in model.options:
|
||||
comp = CheckboxQt(op, model, None)
|
||||
|
||||
if model.values and op in model.values:
|
||||
self.value = comp
|
||||
comp.setChecked(True)
|
||||
|
||||
widget = QWidget()
|
||||
widget.setLayout(QHBoxLayout())
|
||||
widget.layout().addWidget(comp)
|
||||
|
||||
if op.tooltip:
|
||||
help_icon = QLabel()
|
||||
help_icon.setPixmap(pixmap_help)
|
||||
help_icon.setToolTip(op.tooltip)
|
||||
widget.layout().addWidget(help_icon)
|
||||
|
||||
self._layout.addWidget(widget, line, col)
|
||||
|
||||
if col + 1 == self.model.max_per_line:
|
||||
line += 1
|
||||
col = 0
|
||||
else:
|
||||
col += 1
|
||||
|
||||
if model.label:
|
||||
self.layout().addWidget(QLabel(), line + 1, 1)
|
||||
|
||||
|
||||
class InputFilter(QLineEdit):
|
||||
|
||||
def __init__(self, on_key_press):
|
||||
@@ -348,7 +404,8 @@ class FormQt(QGroupBox):
|
||||
self.setLayout(QFormLayout())
|
||||
self.setStyleSheet(css.GROUP_BOX)
|
||||
|
||||
self.layout().addRow(QLabel(), QLabel())
|
||||
if model.spaces:
|
||||
self.layout().addRow(QLabel(), QLabel())
|
||||
|
||||
for c in model.components:
|
||||
if isinstance(c, TextInputComponent):
|
||||
@@ -366,10 +423,14 @@ class FormQt(QGroupBox):
|
||||
elif isinstance(c, TwoStateButtonComponent):
|
||||
label = self._new_label(c)
|
||||
self.layout().addRow(label, TwoStateButtonQt(c))
|
||||
elif isinstance(c, MultipleSelectComponent):
|
||||
label = self._new_label(c)
|
||||
self.layout().addRow(label, FormMultipleSelectQt(c))
|
||||
else:
|
||||
raise Exception('Unsupported component type {}'.format(c.__class__.__name__))
|
||||
|
||||
self.layout().addRow(QLabel(), QLabel())
|
||||
if model.spaces:
|
||||
self.layout().addRow(QLabel(), QLabel())
|
||||
|
||||
def _new_label(self, comp) -> QWidget:
|
||||
label = QWidget()
|
||||
@@ -517,5 +578,7 @@ def to_widget(comp: ViewComponent, i18n: I18n, parent: QWidget = None) -> QWidge
|
||||
return PanelQt(comp, i18n, parent)
|
||||
elif isinstance(comp, TwoStateButtonComponent):
|
||||
return TwoStateButtonQt(comp)
|
||||
elif isinstance(comp, TextComponent):
|
||||
return QLabel(comp.value)
|
||||
else:
|
||||
raise Exception("Cannot render instances of " + comp.__class__.__name__)
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
from PyQt5.QtWidgets import QComboBox, QStyleFactory, QWidget, QApplication
|
||||
|
||||
from bauh import __app_name__
|
||||
from bauh.commons.html import bold
|
||||
from bauh.view.core import config
|
||||
from bauh.view.util import util
|
||||
from bauh.view.qt import dialog
|
||||
from bauh.view.util.translation import I18n
|
||||
|
||||
|
||||
class StylesComboBox(QComboBox):
|
||||
|
||||
def __init__(self, parent: QWidget, i18n: I18n, show_panel_after_restart: bool):
|
||||
super(StylesComboBox, self).__init__(parent=parent)
|
||||
self.app = QApplication.instance()
|
||||
self.styles = []
|
||||
self.i18n = i18n
|
||||
self.last_index = 0
|
||||
self.show_panel_after_restart = show_panel_after_restart
|
||||
|
||||
for idx, style in enumerate(QStyleFactory.keys()):
|
||||
self.styles.append(style)
|
||||
self.addItem('{}: {}'.format(i18n['style'].capitalize(), style), style)
|
||||
|
||||
if style.lower() == self.app.style().objectName():
|
||||
self.setCurrentIndex(idx)
|
||||
self.last_index = idx
|
||||
|
||||
self.currentIndexChanged.connect(self.change_style)
|
||||
|
||||
def change_style(self, idx: int):
|
||||
|
||||
if dialog.ask_confirmation(self.i18n['style.change.title'], self.i18n['style.change.question'].format(bold(__app_name__)), self.i18n):
|
||||
self.last_index = idx
|
||||
style = self.styles[idx]
|
||||
|
||||
user_config = config.read_config()
|
||||
user_config['ui']['style'] = style
|
||||
config.save(user_config)
|
||||
|
||||
util.restart_app(self.show_panel_after_restart)
|
||||
else:
|
||||
self.blockSignals(True)
|
||||
self.setCurrentIndex(self.last_index)
|
||||
self.blockSignals(False)
|
||||
@@ -16,19 +16,16 @@ from bauh.api.abstract.view import MessageType
|
||||
from bauh.api.http import HttpClient
|
||||
from bauh.commons import user
|
||||
from bauh.commons.html import bold
|
||||
from bauh.view.core.controller import GenericSoftwareManager
|
||||
from bauh.view.qt import dialog, commons, qt_utils, root, view_utils
|
||||
from bauh.view.qt import dialog, commons, qt_utils, root
|
||||
from bauh.view.qt.about import AboutDialog
|
||||
from bauh.view.qt.apps_table import AppsTable, UpdateToggleButton
|
||||
from bauh.view.qt.components import new_spacer, InputFilter, IconButton, to_widget
|
||||
from bauh.view.qt.components import new_spacer, InputFilter, IconButton
|
||||
from bauh.view.qt.confirmation import ConfirmationDialog
|
||||
from bauh.view.qt.gem_selector import GemSelectorPanel
|
||||
from bauh.view.qt.history import HistoryDialog
|
||||
from bauh.view.qt.info import InfoDialog
|
||||
from bauh.view.qt.root import ask_root_password
|
||||
from bauh.view.qt.screenshots import ScreenshotsDialog
|
||||
from bauh.view.qt.settings import SettingsWindow
|
||||
from bauh.view.qt.styles import StylesComboBox
|
||||
from bauh.view.qt.thread import UpdateSelectedApps, RefreshApps, UninstallApp, DowngradeApp, GetAppInfo, \
|
||||
GetAppHistory, SearchPackages, InstallPackage, AnimateProgress, VerifyModels, FindSuggestions, ListWarnings, \
|
||||
AsyncAction, LaunchApp, ApplyFilters, CustomAction, GetScreenshots
|
||||
@@ -1152,13 +1149,6 @@ class ManageWindow(QWidget):
|
||||
else:
|
||||
self.checkbox_console.setChecked(True)
|
||||
|
||||
def show_gems_selector(self):
|
||||
gem_panel = GemSelectorPanel(window=self,
|
||||
manager=self.manager, i18n=self.i18n,
|
||||
config=self.config,
|
||||
show_panel_after_restart=bool(self.tray_icon))
|
||||
gem_panel.show()
|
||||
|
||||
def show_settings_window(self):
|
||||
self.settings_window = SettingsWindow(self.manager, self.i18n, self.screen_size, bool(self.tray_icon))
|
||||
self.settings_window.setMinimumWidth(int(self.screen_size.width() / 4))
|
||||
@@ -1170,13 +1160,6 @@ class ManageWindow(QWidget):
|
||||
def _show_settings_menu(self):
|
||||
menu_row = QMenu()
|
||||
|
||||
if isinstance(self.manager, GenericSoftwareManager):
|
||||
action_gems = QAction(self.i18n['manage_window.settings.gems'])
|
||||
action_gems.setIcon(self.icon_app)
|
||||
|
||||
action_gems.triggered.connect(self.show_gems_selector)
|
||||
menu_row.addAction(action_gems)
|
||||
|
||||
action_settings = QAction(self.i18n['settings'].capitalize())
|
||||
action_settings.triggered.connect(self.show_settings_window)
|
||||
action_settings.setIcon(QIcon(resource.get_path('img/tools.svg')))
|
||||
|
||||
@@ -220,8 +220,10 @@ icon_button.tooltip.disabled=Aquesta acció no està disponible
|
||||
user=usuari
|
||||
example.short=e.g
|
||||
core.config.tab.advanced=Advanced
|
||||
core.config.tab_label=general
|
||||
core.config.tab.general=General
|
||||
core.config.tab.ui=Interface
|
||||
core.config.tab.tray=Tray
|
||||
core.config.tab.types=Types
|
||||
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 into the disk to load them faster in the next initializations
|
||||
@@ -249,6 +251,7 @@ core.config.system.dep_checking=Single system checking
|
||||
core.config.system.dep_checking.tip=If the availability checking of your system technologies should happen only once
|
||||
core.config.suggestions.by_type=Suggestions by type
|
||||
core.config.suggestions.by_type.tip=Maximum number of suggestions that should be displayed by application type
|
||||
core.config.types.tip=Check the application types you want to manage
|
||||
locale.en=anglès
|
||||
locale.es=castellà
|
||||
locale.pt=portuguès
|
||||
|
||||
@@ -175,8 +175,10 @@ icon_button.tooltip.disabled=Diese Aktion ist nicht verfügbar
|
||||
user=Benutzer
|
||||
example.short=e.g
|
||||
core.config.tab.advanced=Advanced
|
||||
core.config.tab_label=general
|
||||
core.config.tab.general=General
|
||||
core.config.tab.ui=Interface
|
||||
core.config.tab.tray=Tray
|
||||
core.config.tab.types=Types
|
||||
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 into the disk to load them faster in the next initializations
|
||||
@@ -204,6 +206,7 @@ core.config.system.dep_checking=Single system checking
|
||||
core.config.system.dep_checking.tip=If the availability checking of your system technologies should happen only once
|
||||
core.config.suggestions.by_type=Suggestions by type
|
||||
core.config.suggestions.by_type.tip=Maximum number of suggestions that should be displayed by application type
|
||||
core.config.types.tip=Check the application types you want to manage
|
||||
locale.en=englisch
|
||||
locale.es=spanisch
|
||||
locale.pt=portugiesisch
|
||||
|
||||
@@ -182,6 +182,7 @@ core.config.tab.advanced=Advanced
|
||||
core.config.tab.general=General
|
||||
core.config.tab.ui=Interface
|
||||
core.config.tab.tray=Tray
|
||||
core.config.tab.types=Types
|
||||
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 into the disk to load them faster in the next initializations
|
||||
@@ -212,6 +213,7 @@ core.config.system.dep_checking=Single system checking
|
||||
core.config.system.dep_checking.tip=If the availability checking of your system technologies should happen only once
|
||||
core.config.suggestions.by_type=Suggestions by type
|
||||
core.config.suggestions.by_type.tip=Maximum number of suggestions that should be displayed by application type
|
||||
core.config.types.tip=Check the application types you want to manage
|
||||
locale.en=english
|
||||
locale.es=spanish
|
||||
locale.pt=portuguese
|
||||
|
||||
@@ -222,6 +222,7 @@ core.config.tab.advanced=Avanzadas
|
||||
core.config.tab.general=Generales
|
||||
core.config.tab.ui=Interfaz
|
||||
core.config.tab.tray=Bandeja
|
||||
core.config.tab.types=Tipos
|
||||
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
|
||||
@@ -253,6 +254,7 @@ core.config.system.dep_checking=Verificación única de sistema
|
||||
core.config.system.dep_checking.tip=Si la verificación de disponibilidad de las tecnologías de su sistema debe ocurrir solo una vez
|
||||
core.config.suggestions.by_type=Sugerencias por tipo
|
||||
core.config.suggestions.by_type.tip=Número máximo de sugerencias que deberían mostrarse por tipo de aplicación
|
||||
core.config.types.tip=Marque los tipos de aplicaciones que desea administrar
|
||||
locale.es=inglés
|
||||
locale.es=español
|
||||
locale.pt=portugués
|
||||
|
||||
@@ -178,6 +178,7 @@ example.short=e.g
|
||||
core.config.tab.advanced=Advanced
|
||||
core.config.tab_label=general
|
||||
core.config.tab.ui=Interface
|
||||
core.config.tab.types=Types
|
||||
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 into the disk to load them faster in the next initializations
|
||||
@@ -205,6 +206,7 @@ core.config.system.dep_checking=Single system checking
|
||||
core.config.system.dep_checking.tip=If the availability checking of your system technologies should happen only once
|
||||
core.config.suggestions.by_type=Suggestions by type
|
||||
core.config.suggestions.by_type.tip=Maximum number of suggestions that should be displayed by application type
|
||||
core.config.types.tip=Check the application types you want to manage
|
||||
locale.en=inglese
|
||||
locale.es=spagnolo
|
||||
locale.pt=portoghese
|
||||
|
||||
@@ -225,6 +225,7 @@ core.config.tab.advanced=Avançadas
|
||||
core.config.tab.general=Gerais
|
||||
core.config.tab.ui=Interface
|
||||
core.config.tab.tray=Bandeja
|
||||
core.config.tab.types=Tipos
|
||||
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
|
||||
@@ -256,6 +257,7 @@ core.config.system.dep_checking=Verificação única de sistema
|
||||
core.config.system.dep_checking.tip=Se a verificação da disponibilidade das tecnologias do seu sistema devem ocorrer somente uma vez
|
||||
core.config.suggestions.by_type=Sugestões por tipo
|
||||
core.config.suggestions.by_type.tip=Número máximo de sugestões que devem ser exibidas por tipo de aplicativo
|
||||
core.config.types.tip=Marque os tipos de aplicativo que você quer gerenciar
|
||||
locale.en=inglês
|
||||
locale.es=espanhol
|
||||
locale.pt=português
|
||||
|
||||
Reference in New Issue
Block a user