113 array = el.find("array") |
113 array = el.find("array") |
114 return ('array', array.text, compute_dimensions(array)) |
114 return ('array', array.text, compute_dimensions(array)) |
115 elif el.tag == "Tree": |
115 elif el.tag == "Tree": |
116 return generate_var_tree(el) |
116 return generate_var_tree(el) |
117 elif el.tag == "Edit": |
117 elif el.tag == "Edit": |
118 return True |
118 return el.text == "True" |
119 elif el.text is None: |
119 elif el.text is None: |
120 return '' |
120 return '' |
121 return el.text |
121 return el.text |
122 |
122 |
123 def generate_var_tree(tree): |
123 def generate_var_tree(tree): |
154 |
154 |
155 datatype_infos = self.Controller.GetDataType(typename, self.Debug) |
155 datatype_infos = self.Controller.GetDataType(typename, self.Debug) |
156 if datatype_infos is not None: |
156 if datatype_infos is not None: |
157 self.apply_templates(context, datatype_infos, output_parent) |
157 self.apply_templates(context, datatype_infos, output_parent) |
158 return |
158 return |
|
159 |
|
160 class VarIsEdited(etree.XSLTExtension): |
|
161 |
|
162 def __init__(self, controller, debug): |
|
163 etree.XSLTExtension.__init__(self) |
|
164 self.Controller = controller |
|
165 self.Debug = debug |
|
166 |
|
167 def execute(self, context, self_node, input_node, output_parent): |
|
168 typename = input_node.get("name") |
|
169 output_parent.text = str( |
|
170 self.Controller.GetPou(typename, self.Debug) is None) |
159 |
171 |
160 variables_infos_xslt = etree.parse( |
172 variables_infos_xslt = etree.parse( |
161 os.path.join(ScriptDirectory, "plcopen", "variables_infos.xslt")) |
173 os.path.join(ScriptDirectory, "plcopen", "variables_infos.xslt")) |
162 |
174 |
163 #------------------------------------------------------------------------------- |
175 #------------------------------------------------------------------------------- |
1209 variables = [] |
1221 variables = [] |
1210 |
1222 |
1211 variables_infos_xslt_tree = etree.XSLT( |
1223 variables_infos_xslt_tree = etree.XSLT( |
1212 variables_infos_xslt, extensions = { |
1224 variables_infos_xslt, extensions = { |
1213 ("var_infos_ns", "add_variable"): AddVariable(variables), |
1225 ("var_infos_ns", "add_variable"): AddVariable(variables), |
1214 ("var_infos_ns", "var_tree"): VarTree(self, debug)}) |
1226 ("var_infos_ns", "var_tree"): VarTree(self, debug), |
|
1227 ("var_infos_ns", "is_edited"): VarIsEdited(self, debug)}) |
1215 variables_infos_xslt_tree(object_with_vars) |
1228 variables_infos_xslt_tree(object_with_vars) |
1216 |
1229 |
1217 return variables |
1230 return variables |
1218 |
1231 |
1219 # Add a global var to configuration to configuration |
1232 # Add a global var to configuration to configuration |