eric7/WebBrowser/QtHelp/HelpDocsInstaller.py

branch
eric7
changeset 9153
506e35e424d5
parent 8881
54e42bc2437a
--- a/eric7/WebBrowser/QtHelp/HelpDocsInstaller.py	Thu Jun 16 18:28:59 2022 +0200
+++ b/eric7/WebBrowser/QtHelp/HelpDocsInstaller.py	Fri Jun 17 16:36:14 2022 +0200
@@ -8,11 +8,10 @@
 documentation database.
 """
 
-import os
+import datetime
+import pathlib
 
-from PyQt6.QtCore import (
-    pyqtSignal, QThread, Qt, QMutex, QDateTime, QDir, QLibraryInfo, QFileInfo
-)
+from PyQt6.QtCore import pyqtSignal, QThread, QMutex, QLibraryInfo
 from PyQt6.QtHelp import QHelpEngineCore
 
 from eric7config import getConfig
@@ -125,70 +124,65 @@
         info = engine.customValue(versionKey, "")
         lst = info.split('|')
         
-        dt = QDateTime()
+        dt = None
         if len(lst) and lst[0]:
-            dt = QDateTime.fromString(lst[0], Qt.DateFormat.ISODate)
+            dt = datetime.datetime.fromisoformat(lst[0])
         
         qchFile = ""
         if len(lst) == 2:
             qchFile = lst[1]
         
         if version == 5:
-            docsPath = QLibraryInfo.path(
-                QLibraryInfo.LibraryPath.DocumentationPath)
+            docsPath = pathlib.Path(QLibraryInfo.path(
+                QLibraryInfo.LibraryPath.DocumentationPath))
             if (
-                not os.path.isdir(docsPath) or
-                len(QDir(docsPath).entryList(["*.qch"])) == 0
+                not docsPath.is_dir() or
+                len(docsPath.glob("*.qch")) == 0
             ):
-                docsPathList = QDir.fromNativeSeparators(docsPath).split("/")
-                docsPath = os.sep.join(
-                    docsPathList[:-3] +
-                    ["Docs", "Qt-{0}.{1}".format(*qVersionTuple())])
-            docsPath = QDir(docsPath)
+                docsPath = (
+                    docsPath.parents[2] / "Docs" /
+                    "Qt-{0}.{1}".format(*qVersionTuple())
+                )
         else:
             # unsupported Qt version
             return False
         
-        files = docsPath.entryList(["*.qch"])
+        files = docsPath.glob("*.qch")
         if not files:
-            engine.setCustomValue(
-                versionKey,
-                QDateTime().toString(Qt.DateFormat.ISODate) + '|')
+            engine.setCustomValue(versionKey, '|')
             return False
         
         for f in files:
-            if f.startswith(name + "."):
-                fi = QFileInfo(docsPath.absolutePath() + QDir.separator() + f)
-                namespace = QHelpEngineCore.namespaceName(
-                    fi.absoluteFilePath())
+            if f.stem == name:
+                namespace = QHelpEngineCore.namespaceName(str(f.resolve()))
                 if not namespace:
                     continue
                 
                 if (
-                    dt.isValid() and
+                    dt is not None and
                     namespace in engine.registeredDocumentations() and
-                    (fi.lastModified().toString(Qt.DateFormat.ISODate) ==
-                     dt.toString(Qt.DateFormat.ISODate)) and
-                    qchFile == fi.absoluteFilePath()
+                    (datetime.datetime.fromtimestamp(f.stat().st_mtime) ==
+                     dt) and
+                    qchFile == str(f.resolve())
                 ):
                     return False
                 
                 if namespace in engine.registeredDocumentations():
                     engine.unregisterDocumentation(namespace)
                 
-                if not engine.registerDocumentation(fi.absoluteFilePath()):
+                if not engine.registerDocumentation(str(f.resolve())):
                     self.errorMessage.emit(
                         self.tr(
                             """<p>The file <b>{0}</b> could not be"""
                             """ registered. <br/>Reason: {1}</p>""")
-                        .format(fi.absoluteFilePath, engine.error())
+                        .format(f, engine.error())
                     )
                     return False
                 
                 engine.setCustomValue(
                     versionKey,
-                    fi.lastModified().toString(Qt.DateFormat.ISODate) + '|' +
-                    fi.absoluteFilePath())
+                    datetime.datetime.fromtimestamp(f.stat().st_mtime)
+                    .isoformat() + '|' + str(f.resolve()))
                 return True
         
         return False
@@ -206,55 +200,52 @@
         info = engine.customValue(versionKey, "")
         lst = info.split('|')
         
-        dt = QDateTime()
+        dt = None
         if len(lst) and lst[0]:
-            dt = QDateTime.fromString(lst[0], Qt.DateFormat.ISODate)
+            dt = datetime.datetime.fromisoformat(lst[0])
         
         qchFile = ""
         if len(lst) == 2:
             qchFile = lst[1]
         
-        docsPath = QDir(getConfig("ericDocDir") + QDir.separator() + "Help")
+        docsPath = pathlib.Path(getConfig("ericDocDir")) / "Help"
         
-        files = docsPath.entryList(["*.qch"])
+        files = docsPath.glob("*.qch")
         if not files:
-            engine.setCustomValue(
-                versionKey, QDateTime().toString(Qt.DateFormat.ISODate) + '|')
+            engine.setCustomValue(versionKey, '|')
             return False
         
         for f in files:
-            if f == "source.qch":
-                fi = QFileInfo(docsPath.absolutePath() + QDir.separator() + f)
-                namespace = QHelpEngineCore.namespaceName(
-                    fi.absoluteFilePath())
+            if f.name == "source.qch":
+                namespace = QHelpEngineCore.namespaceName(str(f.resolve()))
                 if not namespace:
                     continue
                 
                 if (
-                    dt.isValid() and
+                    dt is not None and
                     namespace in engine.registeredDocumentations() and
-                    (fi.lastModified().toString(Qt.DateFormat.ISODate) ==
-                     dt.toString(Qt.DateFormat.ISODate)) and
-                    qchFile == fi.absoluteFilePath()
+                    (datetime.datetime.fromtimestamp(f.stat().st_mtime) ==
+                     dt) and
+                    qchFile == str(f.resolve())
                 ):
                     return False
                 
                 if namespace in engine.registeredDocumentations():
                     engine.unregisterDocumentation(namespace)
                 
-                if not engine.registerDocumentation(fi.absoluteFilePath()):
+                if not engine.registerDocumentation(str(f.resolve())):
                     self.errorMessage.emit(
                         self.tr(
                             """<p>The file <b>{0}</b> could not be"""
                             """ registered. <br/>Reason: {1}</p>""")
-                        .format(fi.absoluteFilePath, engine.error())
+                        .format(f, engine.error())
                     )
                     return False
                 
                 engine.setCustomValue(
                     versionKey,
-                    fi.lastModified().toString(Qt.DateFormat.ISODate) + '|' +
-                    fi.absoluteFilePath())
+                    datetime.datetime.fromtimestamp(f.stat().st_mtime)
+                    .isoformat() + '|' + str(f.resolve()))
                 return True
         
         return False

eric ide

mercurial