fix debug button and variable tree generate for actions and transitions in POU instance variable panel
authorSurkov Sergey <surkovsv93@gmail.com>
Tue, 28 Mar 2017 17:09:31 +0300
changeset 1669 54da2cfe0180
parent 1668 cd9db17c7ab5
child 1670 cd03b8432541
fix debug button and variable tree generate for actions and transitions in POU instance variable panel
for 'None' type instances(Python POU's, Native, SVGUI, user-defined pou's, etc.) debug button will be disabled. If action or transition instances have opened in instance variable panel,variables from main POU will be loaded. When user press debug button on variable instance in action or transition, instance path to main POU will be used, because all variables of action or transition in instance variable tree belong to main POU.
controls/PouInstanceVariablesPanel.py
--- a/controls/PouInstanceVariablesPanel.py	Tue Mar 28 11:31:05 2017 +0300
+++ b/controls/PouInstanceVariablesPanel.py	Tue Mar 28 17:09:31 2017 +0300
@@ -229,11 +229,16 @@
         self.VariablesList.DeleteAllItems()
         
         if self.Controller is not None and self.PouTagName is not None:
-            self.PouInfos = self.Controller.GetPouVariables(self.PouTagName, self.Debug)
+            if self.PouTagName.split('::')[0] in ['A', 'T']:
+                self.PouInfos = self.Controller.GetPouVariables('P::%s' % self.PouTagName.split('::')[1], self.Debug)
+            else:
+                self.PouInfos = self.Controller.GetPouVariables(self.PouTagName, self.Debug)
+            if None in self.Controller.GetEditedElementType(self.PouTagName, self.Debug) and self.PouInfos is not None:
+                self.PouInfos.debug = False
         else:
             self.PouInfos = None
         if self.PouInfos is not None:
-            root = self.VariablesList.AddRoot("")
+            root = self.VariablesList.AddRoot("", data=self.PouInfos)
             for var_infos in self.PouInfos.variables:
                 if var_infos.type is not None:
                     text = "%s (%s)" % (var_infos.name, var_infos.type)
@@ -313,8 +318,11 @@
     def DebugButtonCallback(self, infos):
         if self.InstanceChoice.GetSelection() != -1:
             var_class = infos.var_class
-            var_path = "%s.%s" % (self.InstanceChoice.GetStringSelection(), 
-                                  infos.name)
+            instance_path = self.InstanceChoice.GetStringSelection()
+            if self.PouTagName.split("::")[0] in ["A", "T"]:
+                pos = instance_path.rfind('.')
+                instance_path = instance_path[0:pos]
+            var_path = "%s.%s" % (instance_path, infos.name)
             if var_class in ITEMS_VARIABLE:
                 self.ParentWindow.AddDebugVariable(var_path, force=True)
             elif var_class == ITEM_TRANSITION:
@@ -401,7 +409,13 @@
                         else:
                             tagname = None
                     else:
-                        tagname = self.Controller.ComputePouName(item_infos.type)
+                        parent_infos = self.VariablesList.GetPyData(selected_item.GetParent())
+                        if item_infos.var_class == ITEM_ACTION:
+                            tagname = self.Controller.ComputePouActionName(parent_infos.type, item_infos.name)
+                        elif item_infos.var_class == ITEM_TRANSITION:
+                            tagname = self.Controller.ComputePouTransitionName(parent_infos.type, item_infos.name)
+                        else:
+                            tagname = self.Controller.ComputePouName(item_infos.type)
                     if tagname is not None:
                         if instance_path != "":
                             item_path = "%s.%s" % (instance_path, item_infos.name)