diff --git a/bauh/__init__.py b/bauh/__init__.py index 96e0a951..6dfd2e60 100644 --- a/bauh/__init__.py +++ b/bauh/__init__.py @@ -1,4 +1,4 @@ -__version__ = '1.0.0' +__version__ = '0.6.0' __app_name__ = 'bauh' import os diff --git a/bauh/view/qt/apps_table.py b/bauh/view/qt/apps_table.py index 24539dba..af6203e4 100644 --- a/bauh/view/qt/apps_table.py +++ b/bauh/view/qt/apps_table.py @@ -107,39 +107,39 @@ class AppsTable(QTableWidget): app_v.model.has_history() or \ app_v.model.can_be_downgraded() - def show_app_settings(self, app: PackageView): + def show_pkg_settings(self, pkgv: PackageView): menu_row = QMenu() - if app.model.installed: - if app.model.can_be_refreshed(): + if pkgv.model.installed: + if pkgv.model.can_be_refreshed(): action_history = QAction(self.i18n["manage_window.apps_table.row.actions.refresh"]) action_history.setIcon(QIcon(resource.get_path('img/refresh.svg'))) def refresh(): - self.window.refresh(app) + self.window.refresh(pkgv) action_history.triggered.connect(refresh) menu_row.addAction(action_history) - if app.model.has_history(): + if pkgv.model.has_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(): - self.window.get_app_history(app) + self.window.get_app_history(pkgv) action_history.triggered.connect(show_history) menu_row.addAction(action_history) - if app.model.can_be_downgraded(): + if pkgv.model.can_be_downgraded(): action_downgrade = QAction(self.i18n["manage_window.apps_table.row.actions.downgrade"]) def downgrade(): if dialog.ask_confirmation( 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)))), + body=self._parag(self.i18n['manage_window.apps_table.row.actions.downgrade.popup.body'].format(self._bold(str(pkgv)))), locale_keys=self.i18n): - self.window.downgrade_app(app) + self.window.downgrade(pkgv) action_downgrade.triggered.connect(downgrade) action_downgrade.setIcon(QIcon(resource.get_path('img/downgrade.svg'))) @@ -378,7 +378,7 @@ class AppsTable(QTableWidget): tb.addWidget(IconButton(icon_path=resource.get_path('img/app_info.svg'), action=get_info, background='#2E68D3')) def handle_click(): - self.show_app_settings(app_v) + self.show_pkg_settings(app_v) if self.has_any_settings(app_v): bt = IconButton(icon_path=resource.get_path('img/app_settings.svg'), action=handle_click, background='#12ABAB') diff --git a/bauh/view/qt/commons.py b/bauh/view/qt/commons.py index e5f21c1c..cf59453d 100644 --- a/bauh/view/qt/commons.py +++ b/bauh/view/qt/commons.py @@ -45,5 +45,5 @@ def apply_filters(pkgv: PackageView, filters: dict, info: dict): 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']: + if not hidden and (not filters['display_limit'] or len(info['pkgs_displayed']) < filters['display_limit']): info['pkgs_displayed'].append(pkgv) diff --git a/bauh/view/qt/window.py b/bauh/view/qt/window.py index 9f65f827..57eea6dc 100755 --- a/bauh/view/qt/window.py +++ b/bauh/view/qt/window.py @@ -466,6 +466,8 @@ class ManageWindow(QWidget): def _finish_refresh(self, success: bool): self.finish_action() + self.update_bt_upgrade() + self._update_type_filters() if success: self.refresh_apps() @@ -482,17 +484,6 @@ class ManageWindow(QWidget): elif not self.toolbar_substatus.isVisible(): self.toolbar_substatus.show() - def _filter_pkgs(self): # TODO vai virar o async - if self.pkgs_available: - pkgs_info = commons.new_pkgs_info() - filters = self._gen_filters() - - for pkgv in self.pkgs_available: - commons.update_info(pkgv, pkgs_info) - commons.apply_filters(pkgv, filters, pkgs_info) - - self._update_table(pkgs_info=pkgs_info) - def _update_table(self, pkgs_info: dict, signal: bool = False): self.pkgs = pkgs_info['pkgs_displayed'] @@ -566,13 +557,13 @@ class ManageWindow(QWidget): geo.moveCenter(center_point) self.move(geo.topLeft()) - def _gen_filters(self, ignore_updates: bool = False) -> dict: + def _gen_filters(self, updates: int = 0, ignore_updates: bool = False) -> dict: return { 'only_apps': self.filter_only_apps, 'type': self.type_filter, 'updates': False if ignore_updates else self.filter_updates, 'name': self.input_name_filter.get_text().lower() if self.input_name_filter.get_text() else None, - 'display_limit': self.display_limit + 'display_limit': self.display_limit if updates <= 0 else None } def update_pkgs(self, new_pkgs: List[SoftwarePackage], as_installed: bool, types: Set[type] = None, ignore_updates: bool = False): @@ -632,41 +623,44 @@ class ManageWindow(QWidget): self._update_type_filters(pkgs_info['available_types']) self._update_table(pkgs_info=pkgs_info) - self.resize_and_center() if new_pkgs: self.thread_verify_models.apps = self.pkgs self.thread_verify_models.start() self.ref_bt_installed.setVisible(not as_installed) + self.resize_and_center() def _apply_filters(self, pkgs_info: dict, ignore_updates: bool): pkgs_info['pkgs_displayed'] = [] - filters = self._gen_filters(ignore_updates=ignore_updates) + filters = self._gen_filters(updates=pkgs_info['updates'], ignore_updates=ignore_updates) for pkgv in pkgs_info['pkgs']: commons.apply_filters(pkgv, filters, pkgs_info) - def _update_type_filters(self, available_types: dict): + def _update_type_filters(self, available_types: dict = None): - self.type_filter = self.any_type_filter - - if available_types and len(available_types) > 1: - if self.combo_filter_type.count() > 1: - for _ in range(self.combo_filter_type.count() - 1): - self.combo_filter_type.removeItem(1) - - for app_type, icon_path in available_types.items(): - icon = self.cache_type_filter_icons.get(app_type) - - if not icon: - icon = load_icon(icon_path, 14) - self.cache_type_filter_icons[app_type] = icon - - self.combo_filter_type.addItem(icon, app_type.capitalize(), app_type) - - self.ref_combo_filter_type.setVisible(True) + if available_types is None: + self.ref_combo_filter_type.setVisible(self.combo_filter_type.count() > 1) else: - self.ref_combo_filter_type.setVisible(False) + self.type_filter = self.any_type_filter + + if available_types and len(available_types) > 1: + if self.combo_filter_type.count() > 1: + for _ in range(self.combo_filter_type.count() - 1): + self.combo_filter_type.removeItem(1) + + for app_type, icon_path in available_types.items(): + icon = self.cache_type_filter_icons.get(app_type) + + if not icon: + icon = load_icon(icon_path, 14) + self.cache_type_filter_icons[app_type] = icon + + self.combo_filter_type.addItem(icon, app_type.capitalize(), app_type) + + self.ref_combo_filter_type.setVisible(True) + else: + self.ref_combo_filter_type.setVisible(False) def resize_and_center(self, accept_lower_width: bool = True): new_width = reduce(operator.add, [self.table_apps.columnWidth(i) for i in range(len(self.table_apps.column_names))]) * 1.05 @@ -773,7 +767,12 @@ class ManageWindow(QWidget): self.combo_filter_type.setEnabled(True) self.checkbox_updates.setEnabled(True) - def downgrade_app(self, pkgv: PackageView): + if self.pkgs: + self.ref_input_name_filter.setVisible(True) + self.update_bt_upgrade() + self._update_type_filters() + + def downgrade(self, pkgv: PackageView): pwd = None requires_root = self.manager.requires_root('downgrade', pkgv.model) @@ -806,13 +805,11 @@ 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.i18n, screen_size=self.screen_size) dialog_info.exec_() def _finish_get_history(self, res: dict): self.finish_action() - self.change_update_state(trigger_filters=False) if res.get('error'): self._handle_console_option(True)