PLCControler.py
changeset 1937 986dbad48ab7
parent 1935 f2b0d849ea77
child 1939 db478d17bc3a
--- a/PLCControler.py	Fri Feb 16 01:48:48 2018 +0100
+++ b/PLCControler.py	Fri Feb 16 02:29:10 2018 +0100
@@ -271,11 +271,10 @@
     """ object for collecting instances path list"""
     def __init__(self, controller):
         self.Instances = []
-        
+        self.controller = controller
         parser = etree.XMLParser()
         # arbitrary set debug to false, updated later
-        self.resolver = LibraryResolver(controller, debug=False)
-        parser.resolvers.add(self.resolver)
+        self.debug = False
 
         # TODO compile XSLT once for all at __init__
         self.instances_path_xslt_tree = etree.XSLT(
@@ -283,13 +282,25 @@
                 os.path.join(ScriptDirectory, "plcopen", "instances_path.xslt"),
                 parser),
             extensions={
-                ("instances_ns", "AddInstance"): self.AddInstance})
+                ("instances_ns", "AddInstance"): self.AddInstance,
+                ("instances_ns", "GetProject"): self.GetProject,
+                ("instances_ns", "GetStdLibs"): self.GetStdLibs,
+                ("instances_ns", "GetExtensions"): self.GetExtensions})
 
     def AddInstance(self, context, *args):
         self.Instances.append(args[0][0])
 
+    def GetProject(self, context, *args):
+        return self.controller.GetProject(self.debug)
+
+    def GetStdLibs(self, context, *args):
+        return [lib for lib in StdBlckLibs.values()]
+
+    def GetExtensions(self, context, *args):
+        return [ctn["types"] for ctn in self.controller.ConfNodeTypes]
+
     def Collect(self, root, name, debug):
-        self.resolver.debug = debug
+        self.debug = debug
         self.instances_path_xslt_tree(
             root, instance_type=etree.XSLT.strparam(name))
         res = self.Instances