|
1 | 1 | # SPDX-License-Identifier: LGPL-2.1-or-later |
2 | 2 | # *************************************************************************** |
3 | 3 | # * * |
4 | | -# * Copyright (c) 2022-2024 FreeCAD Project Association AISBL * |
| 4 | +# * Copyright (c) 2022-2025 FreeCAD Project Association AISBL * |
5 | 5 | # * * |
6 | 6 | # * This file is part of FreeCAD. * |
7 | 7 | # * * |
|
38 | 38 |
|
39 | 39 | try: |
40 | 40 | from PySide import QtCore, QtGui, QtWidgets |
41 | | - from PySide.QtUiTools import QUiLoader |
42 | 41 | except ImportError: |
43 | 42 | try: |
44 | 43 | from PySide6 import QtCore, QtGui, QtWidgets |
45 | | - from PySide6.QtUiTools import QUiLoader |
46 | 44 | except ImportError: |
47 | 45 | 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: |
48 | 57 | from PySide2.QtUiTools import QUiLoader |
49 | 58 |
|
| 59 | + def loadUi(ui_file: QtCore.QFile) -> QtWidgets.QWidget: |
| 60 | + loader = QUiLoader() |
| 61 | + return loader.load(ui_file) |
| 62 | + |
| 63 | + |
50 | 64 | try: |
51 | 65 | from freecad.utils import get_python_exe |
52 | 66 | except ImportError: |
@@ -213,9 +227,7 @@ def __init__(self, addons): |
213 | 227 | ui_file = QtCore.QFile( |
214 | 228 | os.path.join(os.path.dirname(__file__), "PythonDependencyUpdateDialog.ui") |
215 | 229 | ) |
216 | | - ui_file.open(QtCore.QFile.OpenModeFlag.ReadOnly) |
217 | | - loader = QUiLoader() |
218 | | - self.dlg = loader.load(ui_file) |
| 230 | + self.dlg = loadUi(ui_file) |
219 | 231 |
|
220 | 232 | self.addons = addons |
221 | 233 | self.vendor_path = utils.get_pip_target_directory() |
|
0 commit comments