fix: resolve Pyright type errors

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-06-26 14:54:53 +05:00
parent 88e9d1d7c5
commit 34ce0a74b0
2 changed files with 31 additions and 31 deletions

View File

@ -1,16 +1,15 @@
import os import os
import tempfile import tempfile
import time from typing import cast
from PySide6.QtGui import QPixmap from PySide6.QtGui import QPixmap
from PySide6.QtWidgets import ( from PySide6.QtWidgets import (
QDialog, QLineEdit, QFormLayout, QPushButton, QDialog, QLineEdit, QFormLayout, QPushButton,
QHBoxLayout, QDialogButtonBox, QFileDialog, QLabel, QVBoxLayout, QListWidget QHBoxLayout, QDialogButtonBox, QLabel, QVBoxLayout, QListWidget
) )
from PySide6.QtCore import Qt, QObject, Signal from PySide6.QtCore import Qt, QObject, Signal
from icoextract import IconExtractor, IconExtractorError from icoextract import IconExtractor, IconExtractorError
from PIL import Image from PIL import Image
from portprotonqt.main_window import MainWindow # Import MainWindow for type casting
from portprotonqt.config_utils import get_portproton_location from portprotonqt.config_utils import get_portproton_location
from portprotonqt.localization import _ from portprotonqt.localization import _
from portprotonqt.logger import get_logger from portprotonqt.logger import get_logger
@ -83,11 +82,9 @@ def generate_thumbnail(inputfile, outfile, size=128, force_resize=True):
logger.error(f"Ошибка при сохранении миниатюры: {e}") logger.error(f"Ошибка при сохранении миниатюры: {e}")
return False return False
class FileSelectedSignal(QObject): class FileSelectedSignal(QObject):
file_selected = Signal(str) # Сигнал с путем к выбранному файлу file_selected = Signal(str) # Сигнал с путем к выбранному файлу
class FileExplorer(QDialog): class FileExplorer(QDialog):
def __init__(self, parent=None, file_filter=None): def __init__(self, parent=None, file_filter=None):
super().__init__(parent) super().__init__(parent)
@ -105,7 +102,7 @@ class FileExplorer(QDialog):
parent = self.parent() parent = self.parent()
while parent: while parent:
if hasattr(parent, 'input_manager'): if hasattr(parent, 'input_manager'):
self.input_manager = parent.input_manager self.input_manager = cast(MainWindow, parent).input_manager
break break
parent = parent.parent() parent = parent.parent()
@ -117,20 +114,20 @@ class FileExplorer(QDialog):
self.setWindowTitle("File Explorer") self.setWindowTitle("File Explorer")
self.setGeometry(100, 100, 800, 600) self.setGeometry(100, 100, 800, 600)
self.layout = QVBoxLayout() self.main_layout = QVBoxLayout()
self.layout.setContentsMargins(10, 10, 10, 10) self.main_layout.setContentsMargins(10, 10, 10, 10)
self.layout.setSpacing(10) self.main_layout.setSpacing(10)
self.setLayout(self.layout) self.setLayout(self.main_layout)
self.path_label = QLabel() self.path_label = QLabel()
self.path_label.setStyleSheet(FileExplorerStyles.PATH_LABEL_STYLE) self.path_label.setStyleSheet(FileExplorerStyles.PATH_LABEL_STYLE)
self.layout.addWidget(self.path_label) self.main_layout.addWidget(self.path_label)
# Список файлов # Список файлов
self.file_list = QListWidget() self.file_list = QListWidget()
self.file_list.setStyleSheet(FileExplorerStyles.LIST_STYLE) self.file_list.setStyleSheet(FileExplorerStyles.LIST_STYLE)
self.file_list.itemClicked.connect(self.handle_item_click) self.file_list.itemClicked.connect(self.handle_item_click)
self.layout.addWidget(self.file_list) self.main_layout.addWidget(self.file_list)
# Кнопки # Кнопки
self.button_layout = QHBoxLayout() self.button_layout = QHBoxLayout()
@ -141,7 +138,7 @@ class FileExplorer(QDialog):
self.cancel_button.setStyleSheet(FileExplorerStyles.BUTTON_STYLE) self.cancel_button.setStyleSheet(FileExplorerStyles.BUTTON_STYLE)
self.button_layout.addWidget(self.select_button) self.button_layout.addWidget(self.select_button)
self.button_layout.addWidget(self.cancel_button) self.button_layout.addWidget(self.cancel_button)
self.layout.addLayout(self.button_layout) self.main_layout.addLayout(self.button_layout)
self.select_button.clicked.connect(self.select_item) self.select_button.clicked.connect(self.select_item)
self.cancel_button.clicked.connect(self.reject) self.cancel_button.clicked.connect(self.reject)
@ -212,8 +209,9 @@ class FileExplorer(QDialog):
if self.input_manager: if self.input_manager:
self.input_manager.disable_file_explorer_mode() self.input_manager.disable_file_explorer_mode()
if self.parent(): if self.parent():
self.parent().activateWindow() parent = cast(MainWindow, self.parent())
self.parent().setFocus() parent.activateWindow()
parent.setFocus()
except Exception as e: except Exception as e:
logger.error(f"Error in closeEvent: {e}") logger.error(f"Error in closeEvent: {e}")
@ -231,7 +229,6 @@ class FileExplorer(QDialog):
self.input_manager.disable_file_explorer_mode() self.input_manager.disable_file_explorer_mode()
super().accept() super().accept()
class AddGameDialog(QDialog): class AddGameDialog(QDialog):
def __init__(self, parent=None, theme=None, edit_mode=False, game_name=None, exe_path=None, cover_path=None): def __init__(self, parent=None, theme=None, edit_mode=False, game_name=None, exe_path=None, cover_path=None):
super().__init__(parent) super().__init__(parent)
@ -316,7 +313,8 @@ class AddGameDialog(QDialog):
file_explorer.file_signal.file_selected.connect(self.onExeSelected) file_explorer.file_signal.file_selected.connect(self.onExeSelected)
if self.parent(): if self.parent():
center_point = self.parent().geometry().center() parent = cast(MainWindow, self.parent())
center_point = parent.geometry().center()
file_explorer.move(center_point - file_explorer.rect().center()) file_explorer.move(center_point - file_explorer.rect().center())
file_explorer.show() file_explorer.show()
@ -341,7 +339,8 @@ class AddGameDialog(QDialog):
file_explorer.file_signal.file_selected.connect(self.onCoverSelected) file_explorer.file_signal.file_selected.connect(self.onCoverSelected)
if self.parent(): if self.parent():
center_point = self.parent().geometry().center() parent = cast(MainWindow, self.parent())
center_point = parent.geometry().center()
file_explorer.move(center_point - file_explorer.rect().center()) file_explorer.move(center_point - file_explorer.rect().center())
file_explorer.show() file_explorer.show()

View File

@ -3,7 +3,7 @@ import threading
from typing import Protocol, cast from typing import Protocol, cast
from evdev import InputDevice, InputEvent, ecodes, list_devices, ff from evdev import InputDevice, InputEvent, ecodes, list_devices, ff
from pyudev import Context, Monitor, MonitorObserver, Device from pyudev import Context, Monitor, MonitorObserver, Device
from PySide6.QtWidgets import QWidget, QStackedWidget, QApplication, QScrollArea, QLineEdit, QDialog, QMenu, QComboBox, QListView, QMessageBox, QListWidget from PySide6.QtWidgets import QWidget, QStackedWidget, QApplication, QScrollArea, QLineEdit, QDialog, QMenu, QComboBox, QListView, QMessageBox
from PySide6.QtCore import Qt, QObject, QEvent, QPoint, Signal, Slot, QTimer from PySide6.QtCore import Qt, QObject, QEvent, QPoint, Signal, Slot, QTimer
from PySide6.QtGui import QKeyEvent from PySide6.QtGui import QKeyEvent
from portprotonqt.logger import get_logger from portprotonqt.logger import get_logger
@ -11,6 +11,7 @@ from portprotonqt.image_utils import FullscreenDialog
from portprotonqt.custom_widgets import NavLabel from portprotonqt.custom_widgets import NavLabel
from portprotonqt.game_card import GameCard from portprotonqt.game_card import GameCard
from portprotonqt.config_utils import read_fullscreen_config, read_window_geometry, save_window_geometry, read_auto_fullscreen_gamepad, read_rumble_config from portprotonqt.config_utils import read_fullscreen_config, read_window_geometry, save_window_geometry, read_auto_fullscreen_gamepad, read_rumble_config
from portprotonqt.dialogs import AddGameDialog
logger = get_logger(__name__) logger = get_logger(__name__)
@ -34,7 +35,7 @@ class MainWindowProtocol(Protocol):
gamesListWidget: QWidget gamesListWidget: QWidget
currentDetailPage: QWidget | None currentDetailPage: QWidget | None
current_exec_line: str | None current_exec_line: str | None
current_add_game_dialog: QDialog | None current_add_game_dialog: AddGameDialog | None
# Mapping of actions to evdev button codes, includes Xbox and PlayStation controllers # Mapping of actions to evdev button codes, includes Xbox and PlayStation controllers
# https://github.com/torvalds/linux/blob/master/drivers/hid/hid-playstation.c # https://github.com/torvalds/linux/blob/master/drivers/hid/hid-playstation.c