From bbd5c1b877508138a9ed7730ba774d6e4d5efa6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Moreira?= Date: Fri, 10 Jan 2020 11:46:16 -0300 Subject: [PATCH] [improvement][ui] widgets visibility settings --- CHANGELOG.md | 4 +++- bauh/view/qt/apps_table.py | 6 ++++++ bauh/view/qt/window.py | 21 +++++++++------------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5fdb477..9c0ff342 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Web: - not using HTTP sessions anymore to perform the searches. It seems to avoid URLs not being found after an internet drop event. - supporting JPEG images as custom icons +- UI: + - widgets visibility settings ( the main widgets now should always be visible ( e.g: toolbar buttons ) + - only centralizing the panel for the first refresh ### Fixes - missing categories i18n [48](https://github.com/vinifmor/bauh/issues/48) @@ -21,7 +24,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### UI - Default **Type** icon removed from the Type filter to make the design more consistent with the Category filter. -- Only centralizing the panel for the first refresh ## [0.8.0] 2019-12-24 ### Features diff --git a/bauh/view/qt/apps_table.py b/bauh/view/qt/apps_table.py index ecd93477..f257e718 100644 --- a/bauh/view/qt/apps_table.py +++ b/bauh/view/qt/apps_table.py @@ -456,3 +456,9 @@ class AppsTable(QTableWidget): header_horizontal = self.horizontalHeader() for i in range(self.columnCount()): header_horizontal.setSectionResizeMode(i, policy) + + def get_width(self): + w = self.verticalHeader().width() + 4 # +4 seems to be needed + for i in range(self.columnCount()): + w += self.columnWidth(i) # seems to include gridline (on my machine) + return w \ No newline at end of file diff --git a/bauh/view/qt/window.py b/bauh/view/qt/window.py index c0860394..9bdf18ee 100755 --- a/bauh/view/qt/window.py +++ b/bauh/view/qt/window.py @@ -6,9 +6,10 @@ from pathlib import Path from typing import List, Type, Set from PyQt5.QtCore import QEvent, Qt, QSize, pyqtSignal -from PyQt5.QtGui import QIcon, QWindowStateChangeEvent, QPixmap, QCursor +from PyQt5.QtGui import QIcon, QWindowStateChangeEvent, QCursor from PyQt5.QtWidgets import QWidget, QVBoxLayout, QCheckBox, QHeaderView, QToolBar, \ - QLabel, QPlainTextEdit, QLineEdit, QProgressBar, QPushButton, QComboBox, QMenu, QAction, QApplication, QListView + QLabel, QPlainTextEdit, QLineEdit, QProgressBar, QPushButton, QComboBox, QMenu, QAction, QApplication, QListView, \ + QSizePolicy, QMainWindow from bauh.api.abstract.cache import MemoryCache from bauh.api.abstract.context import ApplicationContext @@ -33,7 +34,7 @@ from bauh.view.qt.thread import UpdateSelectedApps, RefreshApps, UninstallApp, D GetAppHistory, SearchPackages, InstallPackage, AnimateProgress, VerifyModels, FindSuggestions, ListWarnings, \ AsyncAction, LaunchApp, ApplyFilters, CustomAction, GetScreenshots from bauh.view.qt.view_model import PackageView -from bauh.view.qt.view_utils import load_icon, load_resource_icon +from bauh.view.qt.view_utils import load_icon from bauh.view.util import util, resource from bauh.view.util.translation import I18n @@ -135,6 +136,7 @@ class ManageWindow(QWidget): self.layout.addWidget(self.toolbar_top) self.toolbar = QToolBar() + self.toolbar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self.toolbar.setStyleSheet('QToolBar {spacing: 4px; margin-top: 15px; margin-bottom: 5px}') self.checkbox_updates = QCheckBox() @@ -829,20 +831,15 @@ class ManageWindow(QWidget): self.ref_combo_categories.setVisible(False) def resize_and_center(self, accept_lower_width: bool = True): - if self.pkgs: - new_width = reduce(operator.add, [self.table_apps.columnWidth(i) for i in range(self.table_apps.columnCount())]) + table_width = self.table_apps.get_width() + toolbar_width = self.toolbar.sizeHint().width() + topbar_width = self.toolbar_top.sizeHint().width() - if self.ref_bt_upgrade.isVisible() or self.ref_bt_settings.isVisible(): - new_width *= 1.07 - else: - new_width = self.toolbar_top.width() + new_width = max(table_width, toolbar_width, topbar_width) if accept_lower_width or new_width > self.width(): self.resize(new_width, self.height()) - if self.ref_bt_upgrade.isVisible() and self.bt_upgrade.visibleRegion().isEmpty(): - self.adjustSize() - if self.first_refresh: qt_utils.centralize(self)