diff -r bbe0697cf1ea -r 0c53d6a36013 Viewer.py --- a/Viewer.py Fri Oct 26 17:04:18 2007 +0200 +++ b/Viewer.py Tue Oct 30 16:53:08 2007 +0100 @@ -49,7 +49,8 @@ ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6, ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9, ID_FBDVIEWERCONTEXTUALMENUITEMS11, ID_FBDVIEWERCONTEXTUALMENUITEMS12, -] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(10)] + ID_FBDVIEWERCONTEXTUALMENUITEMS14, ID_FBDVIEWERCONTEXTUALMENUITEMS15, +] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(12)] class ViewerDropTarget(wx.TextDropTarget): @@ -155,8 +156,13 @@ kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch') parent.AppendSeparator() AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11, + kind=wx.ITEM_NORMAL, text=u'Clear Execution Order') + AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS12, + kind=wx.ITEM_NORMAL, text=u'Reset Execution Order') + parent.AppendSeparator() + AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS14, kind=wx.ITEM_NORMAL, text=u'Edit Block') - AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS12, + AppendMenu(parent, help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS15, kind=wx.ITEM_NORMAL, text=u'Delete') # Link menu event to corresponding called functions self.Bind(wx.EVT_MENU, self.OnNoModifierMenu, @@ -175,10 +181,14 @@ id=ID_FBDVIEWERCONTEXTUALMENUITEMS8) self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu, id=ID_FBDVIEWERCONTEXTUALMENUITEMS9) + self.Bind(wx.EVT_MENU, self.OnClearExecutionOrderMenu, + id=ID_FBDVIEWERCONTEXTUALMENUITEMS11) + self.Bind(wx.EVT_MENU, self.OnResetExecutionOrderMenu, + id=ID_FBDVIEWERCONTEXTUALMENUITEMS12) self.Bind(wx.EVT_MENU, self.OnEditBlockMenu, - id=ID_FBDVIEWERCONTEXTUALMENUITEMS11) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS14) self.Bind(wx.EVT_MENU, self.OnDeleteMenu, - id=ID_FBDVIEWERCONTEXTUALMENUITEMS12) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS15) # Create and initialize Contextual Menu def _init_menus(self): @@ -388,7 +398,7 @@ ids.append(instance["id"]) self.current_id = max(self.current_id, instance["id"]) if instance["type"] == "input": - variable = FBD_Variable(self, INPUT, instance["name"], instance["value_type"], instance["id"]) + variable = FBD_Variable(self, INPUT, instance["name"], instance["value_type"], instance["id"], instance["executionOrder"]) variable.SetPosition(instance["x"], instance["y"]) variable.SetSize(instance["width"], instance["height"]) self.AddBlock(variable) @@ -399,7 +409,7 @@ if instance["connector"]["edge"]: connectors["output"].SetEdge(instance["connector"]["edge"]) elif instance["type"] == "output": - variable = FBD_Variable(self, OUTPUT, instance["name"], instance["value_type"], instance["id"]) + variable = FBD_Variable(self, OUTPUT, instance["name"], instance["value_type"], instance["id"], instance["executionOrder"]) variable.SetPosition(instance["x"], instance["y"]) variable.SetSize(instance["width"], instance["height"]) self.AddBlock(variable) @@ -411,7 +421,7 @@ connectors["input"].SetEdge(instance["connector"]["edge"]) self.CreateWires(connectors["input"], instance["connector"]["links"], ids) elif instance["type"] == "inout": - variable = FBD_Variable(self, INOUT, instance["name"], instance["value_type"], instance["id"]) + variable = FBD_Variable(self, INOUT, instance["name"], instance["value_type"], instance["id"], instance["executionOrder"]) variable.SetPosition(instance["x"], instance["y"]) variable.SetSize(instance["width"], instance["height"]) self.AddBlock(variable) @@ -599,9 +609,9 @@ else: connectors["outputs"].append((output["name"], None, "none")) if instance["name"] != None: - block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors) - else: - block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors) + block = FBD_Block(self, instance["type"], instance["name"], instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors, executionOrder=instance["executionOrder"]) + else: + block = FBD_Block(self, instance["type"], "", instance["id"], len(instance["connectors"]["inputs"]), connectors=connectors, executionOrder=instance["executionOrder"]) block.SetPosition(instance["x"], instance["y"]) block.SetSize(instance["width"], instance["height"]) self.AddBlock(block) @@ -698,65 +708,69 @@ def PopupBlockMenu(self, connector = None): if connector is not None and connector.IsCompatible("BOOL"): type = self.Controler.GetCurrentElementEditingType() - self.ContextualMenu.FindItemByPosition(0).Enable(True) - self.ContextualMenu.FindItemByPosition(1).Enable(True) - self.ContextualMenu.FindItemByPosition(2).Enable(type != "function") - self.ContextualMenu.FindItemByPosition(3).Enable(type != "function") + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, type != "function") + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, type != "function") else: - self.ContextualMenu.FindItemByPosition(0).Enable(False) - self.ContextualMenu.FindItemByPosition(1).Enable(False) - self.ContextualMenu.FindItemByPosition(2).Enable(False) - self.ContextualMenu.FindItemByPosition(3).Enable(False) - self.ContextualMenu.FindItemByPosition(5).Enable(False) - self.ContextualMenu.FindItemByPosition(6).Enable(False) - self.ContextualMenu.FindItemByPosition(8).Enable(False) - self.ContextualMenu.FindItemByPosition(9).Enable(False) - self.ContextualMenu.FindItemByPosition(11).Enable(self.SelectedElement.GetType() in self.Controler.GetProjectPouNames()) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames()) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True) if connector: if connector.IsNegated(): - self.ContextualMenu.FindItemByPosition(1).Check(True) + self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS1, True) elif connector.GetEdge() == "rising": - self.ContextualMenu.FindItemByPosition(2).Check(True) + self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS2, True) elif connector.GetEdge() == "falling": - self.ContextualMenu.FindItemByPosition(3).Check(True) - else: - self.ContextualMenu.FindItemByPosition(0).Check(True) + self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS3, True) + else: + self.ContextualMenu.Check(ID_FBDVIEWERCONTEXTUALMENUITEMS0, True) self.PopupMenu(self.ContextualMenu) def PopupWireMenu(self): - self.ContextualMenu.FindItemByPosition(0).Enable(False) - self.ContextualMenu.FindItemByPosition(1).Enable(False) - self.ContextualMenu.FindItemByPosition(2).Enable(False) - self.ContextualMenu.FindItemByPosition(3).Enable(False) - self.ContextualMenu.FindItemByPosition(5).Enable(True) - self.ContextualMenu.FindItemByPosition(6).Enable(True) - self.ContextualMenu.FindItemByPosition(8).Enable(False) - self.ContextualMenu.FindItemByPosition(9).Enable(False) - self.ContextualMenu.FindItemByPosition(11).Enable(False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, True) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, True) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True) self.PopupMenu(self.ContextualMenu) def PopupDivergenceMenu(self, connector): - self.ContextualMenu.FindItemByPosition(0).Enable(False) - self.ContextualMenu.FindItemByPosition(1).Enable(False) - self.ContextualMenu.FindItemByPosition(2).Enable(False) - self.ContextualMenu.FindItemByPosition(3).Enable(False) - self.ContextualMenu.FindItemByPosition(5).Enable(False) - self.ContextualMenu.FindItemByPosition(6).Enable(False) - self.ContextualMenu.FindItemByPosition(8).Enable(True) - self.ContextualMenu.FindItemByPosition(9).Enable(connector) - self.ContextualMenu.FindItemByPosition(11).Enable(False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, True) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, connector) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, True) self.PopupMenu(self.ContextualMenu) - def PopupDefaultMenu(self): - self.ContextualMenu.FindItemByPosition(0).Enable(False) - self.ContextualMenu.FindItemByPosition(1).Enable(False) - self.ContextualMenu.FindItemByPosition(2).Enable(False) - self.ContextualMenu.FindItemByPosition(3).Enable(False) - self.ContextualMenu.FindItemByPosition(5).Enable(False) - self.ContextualMenu.FindItemByPosition(6).Enable(False) - self.ContextualMenu.FindItemByPosition(8).Enable(False) - self.ContextualMenu.FindItemByPosition(9).Enable(False) - self.ContextualMenu.FindItemByPosition(11).Enable(False) + def PopupDefaultMenu(self, block = True): + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS0, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS1, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS2, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS3, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS5, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS6, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS8, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS9, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS14, False) + self.ContextualMenu.Enable(ID_FBDVIEWERCONTEXTUALMENUITEMS15, block) self.PopupMenu(self.ContextualMenu) #------------------------------------------------------------------------------- @@ -821,6 +835,16 @@ self.RefreshBuffer() event.Skip() + def OnClearExecutionOrderMenu(self, event): + self.Controler.ClearCurrentExecutionOrder() + self.RefreshBuffer() + self.RefreshView() + + def OnResetExecutionOrderMenu(self, event): + self.Controler.ResetCurrentExecutionOrder() + self.RefreshBuffer() + self.RefreshView() + #------------------------------------------------------------------------------- # Mouse event functions #------------------------------------------------------------------------------- @@ -962,6 +986,8 @@ wx.CallAfter(self.SetCursor, wx.NullCursor) self.ReleaseMouse() self.Refresh(False) + else: + self.PopupDefaultMenu(False) event.Skip() def OnViewerLeftDClick(self, event): @@ -1361,18 +1387,24 @@ dialog = BlockPropertiesDialog(self.ParentWindow) dialog.SetBlockList(self.Controler.GetBlockTypes()) dialog.SetPouNames(self.Controler.GetProjectPouNames()) - dialog.SetPouElementNames(self.Controler.GetCurrentElementEditingVariables()) + variable_names = self.Controler.GetCurrentElementEditingVariables() + if block.GetName() != "": + variable_names.remove(block.GetName()) + dialog.SetPouElementNames(variable_names) dialog.SetMinBlockSize(block.GetSize()) - values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes()} - values["extension"] = block.GetExtension() - dialog.SetValues(values) - if dialog.ShowModal() == wx.ID_OK: - values = dialog.GetValues() - if "name" in values: - block.SetName(values["name"]) - block.SetSize(values["width"], values["height"]) - block.SetType(values["type"], values["extension"]) + old_values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes(), + "executionOrder" : block.GetExecutionOrder(), "extension" : block.GetExtension()} + dialog.SetValues(old_values) + if dialog.ShowModal() == wx.ID_OK: + new_values = dialog.GetValues() + if "name" in new_values: + block.SetName(new_values["name"]) + block.SetSize(new_values["width"], new_values["height"]) + block.SetType(new_values["type"], new_values["extension"]) + block.SetExecutionOrder(new_values["executionOrder"]) self.RefreshBlockModel(block) + if old_values["executionOrder"] != new_values["executionOrder"]: + self.RefreshView() self.RefreshBuffer() self.RefreshScrollBars() self.ParentWindow.RefreshEditor() @@ -1392,19 +1424,22 @@ if returntype: varlist.append((self.Controler.GetCurrentElementEditingName(), "Output", returntype)) dialog.SetVariables(varlist) - values = {"name" : variable.GetName(), "type" : variable.GetType()} - dialog.SetValues(values) - if dialog.ShowModal() == wx.ID_OK: - old_type = variable.GetType() - values = dialog.GetValues() - variable.SetName(values["name"]) - variable.SetType(values["type"], values["value_type"]) - variable.SetSize(values["width"], values["height"]) - if old_type != values["type"]: + old_values = {"name" : variable.GetName(), "type" : variable.GetType(), + "executionOrder" : variable.GetExecutionOrder()} + dialog.SetValues(old_values) + if dialog.ShowModal() == wx.ID_OK: + new_values = dialog.GetValues() + variable.SetName(new_values["name"]) + variable.SetType(new_values["type"], new_values["value_type"]) + variable.SetSize(new_values["width"], new_values["height"]) + variable.SetExecutionOrder(new_values["executionOrder"]) + if old_values["type"] != new_values["type"]: id = variable.GetId() self.Controler.RemoveCurrentElementEditingInstance(id) - self.Controler.AddCurrentElementEditingVariable(id, values["type"]) + self.Controler.AddCurrentElementEditingVariable(id, new_values["type"]) self.RefreshVariableModel(variable) + if old_values["executionOrder"] != new_values["executionOrder"]: + self.RefreshView() self.RefreshBuffer() self.RefreshScrollBars() self.Refresh(False) @@ -1600,6 +1635,7 @@ infos = {} infos["type"] = block.GetType() infos["name"] = block.GetName() + infos["executionOrder"] = block.GetExecutionOrder() infos["x"], infos["y"] = block.GetPosition() infos["width"], infos["height"] = block.GetSize() infos["connectors"] = block.GetConnectors() @@ -1609,6 +1645,7 @@ variableid = variable.GetId() infos = {} infos["name"] = variable.GetName() + infos["executionOrder"] = variable.GetExecutionOrder() infos["x"], infos["y"] = variable.GetPosition() infos["width"], infos["height"] = variable.GetSize() infos["connectors"] = variable.GetConnectors() @@ -1618,6 +1655,7 @@ connectionid = connection.GetId() infos = {} infos["name"] = connection.GetName() + infos["executionOrder"] = connection.GetExecutionOrder() infos["x"], infos["y"] = connection.GetPosition() infos["width"], infos["height"] = connection.GetSize() infos["connector"] = connection.GetConnector()