diff -r 255eada20688 -r 9aa1fdfb7cb2 Viewer.py --- a/Viewer.py Fri Oct 05 18:11:51 2007 +0200 +++ b/Viewer.py Wed Oct 17 17:50:27 2007 +0200 @@ -53,6 +53,7 @@ self.ParentWindow = parent def OnDropText(self, x, y, data): + x, y = self.ParentWindow.CalcUnscrolledPosition(x, y) values = eval(data) if values[1] == "program": message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR) @@ -1286,6 +1287,46 @@ self.Refresh(False) dialog.Destroy() + def AddNewJump(self, bbox): + choices = [] + for block in self.Blocks: + if isinstance(block, SFC_Step): + choices.append(block.GetName()) + dialog = wx.SingleChoiceDialog(self.ParentWindow, "Add a new jump", "Please choose a target", choices, wx.OK|wx.CANCEL) + if dialog.ShowModal() == wx.ID_OK: + id = self.GetNewId() + value = dialog.GetStringSelection() + jump = SFC_Jump(self, value, id) + jump.SetPosition(bbox.x, bbox.y) + min_width, min_height = jump.GetMinSize() + jump.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) + self.AddBlock(jump) + self.Controler.AddCurrentElementEditingJump(id) + self.RefreshJumpModel(jump) + self.RefreshBuffer() + self.RefreshScrollBars() + self.Refresh() + dialog.Destroy() + + def AddNewActionBlock(self, bbox): + dialog = ActionBlockDialog(self.ParentWindow) + dialog.SetQualifierList(self.Controler.GetQualifierTypes()) + dialog.SetActionList(self.Controler.GetCurrentElementEditingActions()) + dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars()) + if dialog.ShowModal() == wx.ID_OK: + actions = dialog.GetValues() + id = self.GetNewId() + actionblock = SFC_ActionBlock(self, actions, id) + actionblock.SetPosition(bbox.x, bbox.y) + min_width, min_height = actionblock.GetMinSize() + actionblock.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) + self.AddBlock(actionblock) + self.Controler.AddCurrentElementEditingActionBlock(id) + self.RefreshActionBlockModel(actionblock) + self.RefreshBuffer() + self.RefreshScrollBars() + self.Refresh() + dialog.Destroy() #------------------------------------------------------------------------------- # Edit element content functions @@ -1716,9 +1757,9 @@ for element in connector.GetConnectedBlocks(): if element not in elements: elements.append(element) - powerrrail.Clean() - self.RemoveBlock(powerrrail) - self.Controler.RemoveCurrentElementEditingInstance(powerrrail.GetId()) + powerrail.Clean() + self.RemoveBlock(powerrail) + self.Controler.RemoveCurrentElementEditingInstance(powerrail.GetId()) for element in elements: element.RefreshModel()