Viewer.py
changeset 121 40b91ba978db
parent 118 0c53d6a36013
child 122 e6faee0c271b
equal deleted inserted replaced
120:add8e391e00c 121:40b91ba978db
    65         if values[1] == "program":
    65         if values[1] == "program":
    66             message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR)
    66             message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR)
    67             message.ShowModal()
    67             message.ShowModal()
    68             message.Destroy()
    68             message.Destroy()
    69         elif values[1] in ["function", "functionBlock", "program"]:
    69         elif values[1] in ["function", "functionBlock", "program"]:
    70             name, type = self.ParentWindow.Controler.GetCurrentElementEditingType()
    70             name, type = self.ParentWindow.Controler.GetEditedElementType(self.TagName)
    71             if name == values[0]:
    71             if name == values[0]:
    72                 message = wx.MessageDialog(self.ParentWindow, "\"%s\" can't use itself!"%name, "Error", wx.OK|wx.ICON_ERROR)
    72                 message = wx.MessageDialog(self.ParentWindow, "\"%s\" can't use itself!"%name, "Error", wx.OK|wx.ICON_ERROR)
    73                 message.ShowModal()
    73                 message.ShowModal()
    74                 message.Destroy()
    74                 message.Destroy()
    75             elif type == "function" and values[1] != "function":
    75             elif type == "function" and values[1] != "function":
    91                 block = FBD_Block(self.ParentWindow, values[0], blockname, id)
    91                 block = FBD_Block(self.ParentWindow, values[0], blockname, id)
    92                 block.SetPosition(x, y)
    92                 block.SetPosition(x, y)
    93                 width, height = block.GetMinSize()
    93                 width, height = block.GetMinSize()
    94                 block.SetSize(width, height)
    94                 block.SetSize(width, height)
    95                 self.ParentWindow.AddBlock(block)
    95                 self.ParentWindow.AddBlock(block)
    96                 self.ParentWindow.Controler.AddCurrentElementEditingBlock(id, values[0], blockname)
    96                 self.ParentWindow.Controler.AddEditedElementBlock(self.TagName, id, values[0], blockname)
    97                 self.ParentWindow.RefreshBlockModel(block)
    97                 self.ParentWindow.RefreshBlockModel(block)
    98                 self.ParentWindow.RefreshBuffer()
    98                 self.ParentWindow.RefreshBuffer()
    99                 self.ParentWindow.RefreshScrollBars()
    99                 self.ParentWindow.RefreshScrollBars()
   100                 self.ParentWindow.ParentWindow.RefreshEditor()
   100                 self.ParentWindow.ParentWindow.RefreshEditor()
   101                 self.ParentWindow.Refresh()
   101                 self.ParentWindow.Refresh()
   102         elif values[1] != "location":
   102         elif values[1] != "location":
   103             id = self.ParentWindow.GetNewId()
   103             if values[3] == self.ParentWindow.GetTagName():
   104             if values[1] == "Output":
   104                 id = self.ParentWindow.GetNewId()
   105                 var_type = OUTPUT
   105                 if values[1] == "Output":
   106             elif values[1] == "InOut":
   106                     var_type = OUTPUT
   107                 var_type = INPUT
   107                 elif values[1] == "InOut":
   108             else:
   108                     var_type = INPUT
   109                 var_type = INPUT
   109                 else:
   110             variable = FBD_Variable(self.ParentWindow, var_type, values[0], values[2], id)
   110                     var_type = INPUT
   111             variable.SetPosition(x, y)
   111                 variable = FBD_Variable(self.ParentWindow, var_type, values[0], values[2], id)
   112             width, height = variable.GetMinSize()
   112                 variable.SetPosition(x, y)
   113             variable.SetSize(width, height)
   113                 width, height = variable.GetMinSize()
   114             self.ParentWindow.AddBlock(variable)
   114                 variable.SetSize(width, height)
   115             self.ParentWindow.Controler.AddCurrentElementEditingVariable(id, var_type)
   115                 self.ParentWindow.AddBlock(variable)
   116             self.ParentWindow.RefreshVariableModel(variable)
   116                 self.ParentWindow.Controler.AddEditedElementVariable(self.TagName, id, var_type)
   117             self.ParentWindow.RefreshBuffer()
   117                 self.ParentWindow.RefreshVariableModel(variable)
   118             self.ParentWindow.RefreshScrollBars()
   118                 self.ParentWindow.RefreshBuffer()
   119             self.ParentWindow.Refresh()
   119                 self.ParentWindow.RefreshScrollBars()
       
   120                 self.ParentWindow.Refresh()
       
   121             else:
       
   122                 message = wx.MessageDialog(self.ParentWindow, "Variable don't belong to this POU!", "Error", wx.OK|wx.ICON_ERROR)
       
   123                 message.ShowModal()
       
   124                 message.Destroy()
   120             
   125             
       
   126 if wx.VERSION >= (2, 8, 0):
       
   127     import wx.aui
       
   128 
       
   129     class MDIViewer(wx.aui.AuiMDIChildFrame):
       
   130         def __init__(self, parent, tagname, window, controler):
       
   131             wx.aui.AuiMDIChildFrame.__init__(self, parent, -1, title = "")
       
   132             
       
   133             sizer = wx.BoxSizer(wx.HORIZONTAL)
       
   134             
       
   135             self.Viewer = Viewer(self, tagname, window, controler)
       
   136             
       
   137             sizer.AddWindow(self.Viewer, 1, border=0, flag=wx.GROW)
       
   138             
       
   139             self.SetSizer(sizer)
       
   140         
       
   141         def GetViewer(self):
       
   142             return self.Viewer
   121 
   143 
   122 """
   144 """
   123 Class that implements a Viewer based on a wx.ScrolledWindow for drawing and 
   145 Class that implements a Viewer based on a wx.ScrolledWindow for drawing and 
   124 manipulating graphic elements
   146 manipulating graphic elements
   125 """
   147 """
   195         self.ContextualMenu = wx.Menu(title='')
   217         self.ContextualMenu = wx.Menu(title='')
   196         
   218         
   197         self._init_coll_ContextualMenu_Items(self.ContextualMenu)
   219         self._init_coll_ContextualMenu_Items(self.ContextualMenu)
   198     
   220     
   199     # Create a new Viewer
   221     # Create a new Viewer
   200     def __init__(self, parent, window, controler):
   222     def __init__(self, parent, tagname, window, controler):
   201         wx.ScrolledWindow.__init__(self, parent, pos=wx.Point(0, 0), size=wx.Size(0, 0), 
   223         wx.ScrolledWindow.__init__(self, parent, pos=wx.Point(0, 0), size=wx.Size(0, 0), 
   202             style=wx.SUNKEN_BORDER | wx.HSCROLL | wx.VSCROLL)
   224             style=wx.SUNKEN_BORDER | wx.HSCROLL | wx.VSCROLL)
   203         self._init_menus()
   225         self._init_menus()
   204         # Adding a rubberband to Viewer
   226         # Adding a rubberband to Viewer
   205         self.rubberBand = RubberBand(drawingSurface=self)
   227         self.rubberBand = RubberBand(drawingSurface=self)
   207         self.ResetView()
   229         self.ResetView()
   208         self.Scaling = None
   230         self.Scaling = None
   209         #self.Scaling = (8, 8)
   231         #self.Scaling = (8, 8)
   210         self.DrawGrid = True
   232         self.DrawGrid = True
   211         self.current_id = 0
   233         self.current_id = 0
       
   234         self.TagName = tagname
   212         
   235         
   213         # Initialize Block, Wire and Comment numbers
   236         # Initialize Block, Wire and Comment numbers
   214         self.block_id = self.wire_id = self.comment_id = 0
   237         self.block_id = self.wire_id = self.comment_id = 0
   215         
   238         
   216         # Initialize Viewer mode to Selection mode
   239         # Initialize Viewer mode to Selection mode
   233         self.Bind(wx.EVT_CHAR, self.OnChar)
   256         self.Bind(wx.EVT_CHAR, self.OnChar)
   234         if wx.VERSION < (2, 7, 0):
   257         if wx.VERSION < (2, 7, 0):
   235             self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow)
   258             self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow)
   236             self.Bind(wx.EVT_SIZE, self.OnMoveWindow)
   259             self.Bind(wx.EVT_SIZE, self.OnMoveWindow)
   237     
   260     
       
   261     def SetTagName(self, tagname):
       
   262         self.TagName = tagname
       
   263         
       
   264     def GetTagName(self):
       
   265         return self.TagName
       
   266     
       
   267     def IsViewing(self, tagname):
       
   268         return self.TagName == tagname
       
   269     
   238     # Returns a new id
   270     # Returns a new id
   239     def GetNewId(self):
   271     def GetNewId(self):
   240         self.current_id += 1
   272         self.current_id += 1
   241         return self.current_id
   273         return self.current_id
   242     
   274     
   312         self.Blocks = {}
   344         self.Blocks = {}
   313         self.Wires = {}
   345         self.Wires = {}
   314         self.Comments = {}
   346         self.Comments = {}
   315         self.SelectedElement = None
   347         self.SelectedElement = None
   316     
   348     
   317     # Verify wires type compatibility
       
   318     def VerifyVariableTypeCompatibility(self):
       
   319         to_delete = []
       
   320         for wire in self.Wires:
       
   321             if not wire.IsConnectedCompatible():
       
   322                 to_delete.append(wire)
       
   323         for wire in to_delete:
       
   324             wire.Delete()
       
   325     
       
   326     # Remove all elements
   349     # Remove all elements
   327     def CleanView(self):
   350     def CleanView(self):
   328         for block in self.Blocks.keys():
   351         for block in self.Blocks.keys():
   329             block.Clean()
   352             block.Clean()
   330         self.ResetView()
   353         self.ResetView()
   367         instance = True
   390         instance = True
   368         # List of ids of already loaded blocks
   391         # List of ids of already loaded blocks
   369         ids = []
   392         ids = []
   370         # Load Blocks until they are all loaded
   393         # Load Blocks until they are all loaded
   371         while instance:
   394         while instance:
   372             instance = self.Controler.GetCurrentElementEditingInstanceInfos(exclude=ids)
   395             instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, exclude=ids)
   373             if instance:
   396             if instance:
   374                 self.loadInstance(instance, ids)
   397                 self.loadInstance(instance, ids)
   375         self.RefreshScrollBars()
   398         self.RefreshScrollBars()
       
   399         
       
   400         to_delete = []
       
   401         for wire in self.Wires:
       
   402             if not wire.IsConnectedCompatible():
       
   403                 to_delete.append(wire)
       
   404         for wire in to_delete:
       
   405             wire.Delete()
       
   406     
   376         self.Refresh(False)
   407         self.Refresh(False)
   377     
   408     
   378     def RefreshScrollBars(self):
   409     def RefreshScrollBars(self):
   379         xstart, ystart = self.GetViewStart()
   410         xstart, ystart = self.GetViewStart()
   380         window_size = self.GetClientSize()
   411         window_size = self.GetClientSize()
   635     def CreateWires(self, start_connector, links, ids):
   666     def CreateWires(self, start_connector, links, ids):
   636         for link in links:
   667         for link in links:
   637             refLocalId = link["refLocalId"]
   668             refLocalId = link["refLocalId"]
   638             if refLocalId != None:
   669             if refLocalId != None:
   639                 if refLocalId not in ids:
   670                 if refLocalId not in ids:
   640                     new_instance = self.Controler.GetCurrentElementEditingInstanceInfos(refLocalId)
   671                     new_instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, refLocalId)
   641                     if new_instance:
   672                     if new_instance:
   642                         self.loadInstance(new_instance, ids)
   673                         self.loadInstance(new_instance, ids)
   643                 connected = self.FindElementById(refLocalId)
   674                 connected = self.FindElementById(refLocalId)
   644                 if connected:
   675                 if connected:
   645                     points = link["points"]
   676                     points = link["points"]
   705 #                           Popup menu functions
   736 #                           Popup menu functions
   706 #-------------------------------------------------------------------------------
   737 #-------------------------------------------------------------------------------
   707 
   738 
   708     def PopupBlockMenu(self, connector = None):
   739     def PopupBlockMenu(self, connector = None):
   709         if connector is not None and connector.IsCompatible("BOOL"):
   740         if connector is not None and connector.IsCompatible("BOOL"):
   710             type = self.Controler.GetCurrentElementEditingType()
   741             type = self.Controler.GetEditedElementType(self.TagName)
   711             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True)
   742             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True)
   712             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True)
   743             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True)
   713             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, type != "function")
   744             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, type != "function")
   714             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, type != "function")
   745             self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, type != "function")
   715         else:
   746         else:
   834             self.SelectedElement = None
   865             self.SelectedElement = None
   835             self.RefreshBuffer()
   866             self.RefreshBuffer()
   836         event.Skip()
   867         event.Skip()
   837 
   868 
   838     def OnClearExecutionOrderMenu(self, event):
   869     def OnClearExecutionOrderMenu(self, event):
   839         self.Controler.ClearCurrentExecutionOrder()
   870         self.Controler.ClearEditedElementExecutionOrder(self.TagName)
   840         self.RefreshBuffer()
   871         self.RefreshBuffer()
   841         self.RefreshView()
   872         self.RefreshView()
   842         
   873         
   843     def OnResetExecutionOrderMenu(self, event):
   874     def OnResetExecutionOrderMenu(self, event):
   844         self.Controler.ResetCurrentExecutionOrder()
   875         self.Controler.ResetEditedElementExecutionOrder(self.TagName)
   845         self.RefreshBuffer()
   876         self.RefreshBuffer()
   846         self.RefreshView()
   877         self.RefreshView()
   847 
   878 
   848 #-------------------------------------------------------------------------------
   879 #-------------------------------------------------------------------------------
   849 #                          Mouse event functions
   880 #                          Mouse event functions
  1111 #                          Model adding functions
  1142 #                          Model adding functions
  1112 #-------------------------------------------------------------------------------
  1143 #-------------------------------------------------------------------------------
  1113 
  1144 
  1114     def AddNewBlock(self, bbox):
  1145     def AddNewBlock(self, bbox):
  1115         dialog = BlockPropertiesDialog(self.ParentWindow)
  1146         dialog = BlockPropertiesDialog(self.ParentWindow)
  1116         dialog.SetBlockList(self.Controler.GetBlockTypes())
  1147         dialog.SetBlockList(self.Controler.GetBlockTypes(self.TagName))
  1117         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1148         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1118         dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables())
  1149         dialog.SetPouElementNames(self.Controler.GetEditedElementVariables(self.TagName))
  1119         dialog.SetMinBlockSize((bbox.width, bbox.height))
  1150         dialog.SetMinBlockSize((bbox.width, bbox.height))
  1120         if dialog.ShowModal() == wx.ID_OK:
  1151         if dialog.ShowModal() == wx.ID_OK:
  1121             id = self.GetNewId()
  1152             id = self.GetNewId()
  1122             values = dialog.GetValues()
  1153             values = dialog.GetValues()
  1123             if "name" in values:
  1154             if "name" in values:
  1125             else:
  1156             else:
  1126                 block = FBD_Block(self, values["type"], "", id, values["extension"], values["inputs"])
  1157                 block = FBD_Block(self, values["type"], "", id, values["extension"], values["inputs"])
  1127             block.SetPosition(bbox.x, bbox.y)
  1158             block.SetPosition(bbox.x, bbox.y)
  1128             block.SetSize(values["width"], values["height"])
  1159             block.SetSize(values["width"], values["height"])
  1129             self.AddBlock(block)
  1160             self.AddBlock(block)
  1130             self.Controler.AddCurrentElementEditingBlock(id, values["type"], values.get("name", None))
  1161             self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None))
  1131             self.RefreshBlockModel(block)
  1162             self.RefreshBlockModel(block)
  1132             self.RefreshBuffer()
  1163             self.RefreshBuffer()
  1133             self.RefreshScrollBars()
  1164             self.RefreshScrollBars()
  1134             self.ParentWindow.RefreshEditor()
  1165             self.ParentWindow.RefreshEditor()
  1135             self.Refresh(False)
  1166             self.Refresh(False)
  1137     
  1168     
  1138     def AddNewVariable(self, bbox):
  1169     def AddNewVariable(self, bbox):
  1139         dialog = VariablePropertiesDialog(self.ParentWindow)
  1170         dialog = VariablePropertiesDialog(self.ParentWindow)
  1140         dialog.SetMinVariableSize((bbox.width, bbox.height))
  1171         dialog.SetMinVariableSize((bbox.width, bbox.height))
  1141         varlist = []
  1172         varlist = []
  1142         vars = self.Controler.GetCurrentElementEditingInterfaceVars()
  1173         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName)
  1143         if vars:
  1174         if vars:
  1144             for var in vars:
  1175             for var in vars:
  1145                 if var["Edit"]:
  1176                 if var["Edit"]:
  1146                     varlist.append((var["Name"], var["Class"], var["Type"]))
  1177                     varlist.append((var["Name"], var["Class"], var["Type"]))
  1147         returntype = self.Controler.GetCurrentElementEditingInterfaceReturnType()
  1178         returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName)
  1148         if returntype:
  1179         if returntype:
  1149             varlist.append((self.Controler.GetCurrentElementEditingName(), "Output", returntype))
  1180             varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype))
  1150         dialog.SetVariables(varlist)
  1181         dialog.SetVariables(varlist)
  1151         if dialog.ShowModal() == wx.ID_OK:
  1182         if dialog.ShowModal() == wx.ID_OK:
  1152             id = self.GetNewId()
  1183             id = self.GetNewId()
  1153             values = dialog.GetValues()
  1184             values = dialog.GetValues()
  1154             variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id)
  1185             variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id)
  1155             variable.SetPosition(bbox.x, bbox.y)
  1186             variable.SetPosition(bbox.x, bbox.y)
  1156             variable.SetSize(values["width"], values["height"])
  1187             variable.SetSize(values["width"], values["height"])
  1157             self.AddBlock(variable)
  1188             self.AddBlock(variable)
  1158             self.Controler.AddCurrentElementEditingVariable(id, values["type"])
  1189             self.Controler.AddEditedElementVariable(self.TagName, id, values["type"])
  1159             self.RefreshVariableModel(variable)
  1190             self.RefreshVariableModel(variable)
  1160             self.RefreshBuffer()
  1191             self.RefreshBuffer()
  1161             self.RefreshScrollBars()
  1192             self.RefreshScrollBars()
  1162             self.Refresh(False)
  1193             self.Refresh(False)
  1163         dialog.Destroy()
  1194         dialog.Destroy()
  1170             values = dialog.GetValues()
  1201             values = dialog.GetValues()
  1171             connection = FBD_Connector(self, values["type"], values["name"], id)
  1202             connection = FBD_Connector(self, values["type"], values["name"], id)
  1172             connection.SetPosition(bbox.x, bbox.y)
  1203             connection.SetPosition(bbox.x, bbox.y)
  1173             connection.SetSize(values["width"], values["height"])
  1204             connection.SetSize(values["width"], values["height"])
  1174             self.AddBlock(connection)
  1205             self.AddBlock(connection)
  1175             self.Controler.AddCurrentElementEditingConnection(id, values["type"])
  1206             self.Controler.AddEditedElementConnection(self.TagName, id, values["type"])
  1176             self.RefreshConnectionModel(connection)
  1207             self.RefreshConnectionModel(connection)
  1177             self.RefreshBuffer()
  1208             self.RefreshBuffer()
  1178             self.RefreshScrollBars()
  1209             self.RefreshScrollBars()
  1179             self.Refresh(False)
  1210             self.Refresh(False)
  1180         dialog.Destroy()
  1211         dialog.Destroy()
  1190             comment = Comment(self, value, id)
  1221             comment = Comment(self, value, id)
  1191             comment.SetPosition(bbox.x, bbox.y)
  1222             comment.SetPosition(bbox.x, bbox.y)
  1192             min_width, min_height = comment.GetMinSize()
  1223             min_width, min_height = comment.GetMinSize()
  1193             comment.SetSize(max(min_width,bbox.width),max(min_height,bbox.height))
  1224             comment.SetSize(max(min_width,bbox.width),max(min_height,bbox.height))
  1194             self.AddComment(comment)
  1225             self.AddComment(comment)
  1195             self.Controler.AddCurrentElementEditingComment(id)
  1226             self.Controler.AddEditedElementComment(self.TagName, id)
  1196             self.RefreshCommentModel(comment)
  1227             self.RefreshCommentModel(comment)
  1197             self.RefreshBuffer()
  1228             self.RefreshBuffer()
  1198             self.RefreshScrollBars()
  1229             self.RefreshScrollBars()
  1199             self.Refresh(False)
  1230             self.Refresh(False)
  1200         dialog.Destroy()
  1231         dialog.Destroy()
  1201 
  1232 
  1202     def AddNewContact(self, bbox):
  1233     def AddNewContact(self, bbox):
  1203         dialog = LDElementDialog(self.ParentWindow, "contact")
  1234         dialog = LDElementDialog(self.ParentWindow, "contact")
  1204         varlist = []
  1235         varlist = []
  1205         vars = self.Controler.GetCurrentElementEditingInterfaceVars()
  1236         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName)
  1206         if vars:
  1237         if vars:
  1207             for var in vars:
  1238             for var in vars:
  1208                 if var["Class"] != "Output" and var["Type"] == "BOOL":
  1239                 if var["Class"] != "Output" and var["Type"] == "BOOL":
  1209                     varlist.append(var["Name"])
  1240                     varlist.append(var["Name"])
  1210         dialog.SetVariables(varlist)
  1241         dialog.SetVariables(varlist)
  1215             values = dialog.GetValues()
  1246             values = dialog.GetValues()
  1216             contact = LD_Contact(self, values["type"], values["name"], id)
  1247             contact = LD_Contact(self, values["type"], values["name"], id)
  1217             contact.SetPosition(bbox.x, bbox.y)
  1248             contact.SetPosition(bbox.x, bbox.y)
  1218             contact.SetSize(values["width"], values["height"])
  1249             contact.SetSize(values["width"], values["height"])
  1219             self.AddBlock(contact)
  1250             self.AddBlock(contact)
  1220             self.Controler.AddCurrentElementEditingContact(id)
  1251             self.Controler.AddEditedElementContact(self.TagName, id)
  1221             self.RefreshContactModel(contact)
  1252             self.RefreshContactModel(contact)
  1222             self.RefreshBuffer()
  1253             self.RefreshBuffer()
  1223             self.RefreshScrollBars()
  1254             self.RefreshScrollBars()
  1224             self.Refresh(False)
  1255             self.Refresh(False)
  1225         dialog.Destroy()
  1256         dialog.Destroy()
  1226 
  1257 
  1227     def AddNewCoil(self, bbox):
  1258     def AddNewCoil(self, bbox):
  1228         dialog = LDElementDialog(self.ParentWindow, "coil")
  1259         dialog = LDElementDialog(self.ParentWindow, "coil")
  1229         varlist = []
  1260         varlist = []
  1230         vars = self.Controler.GetCurrentElementEditingInterfaceVars()
  1261         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName)
  1231         if vars:
  1262         if vars:
  1232             for var in vars:
  1263             for var in vars:
  1233                 if var["Class"] != "Input" and var["Type"] == "BOOL":
  1264                 if var["Class"] != "Input" and var["Type"] == "BOOL":
  1234                     varlist.append(var["Name"])
  1265                     varlist.append(var["Name"])
  1235         returntype = self.Controler.GetCurrentElementEditingInterfaceReturnType()
  1266         returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName)
  1236         if returntype == "BOOL":
  1267         if returntype == "BOOL":
  1237             varlist.append(self.Controler.GetCurrentElementEditingName())
  1268             varlist.append(self.Controler.GetEditedElementName(self.TagName))
  1238         dialog.SetVariables(varlist)
  1269         dialog.SetVariables(varlist)
  1239         dialog.SetValues({"name":"","type":COIL_NORMAL})
  1270         dialog.SetValues({"name":"","type":COIL_NORMAL})
  1240         dialog.SetElementSize((bbox.width, bbox.height))
  1271         dialog.SetElementSize((bbox.width, bbox.height))
  1241         if dialog.ShowModal() == wx.ID_OK:
  1272         if dialog.ShowModal() == wx.ID_OK:
  1242             id = self.GetNewId()
  1273             id = self.GetNewId()
  1243             values = dialog.GetValues()
  1274             values = dialog.GetValues()
  1244             coil = LD_Coil(self, values["type"], values["name"], id)
  1275             coil = LD_Coil(self, values["type"], values["name"], id)
  1245             coil.SetPosition(bbox.x, bbox.y)
  1276             coil.SetPosition(bbox.x, bbox.y)
  1246             coil.SetSize(values["width"], values["height"])
  1277             coil.SetSize(values["width"], values["height"])
  1247             self.AddBlock(coil)
  1278             self.AddBlock(coil)
  1248             self.Controler.AddCurrentElementEditingCoil(id)
  1279             self.Controler.AddEditedElementCoil(self.TagName, id)
  1249             self.RefreshCoilModel(coil)
  1280             self.RefreshCoilModel(coil)
  1250             self.RefreshBuffer()
  1281             self.RefreshBuffer()
  1251             self.RefreshScrollBars()
  1282             self.RefreshScrollBars()
  1252             self.Refresh(False)
  1283             self.Refresh(False)
  1253         dialog.Destroy()
  1284         dialog.Destroy()
  1260             values = dialog.GetValues()
  1291             values = dialog.GetValues()
  1261             powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])])
  1292             powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])])
  1262             powerrail.SetPosition(bbox.x, bbox.y)
  1293             powerrail.SetPosition(bbox.x, bbox.y)
  1263             powerrail.SetSize(values["width"], values["height"])
  1294             powerrail.SetSize(values["width"], values["height"])
  1264             self.AddBlock(powerrail)
  1295             self.AddBlock(powerrail)
  1265             self.Controler.AddCurrentElementEditingPowerRail(id, values["type"])
  1296             self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"])
  1266             self.RefreshPowerRailModel(powerrail)
  1297             self.RefreshPowerRailModel(powerrail)
  1267             self.RefreshBuffer()
  1298             self.RefreshBuffer()
  1268             self.RefreshScrollBars()
  1299             self.RefreshScrollBars()
  1269             self.Refresh(False)
  1300             self.Refresh(False)
  1270         dialog.Destroy()
  1301         dialog.Destroy()
  1271 
  1302 
  1272     def AddNewStep(self, bbox, initial = False):
  1303     def AddNewStep(self, bbox, initial = False):
  1273         dialog = StepContentDialog(self.ParentWindow, initial)
  1304         dialog = StepContentDialog(self.ParentWindow, initial)
  1274         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1305         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1275         dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
  1306         dialog.SetVariables(self.Controler.GetEditedElementInterfaceVars(self.TagName))
  1276         dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
  1307         dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)])
  1277         dialog.SetMinStepSize((bbox.width, bbox.height))
  1308         dialog.SetMinStepSize((bbox.width, bbox.height))
  1278         if dialog.ShowModal() == wx.ID_OK:
  1309         if dialog.ShowModal() == wx.ID_OK:
  1279             id = self.GetNewId()
  1310             id = self.GetNewId()
  1280             values = dialog.GetValues()
  1311             values = dialog.GetValues()
  1293                 step.RemoveAction()
  1324                 step.RemoveAction()
  1294             step.SetPosition(bbox.x, bbox.y)
  1325             step.SetPosition(bbox.x, bbox.y)
  1295             min_width, min_height = step.GetMinSize()
  1326             min_width, min_height = step.GetMinSize()
  1296             step.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1327             step.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1297             self.AddBlock(step)
  1328             self.AddBlock(step)
  1298             self.Controler.AddCurrentElementEditingStep(id)
  1329             self.Controler.AddEditedElementStep(self.TagName, id)
  1299             self.RefreshStepModel(step)
  1330             self.RefreshStepModel(step)
  1300             self.RefreshBuffer()
  1331             self.RefreshBuffer()
  1301             self.RefreshScrollBars()
  1332             self.RefreshScrollBars()
  1302             self.Refresh(False)
  1333             self.Refresh(False)
  1303         dialog.Destroy()
  1334         dialog.Destroy()
  1304 
  1335 
  1305     def AddNewTransition(self, bbox):
  1336     def AddNewTransition(self, bbox):
  1306         dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE)
  1337         dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE)
  1307         dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
  1338         dialog.SetTransitions(self.Controler.GetEditedElementTransitions(self.TagName))
  1308         if dialog.ShowModal() == wx.ID_OK:
  1339         if dialog.ShowModal() == wx.ID_OK:
  1309             id = self.GetNewId()
  1340             id = self.GetNewId()
  1310             values = dialog.GetValues()
  1341             values = dialog.GetValues()
  1311             transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id)
  1342             transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id)
  1312             transition.SetPosition(bbox.x, bbox.y)
  1343             transition.SetPosition(bbox.x, bbox.y)
  1313             min_width, min_height = transition.GetMinSize()
  1344             min_width, min_height = transition.GetMinSize()
  1314             transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1345             transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1315             self.AddBlock(transition)
  1346             self.AddBlock(transition)
  1316             self.Controler.AddCurrentElementEditingTransition(id)
  1347             self.Controler.AddEditedElementTransition(self.TagName, id)
  1317             self.RefreshTransitionModel(transition)
  1348             self.RefreshTransitionModel(transition)
  1318             self.RefreshBuffer()
  1349             self.RefreshBuffer()
  1319             self.RefreshScrollBars()
  1350             self.RefreshScrollBars()
  1320             self.Refresh(False)
  1351             self.Refresh(False)
  1321         dialog.Destroy()
  1352         dialog.Destroy()
  1329             divergence = SFC_Divergence(self, values["type"], values["number"], id)
  1360             divergence = SFC_Divergence(self, values["type"], values["number"], id)
  1330             divergence.SetPosition(bbox.x, bbox.y)
  1361             divergence.SetPosition(bbox.x, bbox.y)
  1331             min_width, min_height = divergence.GetMinSize(True)
  1362             min_width, min_height = divergence.GetMinSize(True)
  1332             divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1363             divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1333             self.AddBlock(divergence)
  1364             self.AddBlock(divergence)
  1334             self.Controler.AddCurrentElementEditingDivergence(id, values["type"])
  1365             self.Controler.AddEditedElementDivergence(self.TagName, id, values["type"])
  1335             self.RefreshDivergenceModel(divergence)
  1366             self.RefreshDivergenceModel(divergence)
  1336             self.RefreshBuffer()
  1367             self.RefreshBuffer()
  1337             self.RefreshScrollBars()
  1368             self.RefreshScrollBars()
  1338             self.Refresh(False)
  1369             self.Refresh(False)
  1339         dialog.Destroy()
  1370         dialog.Destroy()
  1350             jump = SFC_Jump(self, value, id)
  1381             jump = SFC_Jump(self, value, id)
  1351             jump.SetPosition(bbox.x, bbox.y)
  1382             jump.SetPosition(bbox.x, bbox.y)
  1352             min_width, min_height = jump.GetMinSize()
  1383             min_width, min_height = jump.GetMinSize()
  1353             jump.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1384             jump.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1354             self.AddBlock(jump)
  1385             self.AddBlock(jump)
  1355             self.Controler.AddCurrentElementEditingJump(id)
  1386             self.Controler.AddEditedElementJump(self.TagName, id)
  1356             self.RefreshJumpModel(jump)
  1387             self.RefreshJumpModel(jump)
  1357             self.RefreshBuffer()
  1388             self.RefreshBuffer()
  1358             self.RefreshScrollBars()
  1389             self.RefreshScrollBars()
  1359             self.Refresh()
  1390             self.Refresh()
  1360         dialog.Destroy()
  1391         dialog.Destroy()
  1361 
  1392 
  1362     def AddNewActionBlock(self, bbox):
  1393     def AddNewActionBlock(self, bbox):
  1363         dialog = ActionBlockDialog(self.ParentWindow)
  1394         dialog = ActionBlockDialog(self.ParentWindow)
  1364         dialog.SetQualifierList(self.Controler.GetQualifierTypes())
  1395         dialog.SetQualifierList(self.Controler.GetQualifierTypes())
  1365         dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
  1396         dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName))
  1366         dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
  1397         dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName))
  1367         if dialog.ShowModal() == wx.ID_OK:
  1398         if dialog.ShowModal() == wx.ID_OK:
  1368             actions = dialog.GetValues()
  1399             actions = dialog.GetValues()
  1369             id = self.GetNewId()
  1400             id = self.GetNewId()
  1370             actionblock = SFC_ActionBlock(self, actions, id)
  1401             actionblock = SFC_ActionBlock(self, actions, id)
  1371             actionblock.SetPosition(bbox.x, bbox.y)
  1402             actionblock.SetPosition(bbox.x, bbox.y)
  1372             min_width, min_height = actionblock.GetMinSize()
  1403             min_width, min_height = actionblock.GetMinSize()
  1373             actionblock.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1404             actionblock.SetSize(max(bbox.width, min_width), max(bbox.height, min_height))
  1374             self.AddBlock(actionblock)
  1405             self.AddBlock(actionblock)
  1375             self.Controler.AddCurrentElementEditingActionBlock(id)
  1406             self.Controler.AddEditedElementActionBlock(self.TagName, id)
  1376             self.RefreshActionBlockModel(actionblock)
  1407             self.RefreshActionBlockModel(actionblock)
  1377             self.RefreshBuffer()
  1408             self.RefreshBuffer()
  1378             self.RefreshScrollBars()
  1409             self.RefreshScrollBars()
  1379             self.Refresh()
  1410             self.Refresh()
  1380         dialog.Destroy()
  1411         dialog.Destroy()
  1383 #                          Edit element content functions
  1414 #                          Edit element content functions
  1384 #-------------------------------------------------------------------------------
  1415 #-------------------------------------------------------------------------------
  1385 
  1416 
  1386     def EditBlockContent(self, block):
  1417     def EditBlockContent(self, block):
  1387         dialog = BlockPropertiesDialog(self.ParentWindow)
  1418         dialog = BlockPropertiesDialog(self.ParentWindow)
  1388         dialog.SetBlockList(self.Controler.GetBlockTypes())
  1419         dialog.SetBlockList(self.Controler.GetBlockTypes(self.TagName))
  1389         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1420         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1390         variable_names = self.Controler.GetCurrentElementEditingVariables()
  1421         variable_names = self.Controler.GetEditedElementVariables(self.TagName)
  1391         if block.GetName() != "":
  1422         if block.GetName() != "":
  1392             variable_names.remove(block.GetName())
  1423             variable_names.remove(block.GetName())
  1393         dialog.SetPouElementNames(variable_names)
  1424         dialog.SetPouElementNames(variable_names)
  1394         dialog.SetMinBlockSize(block.GetSize())
  1425         dialog.SetMinBlockSize(block.GetSize())
  1395         old_values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes(), 
  1426         old_values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes(), 
  1413 
  1444 
  1414     def EditVariableContent(self, variable):
  1445     def EditVariableContent(self, variable):
  1415         dialog = VariablePropertiesDialog(self.ParentWindow)
  1446         dialog = VariablePropertiesDialog(self.ParentWindow)
  1416         dialog.SetMinVariableSize(variable.GetSize())
  1447         dialog.SetMinVariableSize(variable.GetSize())
  1417         varlist = []
  1448         varlist = []
  1418         vars = self.Controler.GetCurrentElementEditingInterfaceVars()
  1449         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName)
  1419         if vars:
  1450         if vars:
  1420             for var in vars:
  1451             for var in vars:
  1421                 if var["Edit"]:
  1452                 if var["Edit"]:
  1422                     varlist.append((var["Name"], var["Class"], var["Type"]))
  1453                     varlist.append((var["Name"], var["Class"], var["Type"]))
  1423         returntype = self.Controler.GetCurrentElementEditingInterfaceReturnType()
  1454         returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName)
  1424         if returntype:
  1455         if returntype:
  1425             varlist.append((self.Controler.GetCurrentElementEditingName(), "Output", returntype))
  1456             varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype))
  1426         dialog.SetVariables(varlist)
  1457         dialog.SetVariables(varlist)
  1427         old_values = {"name" : variable.GetName(), "type" : variable.GetType(), 
  1458         old_values = {"name" : variable.GetName(), "type" : variable.GetType(), 
  1428             "executionOrder" : variable.GetExecutionOrder()}
  1459             "executionOrder" : variable.GetExecutionOrder()}
  1429         dialog.SetValues(old_values)
  1460         dialog.SetValues(old_values)
  1430         if dialog.ShowModal() == wx.ID_OK:
  1461         if dialog.ShowModal() == wx.ID_OK:
  1433             variable.SetType(new_values["type"], new_values["value_type"])
  1464             variable.SetType(new_values["type"], new_values["value_type"])
  1434             variable.SetSize(new_values["width"], new_values["height"])
  1465             variable.SetSize(new_values["width"], new_values["height"])
  1435             variable.SetExecutionOrder(new_values["executionOrder"])
  1466             variable.SetExecutionOrder(new_values["executionOrder"])
  1436             if old_values["type"] != new_values["type"]:
  1467             if old_values["type"] != new_values["type"]:
  1437                 id = variable.GetId()
  1468                 id = variable.GetId()
  1438                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1469                 self.Controler.RemoveEditedElementInstance(self.TagName, id)
  1439                 self.Controler.AddCurrentElementEditingVariable(id, new_values["type"])
  1470                 self.Controler.AddEditedElementVariable(self.TagName, id, new_values["type"])
  1440             self.RefreshVariableModel(variable)
  1471             self.RefreshVariableModel(variable)
  1441             if old_values["executionOrder"] != new_values["executionOrder"]:
  1472             if old_values["executionOrder"] != new_values["executionOrder"]:
  1442                 self.RefreshView()
  1473                 self.RefreshView()
  1443             self.RefreshBuffer()
  1474             self.RefreshBuffer()
  1444             self.RefreshScrollBars()
  1475             self.RefreshScrollBars()
  1456             connection.SetName(values["name"])
  1487             connection.SetName(values["name"])
  1457             connection.SetType(values["type"])
  1488             connection.SetType(values["type"])
  1458             connection.SetSize(values["width"], values["height"])
  1489             connection.SetSize(values["width"], values["height"])
  1459             if old_type != values["type"]:
  1490             if old_type != values["type"]:
  1460                 id = connection.GetId()
  1491                 id = connection.GetId()
  1461                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1492                 self.Controler.RemoveEditedElementInstance(self.TagName, id)
  1462                 self.Controler.AddCurrentElementEditingConnection(id, values["type"])
  1493                 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"])
  1463             self.RefreshConnectionModel(connection)
  1494             self.RefreshConnectionModel(connection)
  1464             self.RefreshBuffer()
  1495             self.RefreshBuffer()
  1465             self.RefreshScrollBars()
  1496             self.RefreshScrollBars()
  1466             self.Refresh(False)
  1497             self.Refresh(False)
  1467         dialog.Destroy()
  1498         dialog.Destroy()
  1468 
  1499 
  1469     def EditContactContent(self, contact):
  1500     def EditContactContent(self, contact):
  1470         dialog = LDElementDialog(self.ParentWindow, "contact")
  1501         dialog = LDElementDialog(self.ParentWindow, "contact")
  1471         varlist = []
  1502         varlist = []
  1472         vars = self.Controler.GetCurrentElementEditingInterfaceVars()
  1503         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName)
  1473         if vars:
  1504         if vars:
  1474             for var in vars:
  1505             for var in vars:
  1475                 if var["Class"] != "Output" and var["Type"] == "BOOL":
  1506                 if var["Class"] != "Output" and var["Type"] == "BOOL":
  1476                     varlist.append(var["Name"])
  1507                     varlist.append(var["Name"])
  1477         dialog.SetVariables(varlist)
  1508         dialog.SetVariables(varlist)
  1490         dialog.Destroy()
  1521         dialog.Destroy()
  1491 
  1522 
  1492     def EditCoilContent(self, coil):
  1523     def EditCoilContent(self, coil):
  1493         dialog = LDElementDialog(self.ParentWindow, "coil")
  1524         dialog = LDElementDialog(self.ParentWindow, "coil")
  1494         varlist = []
  1525         varlist = []
  1495         vars = self.Controler.GetCurrentElementEditingInterfaceVars()
  1526         vars = self.Controler.GetEditedElementInterfaceVars(self.TagName)
  1496         if vars:
  1527         if vars:
  1497             for var in vars:
  1528             for var in vars:
  1498                 if var["Class"] != "Input" and var["Type"] == "BOOL":
  1529                 if var["Class"] != "Input" and var["Type"] == "BOOL":
  1499                     varlist.append(var["Name"])
  1530                     varlist.append(var["Name"])
  1500         returntype = self.Controler.GetCurrentElementEditingInterfaceReturnType()
  1531         returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName)
  1501         if returntype == "BOOL":
  1532         if returntype == "BOOL":
  1502             varlist.append(self.Controler.GetCurrentElementEditingName())
  1533             varlist.append(self.Controler.GetEditedElementName(self.TagName))
  1503         dialog.SetVariables(varlist)
  1534         dialog.SetVariables(varlist)
  1504         values = {"name" : coil.GetName(), "type" : coil.GetType()}
  1535         values = {"name" : coil.GetName(), "type" : coil.GetType()}
  1505         dialog.SetValues(values)
  1536         dialog.SetValues(values)
  1506         dialog.SetElementSize(coil.GetSize())
  1537         dialog.SetElementSize(coil.GetSize())
  1507         if dialog.ShowModal() == wx.ID_OK:
  1538         if dialog.ShowModal() == wx.ID_OK:
  1523             values = dialog.GetValues()
  1554             values = dialog.GetValues()
  1524             powerrail.SetType(values["type"], [True for i in xrange(values["number"])])
  1555             powerrail.SetType(values["type"], [True for i in xrange(values["number"])])
  1525             powerrail.SetSize(values["width"], values["height"])
  1556             powerrail.SetSize(values["width"], values["height"])
  1526             if old_type != values["type"]:
  1557             if old_type != values["type"]:
  1527                 id = powerrail.GetId()
  1558                 id = powerrail.GetId()
  1528                 self.Controler.RemoveCurrentElementEditingInstance(id)
  1559                 self.Controler.RemoveEditedElementInstance(self.TagName, id)
  1529                 self.Controler.AddCurrentElementEditingPowerRail(id, values["type"])
  1560                 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"])
  1530             self.RefreshPowerRailModel(powerrail)
  1561             self.RefreshPowerRailModel(powerrail)
  1531             self.RefreshBuffer()
  1562             self.RefreshBuffer()
  1532             self.RefreshScrollBars()
  1563             self.RefreshScrollBars()
  1533             self.Refresh(False)
  1564             self.Refresh(False)
  1534         dialog.Destroy()
  1565         dialog.Destroy()
  1535 
  1566 
  1536     def EditStepContent(self, step):
  1567     def EditStepContent(self, step):
  1537         dialog = StepContentDialog(self.ParentWindow, step.GetInitial())
  1568         dialog = StepContentDialog(self.ParentWindow, step.GetInitial())
  1538         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1569         dialog.SetPouNames(self.Controler.GetProjectPouNames())
  1539         dialog.SetVariables(self.Controler.GetCurrentElementEditingInterfaceVars())
  1570         dialog.SetVariables(self.Controler.GetEditedElementInterfaceVars(self.TagName))
  1540         dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()])
  1571         dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()])
  1541         dialog.SetMinStepSize(step.GetSize())
  1572         dialog.SetMinStepSize(step.GetSize())
  1542         values = {"name" : step.GetName()}
  1573         values = {"name" : step.GetName()}
  1543         connectors = step.GetConnectors()
  1574         connectors = step.GetConnectors()
  1544         values["input"] = connectors["input"] != None
  1575         values["input"] = connectors["input"] != None
  1566             self.RefreshScrollBars()
  1597             self.RefreshScrollBars()
  1567             self.Refresh(False)
  1598             self.Refresh(False)
  1568         
  1599         
  1569     def EditTransitionContent(self, transition):
  1600     def EditTransitionContent(self, transition):
  1570         dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE)
  1601         dialog = TransitionContentDialog(self.ParentWindow, self.GetDrawingMode() == FREEDRAWING_MODE)
  1571         dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions())
  1602         dialog.SetTransitions(self.Controler.GetEditedElementTransitions(self.TagName))
  1572         dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()})
  1603         dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()})
  1573         dialog.SetElementSize(transition.GetSize())
  1604         dialog.SetElementSize(transition.GetSize())
  1574         if dialog.ShowModal() == wx.ID_OK:
  1605         if dialog.ShowModal() == wx.ID_OK:
  1575             values = dialog.GetValues()
  1606             values = dialog.GetValues()
  1576             transition.SetType(values["type"],values["value"])
  1607             transition.SetType(values["type"],values["value"])
  1598         dialog.Destroy()
  1629         dialog.Destroy()
  1599 
  1630 
  1600     def EditActionBlockContent(self, actionblock):
  1631     def EditActionBlockContent(self, actionblock):
  1601         dialog = ActionBlockDialog(self.ParentWindow)
  1632         dialog = ActionBlockDialog(self.ParentWindow)
  1602         dialog.SetQualifierList(self.Controler.GetQualifierTypes())
  1633         dialog.SetQualifierList(self.Controler.GetQualifierTypes())
  1603         dialog.SetActionList(self.Controler.GetCurrentElementEditingActions())
  1634         dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName))
  1604         dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars())
  1635         dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName))
  1605         dialog.SetValues(actionblock.GetActions())
  1636         dialog.SetValues(actionblock.GetActions())
  1606         if dialog.ShowModal() == wx.ID_OK:
  1637         if dialog.ShowModal() == wx.ID_OK:
  1607             actions = dialog.GetValues()
  1638             actions = dialog.GetValues()
  1608             actionblock.SetActions(actions)
  1639             actionblock.SetActions(actions)
  1609             actionblock.RefreshModel()
  1640             actionblock.RefreshModel()
  1637         infos["name"] = block.GetName()
  1668         infos["name"] = block.GetName()
  1638         infos["executionOrder"] = block.GetExecutionOrder()
  1669         infos["executionOrder"] = block.GetExecutionOrder()
  1639         infos["x"], infos["y"] = block.GetPosition()
  1670         infos["x"], infos["y"] = block.GetPosition()
  1640         infos["width"], infos["height"] = block.GetSize()
  1671         infos["width"], infos["height"] = block.GetSize()
  1641         infos["connectors"] = block.GetConnectors()
  1672         infos["connectors"] = block.GetConnectors()
  1642         self.Controler.SetCurrentElementEditingBlockInfos(blockid, infos)
  1673         self.Controler.SetEditedElementBlockInfos(self.TagName, blockid, infos)
  1643     
  1674     
  1644     def RefreshVariableModel(self, variable):
  1675     def RefreshVariableModel(self, variable):
  1645         variableid = variable.GetId()
  1676         variableid = variable.GetId()
  1646         infos = {}
  1677         infos = {}
  1647         infos["name"] = variable.GetName()
  1678         infos["name"] = variable.GetName()
  1648         infos["executionOrder"] = variable.GetExecutionOrder()
  1679         infos["executionOrder"] = variable.GetExecutionOrder()
  1649         infos["x"], infos["y"] = variable.GetPosition()
  1680         infos["x"], infos["y"] = variable.GetPosition()
  1650         infos["width"], infos["height"] = variable.GetSize()
  1681         infos["width"], infos["height"] = variable.GetSize()
  1651         infos["connectors"] = variable.GetConnectors()
  1682         infos["connectors"] = variable.GetConnectors()
  1652         self.Controler.SetCurrentElementEditingVariableInfos(variableid, infos)
  1683         self.Controler.SetEditedElementVariableInfos(self.TagName, variableid, infos)
  1653 
  1684 
  1654     def RefreshConnectionModel(self, connection):
  1685     def RefreshConnectionModel(self, connection):
  1655         connectionid = connection.GetId()
  1686         connectionid = connection.GetId()
  1656         infos = {}
  1687         infos = {}
  1657         infos["name"] = connection.GetName()
  1688         infos["name"] = connection.GetName()
  1658         infos["executionOrder"] = connection.GetExecutionOrder()
  1689         infos["executionOrder"] = connection.GetExecutionOrder()
  1659         infos["x"], infos["y"] = connection.GetPosition()
  1690         infos["x"], infos["y"] = connection.GetPosition()
  1660         infos["width"], infos["height"] = connection.GetSize()
  1691         infos["width"], infos["height"] = connection.GetSize()
  1661         infos["connector"] = connection.GetConnector()
  1692         infos["connector"] = connection.GetConnector()
  1662         self.Controler.SetCurrentElementEditingConnectionInfos(connectionid, infos)
  1693         self.Controler.SetEditedElementConnectionInfos(self.TagName, connectionid, infos)
  1663 
  1694 
  1664     def RefreshCommentModel(self, comment):
  1695     def RefreshCommentModel(self, comment):
  1665         commentid = comment.GetId()
  1696         commentid = comment.GetId()
  1666         infos = {}
  1697         infos = {}
  1667         infos["content"] = comment.GetContent()
  1698         infos["content"] = comment.GetContent()
  1668         infos["x"], infos["y"] = comment.GetPosition()
  1699         infos["x"], infos["y"] = comment.GetPosition()
  1669         infos["width"], infos["height"] = comment.GetSize()
  1700         infos["width"], infos["height"] = comment.GetSize()
  1670         self.Controler.SetCurrentElementEditingCommentInfos(commentid, infos)
  1701         self.Controler.SetEditedElementCommentInfos(self.TagName, commentid, infos)
  1671 
  1702 
  1672     def RefreshPowerRailModel(self, powerrail):
  1703     def RefreshPowerRailModel(self, powerrail):
  1673         powerrailid = powerrail.GetId()
  1704         powerrailid = powerrail.GetId()
  1674         infos = {}
  1705         infos = {}
  1675         infos["x"], infos["y"] = powerrail.GetPosition()
  1706         infos["x"], infos["y"] = powerrail.GetPosition()
  1676         infos["width"], infos["height"] = powerrail.GetSize()
  1707         infos["width"], infos["height"] = powerrail.GetSize()
  1677         infos["connectors"] = powerrail.GetConnectors()
  1708         infos["connectors"] = powerrail.GetConnectors()
  1678         self.Controler.SetCurrentElementEditingPowerRailInfos(powerrailid, infos)
  1709         self.Controler.SetEditedElementPowerRailInfos(self.TagName, powerrailid, infos)
  1679 
  1710 
  1680     def RefreshContactModel(self, contact):
  1711     def RefreshContactModel(self, contact):
  1681         contactid = contact.GetId()
  1712         contactid = contact.GetId()
  1682         infos = {}
  1713         infos = {}
  1683         infos["name"] = contact.GetName()
  1714         infos["name"] = contact.GetName()
  1684         infos["type"] = contact.GetType()
  1715         infos["type"] = contact.GetType()
  1685         infos["x"], infos["y"] = contact.GetPosition()
  1716         infos["x"], infos["y"] = contact.GetPosition()
  1686         infos["width"], infos["height"] = contact.GetSize()
  1717         infos["width"], infos["height"] = contact.GetSize()
  1687         infos["connectors"] = contact.GetConnectors()
  1718         infos["connectors"] = contact.GetConnectors()
  1688         self.Controler.SetCurrentElementEditingContactInfos(contactid, infos)
  1719         self.Controler.SetEditedElementContactInfos(self.TagName, contactid, infos)
  1689 
  1720 
  1690     def RefreshCoilModel(self, coil):
  1721     def RefreshCoilModel(self, coil):
  1691         coilid = coil.GetId()
  1722         coilid = coil.GetId()
  1692         infos = {}
  1723         infos = {}
  1693         infos["name"] = coil.GetName()
  1724         infos["name"] = coil.GetName()
  1694         infos["type"] = coil.GetType()
  1725         infos["type"] = coil.GetType()
  1695         infos["x"], infos["y"] = coil.GetPosition()
  1726         infos["x"], infos["y"] = coil.GetPosition()
  1696         infos["width"], infos["height"] = coil.GetSize()
  1727         infos["width"], infos["height"] = coil.GetSize()
  1697         infos["connectors"] = coil.GetConnectors()
  1728         infos["connectors"] = coil.GetConnectors()
  1698         self.Controler.SetCurrentElementEditingCoilInfos(coilid, infos)
  1729         self.Controler.SetEditedElementCoilInfos(self.TagName, coilid, infos)
  1699 
  1730 
  1700     def RefreshStepModel(self, step):
  1731     def RefreshStepModel(self, step):
  1701         stepid = step.GetId()
  1732         stepid = step.GetId()
  1702         infos = {}
  1733         infos = {}
  1703         infos["name"] = step.GetName()
  1734         infos["name"] = step.GetName()
  1704         infos["initial"] = step.GetInitial()
  1735         infos["initial"] = step.GetInitial()
  1705         infos["x"], infos["y"] = step.GetPosition()
  1736         infos["x"], infos["y"] = step.GetPosition()
  1706         infos["width"], infos["height"] = step.GetSize()
  1737         infos["width"], infos["height"] = step.GetSize()
  1707         infos["connectors"] = step.GetConnectors()
  1738         infos["connectors"] = step.GetConnectors()
  1708         self.Controler.SetCurrentElementEditingStepInfos(stepid, infos)
  1739         self.Controler.SetEditedElementStepInfos(self.TagName, stepid, infos)
  1709 
  1740 
  1710     def RefreshTransitionModel(self, transition):
  1741     def RefreshTransitionModel(self, transition):
  1711         transitionid = transition.GetId()
  1742         transitionid = transition.GetId()
  1712         infos = {}
  1743         infos = {}
  1713         infos["type"] = transition.GetType()
  1744         infos["type"] = transition.GetType()
  1714         infos["priority"] = transition.GetPriority()
  1745         infos["priority"] = transition.GetPriority()
  1715         infos["condition"] = transition.GetCondition()
  1746         infos["condition"] = transition.GetCondition()
  1716         infos["x"], infos["y"] = transition.GetPosition()
  1747         infos["x"], infos["y"] = transition.GetPosition()
  1717         infos["width"], infos["height"] = transition.GetSize()
  1748         infos["width"], infos["height"] = transition.GetSize()
  1718         infos["connectors"] = transition.GetConnectors()
  1749         infos["connectors"] = transition.GetConnectors()
  1719         self.Controler.SetCurrentElementEditingTransitionInfos(transitionid, infos)
  1750         self.Controler.SetEditedElementTransitionInfos(self.TagName, transitionid, infos)
  1720 
  1751 
  1721     def RefreshDivergenceModel(self, divergence):
  1752     def RefreshDivergenceModel(self, divergence):
  1722         divergenceid = divergence.GetId()
  1753         divergenceid = divergence.GetId()
  1723         infos = {}
  1754         infos = {}
  1724         infos["x"], infos["y"] = divergence.GetPosition()
  1755         infos["x"], infos["y"] = divergence.GetPosition()
  1725         infos["width"], infos["height"] = divergence.GetSize()
  1756         infos["width"], infos["height"] = divergence.GetSize()
  1726         infos["connectors"] = divergence.GetConnectors()
  1757         infos["connectors"] = divergence.GetConnectors()
  1727         self.Controler.SetCurrentElementEditingDivergenceInfos(divergenceid, infos)
  1758         self.Controler.SetEditedElementDivergenceInfos(self.TagName, divergenceid, infos)
  1728 
  1759 
  1729     def RefreshJumpModel(self, jump):
  1760     def RefreshJumpModel(self, jump):
  1730         jumpid = jump.GetId()
  1761         jumpid = jump.GetId()
  1731         infos = {}
  1762         infos = {}
  1732         infos["target"] = jump.GetTarget()
  1763         infos["target"] = jump.GetTarget()
  1733         infos["x"], infos["y"] = jump.GetPosition()
  1764         infos["x"], infos["y"] = jump.GetPosition()
  1734         infos["width"], infos["height"] = jump.GetSize()
  1765         infos["width"], infos["height"] = jump.GetSize()
  1735         infos["connector"] = jump.GetConnector()
  1766         infos["connector"] = jump.GetConnector()
  1736         self.Controler.SetCurrentElementEditingJumpInfos(jumpid, infos)
  1767         self.Controler.SetEditedElementJumpInfos(self.TagName, jumpid, infos)
  1737 
  1768 
  1738     def RefreshActionBlockModel(self, actionblock):
  1769     def RefreshActionBlockModel(self, actionblock):
  1739         actionblockid = actionblock.GetId()
  1770         actionblockid = actionblock.GetId()
  1740         infos = {}
  1771         infos = {}
  1741         infos["actions"] = actionblock.GetActions()
  1772         infos["actions"] = actionblock.GetActions()
  1742         infos["x"], infos["y"] = actionblock.GetPosition()
  1773         infos["x"], infos["y"] = actionblock.GetPosition()
  1743         infos["width"], infos["height"] = actionblock.GetSize()
  1774         infos["width"], infos["height"] = actionblock.GetSize()
  1744         infos["connector"] = actionblock.GetConnector()
  1775         infos["connector"] = actionblock.GetConnector()
  1745         self.Controler.SetCurrentElementEditingActionBlockInfos(actionblockid, infos)
  1776         self.Controler.SetEditedElementActionBlockInfos(self.TagName, actionblockid, infos)
  1746 
  1777 
  1747 
  1778 
  1748 #-------------------------------------------------------------------------------
  1779 #-------------------------------------------------------------------------------
  1749 #                          Model delete functions
  1780 #                          Model delete functions
  1750 #-------------------------------------------------------------------------------
  1781 #-------------------------------------------------------------------------------
  1756             for element in output.GetConnectedBlocks():
  1787             for element in output.GetConnectedBlocks():
  1757                 if element not in elements:
  1788                 if element not in elements:
  1758                     elements.append(element)
  1789                     elements.append(element)
  1759         block.Clean()
  1790         block.Clean()
  1760         self.RemoveBlock(block)
  1791         self.RemoveBlock(block)
  1761         self.Controler.RemoveCurrentElementEditingInstance(block.GetId())
  1792         self.Controler.RemoveEditedElementInstance(self.TagName, block.GetId())
  1762         for element in elements:
  1793         for element in elements:
  1763             element.RefreshModel()
  1794             element.RefreshModel()
  1764         wx.CallAfter(self.ParentWindow.RefreshEditor)
  1795         wx.CallAfter(self.ParentWindow.RefreshEditor)
  1765 
  1796 
  1766     def DeleteVariable(self, variable):
  1797     def DeleteVariable(self, variable):
  1769             elements = connectors["output"].GetConnectedBlocks()
  1800             elements = connectors["output"].GetConnectedBlocks()
  1770         else:
  1801         else:
  1771             elements = []
  1802             elements = []
  1772         variable.Clean()
  1803         variable.Clean()
  1773         self.RemoveBlock(variable)
  1804         self.RemoveBlock(variable)
  1774         self.Controler.RemoveCurrentElementEditingInstance(variable.GetId())
  1805         self.Controler.RemoveEditedElementInstance(self.TagName, variable.GetId())
  1775         for element in elements:
  1806         for element in elements:
  1776             element.RefreshModel()
  1807             element.RefreshModel()
  1777 
  1808 
  1778     def DeleteConnection(self, connection):
  1809     def DeleteConnection(self, connection):
  1779         if connection.GetType() == CONTINUATION:
  1810         if connection.GetType() == CONTINUATION:
  1780             elements = connection.GetConnector().GetConnectedBlocks()
  1811             elements = connection.GetConnector().GetConnectedBlocks()
  1781         else:
  1812         else:
  1782             elements = []
  1813             elements = []
  1783         connection.Clean()
  1814         connection.Clean()
  1784         self.RemoveBlock(connection)
  1815         self.RemoveBlock(connection)
  1785         self.Controler.RemoveCurrentElementEditingInstance(connection.GetId())
  1816         self.Controler.RemoveEditedElementInstance(self.TagName, connection.GetId())
  1786         for element in elements:
  1817         for element in elements:
  1787             element.RefreshModel()
  1818             element.RefreshModel()
  1788 
  1819 
  1789     def DeleteComment(self, comment):
  1820     def DeleteComment(self, comment):
  1790         self.RemoveComment(comment)
  1821         self.RemoveComment(comment)
  1791         self.Controler.RemoveCurrentElementEditingInstance(comment.GetId())
  1822         self.Controler.RemoveEditedElementInstance(self.TagName, comment.GetId())
  1792 
  1823 
  1793     def DeleteWire(self, wire):
  1824     def DeleteWire(self, wire):
  1794         if wire in self.Wires:
  1825         if wire in self.Wires:
  1795             connected = wire.GetConnected()
  1826             connected = wire.GetConnected()
  1796             wire.Clean()
  1827             wire.Clean()
  1801     def DeleteContact(self, contact):
  1832     def DeleteContact(self, contact):
  1802         connectors = contact.GetConnectors()
  1833         connectors = contact.GetConnectors()
  1803         elements = connectors["output"].GetConnectedBlocks()
  1834         elements = connectors["output"].GetConnectedBlocks()
  1804         contact.Clean()
  1835         contact.Clean()
  1805         self.RemoveBlock(contact)
  1836         self.RemoveBlock(contact)
  1806         self.Controler.RemoveCurrentElementEditingInstance(contact.GetId())
  1837         self.Controler.RemoveEditedElementInstance(self.TagName, contact.GetId())
  1807         for element in elements:
  1838         for element in elements:
  1808             element.RefreshModel()
  1839             element.RefreshModel()
  1809 
  1840 
  1810     def DeleteCoil(self, coil):
  1841     def DeleteCoil(self, coil):
  1811         connectors = coil.GetConnectors()
  1842         connectors = coil.GetConnectors()
  1812         elements = connectors["output"].GetConnectedBlocks()
  1843         elements = connectors["output"].GetConnectedBlocks()
  1813         coil.Clean()
  1844         coil.Clean()
  1814         self.RemoveBlock(coil)
  1845         self.RemoveBlock(coil)
  1815         self.Controler.RemoveCurrentElementEditingInstance(coil.GetId())
  1846         self.Controler.RemoveEditedElementInstance(self.TagName, coil.GetId())
  1816         for element in elements:
  1847         for element in elements:
  1817             element.RefreshModel()
  1848             element.RefreshModel()
  1818 
  1849 
  1819     def DeletePowerRail(self, powerrail):
  1850     def DeletePowerRail(self, powerrail):
  1820         elements = []
  1851         elements = []
  1823                 for element in connector.GetConnectedBlocks():
  1854                 for element in connector.GetConnectedBlocks():
  1824                     if element not in elements:
  1855                     if element not in elements:
  1825                         elements.append(element)
  1856                         elements.append(element)
  1826         powerrail.Clean()
  1857         powerrail.Clean()
  1827         self.RemoveBlock(powerrail)
  1858         self.RemoveBlock(powerrail)
  1828         self.Controler.RemoveCurrentElementEditingInstance(powerrail.GetId())
  1859         self.Controler.RemoveEditedElementInstance(self.TagName, powerrail.GetId())
  1829         for element in elements:
  1860         for element in elements:
  1830             element.RefreshModel()
  1861             element.RefreshModel()
  1831 
  1862 
  1832     def DeleteStep(self, step):
  1863     def DeleteStep(self, step):
  1833         elements = []
  1864         elements = []
  1840             for element in connectors["action"].GetConnectedBlocks():
  1871             for element in connectors["action"].GetConnectedBlocks():
  1841                 if element not in elements:
  1872                 if element not in elements:
  1842                     elements.append(element)
  1873                     elements.append(element)
  1843         step.Clean()
  1874         step.Clean()
  1844         self.RemoveBlock(step)
  1875         self.RemoveBlock(step)
  1845         self.Controler.RemoveCurrentElementEditingInstance(step.GetId())
  1876         self.Controler.RemoveEditedElementInstance(self.TagName, step.GetId())
  1846         for element in elements:
  1877         for element in elements:
  1847             element.RefreshModel()
  1878             element.RefreshModel()
  1848             
  1879             
  1849     def DeleteTransition(self, transition):
  1880     def DeleteTransition(self, transition):
  1850         elements = []
  1881         elements = []
  1853             for element in connectors["output"].GetConnectedBlocks():
  1884             for element in connectors["output"].GetConnectedBlocks():
  1854                 if element not in elements:
  1885                 if element not in elements:
  1855                     elements.append(element)
  1886                     elements.append(element)
  1856         transition.Clean()
  1887         transition.Clean()
  1857         self.RemoveBlock(transition)
  1888         self.RemoveBlock(transition)
  1858         self.Controler.RemoveCurrentElementEditingInstance(transition.GetId())
  1889         self.Controler.RemoveEditedElementInstance(self.TagName, transition.GetId())
  1859         for element in elements:
  1890         for element in elements:
  1860             element.RefreshModel()
  1891             element.RefreshModel()
  1861 
  1892 
  1862     def DeleteDivergence(self, divergence):
  1893     def DeleteDivergence(self, divergence):
  1863         elements = []
  1894         elements = []
  1866             for element in output.GetConnectedBlocks():
  1897             for element in output.GetConnectedBlocks():
  1867                 if element not in elements:
  1898                 if element not in elements:
  1868                     elements.append(element)
  1899                     elements.append(element)
  1869         divergence.Clean()
  1900         divergence.Clean()
  1870         self.RemoveBlock(divergence)
  1901         self.RemoveBlock(divergence)
  1871         self.Controler.RemoveCurrentElementEditingInstance(divergence.GetId())
  1902         self.Controler.RemoveEditedElementInstance(self.TagName, divergence.GetId())
  1872         for element in elements:
  1903         for element in elements:
  1873             element.RefreshModel()
  1904             element.RefreshModel()
  1874     
  1905     
  1875     def DeleteJump(self, jump):
  1906     def DeleteJump(self, jump):
  1876         jump.Clean()
  1907         jump.Clean()
  1877         self.RemoveBlock(jump)
  1908         self.RemoveBlock(jump)
  1878         self.Controler.RemoveCurrentElementEditingInstance(jump.GetId())
  1909         self.Controler.RemoveEditedElementInstance(self.TagName, jump.GetId())
  1879     
  1910     
  1880     def DeleteActionBlock(self, actionblock):
  1911     def DeleteActionBlock(self, actionblock):
  1881         actionblock.Clean()
  1912         actionblock.Clean()
  1882         self.RemoveBlock(actionblock)
  1913         self.RemoveBlock(actionblock)
  1883         self.Controler.RemoveCurrentElementEditingInstance(actionblock.GetId())
  1914         self.Controler.RemoveEditedElementInstance(self.TagName, actionblock.GetId())
  1884 
  1915 
  1885 
  1916 
  1886 #-------------------------------------------------------------------------------
  1917 #-------------------------------------------------------------------------------
  1887 #                            Editing functions
  1918 #                            Editing functions
  1888 #-------------------------------------------------------------------------------
  1919 #-------------------------------------------------------------------------------
  1923     def CopyBlock(self, element, pos):
  1954     def CopyBlock(self, element, pos):
  1924         id = self.GetNewId()
  1955         id = self.GetNewId()
  1925         block = element.Clone(id, pos)
  1956         block = element.Clone(id, pos)
  1926         self.AddBlock(block)
  1957         self.AddBlock(block)
  1927         if isinstance(block, Comment):
  1958         if isinstance(block, Comment):
  1928             self.Controler.AddCurrentElementEditingComment(id)
  1959             self.Controler.AddEditedElementComment(self.TagName, id)
  1929             self.RefreshCommentModel(comment)
  1960             self.RefreshCommentModel(comment)
  1930         elif isinstance(block, FBD_Block):
  1961         elif isinstance(block, FBD_Block):
  1931             self.Controler.AddCurrentElementEditingBlock(id, block.GetType(), None)
  1962             self.Controler.AddEditedElementBlock(self.TagName, id, block.GetType(), None)
  1932             self.RefreshBlockModel(block)
  1963             self.RefreshBlockModel(block)
  1933         elif isinstance(block, FBD_Variable):
  1964         elif isinstance(block, FBD_Variable):
  1934             self.Controler.AddCurrentElementEditingVariable(id, block.GetType())
  1965             self.Controler.AddEditedElementVariable(self.TagName, id, block.GetType())
  1935             self.RefreshVariableModel(block)
  1966             self.RefreshVariableModel(block)
  1936         elif isinstance(block, FBD_Connector):
  1967         elif isinstance(block, FBD_Connector):
  1937             self.Controler.AddCurrentElementEditingConnection(id, block.GetType())
  1968             self.Controler.AddEditedElementConnection(self.TagName, id, block.GetType())
  1938             self.RefreshConnectionModel(block)
  1969             self.RefreshConnectionModel(block)
  1939         elif isinstance(block, LD_Contact):
  1970         elif isinstance(block, LD_Contact):
  1940             self.Controler.AddCurrentElementEditingContact(id)
  1971             self.Controler.AddEditedElementContact(self.TagName, id)
  1941             self.RefreshContactModel(block)
  1972             self.RefreshContactModel(block)
  1942         elif isinstance(block, LD_Coil):
  1973         elif isinstance(block, LD_Coil):
  1943             self.Controler.AddCurrentElementEditingCoil(id)
  1974             self.Controler.AddEditedElementCoil(self.TagName, id)
  1944             self.RefreshCoilModel(block)
  1975             self.RefreshCoilModel(block)
  1945         elif isinstance(block, LD_PowerRail):
  1976         elif isinstance(block, LD_PowerRail):
  1946             self.Controler.AddCurrentElementEditingPowerRail(id, block.GetType())
  1977             self.Controler.AddEditedElementPowerRail(self.TagName, id, block.GetType())
  1947             self.RefreshPowerRailModel(block)
  1978             self.RefreshPowerRailModel(block)
  1948         elif isinstance(block, SFC_Step):
  1979         elif isinstance(block, SFC_Step):
  1949             self.Controler.AddCurrentElementEditingStep(id)
  1980             self.Controler.AddEditedElementStep(self.TagName, id)
  1950             self.RefreshStepModel(block)    
  1981             self.RefreshStepModel(block)    
  1951         elif isinstance(block, SFC_Transition):
  1982         elif isinstance(block, SFC_Transition):
  1952             self.Controler.AddCurrentElementEditingTransition(id)
  1983             self.Controler.AddEditedElementTransition(self.TagName, id)
  1953             self.RefreshTransitionModel(block)       
  1984             self.RefreshTransitionModel(block)       
  1954         elif isinstance(block, SFC_Divergence):
  1985         elif isinstance(block, SFC_Divergence):
  1955             self.Controler.AddCurrentElementEditingDivergence(id, block.GetType())
  1986             self.Controler.AddEditedElementDivergence(self.TagName, id, block.GetType())
  1956             self.RefreshActionDivergenceModel(block)
  1987             self.RefreshActionDivergenceModel(block)
  1957         elif isinstance(block, SFC_Jump):
  1988         elif isinstance(block, SFC_Jump):
  1958             self.Controler.AddCurrentElementEditingJump(id)
  1989             self.Controler.AddEditedElementJump(self.TagName, id)
  1959             self.RefreshJumpModel(block)       
  1990             self.RefreshJumpModel(block)       
  1960         elif isinstance(block, SFC_ActionBlock):
  1991         elif isinstance(block, SFC_ActionBlock):
  1961             self.Controler.AddCurrentElementEditingActionBlock(id)
  1992             self.Controler.AddEditedElementActionBlock(self.TagName, id)
  1962             self.RefreshActionBlockModel(block)
  1993             self.RefreshActionBlockModel(block)
  1963         return block
  1994         return block
  1964             
  1995             
  1965 
  1996 
  1966 #-------------------------------------------------------------------------------
  1997 #-------------------------------------------------------------------------------