From 2f6c000e9b90876349a82555694f131fc8f1bbf5 Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Mon, 2 Sep 2019 18:25:58 -0300 Subject: [PATCH] improvements --- bauh/app.py | 2 +- bauh/resources/locale/en | 1 + bauh/resources/locale/es | 1 + bauh/resources/locale/pt | 1 + bauh/view/qt/apps_table.py | 51 ++++++------- bauh/view/qt/commons.py | 4 +- bauh/view/qt/components.py | 13 +++- bauh/view/qt/window.py | 148 +++++++++++++++++-------------------- 8 files changed, 112 insertions(+), 109 deletions(-) diff --git a/bauh/app.py b/bauh/app.py index 1f54b5eb..75496731 100755 --- a/bauh/app.py +++ b/bauh/app.py @@ -41,7 +41,7 @@ app.setApplicationName(__app_name__) app.setApplicationVersion(__version__) app.setWindowIcon(QIcon(resource.get_path('img/logo.svg'))) -manage_window = ManageWindow(locale_keys=i18n, +manage_window = ManageWindow(i18n=i18n, manager=manager, icon_cache=icon_cache, disk_cache=args.disk_cache, diff --git a/bauh/resources/locale/en b/bauh/resources/locale/en index 34824305..7108f385 100644 --- a/bauh/resources/locale/en +++ b/bauh/resources/locale/en @@ -26,6 +26,7 @@ manage_window.status.searching=Searching manage_window.status.installing=Installing manage_window.status.refreshing_app=Refreshing manage_window.status.running_app=Launching {} +manage_window.status.filtering=Filtering manage_window.bt.refresh.text=Refresh manage_window.bt.refresh.tooltip=Reload the data about installed applications manage_window.bt.upgrade.text=Upgrade diff --git a/bauh/resources/locale/es b/bauh/resources/locale/es index abd6965f..b6608e35 100644 --- a/bauh/resources/locale/es +++ b/bauh/resources/locale/es @@ -28,6 +28,7 @@ manage_window.status.searching=Buscando manage_window.status.installing=Instalando manage_window.status.refreshing_app=Actualizando manage_window.status.running_app=Ejecutando {} +manage_window.status.filtering=Filtrando manage_window.bt.refresh.text=Recargar manage_window.bt.refresh.tooltip=Recarga los datos sobre los aplicativos instalados manage_window.bt.upgrade.text=Actualizar diff --git a/bauh/resources/locale/pt b/bauh/resources/locale/pt index d157b45a..716a6a99 100644 --- a/bauh/resources/locale/pt +++ b/bauh/resources/locale/pt @@ -28,6 +28,7 @@ manage_window.status.searching=Buscando manage_window.status.installing=Instalando manage_window.status.refreshing_app=Atualizando manage_window.status.running_app=Iniciando {} +manage_window.status.filtering=Filtrando manage_window.bt.refresh.text=Recarregar manage_window.bt.refresh.tooltip=Recarrega os dados sobre os aplicativos instalados manage_window.bt.upgrade.text=Atualizar diff --git a/bauh/view/qt/apps_table.py b/bauh/view/qt/apps_table.py index 7b3ff976..24539dba 100644 --- a/bauh/view/qt/apps_table.py +++ b/bauh/view/qt/apps_table.py @@ -41,7 +41,7 @@ class IconButton(QWidget): class UpdateToggleButton(QWidget): - def __init__(self, app_view: PackageView, root: QWidget, locale_keys: dict, checked: bool = True, clickable: bool = True): + def __init__(self, app_view: PackageView, root: QWidget, i18n: dict, checked: bool = True, clickable: bool = True): super(UpdateToggleButton, self).__init__() self.app_view = app_view @@ -63,7 +63,7 @@ class UpdateToggleButton(QWidget): ('QToolButton:checked { background: gray }' if clickable else '')) layout.addWidget(self.bt) - self.setToolTip(locale_keys['manage_window.apps_table.upgrade_toggle.tooltip']) + self.setToolTip(i18n['manage_window.apps_table.upgrade_toggle.tooltip']) if not checked: self.bt.click() @@ -100,6 +100,7 @@ class AppsTable(QTableWidget): self.lock_async_data = Lock() self.setRowHeight(80, 80) self.cache_type_icon = {} + self.i18n = self.window.i18n def has_any_settings(self, app_v: PackageView): return app_v.model.can_be_refreshed() or \ @@ -111,7 +112,7 @@ class AppsTable(QTableWidget): if app.model.installed: if app.model.can_be_refreshed(): - action_history = QAction(self.window.locale_keys["manage_window.apps_table.row.actions.refresh"]) + action_history = QAction(self.i18n["manage_window.apps_table.row.actions.refresh"]) action_history.setIcon(QIcon(resource.get_path('img/refresh.svg'))) def refresh(): @@ -121,7 +122,7 @@ class AppsTable(QTableWidget): menu_row.addAction(action_history) if app.model.has_history(): - action_history = QAction(self.window.locale_keys["manage_window.apps_table.row.actions.history"]) + action_history = QAction(self.i18n["manage_window.apps_table.row.actions.history"]) action_history.setIcon(QIcon(resource.get_path('img/history.svg'))) def show_history(): @@ -131,13 +132,13 @@ class AppsTable(QTableWidget): menu_row.addAction(action_history) if app.model.can_be_downgraded(): - action_downgrade = QAction(self.window.locale_keys["manage_window.apps_table.row.actions.downgrade"]) + action_downgrade = QAction(self.i18n["manage_window.apps_table.row.actions.downgrade"]) def downgrade(): if dialog.ask_confirmation( - title=self.window.locale_keys['manage_window.apps_table.row.actions.downgrade'], - body=self._parag(self.window.locale_keys['manage_window.apps_table.row.actions.downgrade.popup.body'].format(self._bold(str(app)))), - locale_keys=self.window.locale_keys): + title=self.i18n['manage_window.apps_table.row.actions.downgrade'], + body=self._parag(self.i18n['manage_window.apps_table.row.actions.downgrade.popup.body'].format(self._bold(str(app)))), + locale_keys=self.i18n): self.window.downgrade_app(app) action_downgrade.triggered.connect(downgrade) @@ -171,9 +172,9 @@ class AppsTable(QTableWidget): self.window.resize_and_center() def _uninstall_app(self, app_v: PackageView): - if dialog.ask_confirmation(title=self.window.locale_keys['manage_window.apps_table.row.actions.uninstall.popup.title'], - body=self._parag(self.window.locale_keys['manage_window.apps_table.row.actions.uninstall.popup.body'].format(self._bold(str(app_v)))), - locale_keys=self.window.locale_keys): + if dialog.ask_confirmation(title=self.i18n['manage_window.apps_table.row.actions.uninstall.popup.title'], + body=self._parag(self.i18n['manage_window.apps_table.row.actions.uninstall.popup.body'].format(self._bold(str(app_v)))), + locale_keys=self.i18n): self.window.uninstall_app(app_v) def _bold(self, text: str) -> str: @@ -185,9 +186,9 @@ class AppsTable(QTableWidget): def _install_app(self, pkgv: PackageView): if dialog.ask_confirmation( - title=self.window.locale_keys['manage_window.apps_table.row.actions.install.popup.title'], - body=self._parag(self.window.locale_keys['manage_window.apps_table.row.actions.install.popup.body'].format(self._bold(str(pkgv)))), - locale_keys=self.window.locale_keys): + title=self.i18n['manage_window.apps_table.row.actions.install.popup.title'], + body=self._parag(self.i18n['manage_window.apps_table.row.actions.install.popup.body'].format(self._bold(str(pkgv)))), + locale_keys=self.i18n): self.window.install(pkgv) @@ -237,7 +238,7 @@ class AppsTable(QTableWidget): col_update = None if update_check_enabled and pkgv.model.update: - col_update = UpdateToggleButton(pkgv, self.window, self.window.locale_keys, pkgv.model.update) + col_update = UpdateToggleButton(pkgv, self.window, self.i18n, pkgv.model.update) self.setCellWidget(idx, 6, col_update) @@ -263,16 +264,16 @@ class AppsTable(QTableWidget): def uninstall(): self._uninstall_app(pkgv) - col = self._gen_row_button(self.window.locale_keys['uninstall'].capitalize(), INSTALL_BT_STYLE.format(back='#cc0000'), uninstall) + col = self._gen_row_button(self.i18n['uninstall'].capitalize(), INSTALL_BT_STYLE.format(back='#cc0000'), uninstall) else: col = QLabel() col.setPixmap((QPixmap(resource.get_path('img/checked.svg')))) col.setAlignment(Qt.AlignCenter) - col.setToolTip(self.window.locale_keys['installed']) + col.setToolTip(self.i18n['installed']) elif pkgv.model.can_be_installed(): def install(): self._install_app(pkgv) - col = self._gen_row_button(self.window.locale_keys['install'].capitalize(), INSTALL_BT_STYLE.format(back='#088A08'), install) + col = self._gen_row_button(self.i18n['install'].capitalize(), INSTALL_BT_STYLE.format(back='#088A08'), install) else: col = None @@ -290,7 +291,7 @@ class AppsTable(QTableWidget): col_type = QLabel() col_type.setPixmap(pixmap) col_type.setAlignment(Qt.AlignCenter) - col_type.setToolTip('{}: {}'.format(self.window.locale_keys['type'], app_v.model.get_type())) + col_type.setToolTip('{}: {}'.format(self.i18n['type'], app_v.model.get_type())) self.setCellWidget(idx, 3, col_type) def _set_col_version(self, idx: int, app_v: PackageView): @@ -302,16 +303,16 @@ class AppsTable(QTableWidget): col_version.layout().addWidget(label_version) if app_v.model.base_data.version: - tooltip = self.window.locale_keys['version.installed'] if app_v.model.installed else self.window.locale_keys['version'] + tooltip = self.i18n['version.installed'] if app_v.model.installed else self.i18n['version'] else: - tooltip = self.window.locale_keys['version.unknown'] + tooltip = self.i18n['version.unknown'] if app_v.model.update: label_version.setStyleSheet("color: #4EC306; font-weight: bold") - tooltip = self.window.locale_keys['version.installed_outdated'] + tooltip = self.i18n['version.installed_outdated'] if app_v.model.installed and app_v.model.base_data.version and app_v.model.base_data.latest_version and app_v.model.base_data.version < app_v.model.base_data.latest_version: - tooltip = '{}. {}: {}'.format(tooltip, self.window.locale_keys['version.latest'], app_v.model.base_data.latest_version) + tooltip = '{}. {}: {}'.format(tooltip, self.i18n['version.latest'], app_v.model.base_data.latest_version) label_version.setText(label_version.text() + ' > {}'.format(app_v.model.base_data.latest_version)) col_version.setToolTip(tooltip) @@ -321,7 +322,7 @@ class AppsTable(QTableWidget): col = QTableWidgetItem() col.setText(app_v.model.base_data.name if app_v.model.base_data.name else '...') col.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) - col.setToolTip(self.window.locale_keys['app.name'].lower()) + col.setToolTip(self.i18n['app.name'].lower()) if self.disk_cache and app_v.model.supports_disk_cache() and app_v.model.get_disk_icon_path() and os.path.exists(app_v.model.get_disk_icon_path()): with open(app_v.model.get_disk_icon_path(), 'rb') as f: @@ -367,7 +368,7 @@ class AppsTable(QTableWidget): def run(): self.window.run_app(app_v) - tb.addWidget(IconButton(icon_path=resource.get_path('img/app_play.png'), action=run, background='#088A08', tooltip=self.window.locale_keys['action.run.tooltip'])) + tb.addWidget(IconButton(icon_path=resource.get_path('img/app_play.png'), action=run, background='#088A08', tooltip=self.i18n['action.run.tooltip'])) if app_v.model.has_info(): diff --git a/bauh/view/qt/commons.py b/bauh/view/qt/commons.py index ca8006fe..e5f21c1c 100644 --- a/bauh/view/qt/commons.py +++ b/bauh/view/qt/commons.py @@ -42,8 +42,8 @@ def apply_filters(pkgv: PackageView, filters: dict, info: dict): if not hidden and filters['updates']: hidden = not pkgv.model.update - if not hidden and filters['name_starts_with']: - hidden = not pkgv.model.base_data.name.lower().startswith(filters['name_starts_with']) + if not hidden and filters['name']: + hidden = filters['name'] not in pkgv.model.base_data.name.lower() if not hidden and len(info['pkgs_displayed']) < filters['display_limit']: info['pkgs_displayed'].append(pkgv) diff --git a/bauh/view/qt/components.py b/bauh/view/qt/components.py index 88f431f9..01cbb498 100644 --- a/bauh/view/qt/components.py +++ b/bauh/view/qt/components.py @@ -132,12 +132,23 @@ class InputFilter(QLineEdit): def __init__(self, on_key_press): super(InputFilter, self).__init__() self.on_key_press = on_key_press + self.last_text = '' def keyPressEvent(self, event): super(InputFilter, self).keyPressEvent(event) - if event.key() != Qt.EnterKeyReturn: + text = self.text().strip() + + if text != self.last_text: + self.last_text = text self.on_key_press() + def get_text(self): + return self.last_text + + def setText(self, p_str): + super(InputFilter, self).setText(p_str) + self.last_text = p_str + def new_single_select(model: SingleSelectComponent): if model.type == SelectViewType.RADIO: diff --git a/bauh/view/qt/window.py b/bauh/view/qt/window.py index 651e6550..9f65f827 100755 --- a/bauh/view/qt/window.py +++ b/bauh/view/qt/window.py @@ -40,9 +40,9 @@ class ManageWindow(QWidget): def _toolbar_button_style(self, bg: str): return 'QPushButton { color: white; font-weight: bold; background: ' + bg + '}' - def __init__(self, locale_keys: dict, icon_cache: MemoryCache, manager: SoftwareManager, disk_cache: bool, download_icons: bool, screen_size, suggestions: bool, display_limit: int, tray_icon=None): + def __init__(self, i18n: dict, icon_cache: MemoryCache, manager: SoftwareManager, disk_cache: bool, download_icons: bool, screen_size, suggestions: bool, display_limit: int, tray_icon=None): super(ManageWindow, self).__init__() - self.locale_keys = locale_keys + self.i18n = i18n self.manager = manager self.tray_icon = tray_icon self.working = False # restrict the number of threaded actions @@ -81,8 +81,8 @@ class ManageWindow(QWidget): self.input_search = QLineEdit() self.input_search.setMaxLength(20) self.input_search.setFrame(False) - self.input_search.setPlaceholderText(self.locale_keys['window_manage.input_search.placeholder'] + "...") - self.input_search.setToolTip(self.locale_keys['window_manage.input_search.tooltip']) + self.input_search.setPlaceholderText(self.i18n['window_manage.input_search.placeholder'] + "...") + self.input_search.setToolTip(self.i18n['window_manage.input_search.tooltip']) self.input_search.setStyleSheet("QLineEdit { background-color: white; color: gray; spacing: 0; height: 30px; font-size: 12px; width: 300px}") self.input_search.returnPressed.connect(self.search) self.toolbar_search.addWidget(self.input_search) @@ -100,12 +100,12 @@ class ManageWindow(QWidget): self.toolbar.setStyleSheet('QToolBar {spacing: 4px; margin-top: 8px; margin-bottom: 5px}') self.checkbox_updates = QCheckBox() - self.checkbox_updates.setText(self.locale_keys['updates'].capitalize()) + self.checkbox_updates.setText(self.i18n['updates'].capitalize()) self.checkbox_updates.stateChanged.connect(self._handle_updates_filter) self.ref_checkbox_updates = self.toolbar.addWidget(self.checkbox_updates) self.checkbox_only_apps = QCheckBox() - self.checkbox_only_apps.setText(self.locale_keys['manage_window.checkbox.only_apps']) + self.checkbox_only_apps.setText(self.i18n['manage_window.checkbox.only_apps']) self.checkbox_only_apps.setChecked(True) self.checkbox_only_apps.stateChanged.connect(self._handle_filter_only_apps) self.ref_checkbox_only_apps = self.toolbar.addWidget(self.checkbox_only_apps) @@ -118,39 +118,39 @@ class ManageWindow(QWidget): self.combo_filter_type.lineEdit().setReadOnly(True) self.combo_filter_type.lineEdit().setAlignment(Qt.AlignCenter) self.combo_filter_type.activated.connect(self._handle_type_filter) - self.combo_filter_type.addItem(load_icon(resource.get_path('img/logo.svg'), 14), self.locale_keys[self.any_type_filter].capitalize(), self.any_type_filter) + self.combo_filter_type.addItem(load_icon(resource.get_path('img/logo.svg'), 14), self.i18n[self.any_type_filter].capitalize(), self.any_type_filter) self.ref_combo_filter_type = self.toolbar.addWidget(self.combo_filter_type) self.input_name_filter = InputFilter(self.apply_filters_async) self.input_name_filter.setMaxLength(10) - self.input_name_filter.setPlaceholderText(self.locale_keys['name'].capitalize() + ',,,') - self.input_name_filter.setToolTip(self.locale_keys['manage_window.name_filter.tooltip']) + self.input_name_filter.setPlaceholderText(self.i18n['name'].capitalize() + '...') + self.input_name_filter.setToolTip(self.i18n['manage_window.name_filter.tooltip']) self.input_name_filter.setStyleSheet("QLineEdit { background-color: white; color: gray;}") - self.input_name_filter.setMaximumWidth(120) + self.input_name_filter.setFixedWidth(120) self.ref_input_name_filter = self.toolbar.addWidget(self.input_name_filter) self.toolbar.addWidget(new_spacer()) self.bt_installed = QPushButton() - self.bt_installed.setToolTip(self.locale_keys['manage_window.bt.installed.tooltip']) + self.bt_installed.setToolTip(self.i18n['manage_window.bt.installed.tooltip']) self.bt_installed.setIcon(QIcon(resource.get_path('img/disk.png'))) - self.bt_installed.setText(self.locale_keys['manage_window.bt.installed.text'].capitalize()) + self.bt_installed.setText(self.i18n['manage_window.bt.installed.text'].capitalize()) self.bt_installed.clicked.connect(self._show_installed) self.bt_installed.setStyleSheet(self._toolbar_button_style('#A94E0A')) self.ref_bt_installed = self.toolbar.addWidget(self.bt_installed) self.bt_refresh = QPushButton() - self.bt_refresh.setToolTip(locale_keys['manage_window.bt.refresh.tooltip']) + self.bt_refresh.setToolTip(i18n['manage_window.bt.refresh.tooltip']) self.bt_refresh.setIcon(QIcon(resource.get_path('img/new_refresh.svg'))) - self.bt_refresh.setText(self.locale_keys['manage_window.bt.refresh.text']) + self.bt_refresh.setText(self.i18n['manage_window.bt.refresh.text']) self.bt_refresh.setStyleSheet(self._toolbar_button_style('#2368AD')) self.bt_refresh.clicked.connect(lambda: self.refresh_apps(keep_console=False)) self.ref_bt_refresh = self.toolbar.addWidget(self.bt_refresh) self.bt_upgrade = QPushButton() - self.bt_upgrade.setToolTip(locale_keys['manage_window.bt.upgrade.tooltip']) + self.bt_upgrade.setToolTip(i18n['manage_window.bt.upgrade.tooltip']) self.bt_upgrade.setIcon(QIcon(resource.get_path('img/app_update.svg'))) - self.bt_upgrade.setText(locale_keys['manage_window.bt.upgrade.text']) + self.bt_upgrade.setText(i18n['manage_window.bt.upgrade.text']) self.bt_upgrade.setStyleSheet(self._toolbar_button_style('#20A435')) self.bt_upgrade.clicked.connect(self.update_selected) self.ref_bt_upgrade = self.toolbar.addWidget(self.bt_upgrade) @@ -165,7 +165,7 @@ class ManageWindow(QWidget): toolbar_console = QToolBar() self.checkbox_console = QCheckBox() - self.checkbox_console.setText(self.locale_keys['manage_window.checkbox.show_details']) + self.checkbox_console.setText(self.i18n['manage_window.checkbox.show_details']) self.checkbox_console.stateChanged.connect(self._handle_console) self.checkbox_console.setVisible(False) self.ref_checkbox_console = toolbar_console.addWidget(self.checkbox_console) @@ -192,23 +192,23 @@ class ManageWindow(QWidget): self.layout.addWidget(self.toolbar_substatus) self._change_label_substatus('') - self.thread_update = self._bind_async_action(UpdateSelectedApps(self.manager, self.locale_keys), finished_call=self._finish_update_selected) + self.thread_update = self._bind_async_action(UpdateSelectedApps(self.manager, self.i18n), finished_call=self._finish_update_selected) self.thread_refresh = self._bind_async_action(RefreshApps(self.manager), finished_call=self._finish_refresh_apps, only_finished=True) self.thread_uninstall = self._bind_async_action(UninstallApp(self.manager, self.icon_cache), finished_call=self._finish_uninstall) self.thread_get_info = self._bind_async_action(GetAppInfo(self.manager), finished_call=self._finish_get_info) - self.thread_get_history = self._bind_async_action(GetAppHistory(self.manager, self.locale_keys), finished_call=self._finish_get_history) + self.thread_get_history = self._bind_async_action(GetAppHistory(self.manager, self.i18n), finished_call=self._finish_get_history) self.thread_search = self._bind_async_action(SearchApps(self.manager), finished_call=self._finish_search, only_finished=True) - self.thread_downgrade = self._bind_async_action(DowngradeApp(self.manager, self.locale_keys), finished_call=self._finish_downgrade) + self.thread_downgrade = self._bind_async_action(DowngradeApp(self.manager, self.i18n), finished_call=self._finish_downgrade) self.thread_refresh_app = self._bind_async_action(RefreshApp(manager=self.manager), finished_call=self._finish_refresh) self.thread_suggestions = self._bind_async_action(FindSuggestions(man=self.manager), finished_call=self._finish_search, only_finished=True) self.thread_run_app = self._bind_async_action(RunApp(), finished_call=self._finish_run_app, only_finished=False) self.thread_apply_filters = ApplyFilters() self.thread_apply_filters.signal_finished.connect(self._finish_apply_filters_async) - self.thread_apply_filters.signal_table.connect(self._update_table_and_state) + self.thread_apply_filters.signal_table.connect(self._update_table_and_upgrades) self.signal_table_update.connect(self.thread_apply_filters.stop_waiting) - self.thread_install = InstallApp(manager=self.manager, disk_cache=self.disk_cache, icon_cache=self.icon_cache, locale_keys=self.locale_keys) + self.thread_install = InstallApp(manager=self.manager, disk_cache=self.disk_cache, icon_cache=self.icon_cache, locale_keys=self.i18n) self._bind_async_action(self.thread_install, finished_call=self._finish_install) self.thread_animate_progress = AnimateProgress() @@ -235,7 +235,7 @@ class ManageWindow(QWidget): bt_about.setStyleSheet('QToolButton { border: 0px; }') bt_about.setIcon(QIcon(resource.get_path('img/about.svg'))) bt_about.clicked.connect(self._show_about) - bt_about.setToolTip(self.locale_keys['manage_window.bt_about.tooltip']) + bt_about.setToolTip(self.i18n['manage_window.bt_about.tooltip']) self.ref_bt_about = self.toolbar_bottom.addWidget(bt_about) self.layout.addWidget(self.toolbar_bottom) @@ -250,43 +250,31 @@ class ManageWindow(QWidget): self.dialog_about = None self.first_refresh = suggestions - self.thread_warnings = ListWarnings(man=manager, locale_keys=locale_keys) + self.thread_warnings = ListWarnings(man=manager, locale_keys=i18n) self.thread_warnings.signal_warnings.connect(self._show_warnings) def apply_filters_async(self): - self.label_status.setText('Filtering...') + self.label_status.setText(self.i18n['manage_window.status.filtering']) self.ref_toolbar_search.setVisible(False) - # if self.checkbox_updates.isVisible(): - # self.checkbox_updates.setCheckable(False) - # - # if self.checkbox_only_apps.isVisible(): - # self.checkbox_only_apps.setCheckable(False) - # - # if self.input_name_filter.isVisible(): - # self.input_name_filter.setReadOnly(True) + if self.ref_input_name_filter.isVisible(): + self.input_name_filter.setReadOnly(True) self.thread_apply_filters.filters = self._gen_filters() self.thread_apply_filters.pkgs = self.pkgs_available self.thread_apply_filters.start() - def _update_table_and_state(self, pkginfo: dict): - self._update_table(pkginfo, True) - self.update_bt_upgrade(pkginfo) + def _update_table_and_upgrades(self, pkgs_info: dict): + self._update_table(pkgs_info=pkgs_info, signal=True) + self.update_bt_upgrade(pkgs_info) def _finish_apply_filters_async(self, success: bool): self.label_status.setText('') self.ref_toolbar_search.setVisible(True) - # if self.checkbox_updates.isVisible(): - # self.checkbox_updates.setCheckable(True) - # - # if self.checkbox_only_apps.isVisible(): - # self.checkbox_only_apps.setCheckable(True) - # - # if self.input_name_filter.isVisible(): - # self.input_name_filter.setReadOnly(False) + if self.ref_input_name_filter.isVisible(): + self.input_name_filter.setReadOnly(False) def _bind_async_action(self, action: AsyncAction, finished_call, only_finished: bool = False) -> AsyncAction: action.signal_finished.connect(finished_call) @@ -304,7 +292,7 @@ class ManageWindow(QWidget): def _ask_confirmation(self, msg: dict): diag = ConfirmationDialog(title=msg['title'], body=msg['body'], - locale_keys=self.locale_keys, + locale_keys=self.i18n, components=msg['components'], confirmation_label=msg['confirmation_label'], deny_label=msg['deny_label']) @@ -315,7 +303,7 @@ class ManageWindow(QWidget): def _show_warnings(self, warnings: List[str]): if warnings: - dialog.show_message(title=self.locale_keys['warning'].capitalize(), body='

{}

'.format('
'.join(warnings)), type_=MessageType.WARNING) + dialog.show_message(title=self.i18n['warning'].capitalize(), body='

{}

'.format('
'.join(warnings)), type_=MessageType.WARNING) def show(self): super(ManageWindow, self).show() @@ -333,7 +321,7 @@ class ManageWindow(QWidget): def _show_about(self): if self.dialog_about is None: - self.dialog_about = AboutDialog(self.locale_keys) + self.dialog_about = AboutDialog(self.i18n) self.dialog_about.show() @@ -390,7 +378,7 @@ class ManageWindow(QWidget): self.ref_checkbox_updates.setVisible(False) self.ref_checkbox_only_apps.setVisible(False) - self._begin_action(self.locale_keys['manage_window.status.refreshing'], clear_filters=True) + self._begin_action(self.i18n['manage_window.status.refreshing'], clear_filters=True) self.thread_refresh.app = top_app # the app will be on top when refresh happens self.thread_refresh.pkg_types = pkg_types @@ -408,20 +396,20 @@ class ManageWindow(QWidget): requires_root = self.manager.requires_root('uninstall', app.model) if not is_root() and requires_root: - pwd, ok = ask_root_password(self.locale_keys) + pwd, ok = ask_root_password(self.i18n) if not ok: return self._handle_console_option(True) - self._begin_action('{} {}'.format(self.locale_keys['manage_window.status.uninstalling'], app.model.base_data.name)) + self._begin_action('{} {}'.format(self.i18n['manage_window.status.uninstalling'], app.model.base_data.name)) self.thread_uninstall.app = app self.thread_uninstall.root_password = pwd self.thread_uninstall.start() def run_app(self, app: PackageView): - self._begin_action(self.locale_keys['manage_window.status.running_app'].format(app.model.base_data.name)) + self._begin_action(self.i18n['manage_window.status.running_app'].format(app.model.base_data.name)) self.thread_run_app.app = app self.thread_run_app.start() @@ -430,13 +418,13 @@ class ManageWindow(QWidget): requires_root = self.manager.requires_root('refresh', app.model) if not is_root() and requires_root: - pwd, ok = ask_root_password(self.locale_keys) + pwd, ok = ask_root_password(self.i18n) if not ok: return self._handle_console_option(True) - self._begin_action('{} {}'.format(self.locale_keys['manage_window.status.refreshing_app'], app.model.base_data.name)) + self._begin_action('{} {}'.format(self.i18n['manage_window.status.refreshing_app'], app.model.base_data.name)) self.thread_refresh_app.app = app self.thread_refresh_app.root_password = pwd @@ -447,12 +435,12 @@ class ManageWindow(QWidget): if pkgv: if self._can_notify_user(): - util.notify_user('{} ({}) {}'.format(pkgv.model.base_data.name, pkgv.model.get_type(), self.locale_keys['uninstalled'])) + util.notify_user('{} ({}) {}'.format(pkgv.model.base_data.name, pkgv.model.get_type(), self.i18n['uninstalled'])) self.refresh_apps(pkg_types={pkgv.model.__class__}) else: if self._can_notify_user(): - util.notify_user('{}: {}'.format(pkgv.model.base_data.name, self.locale_keys['notification.uninstall.failed'])) + util.notify_user('{}: {}'.format(pkgv.model.base_data.name, self.i18n['notification.uninstall.failed'])) self.checkbox_console.setChecked(True) @@ -464,7 +452,7 @@ class ManageWindow(QWidget): if res['success']: if self._can_notify_user(): - util.notify_user('{} {}'.format(res['app'], self.locale_keys['downgraded'])) + util.notify_user('{} {}'.format(res['app'], self.i18n['downgraded'])) self.refresh_apps(pkg_types={res['app'].model.__class__}) @@ -472,7 +460,7 @@ class ManageWindow(QWidget): self.tray_icon.verify_updates(notify_user=False) else: if self._can_notify_user(): - util.notify_user(self.locale_keys['notification.downgrade.failed']) + util.notify_user(self.i18n['notification.downgrade.failed']) self.checkbox_console.setChecked(True) @@ -537,12 +525,12 @@ class ManageWindow(QWidget): if pkgs_info['updates'] > 0: self.label_updates.setPixmap(QPixmap(resource.get_path('img/exclamation.svg')).scaled(16, 16, Qt.KeepAspectRatio, Qt.SmoothTransformation)) - self.label_updates.setToolTip('{}: {} ( {} {} | {} {} )'.format(self.locale_keys['manage_window.label.updates'], + self.label_updates.setToolTip('{}: {} ( {} {} | {} {} )'.format(self.i18n['manage_window.label.updates'], pkgs_info['updates'], pkgs_info['app_updates'], - self.locale_keys['manage_window.checkbox.only_apps'].lower(), + self.i18n['manage_window.checkbox.only_apps'].lower(), pkgs_info['napp_updates'], - self.locale_keys['others'].lower())) + self.i18n['others'].lower())) if pkgs_info['not_installed'] == 0: if not self.ref_checkbox_updates.isVisible(): @@ -583,7 +571,7 @@ class ManageWindow(QWidget): 'only_apps': self.filter_only_apps, 'type': self.type_filter, 'updates': False if ignore_updates else self.filter_updates, - 'name_starts_with': self.input_name_filter.text().strip().lower() if self.input_name_filter.text().strip() else None, + 'name': self.input_name_filter.get_text().lower() if self.input_name_filter.get_text() else None, 'display_limit': self.display_limit } @@ -701,20 +689,20 @@ class ManageWindow(QWidget): if self.manager.requires_root('update', app_v.model): requires_root = True - if to_update and dialog.ask_confirmation(title=self.locale_keys['manage_window.upgrade_all.popup.title'], - body=self.locale_keys['manage_window.upgrade_all.popup.body'], - locale_keys=self.locale_keys, - widgets=[UpdateToggleButton(None, self, self.locale_keys, clickable=False)]): + if to_update and dialog.ask_confirmation(title=self.i18n['manage_window.upgrade_all.popup.title'], + body=self.i18n['manage_window.upgrade_all.popup.body'], + locale_keys=self.i18n, + widgets=[UpdateToggleButton(None, self, self.i18n, clickable=False)]): pwd = None if not is_root() and requires_root: - pwd, ok = ask_root_password(self.locale_keys) + pwd, ok = ask_root_password(self.i18n) if not ok: return self._handle_console_option(True) - self._begin_action(self.locale_keys['manage_window.status.upgrading']) + self._begin_action(self.i18n['manage_window.status.upgrading']) self.thread_update.apps_to_update = to_update self.thread_update.root_password = pwd self.thread_update.start() @@ -724,7 +712,7 @@ class ManageWindow(QWidget): if res['success']: if self._can_notify_user(): - util.notify_user('{} {}'.format(res['updated'], self.locale_keys['notification.update_selected.success'])) + util.notify_user('{} {}'.format(res['updated'], self.i18n['notification.update_selected.success'])) self.refresh_apps(pkg_types=res['types']) @@ -732,7 +720,7 @@ class ManageWindow(QWidget): self.tray_icon.verify_updates() else: if self._can_notify_user(): - util.notify_user(self.locale_keys['notification.update_selected.failed']) + util.notify_user(self.i18n['notification.update_selected.failed']) self.ref_bt_upgrade.setVisible(True) self.checkbox_console.setChecked(True) @@ -790,13 +778,13 @@ class ManageWindow(QWidget): requires_root = self.manager.requires_root('downgrade', pkgv.model) if not is_root() and requires_root: - pwd, ok = ask_root_password(self.locale_keys) + pwd, ok = ask_root_password(self.i18n) if not ok: return self._handle_console_option(True) - self._begin_action('{} {}'.format(self.locale_keys['manage_window.status.downgrading'], pkgv.model.base_data.name)) + self._begin_action('{} {}'.format(self.i18n['manage_window.status.downgrading'], pkgv.model.base_data.name)) self.thread_downgrade.app = pkgv self.thread_downgrade.root_password = pwd @@ -804,14 +792,14 @@ class ManageWindow(QWidget): def get_app_info(self, pkg: dict): self._handle_console_option(False) - self._begin_action(self.locale_keys['manage_window.status.info']) + self._begin_action(self.i18n['manage_window.status.info']) self.thread_get_info.app = pkg self.thread_get_info.start() def get_app_history(self, app: dict): self._handle_console_option(False) - self._begin_action(self.locale_keys['manage_window.status.history']) + self._begin_action(self.i18n['manage_window.status.history']) self.thread_get_history.app = app self.thread_get_history.start() @@ -819,7 +807,7 @@ class ManageWindow(QWidget): def _finish_get_info(self, app_info: dict): self.finish_action() self.change_update_state(trigger_filters=False) - dialog_info = InfoDialog(app=app_info, icon_cache=self.icon_cache, locale_keys=self.locale_keys, screen_size=self.screen_size) + dialog_info = InfoDialog(app=app_info, icon_cache=self.icon_cache, locale_keys=self.i18n, screen_size=self.screen_size) dialog_info.exec_() def _finish_get_history(self, res: dict): @@ -831,7 +819,7 @@ class ManageWindow(QWidget): self.textarea_output.appendPlainText(res['error']) self.checkbox_console.setChecked(True) else: - dialog_history = HistoryDialog(res['history'], self.icon_cache, self.locale_keys) + dialog_history = HistoryDialog(res['history'], self.icon_cache, self.i18n) dialog_history.exec_() def _begin_search(self, word): @@ -839,7 +827,7 @@ class ManageWindow(QWidget): self.ref_checkbox_only_apps.setVisible(False) self.ref_checkbox_updates.setVisible(False) self.filter_updates = False - self._begin_action('{}{}'.format(self.locale_keys['manage_window.status.searching'], '"{}"'.format(word) if word else ''), clear_filters=True) + self._begin_action('{} {}'.format(self.i18n['manage_window.status.searching'], word if word else ''), clear_filters=True) def search(self): word = self.input_search.text().strip() @@ -858,13 +846,13 @@ class ManageWindow(QWidget): requires_root = self.manager.requires_root('install', pkg.model) if not is_root() and requires_root: - pwd, ok = ask_root_password(self.locale_keys) + pwd, ok = ask_root_password(self.i18n) if not ok: return self._handle_console_option(True) - self._begin_action('{} {}'.format(self.locale_keys['manage_window.status.installing'], pkg.model.base_data.name)) + self._begin_action('{} {}'.format(self.i18n['manage_window.status.installing'], pkg.model.base_data.name)) self.thread_install.pkg = pkg self.thread_install.root_password = pwd @@ -876,12 +864,12 @@ class ManageWindow(QWidget): if pkgv: if self._can_notify_user(): - util.notify_user(msg='{} ({}) {}'.format(pkgv.model.base_data.name, pkgv.model.get_type(), self.locale_keys['installed'])) + util.notify_user(msg='{} ({}) {}'.format(pkgv.model.base_data.name, pkgv.model.get_type(), self.i18n['installed'])) self.refresh_apps(top_app=pkgv, pkg_types={pkgv.model.__class__}) else: if self._can_notify_user(): - util.notify_user('{}: {}'.format(pkgv.model.base_data.name, self.locale_keys['notification.install.failed'])) + util.notify_user('{}: {}'.format(pkgv.model.base_data.name, self.i18n['notification.install.failed'])) self.checkbox_console.setChecked(True)