From 4d56bd351571ee6901c559997a4cecd01f12a010 Mon Sep 17 00:00:00 2001 From: Andrew Senetar Date: Thu, 7 Jul 2022 21:26:45 -0500 Subject: [PATCH] More updates for pyqt6 --- qt/pe/block.pyi | 2 +- qt/problem_dialog.py | 81 ++++++++++++++++++++++++-------------------- run.py | 8 ++--- setup.cfg | 6 ++-- setup.nsi | 2 +- 5 files changed, 53 insertions(+), 46 deletions(-) diff --git a/qt/pe/block.pyi b/qt/pe/block.pyi index 17954a92..ba576467 100644 --- a/qt/pe/block.pyi +++ b/qt/pe/block.pyi @@ -1,5 +1,5 @@ from typing import Tuple, List, Union -from PyQt5.QtGui import QImage +from PyQt6.QtGui import QImage _block = Tuple[int, int, int] diff --git a/qt/problem_dialog.py b/qt/problem_dialog.py index 38c0515f..24803199 100644 --- a/qt/problem_dialog.py +++ b/qt/problem_dialog.py @@ -6,8 +6,9 @@ # which should be included with this package. The terms are also available at # http://www.gnu.org/licenses/gpl-3.0.html -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import ( +from PyQt6.QtCore import Qt +from PyQt6.QtGui import QShowEvent +from PyQt6.QtWidgets import ( QDialog, QVBoxLayout, QHBoxLayout, @@ -17,8 +18,10 @@ from PyQt5.QtWidgets import ( QLabel, QTableView, QAbstractItemView, + QWidget, ) +from core.gui.problem_dialog import ProblemDialog as ProblemDiaglogModel from qt.util import move_to_screen_center from hscommon.trans import trget from qt.problem_table import ProblemTable @@ -27,52 +30,56 @@ tr = trget("ui") class ProblemDialog(QDialog): - def __init__(self, parent, model, **kwargs): - flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint + def __init__(self, parent: QWidget, model: ProblemDiaglogModel, **kwargs) -> None: + flags = Qt.WindowType.CustomizeWindowHint | Qt.WindowType.WindowTitleHint | Qt.WindowType.WindowSystemMenuHint super().__init__(parent, flags, **kwargs) - self._setupUi() self.model = model - self.model.view = self - self.table = ProblemTable(self.model.problem_table, view=self.tableView) + self.table_view = QTableView(self) + self.table = ProblemTable(self.model.problem_table, view=self.table_view) + self._setupUi() - self.revealButton.clicked.connect(self.model.reveal_selected_dupe) - self.closeButton.clicked.connect(self.accept) - - def _setupUi(self): + def _setupUi(self) -> None: self.setWindowTitle(tr("Problems!")) self.resize(413, 323) - self.verticalLayout = QVBoxLayout(self) - self.label = QLabel(self) + main_layout = QVBoxLayout(self) + notice_label = QLabel(self) msg = tr( "There were problems processing some (or all) of the files. The cause of " "these problems are described in the table below. Those files were not " "removed from your results." ) - self.label.setText(msg) - self.label.setWordWrap(True) - self.verticalLayout.addWidget(self.label) - self.tableView = QTableView(self) - self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.tableView.setSelectionMode(QAbstractItemView.SingleSelection) - self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) - self.tableView.setShowGrid(False) - self.tableView.horizontalHeader().setStretchLastSection(True) - self.tableView.verticalHeader().setDefaultSectionSize(18) - self.tableView.verticalHeader().setHighlightSections(False) - self.verticalLayout.addWidget(self.tableView) - self.horizontalLayout = QHBoxLayout() - self.revealButton = QPushButton(self) - self.revealButton.setText(tr("Reveal Selected")) - self.horizontalLayout.addWidget(self.revealButton) - spacer_item = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.horizontalLayout.addItem(spacer_item) - self.closeButton = QPushButton(self) - self.closeButton.setText(tr("Close")) - self.closeButton.setDefault(True) - self.horizontalLayout.addWidget(self.closeButton) - self.verticalLayout.addLayout(self.horizontalLayout) + notice_label.setText(msg) + notice_label.setWordWrap(True) + main_layout.addWidget(notice_label) - def showEvent(self, event): + self.table_view.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) + self.table_view.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection) + self.table_view.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) + self.table_view.setShowGrid(False) + self.table_view.horizontalHeader().setStretchLastSection(True) + self.table_view.verticalHeader().setDefaultSectionSize(18) + self.table_view.verticalHeader().setHighlightSections(False) + main_layout.addWidget(self.table_view) + + button_layout = QHBoxLayout() + reveal_button = QPushButton(self) + reveal_button.setText(tr("Reveal Selected")) + button_layout.addWidget(reveal_button) + + spacer_item = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) + button_layout.addItem(spacer_item) + + close_button = QPushButton(self) + close_button.setText(tr("Close")) + close_button.setDefault(True) + button_layout.addWidget(close_button) + + main_layout.addLayout(button_layout) + + reveal_button.clicked.connect(self.model.reveal_selected_dupe) + close_button.clicked.connect(self.accept) + + def showEvent(self, event: QShowEvent) -> None: # have to do this here as the frameGeometry is not correct until shown move_to_screen_center(self) super().showEvent(event) diff --git a/run.py b/run.py index d6b5d236..cc3e94cf 100644 --- a/run.py +++ b/run.py @@ -9,9 +9,9 @@ import sys import os.path as op import gc -from PyQt5.QtCore import QCoreApplication -from PyQt5.QtGui import QIcon, QPixmap -from PyQt5.QtWidgets import QApplication +from PyQt6.QtCore import QCoreApplication +from PyQt6.QtGui import QIcon, QPixmap +from PyQt6.QtWidgets import QApplication from hscommon.trans import install_gettext_trans_under_qt from qt.error_report_dialog import install_excepthook @@ -61,7 +61,7 @@ def main(): # Let the Python interpreter runs every 500ms to handle signals. This is # required because Python cannot handle signals while the Qt event loop is # running. - from PyQt5.QtCore import QTimer + from PyQt6.QtCore import QTimer timer = QTimer() timer.start(500) diff --git a/setup.cfg b/setup.cfg index 41898a2f..3c0c88c8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -32,15 +32,15 @@ install_requires = Send2Trash>=1.3.0 mutagen>=1.45.1 distro>=1.5.0 - PyQt5 >=5.14.1,<6.0; sys_platform != 'linux' + PyQt6 >=6.3.0,<7.0; sys_platform != 'linux' pywin32>=228; sys_platform == 'win32' semantic-version>=2.0.0,<3.0.0 xxhash>=3.0.0,<4.0.0 setup_requires = - sphinx>=3.0.0 + sphinx>=5.0.0 polib>=1.1.0 tests_require = - pytest >=6,<7 + pytest >=7,<8 include_package_data = true [options.entry_points] diff --git a/setup.nsi b/setup.nsi index 1480ad94..7e90913e 100644 --- a/setup.nsi +++ b/setup.nsi @@ -245,7 +245,7 @@ Section "Uninstall" ; Remove Files & Folders in Install Folder RMDir /r "$INSTDIR\core" RMDir /r "$INSTDIR\help" - RMDir /r "$INSTDIR\PyQt5" + RMDir /r "$INSTDIR\PyQt6" RMDir /r "$INSTDIR\qt" RMDir /r "$INSTDIR\locale" Delete "$INSTDIR\*.exe"