Edouard@1950: #!/usr/bin/env python
Edouard@1950: # -*- coding: utf-8 -*-
Edouard@1950: # This file is part of Beremiz.
Edouard@1950: # See COPYING file for copyrights details.
Edouard@1950: 
Edouard@1950: from __future__ import absolute_import
Edouard@1953: from plcopen.XSLTModelQuery import XSLTModelQuery
Edouard@1950: from plcopen.types_enums import *
Edouard@1950: 
Edouard@1953: 
Edouard@1950: class InstanceTagName(object):
Edouard@1950:     """Helpers object for generating instance tagname"""
Edouard@1950: 
Edouard@1950:     def __init__(self):
Edouard@1950:         self.TagName = None
Edouard@1950: 
Edouard@1950:     def GetTagName(self):
Edouard@1950:         return self.TagName
Edouard@1950: 
Edouard@1950:     def ConfigTagName(self, context, *args):
Edouard@1950:         self.TagName = ComputeConfigurationName(args[0][0])
Edouard@1950: 
Edouard@1950:     def ResourceTagName(self, context, *args):
Edouard@1950:         self.TagName = ComputeConfigurationResourceName(args[0][0], args[1][0])
Edouard@1950: 
Edouard@1950:     def PouTagName(self, context, *args):
Edouard@1950:         self.TagName = ComputePouName(args[0][0])
Edouard@1950: 
Edouard@1950:     def ActionTagName(self, context, *args):
Edouard@1950:         self.TagName = ComputePouActionName(args[0][0], args[0][1])
Edouard@1950: 
Edouard@1950:     def TransitionTagName(self, context, *args):
Edouard@1950:         self.TagName = ComputePouTransitionName(args[0][0], args[0][1])
Edouard@1950: 
Edouard@1950: 
Edouard@1950: class InstanceTagnameCollector(XSLTModelQuery):
Edouard@1950:     """ object for collecting instances path list"""
Edouard@1950:     def __init__(self, controller):
Edouard@1950:         XSLTModelQuery.__init__(self,
Edouard@1950:                                 controller,
Edouard@1950:                                 "instance_tagname.xslt",
Edouard@1953:                                 [(name, self.FactoryCaller(name))
Edouard@1953:                                  for name in ["ConfigTagName",
Edouard@1953:                                               "ResourceTagName",
Edouard@1953:                                               "PouTagName",
Edouard@1953:                                               "ActionTagName",
Edouard@1953:                                               "TransitionTagName"]])
Edouard@1950: 
Edouard@1950:     def FactoryCaller(self, funcname):
Edouard@1950:         def CallFactory(*args):
Edouard@1950:             return getattr(self.factory, funcname)(*args)
Edouard@1950:         return CallFactory
Edouard@1950: 
Edouard@1950:     def Collect(self, root, debug, instance_path):
Edouard@1950:         self.factory = InstanceTagName()
Edouard@1950:         self._process_xslt(root, debug, instance_path=instance_path)
Edouard@1950:         res = self.factory.GetTagName()
Edouard@1950:         self.factory = None
Edouard@1950:         return res