252 |
252 |
253 #------------------------------------------------------------------------------- |
253 #------------------------------------------------------------------------------- |
254 # Helpers object for generating instance tagname |
254 # Helpers object for generating instance tagname |
255 #------------------------------------------------------------------------------- |
255 #------------------------------------------------------------------------------- |
256 |
256 |
257 class InstanceTagName(etree.XSLTExtension): |
257 class InstanceTagName: |
258 |
258 |
259 def __init__(self, controller): |
259 def __init__(self, controller): |
260 etree.XSLTExtension.__init__(self) |
|
261 self.Controller = controller |
260 self.Controller = controller |
262 |
261 self.TagName = None |
263 def GetTagName(self, infos): |
262 |
264 return "" |
263 def GetTagName(self): |
265 |
264 return self.TagName |
266 def execute(self, context, self_node, input_node, output_parent): |
265 |
267 tagname_infos = etree.Element('infos') |
266 def ConfigTagName(self, context, *args): |
268 self.process_children(context, tagname_infos) |
267 self.TagName = self.Controller.ComputeConfigurationName(args[0][0]) |
269 tagname = etree.Element('tagname') |
268 |
270 tagname.text = self.GetTagName(tagname_infos) |
269 def ResourceTagName(self, context, *args): |
271 try: |
270 self.TagName = self.Controller.ComputeConfigurationResourceName(args[0][0], args[1][0]) |
272 output_parent.append(tagname) |
271 |
273 except: |
272 def PouTagName(self, context, *args): |
274 pass |
273 #print "PouTagName", etree.tostring(args[0][0]) |
275 |
274 self.TagName = self.Controller.ComputePouName(args[0][0]) |
276 class ConfigTagName(InstanceTagName): |
275 |
277 |
276 def ActionTagName(self, context, *args): |
278 def GetTagName(self, infos): |
277 self.TagName = self.Controller.ComputePouActionName(args[0][0], args[0][1]) |
279 return self.Controller.ComputeConfigurationName(infos.get("name")) |
278 |
280 |
279 def TransitionTagName(self, context, *args): |
281 class ResourceTagName(InstanceTagName): |
280 self.TagName = self.Controller.ComputePouTransitionName(args[0][0], args[0][1]) |
282 |
|
283 def GetTagName(self, infos): |
|
284 return self.Controller.ComputeConfigurationResourceName( |
|
285 infos.get("config_name"), infos.get("name")) |
|
286 |
|
287 class PouTagName(InstanceTagName): |
|
288 |
|
289 def GetTagName(self, infos): |
|
290 return self.Controller.ComputePouName(infos.get("name")) |
|
291 |
|
292 class ActionTagName(InstanceTagName): |
|
293 |
|
294 def GetTagName(self, infos): |
|
295 return self.Controller.ComputePouActionName( |
|
296 infos.get("pou_name"), infos.get("name")) |
|
297 |
|
298 class TransitionTagName(InstanceTagName): |
|
299 |
|
300 def GetTagName(self, infos): |
|
301 return self.Controller.ComputePouTransitionName( |
|
302 infos.get("pou_name"), infos.get("name")) |
|
303 |
|
304 instance_tagname_xslt = etree.parse( |
|
305 os.path.join(ScriptDirectory, "plcopen", "instance_tagname.xslt")) |
|
306 |
281 |
307 #------------------------------------------------------------------------------- |
282 #------------------------------------------------------------------------------- |
308 # Helpers object for generating pou block instances list |
283 # Helpers object for generating pou block instances list |
309 #------------------------------------------------------------------------------- |
284 #------------------------------------------------------------------------------- |
310 |
285 |
810 self.ComputePouName(words[1]), debug)] |
785 self.ComputePouName(words[1]), debug)] |
811 return [] |
786 return [] |
812 |
787 |
813 def GetPouInstanceTagName(self, instance_path, debug = False): |
788 def GetPouInstanceTagName(self, instance_path, debug = False): |
814 project = self.GetProject(debug) |
789 project = self.GetProject(debug) |
|
790 factory = InstanceTagName(self) |
|
791 |
|
792 parser = etree.XMLParser() |
|
793 parser.resolvers.add(LibraryResolver(self, debug)) |
815 |
794 |
816 instance_tagname_xslt_tree = etree.XSLT( |
795 instance_tagname_xslt_tree = etree.XSLT( |
817 instance_tagname_xslt, |
796 etree.parse( |
818 extensions = { |
797 os.path.join(ScriptDirectory, "plcopen", "instance_tagname.xslt"), |
819 ("instance_tagname_ns", "instance_definition"): InstanceDefinition(self, debug), |
798 parser), |
820 ("instance_tagname_ns", "config_tagname"): ConfigTagName(self), |
799 extensions = {("instance_tagname_ns", name): getattr(factory, name) |
821 ("instance_tagname_ns", "resource_tagname"): ResourceTagName(self), |
800 for name in ["ConfigTagName", "ResourceTagName", |
822 ("instance_tagname_ns", "pou_tagname"): PouTagName(self), |
801 "PouTagName", "ActionTagName", |
823 ("instance_tagname_ns", "action_tagname"): ActionTagName(self), |
802 "TransitionTagName"]}) |
824 ("instance_tagname_ns", "transition_tagname"): TransitionTagName(self)}) |
803 |
825 |
804 instance_tagname_xslt_tree(project, |
826 result = instance_tagname_xslt_tree(project, |
805 instance_path=etree.XSLT.strparam(instance_path)) |
827 instance_path=etree.XSLT.strparam(instance_path)).getroot() |
806 |
828 if result is not None: |
807 return factory.GetTagName() |
829 return result.text |
|
830 |
|
831 return None |
|
832 |
808 |
833 def GetInstanceInfos(self, instance_path, debug = False): |
809 def GetInstanceInfos(self, instance_path, debug = False): |
834 tagname = self.GetPouInstanceTagName(instance_path) |
810 tagname = self.GetPouInstanceTagName(instance_path) |
835 if tagname is not None: |
811 if tagname is not None: |
836 infos = self.GetPouVariables(tagname, debug) |
812 infos = self.GetPouVariables(tagname, debug) |