PLCControler.py
changeset 1937 986dbad48ab7
parent 1935 f2b0d849ea77
child 1939 db478d17bc3a
equal deleted inserted replaced
1936:b85b13b1c2ec 1937:986dbad48ab7
   269 
   269 
   270 class InstancesPathCollector(object):
   270 class InstancesPathCollector(object):
   271     """ object for collecting instances path list"""
   271     """ object for collecting instances path list"""
   272     def __init__(self, controller):
   272     def __init__(self, controller):
   273         self.Instances = []
   273         self.Instances = []
   274         
   274         self.controller = controller
   275         parser = etree.XMLParser()
   275         parser = etree.XMLParser()
   276         # arbitrary set debug to false, updated later
   276         # arbitrary set debug to false, updated later
   277         self.resolver = LibraryResolver(controller, debug=False)
   277         self.debug = False
   278         parser.resolvers.add(self.resolver)
       
   279 
   278 
   280         # TODO compile XSLT once for all at __init__
   279         # TODO compile XSLT once for all at __init__
   281         self.instances_path_xslt_tree = etree.XSLT(
   280         self.instances_path_xslt_tree = etree.XSLT(
   282             etree.parse(
   281             etree.parse(
   283                 os.path.join(ScriptDirectory, "plcopen", "instances_path.xslt"),
   282                 os.path.join(ScriptDirectory, "plcopen", "instances_path.xslt"),
   284                 parser),
   283                 parser),
   285             extensions={
   284             extensions={
   286                 ("instances_ns", "AddInstance"): self.AddInstance})
   285                 ("instances_ns", "AddInstance"): self.AddInstance,
       
   286                 ("instances_ns", "GetProject"): self.GetProject,
       
   287                 ("instances_ns", "GetStdLibs"): self.GetStdLibs,
       
   288                 ("instances_ns", "GetExtensions"): self.GetExtensions})
   287 
   289 
   288     def AddInstance(self, context, *args):
   290     def AddInstance(self, context, *args):
   289         self.Instances.append(args[0][0])
   291         self.Instances.append(args[0][0])
   290 
   292 
       
   293     def GetProject(self, context, *args):
       
   294         return self.controller.GetProject(self.debug)
       
   295 
       
   296     def GetStdLibs(self, context, *args):
       
   297         return [lib for lib in StdBlckLibs.values()]
       
   298 
       
   299     def GetExtensions(self, context, *args):
       
   300         return [ctn["types"] for ctn in self.controller.ConfNodeTypes]
       
   301 
   291     def Collect(self, root, name, debug):
   302     def Collect(self, root, name, debug):
   292         self.resolver.debug = debug
   303         self.debug = debug
   293         self.instances_path_xslt_tree(
   304         self.instances_path_xslt_tree(
   294             root, instance_type=etree.XSLT.strparam(name))
   305             root, instance_type=etree.XSLT.strparam(name))
   295         res = self.Instances
   306         res = self.Instances
   296         self.Instances = []
   307         self.Instances = []
   297         return res
   308         return res