Addon Manager: Use FreeCAD QUiLoader wrapper when available

This commit is contained in:
Chris Hennes
2025-02-03 08:47:09 -06:00
parent 3f9f7168d0
commit 7b11862723

View File

@@ -1,7 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# ***************************************************************************
# * *
# * Copyright (c) 2022-2024 FreeCAD Project Association AISBL *
# * Copyright (c) 2022-2025 FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
@@ -38,15 +38,31 @@ import addonmanager_freecad_interface as fci
try:
from PySide import QtCore, QtGui, QtWidgets
from PySide.QtUiTools import QUiLoader
except ImportError:
try:
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtUiTools import QUiLoader
except ImportError:
from PySide2 import QtCore, QtGui, QtWidgets
# Make sure this can run inside and outside FreeCAD, and don't require that (when run inside FreeCAD) the user has the
# python QtUiTools installed, because FreeCAD wraps it for us.
try:
import FreeCADGui
loadUi = FreeCADGui.PySideUic.loadUi
except ImportError:
try:
from PySide6.QtUiTools import QUiLoader
except ImportError:
from PySide2.QtUiTools import QUiLoader
def loadUi(ui_file: str) -> QtWidgets.QWidget:
q_ui_file = QtCore.QFile(ui_file)
q_ui_file.open(QtCore.QFile.OpenModeFlag.ReadOnly)
loader = QUiLoader()
return loader.load(ui_file)
try:
from freecad.utils import get_python_exe
except ImportError:
@@ -210,12 +226,9 @@ class PythonPackageManager:
optional: bool
def __init__(self, addons):
ui_file = QtCore.QFile(
self.dlg = loadUi(
os.path.join(os.path.dirname(__file__), "PythonDependencyUpdateDialog.ui")
)
ui_file.open(QtCore.QFile.OpenModeFlag.ReadOnly)
loader = QUiLoader()
self.dlg = loader.load(ui_file)
self.addons = addons
self.vendor_path = utils.get_pip_target_directory()