From b50b067158e18e50726b01bee598d7ffd50add25 Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Wed, 17 Nov 2021 15:14:27 -0300 Subject: [PATCH] [view] fix: crashing when QT components sizes are not integers --- CHANGELOG.md | 3 ++- bauh/view/qt/components.py | 32 ++++++++++++++++---------------- bauh/view/qt/info.py | 4 ++-- bauh/view/qt/prepare.py | 6 +++--- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9e9b5fd..525e8250 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - UI - upgrade summary: not displaying the icon type for some applications - displaying initial warnings related to supported technologies even when they are not enabled or have the required dependencies - + - crashing when QT components sizes are not integers [#198](https://github.com/vinifmor/bauh/issues/198) + ## [0.9.20] 2021-11-05 ### Improvements - AppImage: diff --git a/bauh/view/qt/components.py b/bauh/view/qt/components.py index 5b0177e3..ac5b8072 100644 --- a/bauh/view/qt/components.py +++ b/bauh/view/qt/components.py @@ -340,7 +340,7 @@ class FormComboBoxQt(QComboBox): self.view().setCursor(QCursor(Qt.PointingHandCursor)) if model.max_width > 0: - self.setMaximumWidth(model.max_width) + self.setMaximumWidth(int(model.max_width)) for idx, op in enumerate(self.model.options): icon = QIcon(op.icon_path) if op.icon_path else QIcon() @@ -368,7 +368,7 @@ class FormRadioSelectQt(QWidget): self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) if model.max_width > 0: - self.setMaximumWidth(model.max_width) + self.setMaximumWidth(int(model.max_width)) grid = QGridLayout() self.setLayout(grid) @@ -393,7 +393,7 @@ class FormRadioSelectQt(QWidget): col += 1 if model.max_width <= 0: - self.setMaximumWidth(self.sizeHint().width()) + self.setMaximumWidth(int(self.sizeHint().width())) class RadioSelectQt(QGroupBox): @@ -472,7 +472,7 @@ class TextInputQt(QGroupBox): self.setLayout(QGridLayout()) if self.model.max_width > 0: - self.setMaximumWidth(self.model.max_width) + self.setMaximumWidth(int(self.model.max_width)) self.text_input = QLineEditObserver() if model.type == TextInputType.SINGLE_LINE else QPlainTextEditObserver() @@ -483,10 +483,10 @@ class TextInputQt(QGroupBox): self.text_input.setPlaceholderText(model.placeholder) if model.min_width >= 0: - self.text_input.setMinimumWidth(model.min_width) + self.text_input.setMinimumWidth(int(model.min_width)) if model.min_height >= 0: - self.text_input.setMinimumHeight(model.min_height) + self.text_input.setMinimumHeight(int(model.min_height)) if model.tooltip: self.text_input.setToolTip(model.tooltip) @@ -514,10 +514,10 @@ class MultipleSelectQt(QGroupBox): self.setLayout(self._layout) if model.max_width > 0: - self.setMaximumWidth(model.max_width) + self.setMaximumWidth(int(model.max_width)) if model.max_height > 0: - self.setMaximumHeight(model.max_height) + self.setMaximumHeight(int(model.max_height)) if model.label: line = 1 @@ -567,10 +567,10 @@ class FormMultipleSelectQt(QWidget): self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) if model.max_width > 0: - self.setMaximumWidth(model.max_width) + self.setMaximumWidth(int(model.max_width)) if model.max_height > 0: - self.setMaximumHeight(model.max_height) + self.setMaximumHeight(int(model.max_height)) self._layout = QGridLayout() self.setLayout(self._layout) @@ -773,10 +773,10 @@ class FormQt(QGroupBox): view = QLineEditObserver() if c.type == TextInputType.SINGLE_LINE else QPlainTextEditObserver() if c.min_width >= 0: - view.setMinimumWidth(c.min_width) + view.setMinimumWidth(int(c.min_width)) if c.min_height >= 0: - view.setMinimumHeight(c.min_height) + view.setMinimumHeight(int(c.min_height)) if c.only_int: view.setValidator(QIntValidator()) @@ -837,7 +837,7 @@ class FormQt(QGroupBox): field_container.setLayout(QHBoxLayout()) if model.max_width > 0: - field_container.setMaximumWidth(model.max_width) + field_container.setMaximumWidth(int(model.max_width)) field_container.layout().addWidget(comp) return field_container @@ -847,7 +847,7 @@ class FormQt(QGroupBox): chooser.setReadOnly(True) if c.max_width > 0: - chooser.setMaximumWidth(c.max_width) + chooser.setMaximumWidth(int(c.max_width)) if c.file_path: chooser.setText(c.file_path) @@ -940,7 +940,7 @@ def new_spacer(min_width: int = None) -> QWidget: spacer.setProperty('spacer', 'true') if min_width: - spacer.setMinimumWidth(min_width) + spacer.setMinimumWidth(int(min_width)) spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) return spacer @@ -986,7 +986,7 @@ class RangeInputQt(QGroupBox): self.layout().addWidget(QLabel(model.label.capitalize() + ' :' if model.label else ''), 0, 0) if self.model.max_width > 0: - self.setMaximumWidth(self.model.max_width) + self.setMaximumWidth(int(self.model.max_width)) self.spinner = QSpinBox() self.spinner.setCursor(QCursor(Qt.PointingHandCursor)) diff --git a/bauh/view/qt/info.py b/bauh/view/qt/info.py index 64c55c49..a3a1a56a 100644 --- a/bauh/view/qt/info.py +++ b/bauh/view/qt/info.py @@ -104,8 +104,8 @@ class InfoDialog(QDialog): lower_container.layout().addWidget(self.bt_close) layout.addWidget(lower_container) - self.setMinimumWidth(self.gbox_info.sizeHint().width() * 1.2) - self.setMaximumHeight(screen_size.height() * 0.8) + self.setMinimumWidth(int(self.gbox_info.sizeHint().width() * 1.2)) + self.setMaximumHeight(int(screen_size.height() * 0.8)) self.adjustSize() def _gen_show_button(self, idx: int, val): diff --git a/bauh/view/qt/prepare.py b/bauh/view/qt/prepare.py index 67f29b34..e31c78a5 100644 --- a/bauh/view/qt/prepare.py +++ b/bauh/view/qt/prepare.py @@ -153,9 +153,9 @@ class PreparePanel(QWidget, TaskManager): self.app_config = app_config self.manage_window = manage_window self.setWindowTitle('{} ({})'.format(__app_name__, self.i18n['prepare_panel.title.start'].lower())) - self.setMinimumWidth(screen_size.width() * 0.5) - self.setMinimumHeight(screen_size.height() * 0.35) - self.setMaximumHeight(screen_size.height() * 0.95) + self.setMinimumWidth(int(screen_size.width() * 0.5)) + self.setMinimumHeight(int(screen_size.height() * 0.35)) + self.setMaximumHeight(int(screen_size.height() * 0.95)) self.setLayout(QVBoxLayout()) self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) self.manager = manager