From c4c453312d148fd67bd893366c42b559e28a85e6 Mon Sep 17 00:00:00 2001 From: wwmayer Date: Tue, 23 Apr 2024 00:35:33 +0200 Subject: [PATCH] PySide6: Fixes #13533: QSvgWidget is not a child of QtSvg in PySide6 (#13554) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create a compatibility module QtSvgWidgets.py to handle PySide2 & PySide6 * In the Arch and Material modules use the QtSvgWidgets module * Since Qt6 the method QFont.setWeight() doesn't accept an int any more but requires an enum. Since the call of QFont.setBold(True) sets a weight of 75 the extra calls of QFont.setWeight(75) can be safely removed Co-authored-by: Adrián Insaurralde Avalos <36372335+adrianinsaval@users.noreply.github.com> --- cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake | 6 ++++++ src/Mod/Arch/ArchPrecast.py | 8 ++++---- src/Mod/Arch/ArchWindow.py | 4 ++-- src/Mod/Arch/importIFClegacy.py | 1 - src/Mod/Draft/DraftGui.py | 1 - src/Mod/Material/MaterialEditor.py | 6 +++--- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake b/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake index 2b89afa902..e5fb35d04e 100644 --- a/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake +++ b/cMake/FreeCAD_Helpers/SetupShibokenAndPyside.cmake @@ -89,6 +89,12 @@ macro(SetupShibokenAndPyside) file(WRITE ${CMAKE_BINARY_DIR}/Ext/PySide/QtSvg.py "from PySide${PYSIDE_MAJOR_VERSION}.QtSvg import *\n") file(WRITE ${CMAKE_BINARY_DIR}/Ext/PySide/QtUiTools.py "from PySide${PYSIDE_MAJOR_VERSION}.QtUiTools import *\n") file(WRITE ${CMAKE_BINARY_DIR}/Ext/PySide/QtWidgets.py "from PySide${PYSIDE_MAJOR_VERSION}.QtWidgets import *\n") + if(PYSIDE_MAJOR_VERSION LESS 6) + file(WRITE ${CMAKE_BINARY_DIR}/Ext/PySide/QtSvgWidgets.py "from PySide${PYSIDE_MAJOR_VERSION}.QtSvg import QGraphicsSvgItem\n" + "from PySide${PYSIDE_MAJOR_VERSION}.QtSvg import QSvgWidget\n") + else() + file(WRITE ${CMAKE_BINARY_DIR}/Ext/PySide/QtSvgWidgets.py "from PySide${PYSIDE_MAJOR_VERSION}.QtSvgWidgets import *\n") + endif() endif() if(APPLE AND NOT BUILD_WITH_CONDA) diff --git a/src/Mod/Arch/ArchPrecast.py b/src/Mod/Arch/ArchPrecast.py index 7bb929b10e..2f482902c1 100644 --- a/src/Mod/Arch/ArchPrecast.py +++ b/src/Mod/Arch/ArchPrecast.py @@ -777,14 +777,14 @@ class _PrecastTaskPanel: def __init__(self): import FreeCADGui - from PySide import QtCore,QtGui,QtSvg + from PySide import QtCore,QtGui,QtSvgWidgets self.form = QtGui.QWidget() self.grid = QtGui.QGridLayout(self.form) self.PrecastTypes = ["Beam","I-Beam","Pillar","Panel","Slab","Stairs"] self.SlabTypes = ["Champagne","Hat"] # image display - self.preview = QtSvg.QSvgWidget(":/ui/ParametersBeam.svg") + self.preview = QtSvgWidgets.QSvgWidget(":/ui/ParametersBeam.svg") self.preview.setMaximumWidth(200) self.preview.setMinimumHeight(120) self.grid.addWidget(self.preview,0,0,1,2) @@ -1263,7 +1263,7 @@ class _DentsTaskPanel: def __init__(self): import FreeCADGui - from PySide import QtCore,QtGui,QtSvg + from PySide import QtCore,QtGui,QtSvgWidgets self.form = QtGui.QWidget() self.grid = QtGui.QGridLayout(self.form) self.Rotations = ["N","S","E","O"] @@ -1282,7 +1282,7 @@ class _DentsTaskPanel: self.grid.addWidget(self.buttonRemove,2,1,1,1) # image display - self.preview = QtSvg.QSvgWidget(":/ui/ParametersDent.svg") + self.preview = QtSvgWidgets.QSvgWidget(":/ui/ParametersDent.svg") self.preview.setMaximumWidth(200) self.preview.setMinimumHeight(120) self.grid.addWidget(self.preview,3,0,1,2) diff --git a/src/Mod/Arch/ArchWindow.py b/src/Mod/Arch/ArchWindow.py index f3c11c5e9c..dc9c84f9a8 100644 --- a/src/Mod/Arch/ArchWindow.py +++ b/src/Mod/Arch/ArchWindow.py @@ -34,7 +34,7 @@ from draftutils.messages import _wrn if FreeCAD.GuiUp: import FreeCADGui - from PySide import QtCore, QtGui, QtSvg + from PySide import QtCore, QtGui, QtSvgWidgets from draftutils.translate import translate from PySide.QtCore import QT_TRANSLATE_NOOP import draftguitools.gui_trackers as DraftTrackers @@ -426,7 +426,7 @@ class _CommandWindow: self.pic.hide() # SVG display - self.im = QtSvg.QSvgWidget(":/ui/ParametersWindowFixed.svg") + self.im = QtSvgWidgets.QSvgWidget(":/ui/ParametersWindowFixed.svg") self.im.setMaximumWidth(200) self.im.setMinimumHeight(120) grid.addWidget(self.im,4,0,1,2) diff --git a/src/Mod/Arch/importIFClegacy.py b/src/Mod/Arch/importIFClegacy.py index 037e889ce5..256b29056b 100644 --- a/src/Mod/Arch/importIFClegacy.py +++ b/src/Mod/Arch/importIFClegacy.py @@ -1795,7 +1795,6 @@ def explorer(filename,schema="IFC2X3_TC1.exp"): tree.headerItem().setText(1, "") tree.headerItem().setText(2, "Item and Properties") bold = QtGui.QFont() - bold.setWeight(75) bold.setBold(True) #print(ifc.Entities) diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index c6e8584f4a..2471bb66c6 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -312,7 +312,6 @@ class DraftToolBar: self.promptlabel = self._label("promptlabel", self.layout, hide=task) self.cmdlabel = self._label("cmdlabel", self.layout, hide=task) boldtxt = QtGui.QFont() - boldtxt.setWeight(75) boldtxt.setBold(True) self.cmdlabel.setFont(boldtxt) diff --git a/src/Mod/Material/MaterialEditor.py b/src/Mod/Material/MaterialEditor.py index cbcbde9246..28dbe83bc0 100644 --- a/src/Mod/Material/MaterialEditor.py +++ b/src/Mod/Material/MaterialEditor.py @@ -27,7 +27,7 @@ __url__ = "https://www.freecad.org" import os from pathlib import PurePath import sys -from PySide import QtCore, QtGui, QtSvg +from PySide import QtCore, QtGui, QtSvgWidgets import FreeCAD import FreeCADGui @@ -92,11 +92,11 @@ class MaterialEditor: treeView = widget.treeView # create preview svg slots - self.widget.PreviewRender = QtSvg.QSvgWidget(self.iconPath + "preview-rendered.svg") + self.widget.PreviewRender = QtSvgWidgets.QSvgWidget(self.iconPath + "preview-rendered.svg") self.widget.PreviewRender.setMaximumWidth(64) self.widget.PreviewRender.setMinimumHeight(64) self.widget.topLayout.addWidget(self.widget.PreviewRender) - self.widget.PreviewVector = QtSvg.QSvgWidget(self.iconPath + "preview-vector.svg") + self.widget.PreviewVector = QtSvgWidgets.QSvgWidget(self.iconPath + "preview-vector.svg") self.widget.PreviewVector.setMaximumWidth(64) self.widget.PreviewVector.setMinimumHeight(64) self.widget.topLayout.addWidget(self.widget.PreviewVector)