--- a/connectors/__init__.py Tue Oct 30 14:08:28 2018 +0100
+++ b/connectors/__init__.py Thu Nov 08 09:39:06 2018 +0100
@@ -30,31 +30,33 @@
from os import listdir, path
import util.paths as paths
-_base_path = paths.AbsDir(__file__)
+connectors_packages = ["PYRO","WAMP"]
+
def _GetLocalConnectorClassFactory(name):
return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_factory")
-def _GetLocalConnectorClassDialog(name):
- return lambda: getattr(__import__(name + '.dialog', globals(), locals(), fromlist=['dialog']), name + "_connector_dialog")
+connectors = {name: _GetLocalConnectorClassFactory(name)
+ for name in connectors_packages}
+_dialogs_imported = False
+per_URI_connectors = None
+schemes = None
-def _GetLocalConnectorURITypes(name):
- return lambda: getattr(__import__(name + '.dialog', globals(), locals(), fromlist=['dialog']), "URITypes", None)
+# lazy import of connectors dialogs, only if used
+def _Import_Dialogs():
+ global per_URI_connectors, schemes, _dialogs_imported
+ if not _dialogs_imported:
+ _dialogs_imported = True
+ per_URI_connectors = {}
+ schemes = []
+ for con_name in connectors_packages:
+ module = __import__(con_name + '_dialog', globals(), locals())
-
-connectors = {name:
- _GetLocalConnectorClassFactory(name)
- for name in listdir(_base_path)
- if (path.isdir(path.join(_base_path, name)) and
- not name.startswith("__"))}
-
-connectors_dialog = {name:
- {"function": _GetLocalConnectorClassDialog(name), "URITypes": _GetLocalConnectorURITypes(name)}
- for name in listdir(_base_path)
- if (path.isdir(path.join(_base_path, name)) and
- not name.startswith("__"))}
+ for scheme in module.Schemes:
+ per_URI_connectors[scheme] = getattr(module, con_name + '_dialog')
+ schemes += [scheme]
def ConnectorFactory(uri, confnodesroot):
@@ -83,20 +85,10 @@
return connectorclass(uri, confnodesroot)
-def ConnectorDialog(conn_type, confnodesroot):
- if conn_type not in connectors_dialog:
- return None
+def EditorClassFromScheme(scheme):
+ _Import_Dialogs()
+ return per_URI_connectors.get(scheme, None)
- connectorclass = connectors_dialog[conn_type]["function"]()
- return connectorclass(confnodesroot)
-
-
-def GetConnectorFromURI(uri):
- typeOfConnector = None
- for conn_type in connectors_dialog:
- connectorTypes = connectors_dialog[conn_type]["URITypes"]()
- if connectorTypes and uri in connectorTypes:
- typeOfConnector = conn_type
- break
-
- return typeOfConnector
+def ConnectorSchemes():
+ _Import_Dialogs()
+ return schemes