fix(dialogs): Avoid Runtime MainWindow Dependency
All checks were successful
Code and build check / Check code (push) Successful in 1m46s
Code and build check / Build with uv (push) Successful in 1m2s

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-06-26 15:20:44 +05:00
parent 0af7e196e5
commit 8184a0bc71

View File

@ -1,6 +1,6 @@
import os import os
import tempfile import tempfile
from typing import cast from typing import cast, TYPE_CHECKING
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,
@ -9,13 +9,15 @@ from PySide6.QtWidgets import (
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
import portprotonqt.themes.standart.styles as default_styles import portprotonqt.themes.standart.styles as default_styles
from portprotonqt.themes.standart.styles import FileExplorerStyles from portprotonqt.themes.standart.styles import FileExplorerStyles
if TYPE_CHECKING:
from portprotonqt.main_window import MainWindow
logger = get_logger(__name__) logger = get_logger(__name__)
def generate_thumbnail(inputfile, outfile, size=128, force_resize=True): def generate_thumbnail(inputfile, outfile, size=128, force_resize=True):
@ -102,7 +104,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 = cast(MainWindow, parent).input_manager self.input_manager = cast("MainWindow", parent).input_manager
break break
parent = parent.parent() parent = parent.parent()
@ -209,7 +211,7 @@ 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():
parent = cast(MainWindow, self.parent()) parent = cast("MainWindow", self.parent())
parent.activateWindow() parent.activateWindow()
parent.setFocus() parent.setFocus()
except Exception as e: except Exception as e:
@ -312,10 +314,14 @@ class AddGameDialog(QDialog):
file_explorer = FileExplorer(self, file_filter='.exe') file_explorer = FileExplorer(self, file_filter='.exe')
file_explorer.file_signal.file_selected.connect(self.onExeSelected) file_explorer.file_signal.file_selected.connect(self.onExeSelected)
if self.parent(): # Центрируем FileExplorer относительно родительского виджета
parent = cast(MainWindow, self.parent()) parent_widget = self.parentWidget() # QWidget или None
center_point = parent.geometry().center() if parent_widget:
file_explorer.move(center_point - file_explorer.rect().center()) parent_geometry = parent_widget.geometry()
center_point = parent_geometry.center()
file_explorer_geometry = file_explorer.geometry()
file_explorer_geometry.moveCenter(center_point)
file_explorer.setGeometry(file_explorer_geometry)
file_explorer.show() file_explorer.show()
except Exception as e: except Exception as e:
@ -338,10 +344,14 @@ class AddGameDialog(QDialog):
file_explorer = FileExplorer(self, file_filter=('.png', '.jpg', '.jpeg', '.bmp')) file_explorer = FileExplorer(self, file_filter=('.png', '.jpg', '.jpeg', '.bmp'))
file_explorer.file_signal.file_selected.connect(self.onCoverSelected) file_explorer.file_signal.file_selected.connect(self.onCoverSelected)
if self.parent(): # Центрируем FileExplorer относительно родительского виджета
parent = cast(MainWindow, self.parent()) parent_widget = self.parentWidget()
center_point = parent.geometry().center() if parent_widget:
file_explorer.move(center_point - file_explorer.rect().center()) parent_geometry = parent_widget.geometry()
center_point = parent_geometry.center()
file_explorer_geometry = file_explorer.geometry()
file_explorer_geometry.moveCenter(center_point)
file_explorer.setGeometry(file_explorer_geometry)
file_explorer.show() file_explorer.show()
except Exception as e: except Exception as e: