fix(dialogs): Avoid Runtime MainWindow Dependency
Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
@ -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:
|
||||||
|
Reference in New Issue
Block a user