git » freecad.git » commit b3f7df9

upgpkg: 0.21.2-8: Fix issues in Addons Manager with Qt6

author Antonio Rojas
2024-04-05 17:45:36 UTC
committer Antonio Rojas
2024-04-05 17:45:36 UTC
parent 324678d2d14b82e8a84f98aff8d7d652a012a127

upgpkg: 0.21.2-8: Fix issues in Addons Manager with Qt6

.SRCINFO +4 -3
62c3836c.patch +83 -0
PKGBUILD +6 -3
pyside6.patch +96 -0

diff --git a/.SRCINFO b/.SRCINFO
index cdcebde..f013a66 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
 pkgbase = freecad
 	pkgdesc = Feature based parametric 3D CAD modeler
 	pkgver = 0.21.2
-	pkgrel = 7
+	pkgrel = 8
 	url = https://freecadweb.org/
 	arch = x86_64
 	license = LGPL
@@ -19,7 +19,6 @@ pkgbase = freecad
 	makedepends = pdal
 	makedepends = postgresql-libs
 	makedepends = python-mpi4py
-	makedepends = python-shiboken2
 	makedepends = shiboken6
 	makedepends = swig
 	makedepends = utf8cpp
@@ -53,8 +52,10 @@ pkgbase = freecad
 	source = git+https://github.com/freecad/freecad#tag=0.21.2
 	source = freecad-vtk9.3.patch
 	source = pyside6.patch
+	source = 62c3836c.patch
 	b2sums = SKIP
 	b2sums = f0b5a4648eb4befabb2339bae4e42044e436aa50ad1c2a25b243c965272a217b2c1c69c34d0d20bd01c573008de10f733b74857ffecac502b8558a7095e305e5
-	b2sums = 81f39b2180adb435d3a1cff58b566d106e04fe1099adb1530c9a905b696e73cd7ed55d8616db7e080bb6f6716e9d2f207c3b2e6f6e0618a97b41de499e23d3b0
+	b2sums = 34a9c80fd2413284a2e09c41e91ef5079edafde6177384bfe8cc28ab44c60a8a1dfbee00d99ede39841f9405d1bc1b2b0e7bd1abff3e6a9fc32d124b656c2a9e
+	b2sums = eb474708c3611293cfe3dfc287418b606f7735f6eb306f44f7394cd7e65256daddcee35984211982f25064e7ec81cc038d4eeb8d34af7399058ecfb6e8e99e9f
 
 pkgname = freecad
diff --git a/62c3836c.patch b/62c3836c.patch
new file mode 100644
index 0000000..fb18075
--- /dev/null
+++ b/62c3836c.patch
@@ -0,0 +1,83 @@
+From 62c3836c97a56db24e3ef567a31eba2d0893b945 Mon Sep 17 00:00:00 2001
+From: Ladislav Michl <ladis@linux-mips.org>
+Date: Tue, 23 Jan 2024 12:46:32 +0100
+Subject: [PATCH] Addon Manager: Qt6 fixes
+
+---
+ src/Mod/AddonManager/addonmanager_utilities.py | 4 ++--
+ src/Mod/AddonManager/change_branch.py          | 2 +-
+ src/Mod/AddonManager/package_details.py        | 7 +++----
+ src/Mod/AddonManager/package_list.py           | 7 +++----
+ 4 files changed, 9 insertions(+), 11 deletions(-)
+
+diff --git a/src/Mod/AddonManager/addonmanager_utilities.py b/src/Mod/AddonManager/addonmanager_utilities.py
+index 9ceabc2e9add..183a2047b086 100644
+--- a/src/Mod/AddonManager/addonmanager_utilities.py
++++ b/src/Mod/AddonManager/addonmanager_utilities.py
+@@ -36,7 +36,7 @@
+ from urllib.parse import urlparse
+ 
+ try:
+-    from PySide import QtCore, QtWidgets
++    from PySide import QtCore, QtGui, QtWidgets
+ except ImportError:
+     QtCore = None
+     QtWidgets = None
+@@ -245,7 +245,7 @@ def get_readme_html_url(repo):
+ def is_darkmode() -> bool:
+     """Heuristics to determine if we are in a darkmode stylesheet"""
+     pl = fci.FreeCADGui.getMainWindow().palette()
+-    return pl.color(pl.Background).lightness() < 128
++    return pl.color(QtGui.QPalette.Window).lightness() < 128
+ 
+ 
+ def warning_color_string() -> str:
+diff --git a/src/Mod/AddonManager/change_branch.py b/src/Mod/AddonManager/change_branch.py
+index 332795a22afc..ebe1819bc755 100644
+--- a/src/Mod/AddonManager/change_branch.py
++++ b/src/Mod/AddonManager/change_branch.py
+@@ -216,7 +216,7 @@ def data(self, index: QtCore.QModelIndex, role: int = QtCore.Qt.DisplayRole):
+             dd = self.display_data[row]
+             if column == 3 or column == 4:
+                 if dd[column] is not None:
+-                    qdate = QtCore.QDateTime.fromTime_t(dd[column])
++                    qdate = QtCore.QDateTime.fromSecsSinceEpoch(dd[column])
+                     return QtCore.QLocale().toString(qdate, QtCore.QLocale.ShortFormat)
+             elif column < len(dd):
+                 return dd[column]
+diff --git a/src/Mod/AddonManager/package_details.py b/src/Mod/AddonManager/package_details.py
+index 93dfb8bee962..8310b5e90343 100644
+--- a/src/Mod/AddonManager/package_details.py
++++ b/src/Mod/AddonManager/package_details.py
+@@ -133,10 +133,9 @@ def display_repo_status(self, status):
+             date = ""
+             installed_version_string = "<h3>"
+             if repo.updated_timestamp:
+-                date = (
+-                    QtCore.QDateTime.fromTime_t(repo.updated_timestamp)
+-                    .date()
+-                    .toString(QtCore.Qt.SystemLocaleShortDate)
++                date = QtCore.QLocale().toString(
++                    QtCore.QDateTime.fromSecsSinceEpoch(int(round(repo.updated_timestamp, 0))),
++                    QtCore.QLocale.ShortFormat,
+                 )
+             if version and date:
+                 installed_version_string += (
+diff --git a/src/Mod/AddonManager/package_list.py b/src/Mod/AddonManager/package_list.py
+index a9dd3dc59856..d26b4f5489c3 100644
+--- a/src/Mod/AddonManager/package_list.py
++++ b/src/Mod/AddonManager/package_list.py
+@@ -465,10 +465,9 @@ def get_expanded_update_string(repo: Addon) -> str:
+             installed_date_string = (
+                 "<br/>" + translate("AddonsInstaller", "Installed on") + ": "
+             )
+-            installed_date_string += (
+-                QtCore.QDateTime.fromTime_t(repo.updated_timestamp)
+-                .date()
+-                .toString(QtCore.Qt.SystemLocaleShortDate)
++            installed_date_string += QtCore.QLocale().toString(
++                QtCore.QDateTime.fromSecsSinceEpoch(int(round(repo.updated_timestamp, 0))),
++                QtCore.QLocale.ShortFormat,
+             )
+ 
+         available_version_string = ""
diff --git a/PKGBUILD b/PKGBUILD
index 0821cd3..2903a93 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -12,7 +12,7 @@
 
 pkgname=freecad
 pkgver=0.21.2
-pkgrel=7
+pkgrel=8
 pkgdesc='Feature based parametric 3D CAD modeler'
 arch=(x86_64)
 url='https://freecadweb.org/'
@@ -29,13 +29,16 @@ optdepends=('graphviz: dependency graph support'
             'openscad: OpenSCAD support')
 source=("git+https://github.com/$pkgname/$pkgname#tag=$pkgver"
         freecad-vtk9.3.patch
-        pyside6.patch) # tag: 0.21.1
+        pyside6.patch
+        62c3836c.patch)
 b2sums=('SKIP'
         'f0b5a4648eb4befabb2339bae4e42044e436aa50ad1c2a25b243c965272a217b2c1c69c34d0d20bd01c573008de10f733b74857ffecac502b8558a7095e305e5'
-        '81f39b2180adb435d3a1cff58b566d106e04fe1099adb1530c9a905b696e73cd7ed55d8616db7e080bb6f6716e9d2f207c3b2e6f6e0618a97b41de499e23d3b0')
+        '34a9c80fd2413284a2e09c41e91ef5079edafde6177384bfe8cc28ab44c60a8a1dfbee00d99ede39841f9405d1bc1b2b0e7bd1abff3e6a9fc32d124b656c2a9e'
+        'eb474708c3611293cfe3dfc287418b606f7735f6eb306f44f7394cd7e65256daddcee35984211982f25064e7ec81cc038d4eeb8d34af7399058ecfb6e8e99e9f')
 
 prepare() {
   patch -d freecad -Np1 -i "$srcdir"/freecad-vtk9.3.patch
+  patch -d freecad -Np1 -i ../62c3836c.patch # Fix Qt6 issues in addons manager
   patch -d freecad -Np1 -i ../pyside6.patch
 }
 
diff --git a/pyside6.patch b/pyside6.patch
index b51a5d5..6bfbcfc 100644
--- a/pyside6.patch
+++ b/pyside6.patch
@@ -11,3 +11,99 @@ index 0569c1fde9..f5e3d0931f 100644
  endmacro(SetupShibokenAndPyside)
  
  # Locate the include directory for a pip-installed package -- uses pip show to find the base pip
+diff --git a/src/Mod/AddonManager/package_details.py b/src/Mod/AddonManager/package_details.py
+index c9d1ae311a..9c0e040ea5 100644
+--- a/src/Mod/AddonManager/package_details.py
++++ b/src/Mod/AddonManager/package_details.py
+@@ -26,7 +26,7 @@
+ import os
+ from typing import Optional
+ 
+-from PySide import QtCore, QtGui, QtWidgets
++from PySide6 import QtCore, QtGui, QtWidgets
+ 
+ import addonmanager_freecad_interface as fci
+ 
+@@ -51,14 +51,14 @@ translate = fci.translate
+ show_javascript_console_output = False
+ 
+ try:
+-    from PySide import QtWebEngineWidgets
++    from PySide6 import QtWebEngineCore, QtWebEngineWidgets
+ 
+     HAS_QTWEBENGINE = True
+ except ImportError:
+     fci.Console.PrintWarning(
+         translate(
+             "AddonsInstaller",
+-            "Addon Manager Warning: Could not import QtWebEngineWidgets -- README data will display as text-only",
++            "Addon Manager Warning: Could not import QtWebEngineCore -- README data will display as text-only",
+         )
+         + "\n"
+     )
+@@ -715,14 +714,14 @@ class PackageDetails(QtWidgets.QWidget):
+ 
+ if HAS_QTWEBENGINE:
+ 
+-    class RestrictedWebPage(QtWebEngineWidgets.QWebEnginePage):
++    class RestrictedWebPage(QtWebEngineCore.QWebEnginePage):
+         """A class that follows links to FreeCAD wiki pages, but opens all other
+         clicked links in the system web browser"""
+ 
+         def __init__(self, parent):
+             super().__init__(parent)
+             self.settings().setAttribute(
+-                QtWebEngineWidgets.QWebEngineSettings.ErrorPageEnabled, False
++                QtWebEngineCore.QWebEngineSettings.ErrorPageEnabled, False
+             )
+             self.stored_url = None
+ 
+@@ -731,7 +730,7 @@ if HAS_QTWEBENGINE:
+             navigation requests to the FreeCAD Wiki (for translation purposes) --
+             anything else will open in a new window.
+             """
+-            if _type == QtWebEngineWidgets.QWebEnginePage.NavigationTypeLinkClicked:
++            if _type == QtWebEngineCore.QWebEnginePage.NavigationTypeLinkClicked:
+                 # See if the link is to a FreeCAD Wiki page -- if so, follow it,
+                 # otherwise ask the OS to open it
+                 if (
+@@ -754,11 +753,11 @@ if HAS_QTWEBENGINE:
+             global show_javascript_console_output
+             if show_javascript_console_output:
+                 tag = translate("AddonsInstaller", "Page JavaScript reported")
+-                if level == QtWebEngineWidgets.QWebEnginePage.InfoMessageLevel:
++                if level == QtWebEngineCore.QWebEnginePage.InfoMessageLevel:
+                     fci.Console.PrintMessage(f"{tag} {lineNumber}: {message}\n")
+-                elif level == QtWebEngineWidgets.QWebEnginePage.WarningMessageLevel:
++                elif level == QtWebEngineCore.QWebEnginePage.WarningMessageLevel:
+                     fci.Console.PrintWarning(f"{tag} {lineNumber}: {message}\n")
+-                elif level == QtWebEngineWidgets.QWebEnginePage.ErrorMessageLevel:
++                elif level == QtWebEngineCore.QWebEnginePage.ErrorMessageLevel:
+                     fci.Console.PrintError(f"{tag} {lineNumber}: {message}\n")
+ 
+         def _reload_stored_url(self):
+diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py
+index cb8bb63d8a..7445173537 100644
+--- a/src/Mod/AddonManager/AddonManager.py
++++ b/src/Mod/AddonManager/AddonManager.py
+@@ -427,15 +427,15 @@ class CommandAddonManager:
+                     "You must restart FreeCAD for changes to take effect.",
+                 )
+             )
+-            m.setIcon(m.Warning)
+-            m.setStandardButtons(m.Ok | m.Cancel)
+-            m.setDefaultButton(m.Cancel)
++            m.setIcon(m.Icon.Warning)
++            m.setStandardButtons(m.StandardButton.Ok | m.StandardButton.Cancel)
++            m.setDefaultButton(m.StandardButton.Cancel)
+             okBtn = m.button(QtWidgets.QMessageBox.StandardButton.Ok)
+             cancelBtn = m.button(QtWidgets.QMessageBox.StandardButton.Cancel)
+             okBtn.setText(translate("AddonsInstaller", "Restart now"))
+             cancelBtn.setText(translate("AddonsInstaller", "Restart later"))
+             ret = m.exec_()
+-            if ret == m.Ok:
++            if ret == m.StandardButton.Ok:
+                 # restart FreeCAD after a delay to give time to this dialog to close
+                 QtCore.QTimer.singleShot(1000, utils.restart_freecad)
+ 
+