Skip to content

Commit e482fd9

Browse files
committed
Addon Manager: Use FreeCAD QUiLoader wrapper when available
1 parent 64a4f6e commit e482fd9

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/Mod/AddonManager/addonmanager_python_deps_gui.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: LGPL-2.1-or-later
22
# ***************************************************************************
33
# * *
4-
# * Copyright (c) 2022-2024 FreeCAD Project Association AISBL *
4+
# * Copyright (c) 2022-2025 FreeCAD Project Association AISBL *
55
# * *
66
# * This file is part of FreeCAD. *
77
# * *
@@ -38,15 +38,29 @@
3838

3939
try:
4040
from PySide import QtCore, QtGui, QtWidgets
41-
from PySide.QtUiTools import QUiLoader
4241
except ImportError:
4342
try:
4443
from PySide6 import QtCore, QtGui, QtWidgets
45-
from PySide6.QtUiTools import QUiLoader
4644
except ImportError:
4745
from PySide2 import QtCore, QtGui, QtWidgets
46+
47+
# Make sure this can run inside and outside FreeCAD, and don't require that (when run inside FreeCAD) the user has the
48+
# python QtUiTools installed, because FreeCAD wraps it for us.
49+
try:
50+
import FreeCADGui
51+
52+
loadUi = FreeCADGui.PySideUic.loadUi
53+
except ImportError:
54+
try:
55+
from PySide6.QtUiTools import QUiLoader
56+
except ImportError:
4857
from PySide2.QtUiTools import QUiLoader
4958

59+
def loadUi(ui_file: QtCore.QFile) -> QtWidgets.QWidget:
60+
loader = QUiLoader()
61+
return loader.load(ui_file)
62+
63+
5064
try:
5165
from freecad.utils import get_python_exe
5266
except ImportError:
@@ -213,9 +227,7 @@ def __init__(self, addons):
213227
ui_file = QtCore.QFile(
214228
os.path.join(os.path.dirname(__file__), "PythonDependencyUpdateDialog.ui")
215229
)
216-
ui_file.open(QtCore.QFile.OpenModeFlag.ReadOnly)
217-
loader = QUiLoader()
218-
self.dlg = loader.load(ui_file)
230+
self.dlg = loadUi(ui_file)
219231

220232
self.addons = addons
221233
self.vendor_path = utils.get_pip_target_directory()

0 commit comments

Comments
 (0)