src/eric7/WebBrowser/Bookmarks/BookmarksImporters/__init__.py

branch
eric7
changeset 9489
c03b8323d11a
parent 9482
a2bc06a54d9d
child 9497
8beca4047c53
--- a/src/eric7/WebBrowser/Bookmarks/BookmarksImporters/__init__.py	Tue Nov 08 16:23:26 2022 +0100
+++ b/src/eric7/WebBrowser/Bookmarks/BookmarksImporters/__init__.py	Tue Nov 08 16:57:46 2022 +0100
@@ -7,6 +7,8 @@
 Package implementing bookmarks importers for various sources.
 """
 
+import importlib
+
 from PyQt6.QtCore import QCoreApplication
 
 from eric7 import Globals
@@ -58,81 +60,60 @@
     """
     Module function to get information for the given source id.
 
-    @param sourceId source id to get info for (string)
-    @return tuple with an icon (QPixmap), readable name (string), name of
-        the default bookmarks file (string), an info text (string),
-        a prompt (string) and the default directory of the bookmarks
-        file (string)
+    @param sourceId source id to get info for
+    @type str
+    @return tuple with an icon, readable name, name of the default bookmarks file,
+        an info text, a prompt and the default directory of the bookmarks file
+    @rtype tuple of (QPixmap, str, str, str, str, str)
     @exception ValueError raised to indicate an unsupported importer
     """
-    if sourceId in ["e5browser", "xbel", "konqueror"]:
-        from . import XbelImporter  # __IGNORE_WARNING_I101__
-
-        return XbelImporter.getImporterInfo(sourceId)
-    elif sourceId == "html":
-        from . import HtmlImporter  # __IGNORE_WARNING_I101__
-
-        return HtmlImporter.getImporterInfo(sourceId)
-    elif sourceId in ["chrome", "chromium"]:
-        from . import ChromeImporter  # __IGNORE_WARNING_I101__
-
-        return ChromeImporter.getImporterInfo(sourceId)
-    elif sourceId == "opera":
-        from . import OperaImporter  # __IGNORE_WARNING_I101__
-
-        return OperaImporter.getImporterInfo(sourceId)
-    elif sourceId == "firefox":
-        from . import FirefoxImporter  # __IGNORE_WARNING_I101__
-
-        return FirefoxImporter.getImporterInfo(sourceId)
-    elif sourceId == "ie":
-        from . import IExplorerImporter  # __IGNORE_WARNING_I101__
-
-        return IExplorerImporter.getImporterInfo(sourceId)
-    elif sourceId == "safari":
-        from . import SafariImporter  # __IGNORE_WARNING_I101__
-
-        return SafariImporter.getImporterInfo(sourceId)
-    else:
-        raise ValueError("Invalid importer ID given ({0}).".format(sourceId))
+    mod = getImporterModule(sourceId)
+    return mod.getImporterInfo(sourceId)
 
 
 def getImporter(sourceId, parent=None):
     """
     Module function to get an importer for the given source id.
 
-    @param sourceId source id to get an importer for (string)
-    @param parent reference to the parent object (QObject)
-    @return bookmarks importer (BookmarksImporter)
+    @param sourceId source id to get an importer for
+    @type str
+    @param parent reference to the parent object
+    @type QObject
+    @return bookmarks importer
+    @rtype BookmarksImporter
     @exception ValueError raised to indicate an unsupported importer
     """
-    if sourceId in ["e5browser", "xbel", "konqueror"]:
-        from . import XbelImporter  # __IGNORE_WARNING_I101__
+    mod = getImporterModule(sourceId)
+    return mod.createImporter(sourceId=sourceId, parent=parent)
 
-        return XbelImporter.XbelImporter(sourceId, parent)
-    elif sourceId == "html":
-        from . import HtmlImporter  # __IGNORE_WARNING_I101__
 
-        return HtmlImporter.HtmlImporter(sourceId, parent)
-    elif sourceId in ["chrome", "chromium"]:
-        from . import ChromeImporter  # __IGNORE_WARNING_I101__
-
-        return ChromeImporter.ChromeImporter(sourceId, parent)
-    elif sourceId == "opera":
-        from . import OperaImporter  # __IGNORE_WARNING_I101__
+def getImporterModule(sourceId):
+    """
+    Function 
 
-        return OperaImporter.OperaImporter(sourceId, parent)
-    elif sourceId == "firefox":
-        from . import FirefoxImporter  # __IGNORE_WARNING_I101__
-
-        return FirefoxImporter.FirefoxImporter(sourceId, parent)
-    elif sourceId == "ie":
-        from . import IExplorerImporter  # __IGNORE_WARNING_I101__
+    @param sourceId source id to get an importer module for
+    @type str
+    @return reference to the imported module
+    @rtype module
+    @exception ValueError raised to indicate an unsupported importer
+    """
+    importerMapping = {
+        "chrome": "ChromeImporter",
+        "chromium": "ChromeImporter",
+        "e5browser": "XbelImporter",
+        "firefox": "FirefoxImporter",
+        "html": "HtmlImporter",
+        "ie": "IExplorerImporter",
+        "konqueror": "XbelImporter",
+        "opera": "OperaImporter",
+        "safari": "SafariImporter",
+        "xbel": "XbelImporter",
+    }
+    if sourceId in importerMapping:
+        return importlib.import_module(
+            "eric7.WebBrowser.Bookmarks.BookmarksImporters.{0}".format(
+                importerMapping[sourceId]
+            )
+        )
 
-        return IExplorerImporter.IExplorerImporter(sourceId, parent)
-    elif sourceId == "safari":
-        from . import SafariImporter  # __IGNORE_WARNING_I101__
-
-        return SafariImporter.SafariImporter(sourceId, parent)
-    else:
-        raise ValueError("No importer for ID {0}.".format(sourceId))
+    raise ValueError("Invalid importer ID given ({0}).".format(sourceId))

eric ide

mercurial