--- 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()