From a77c3f81bb66a598d90face248ea96db04b29deb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Moreira?= Date: Thu, 30 Jan 2020 13:09:15 -0300 Subject: [PATCH] [fix][ui] row buttons are not well aligned --- bauh/view/qt/apps_table.py | 29 ++++++++++++++++++++--------- bauh/view/qt/components.py | 4 ++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/bauh/view/qt/apps_table.py b/bauh/view/qt/apps_table.py index 985020c7..83c43e88 100644 --- a/bauh/view/qt/apps_table.py +++ b/bauh/view/qt/apps_table.py @@ -30,17 +30,18 @@ class UpdateToggleButton(QWidget): def __init__(self, app_view: PackageView, root: QWidget, i18n: I18n, checked: bool = True, clickable: bool = True): super(UpdateToggleButton, self).__init__() - self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) + self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) self.app_view = app_view self.root = root layout = QHBoxLayout() - layout.setContentsMargins(2, 2, 2, 0) + layout.setContentsMargins(0, 0, 0, 0) layout.setAlignment(Qt.AlignCenter) self.setLayout(layout) self.bt = QToolButton() self.bt.setCheckable(clickable) + self.bt.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) if clickable: self.bt.clicked.connect(self.change_state) @@ -248,26 +249,35 @@ class AppsTable(QTableWidget): col_update = None if update_check_enabled and pkg.model.update: - col_update = UpdateToggleButton(pkg, self.window, self.i18n, pkg.update_checked) + col_update = QToolBar() + col_update.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) + col_update.addWidget(UpdateToggleButton(pkg, self.window, self.i18n, pkg.update_checked)) self.setCellWidget(pkg.table_index, 7, col_update) def _gen_row_button(self, text: str, style: str, callback) -> QWidget: col = QWidget() - col_bt = QPushButton() + col.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) + + col_bt = QToolButton() + col_bt.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) col_bt.setText(text) - col_bt.setStyleSheet('QPushButton { ' + style + '}') + col_bt.setStyleSheet('QToolButton { ' + style + '}') col_bt.clicked.connect(callback) layout = QHBoxLayout() - layout.setContentsMargins(2, 2, 2, 0) + layout.setContentsMargins(0, 0, 0, 0) layout.setAlignment(Qt.AlignCenter) - layout.addWidget(col_bt) - col.setLayout(layout) + layout.addWidget(col_bt) + + col.setLayout(layout) return col def _set_col_installed(self, col: int, pkg: PackageView): + toolbar = QToolBar() + toolbar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) + if pkg.model.installed: if pkg.model.can_be_uninstalled(): def uninstall(): @@ -287,7 +297,8 @@ class AppsTable(QTableWidget): else: item = None - self.setCellWidget(pkg.table_index, col, item) + toolbar.addWidget(item) + self.setCellWidget(pkg.table_index, col, toolbar) def _set_col_type(self, col: int, pkg: PackageView): diff --git a/bauh/view/qt/components.py b/bauh/view/qt/components.py index efdc126c..693ce835 100644 --- a/bauh/view/qt/components.py +++ b/bauh/view/qt/components.py @@ -366,7 +366,7 @@ class InputFilter(QLineEdit): class IconButton(QWidget): - def __init__(self, icon: QIcon, action, i18n: I18n, background: str = None, align: int = Qt.AlignCenter, tooltip: str = None): + def __init__(self, icon: QIcon, action, i18n: I18n, background: str = None, align: int = Qt.AlignCenter, tooltip: str = None, expanding: bool = False): super(IconButton, self).__init__() self.bt = QToolButton() self.bt.setIcon(icon) @@ -374,7 +374,7 @@ class IconButton(QWidget): self.i18n = i18n self.default_tootip = tooltip self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) - self.bt.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) + self.bt.setSizePolicy(QSizePolicy.Expanding if expanding else QSizePolicy.Minimum, QSizePolicy.Minimum) if background: style = 'QToolButton { color: white; background: ' + background + '} '