From 37610302ab9bd8d5a29fce2a803808b2f55142a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Bra=C3=B1a?= Date: Sun, 3 May 2026 00:41:53 +0200 Subject: [PATCH] =?UTF-8?q?PVPlant:=20shim=20PySide2=E2=86=92PySide6=20en?= =?UTF-8?q?=20Init.py=20para=20compatibilidad=20FreeCAD=201.1.=20Archivos?= =?UTF-8?q?=20vuelven=20a=20usar=20PySide2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Export/exportKMZ.py | 2 +- Init.py | 35 +++++++++++++++++++++++++++++ PVPlantGeoreferencing.py | 4 ++-- PVPlantPlacement.py | 6 ++--- Project/GenerateExternalDocument.py | 2 +- docgenerator.py | 4 ++-- widgets/CountSelection.py | 2 +- 7 files changed, 45 insertions(+), 10 deletions(-) diff --git a/Export/exportKMZ.py b/Export/exportKMZ.py index 8f21acd..666bd9e 100644 --- a/Export/exportKMZ.py +++ b/Export/exportKMZ.py @@ -5,7 +5,7 @@ import zipfile import tempfile import shutil import xml.etree.ElementTree as ET -from PySide2 import QtWidgets, QtCore, QtGui +from PySide import QtWidgets, QtCore, QtGui import FreeCAD import Mesh import Part diff --git a/Init.py b/Init.py index 2bb2ec7..20f6367 100644 --- a/Init.py +++ b/Init.py @@ -25,6 +25,41 @@ FreeCAD.addImportType("3D Studio mesh (*.3ds)","import3DS") FreeCAD.addImportType("SweetHome3D XML export (*.zip)","importSH3D") import os +import sys + +# --------------------------------------------------------------------------- +# Shim PySide: FreeCAD 1.1 usa PySide6. Los archivos del workbench importan +# desde PySide o PySide2. Este parche redirige ambos a PySide6. +# --------------------------------------------------------------------------- +try: + import PySide6 + # Crear alias para que from PySide import ... funcione + class _PySideShim: + pass + + # Los submódulos se cargan bajo demanda + _pyside_submodules = {} + + class _PySideLoader: + """Loader que redirige PySide.X a PySide6.X""" + def __getattr__(self, name): + if name not in _pyside_submodules: + try: + _pyside_submodules[name] = getattr(PySide6, name) + except AttributeError: + # Algunos submódulos como QtWidgets tienen su propio import + try: + _pyside_submodules[name] = __import__('PySide6.' + name, fromlist=[name]) + except ImportError: + raise AttributeError(f"PySide no tiene el submódulo '{name}' (PySide6 tampoco)") + return _pyside_submodules[name] + + _shim = _PySideLoader() + sys.modules['PySide'] = _shim + sys.modules['PySide2'] = _shim +except ImportError: + pass +# --------------------------------------------------------------------------- __path__ = __import__('pkgutil').extend_path(__path__, __name__) diff --git a/PVPlantGeoreferencing.py b/PVPlantGeoreferencing.py index e5887bc..7885931 100644 --- a/PVPlantGeoreferencing.py +++ b/PVPlantGeoreferencing.py @@ -58,8 +58,8 @@ class MapWindow(QtGui.QWidget): self.setupUi() def setupUi(self): - from PySide.QtWebEngineWidgets import QWebEngineView - from PySide.QtWebChannel import QWebChannel + from PySide2.QtWebEngineWidgets import QWebEngineView + from PySide2.QtWebChannel import QWebChannel self.ui = FreeCADGui.PySideUic.loadUi(PVPlantResources.__dir__ + "/PVPlantGeoreferencing.ui", self) diff --git a/PVPlantPlacement.py b/PVPlantPlacement.py index 1a03175..3f14778 100644 --- a/PVPlantPlacement.py +++ b/PVPlantPlacement.py @@ -25,7 +25,7 @@ import Part if FreeCAD.GuiUp: import FreeCADGui, os - from PySide import QtCore, QtGui + from PySide2 import QtCore, QtGui from PySide.QtGui import QListWidgetItem from PySide.QtCore import QT_TRANSLATE_NOOP else: @@ -1164,8 +1164,8 @@ from scipy.interpolate import LinearNDInterpolator import Part import FreeCAD import FreeCADGui -from PySide import QtCore, QtGui -from PySide.QtWidgets import QListWidgetItem +from PySide2 import QtCore, QtGui +from PySide2.QtWidgets import QListWidgetItem import os import PVPlantResources diff --git a/Project/GenerateExternalDocument.py b/Project/GenerateExternalDocument.py index 3511cb4..42190c2 100644 --- a/Project/GenerateExternalDocument.py +++ b/Project/GenerateExternalDocument.py @@ -1,6 +1,6 @@ import FreeCAD import FreeCADGui -from PySide2 import QtWidgets +from PySide import QtWidgets import os if FreeCAD.GuiUp: diff --git a/docgenerator.py b/docgenerator.py index e3eda02..0bc7f66 100644 --- a/docgenerator.py +++ b/docgenerator.py @@ -1,8 +1,8 @@ # Script para FreeCAD - Procesador de Documentos Word con Carátula import os import glob -from PySide import QtWidgets, QtCore -from PySide.QtWidgets import (QFileDialog, QMessageBox, QProgressDialog, +from PySide2 import QtWidgets, QtCore +from PySide2.QtWidgets import (QFileDialog, QMessageBox, QProgressDialog, QApplication, QVBoxLayout, QWidget, QPushButton, QLabel, QTextEdit) import FreeCAD diff --git a/widgets/CountSelection.py b/widgets/CountSelection.py index 2544ec8..d876cbe 100644 --- a/widgets/CountSelection.py +++ b/widgets/CountSelection.py @@ -22,7 +22,7 @@ import FreeCAD, FreeCADGui #from freecad.trails import ICONPATH -from PySide2.QtWidgets import QLabel +from PySide.QtWidgets import QLabel import copy