diff -r 04a02b4b2a57 -r dd6f693e46a1 Viewer.py --- a/Viewer.py Tue Aug 07 17:37:38 2007 +0200 +++ b/Viewer.py Tue Aug 07 17:38:48 2007 +0200 @@ -22,7 +22,6 @@ #License along with this library; if not, write to the Free Software #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -from wxPython.wx import * import wx from plcopen.structures import * @@ -38,11 +37,11 @@ #------------------------------------------------------------------------------- # ID Constants for menu items -[wxID_FBDVIEWERCONTEXTUALMENUITEMS0, wxID_FBDVIEWERCONTEXTUALMENUITEMS1, - wxID_FBDVIEWERCONTEXTUALMENUITEMS2, wxID_FBDVIEWERCONTEXTUALMENUITEMS3, - wxID_FBDVIEWERCONTEXTUALMENUITEMS5, wxID_FBDVIEWERCONTEXTUALMENUITEMS6, - wxID_FBDVIEWERCONTEXTUALMENUITEMS8, wxID_FBDVIEWERCONTEXTUALMENUITEMS9, - wxID_FBDVIEWERCONTEXTUALMENUITEMS11, +[ID_FBDVIEWERCONTEXTUALMENUITEMS0, ID_FBDVIEWERCONTEXTUALMENUITEMS1, + ID_FBDVIEWERCONTEXTUALMENUITEMS2, ID_FBDVIEWERCONTEXTUALMENUITEMS3, + ID_FBDVIEWERCONTEXTUALMENUITEMS5, ID_FBDVIEWERCONTEXTUALMENUITEMS6, + ID_FBDVIEWERCONTEXTUALMENUITEMS8, ID_FBDVIEWERCONTEXTUALMENUITEMS9, + ID_FBDVIEWERCONTEXTUALMENUITEMS11, ] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)] @@ -85,7 +84,7 @@ """ -Class that implements a Viewer based on a wxScrolledWindow for drawing and +Class that implements a Viewer based on a wx.ScrolledWindow for drawing and manipulating graphic elements """ @@ -94,46 +93,46 @@ # Create Contextual Menu items def _init_coll_ContextualMenu_Items(self, parent): # Create menu items - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS0, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS0, kind=wx.ITEM_RADIO, text=u'No Modifier') - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS1, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS1, kind=wx.ITEM_RADIO, text=u'Negated') - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS2, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS2, kind=wx.ITEM_RADIO, text=u'Rising Edge') - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS3, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS3, kind=wx.ITEM_RADIO, text=u'Falling Edge') parent.AppendSeparator() - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS5, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS5, kind=wx.ITEM_NORMAL, text=u'Add Wire Segment') - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS6, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS6, kind=wx.ITEM_NORMAL, text=u'Delete Wire Segment') parent.AppendSeparator() - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS8, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS8, kind=wx.ITEM_NORMAL, text=u'Add Divergence Branch') - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS9, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS9, kind=wx.ITEM_NORMAL, text=u'Delete Divergence Branch') parent.AppendSeparator() - parent.Append(help='', id=wxID_FBDVIEWERCONTEXTUALMENUITEMS11, + parent.Append(help='', id=ID_FBDVIEWERCONTEXTUALMENUITEMS11, kind=wx.ITEM_NORMAL, text=u'Delete') # Link menu event to corresponding called functions self.Bind(wx.EVT_MENU, self.OnNoModifierMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS0) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS0) self.Bind(wx.EVT_MENU, self.OnNegatedMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS1) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS1) self.Bind(wx.EVT_MENU, self.OnRisingEdgeMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS2) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS2) self.Bind(wx.EVT_MENU, self.OnFallingEdgeMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS3) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS3) self.Bind(wx.EVT_MENU, self.OnAddSegmentMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS5) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS5) self.Bind(wx.EVT_MENU, self.OnDeleteSegmentMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS6) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS6) self.Bind(wx.EVT_MENU, self.OnAddBranchMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS8) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS8) self.Bind(wx.EVT_MENU, self.OnDeleteBranchMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS9) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS9) self.Bind(wx.EVT_MENU, self.OnDeleteMenu, - id=wxID_FBDVIEWERCONTEXTUALMENUITEMS11) + id=ID_FBDVIEWERCONTEXTUALMENUITEMS11) # Create and initialize Contextual Menu def _init_menus(self): @@ -147,7 +146,7 @@ self._init_menus() # Adding a rubberband to Viewer self.rubberBand = RubberBand(drawingSurface=self) - self.SetBackgroundColour(wxColour(255,255,255)) + self.SetBackgroundColour(wx.Colour(255,255,255)) self.ResetView() self.Scaling = None #self.Scaling = (8, 8) @@ -167,15 +166,15 @@ self.SetDropTarget(ViewerDropTarget(self)) # Link Viewer event to corresponding methods - EVT_PAINT(self, self.OnPaint) - EVT_LEFT_DOWN(self, self.OnViewerLeftDown) - EVT_LEFT_UP(self, self.OnViewerLeftUp) - EVT_LEFT_DCLICK(self, self.OnViewerLeftDClick) - EVT_RIGHT_UP(self, self.OnViewerRightUp) - EVT_MOTION(self, self.OnViewerMotion) - EVT_CHAR(self, self.OnChar) - EVT_SCROLLWIN(self, self.OnMoveWindow) - EVT_SIZE(self, self.OnMoveWindow) + self.Bind(wx.EVT_PAINT, self.OnPaint) + self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) + self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) + self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) + self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) + self.Bind(wx.EVT_MOTION, self.OnViewerMotion) + self.Bind(wx.EVT_CHAR, self.OnChar) + self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) + self.Bind(wx.EVT_SIZE, self.OnMoveWindow) # Returns a new id def GetNewId(self): @@ -187,7 +186,7 @@ self.ResetView() def GetLogicalDC(self): - dc = wxClientDC(self) + dc = wx.ClientDC(self) self.DoPrepareDC(dc) return dc @@ -328,7 +327,7 @@ variable.SetSize(instance["width"], instance["height"]) self.AddBlock(variable) connectors = variable.GetConnectors() - connectors["output"].SetPosition(wxPoint(*instance["connector"]["position"])) + connectors["output"].SetPosition(wx.Point(*instance["connector"]["position"])) if instance["connector"]["negated"]: connectors["output"].SetNegated(True) if instance["connector"]["edge"]: @@ -339,7 +338,7 @@ variable.SetSize(instance["width"], instance["height"]) self.AddBlock(variable) connectors = variable.GetConnectors() - connectors["input"].SetPosition(wxPoint(*instance["connector"]["position"])) + connectors["input"].SetPosition(wx.Point(*instance["connector"]["position"])) if instance["connector"]["negated"]: connectors["input"].SetNegated(True) if instance["connector"]["edge"]: @@ -351,8 +350,8 @@ variable.SetSize(instance["width"], instance["height"]) self.AddBlock(variable) connectors = variable.GetConnectors() - connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"])) - connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"])) + connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) + connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) if instance["connectors"]["output"]["negated"]: connectors["output"].SetNegated(True) if instance["connectors"]["output"]["edge"]: @@ -368,14 +367,14 @@ connection.SetSize(instance["width"], instance["height"]) self.AddBlock(connection) connector = connection.GetConnector() - connector.SetPosition(wxPoint(*instance["connector"]["position"])) + connector.SetPosition(wx.Point(*instance["connector"]["position"])) elif instance["type"] == "connection": connection = FBD_Connector(self, CONNECTOR, instance["name"], instance["id"]) connection.SetPosition(instance["x"], instance["y"]) connection.SetSize(instance["width"], instance["height"]) self.AddBlock(connection) connector = connection.GetConnector() - connector.SetPosition(wxPoint(*instance["connector"]["position"])) + connector.SetPosition(wx.Point(*instance["connector"]["position"])) self.CreateWires(connector, instance["connector"]["links"], ids) elif instance["type"] == "comment": comment = Comment(self, instance["content"], instance["id"]) @@ -388,14 +387,14 @@ self.AddBlock(leftpowerrail) connectors = leftpowerrail.GetConnectors() for i, connector in enumerate(instance["connectors"]): - connectors[i].SetPosition(wxPoint(*connector["position"])) + connectors[i].SetPosition(wx.Point(*connector["position"])) elif instance["type"] == "rightPowerRail": rightpowerrail = LD_PowerRail(self, RIGHTRAIL, instance["id"], [True for i in range(len(instance["connectors"]))]) rightpowerrail.SetPosition(instance["x"], instance["y"]) self.AddBlock(rightpowerrail) connectors = rightpowerrail.GetConnectors() for i, connector in enumerate(instance["connectors"]): - connectors[i].SetPosition(wxPoint(*connector["position"])) + connectors[i].SetPosition(wx.Point(*connector["position"])) self.CreateWires(connectors[i], connector["links"], ids) elif instance["type"] == "contact": if instance["negated"]: @@ -418,9 +417,9 @@ contact.SetPosition(instance["x"], instance["y"]) self.AddBlock(contact) connectors = contact.GetConnectors() - connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"])) + connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) - connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"])) + connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) elif instance["type"] == "coil": if instance["negated"]: negated = instance["negated"] @@ -442,9 +441,9 @@ coil.SetPosition(instance["x"], instance["y"]) self.AddBlock(coil) connectors = coil.GetConnectors() - connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"])) + connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) - connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"])) + connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) elif instance["type"] == "step": if instance["initial"]: initial = instance["initial"] @@ -460,20 +459,22 @@ step.AddAction() connectors = step.GetConnectors() if connectors["input"]: - connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"])) + connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) if connectors["output"]: - connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"])) + connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) if connectors["action"]: - connectors["action"].SetPosition(wxPoint(*instance["connectors"]["action"]["position"])) + connectors["action"].SetPosition(wx.Point(*instance["connectors"]["action"]["position"])) elif instance["type"] == "transition": transition = SFC_Transition(self, instance["condition_type"], instance["condition"], instance["id"]) transition.SetPosition(instance["x"], instance["y"]) self.AddBlock(transition) connectors = transition.GetConnectors() - connectors["input"].SetPosition(wxPoint(*instance["connectors"]["input"]["position"])) + connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) - connectors["output"].SetPosition(wxPoint(*instance["connectors"]["output"]["position"])) + connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) + if instance["condition_type"] == "connection": + self.CreateWires(connectors["connection"], instance["connectors"]["connection"]["links"], ids) elif instance["type"] in ["selectionDivergence", "selectionConvergence", "simultaneousDivergence", "simultaneousConvergence"]: if instance["type"] == "selectionDivergence": divergence = SFC_Divergence(self, SELECTION_DIVERGENCE, @@ -493,17 +494,17 @@ connectors = divergence.GetConnectors() for i, input_connector in enumerate(instance["connectors"]["inputs"]): connector = connectors["inputs"][i] - connector.SetPosition(wxPoint(*input_connector["position"])) + connector.SetPosition(wx.Point(*input_connector["position"])) self.CreateWires(connector, input_connector["links"], ids) for i, output_connector in enumerate(instance["connectors"]["outputs"]): connector = connectors["outputs"][i] - connector.SetPosition(wxPoint(*output_connector["position"])) + connector.SetPosition(wx.Point(*output_connector["position"])) elif instance["type"] == "jump": jump = SFC_Jump(self, instance["target"], instance["id"]) jump.SetPosition(instance["x"], instance["y"]) self.AddBlock(jump) connector = jump.GetConnector() - connector.SetPosition(wxPoint(*instance["connector"]["position"])) + connector.SetPosition(wx.Point(*instance["connector"]["position"])) self.CreateWires(connector, instance["connector"]["links"], ids) elif instance["type"] == "actionBlock": actionBlock = SFC_ActionBlock(self, instance["actions"], instance["id"]) @@ -511,7 +512,7 @@ actionBlock.SetSize(instance["width"], instance["height"]) self.AddBlock(actionBlock) connector = actionBlock.GetConnector() - connector.SetPosition(wxPoint(*instance["connector"]["position"])) + connector.SetPosition(wx.Point(*instance["connector"]["position"])) self.CreateWires(connector, instance["connector"]["links"], ids) else: if instance["name"] != None: @@ -524,7 +525,7 @@ connectors = block.GetConnectors() for i, input_connector in enumerate(instance["connectors"]["inputs"]): connector = connectors["inputs"][i] - connector.SetPosition(wxPoint(*input_connector["position"])) + connector.SetPosition(wx.Point(*input_connector["position"])) if input_connector["negated"]: connector.SetNegated(True) if input_connector["edge"]: @@ -536,7 +537,7 @@ connector.SetNegated(True) if output_connector["edge"]: connector.SetEdge(output_connector["edge"]) - connector.SetPosition(wxPoint(*output_connector["position"])) + connector.SetPosition(wx.Point(*output_connector["position"])) def CreateWires(self, start_connector, links, ids): for link in links: @@ -549,7 +550,7 @@ connected = self.FindElementById(refLocalId) if connected: points = link["points"] - end_connector = connected.GetConnector(wxPoint(points[-1][0], points[-1][1]), link["formalParameter"]) + end_connector = connected.GetConnector(wx.Point(points[-1][0], points[-1][1]), link["formalParameter"]) if end_connector: wire = Wire(self) wire.SetPoints(points) @@ -682,8 +683,8 @@ self.PopupMenu(self.ContextualMenu) def EditCommentContent(self, comment): - dialog = wxTextEntryDialog(self.Parent, "Edit comment", "Please enter comment text", comment.GetContent(), wxOK|wxCANCEL|wxTE_MULTILINE) - if dialog.ShowModal() == wxID_OK: + dialog = wx.TextEntryDialog(self.Parent, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL|wx.TE_MULTILINE) + if dialog.ShowModal() == wx.ID_OK: value = dialog.GetValue() comment.SetContent(value) infos = {"content" : value} @@ -790,9 +791,9 @@ connector = self.FindBlockConnector(pos) if connector: if (connector.GetDirection() == EAST): - wire = Wire(self, [wxPoint(pos.x, pos.y), EAST], [wxPoint(pos.x, pos.y), WEST]) + wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST]) else: - wire = Wire(self, [wxPoint(pos.x, pos.y), WEST], [wxPoint(pos.x, pos.y), EAST]) + wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST]) wire.oldPos = pos wire.Handle = (HANDLE_POINT, 0) wire.ProcessDragging(0, 0) @@ -821,34 +822,34 @@ bbox = self.rubberBand.GetCurrentExtent() self.rubberBand.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) if self.Mode == MODE_BLOCK: - wxCallAfter(self.AddNewBlock, bbox) + wx.CallAfter(self.AddNewBlock, bbox) elif self.Mode == MODE_VARIABLE: - wxCallAfter(self.AddNewVariable, bbox) + wx.CallAfter(self.AddNewVariable, bbox) elif self.Mode == MODE_CONNECTION: - wxCallAfter(self.AddNewConnection, bbox) + wx.CallAfter(self.AddNewConnection, bbox) elif self.Mode == MODE_COMMENT: - wxCallAfter(self.AddNewComment, bbox) + wx.CallAfter(self.AddNewComment, bbox) elif self.Mode == MODE_CONTACT: - wxCallAfter(self.AddNewContact, bbox) + wx.CallAfter(self.AddNewContact, bbox) elif self.Mode == MODE_COIL: - wxCallAfter(self.AddNewContact, bbox) + wx.CallAfter(self.AddNewContact, bbox) elif self.Mode == MODE_POWERRAIL: - wxCallAfter(self.AddNewPowerRail, bbox) + wx.CallAfter(self.AddNewPowerRail, bbox) elif self.Mode == MODE_INITIALSTEP: - wxCallAfter(self.AddNewInitialStep, bbox) + wx.CallAfter(self.AddNewInitialStep, bbox) elif self.Mode == MODE_STEP: - wxCallAfter(self.AddNewStep, bbox) + wx.CallAfter(self.AddNewStep, bbox) elif self.Mode == MODE_TRANSITION: - wxCallAfter(self.AddNewTransition, bbox) + wx.CallAfter(self.AddNewTransition, bbox) elif self.Mode == MODE_DIVERGENCE: - wxCallAfter(self.AddNewDivergence, bbox) + wx.CallAfter(self.AddNewDivergence, bbox) elif self.Mode == MODE_JUMP: - wxCallAfter(self.AddNewJump, bbox) + wx.CallAfter(self.AddNewJump, bbox) elif self.Mode == MODE_ACTION: - wxCallAfter(self.AddNewActionBlock, bbox) + wx.CallAfter(self.AddNewActionBlock, bbox) elif self.Mode == MODE_SELECTION and self.SelectedElement: self.SelectedElement.OnLeftUp(event, self.GetLogicalDC(), self.Scaling) - wxCallAfter(self.SetCursor, wxNullCursor) + wx.CallAfter(self.SetCursor, wx.NullCursor) self.ReleaseMouse() self.Refresh() elif self.Mode == MODE_WIRE and self.SelectedElement: @@ -864,7 +865,7 @@ self.SelectedElement = None self.Refresh() if not self.SavedMode: - wxCallAfter(self.Parent.ResetCurrentMode) + wx.CallAfter(self.Parent.ResetCurrentMode) event.Skip() def OnViewerRightUp(self, event): @@ -876,7 +877,7 @@ self.SelectedElement = element self.SelectedElement.SetSelected(True) self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling) - wxCallAfter(self.SetCursor, wxNullCursor) + wx.CallAfter(self.SetCursor, wx.NullCursor) self.ReleaseMouse() self.Refresh() event.Skip() @@ -904,7 +905,7 @@ self.Refresh() if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown(): position = event.GetPosition() - move_window = wxPoint() + move_window = wx.Point() window_size = self.GetClientSize() xstart, ystart = self.GetViewStart() if position.x < SCROLL_ZONE and xstart > 0: @@ -925,22 +926,22 @@ #------------------------------------------------------------------------------- def OnChar(self, event): - xpos, ypos = self.GetScrollPos(wxHORIZONTAL), self.GetScrollPos(wxVERTICAL) - xmax = self.GetScrollRange(wxHORIZONTAL) - self.GetScrollThumb(wxHORIZONTAL) - ymax = self.GetScrollRange(wxVERTICAL) - self.GetScrollThumb(wxVERTICAL) + xpos, ypos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL) + xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) + ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) keycode = event.GetKeyCode() if self.Scaling: scaling = self.Scaling else: scaling = (8, 8) - if keycode == WXK_DELETE and self.SelectedElement: + if keycode == wx.WXK_DELETE and self.SelectedElement: self.SelectedElement.Clean() self.SelectedElement.Delete() self.SelectedElement = None self.RefreshBuffer() self.RefreshScrollBars() self.Refresh() - elif keycode == WXK_LEFT: + elif keycode == wx.WXK_LEFT: if event.ControlDown() and event.ShiftDown(): self.Scroll(0, ypos) elif event.ControlDown(): @@ -950,7 +951,7 @@ self.RefreshBuffer() self.RefreshScrollBars() self.Refresh() - elif keycode == WXK_RIGHT: + elif keycode == wx.WXK_RIGHT: if event.ControlDown() and event.ShiftDown(): self.Scroll(xmax, ypos) elif event.ControlDown(): @@ -960,7 +961,7 @@ self.RefreshBuffer() self.RefreshScrollBars() self.Refresh() - elif keycode == WXK_UP: + elif keycode == wx.WXK_UP: if event.ControlDown() and event.ShiftDown(): self.Scroll(xpos, 0) elif event.ControlDown(): @@ -970,7 +971,7 @@ self.RefreshBuffer() self.RefreshScrollBars() self.Refresh() - elif keycode == WXK_DOWN: + elif keycode == wx.WXK_DOWN: if event.ControlDown() and event.ShiftDown(): self.Scroll(xpos, ymax) elif event.ControlDown(): @@ -989,7 +990,7 @@ dialog = BlockPropertiesDialog(self.Parent) dialog.SetBlockList(self.Controler.GetBlockTypes()) dialog.SetMinBlockSize((bbox.width, bbox.height)) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() if "name" in values: @@ -1018,7 +1019,7 @@ if returntype: varlist.append((self.Controler.GetCurrentElementEditingName(), "Output", returntype)) dialog.SetVariables(varlist) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id) @@ -1035,7 +1036,7 @@ def AddNewConnection(self, bbox): dialog = ConnectionPropertiesDialog(self.Parent) dialog.SetMinConnectionSize((bbox.width, bbox.height)) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() connection = FBD_Connector(self, values["type"], values["name"], id) @@ -1050,8 +1051,8 @@ dialog.Destroy() def AddNewComment(self, bbox): - dialog = wxTextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wxOK|wxCANCEL|wxTE_MULTILINE) - if dialog.ShowModal() == wxID_OK: + dialog = wx.TextEntryDialog(self.Parent, "Add a new comment", "Please enter comment text", "", wx.OK|wx.CANCEL|wx.TE_MULTILINE) + if dialog.ShowModal() == wx.ID_OK: value = dialog.GetValue() id = self.GetNewId() comment = Comment(self, value, id) @@ -1077,7 +1078,7 @@ dialog.SetVariables(varlist) dialog.SetValues({"name":"","type":CONTACT_NORMAL}) dialog.SetElementSize((bbox.width, bbox.height)) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() contact = LD_Contact(self, values["type"], values["name"], id) @@ -1105,7 +1106,7 @@ dialog.SetVariables(varlist) dialog.SetValues({"name":"","type":COIL_NORMAL}) dialog.SetElementSize((bbox.width, bbox.height)) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() coil = LD_Coil(self, values["type"], values["name"], id) @@ -1122,7 +1123,7 @@ def AddNewPowerRail(self, bbox): dialog = LDPowerRailDialog(self.Parent) dialog.SetMinSize((bbox.width, bbox.height)) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])]) @@ -1139,7 +1140,7 @@ def AddNewTransition(self, bbox): dialog = TransitionContentDialog(self.Parent) dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() transition = SFC_Transition(self, values["type"], values["value"], id) @@ -1157,7 +1158,7 @@ def AddNewDivergence(self, bbox): dialog = DivergenceCreateDialog(self.Parent) dialog.SetMinSize((bbox.width, bbox.height)) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: id = self.GetNewId() values = dialog.GetValues() divergence = SFC_Divergence(self, values["type"], values["number"], id) @@ -1184,7 +1185,7 @@ values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes()} values["extension"] = block.GetExtension() dialog.SetValues(values) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: values = dialog.GetValues() if "name" in values: block.SetName(values["name"]) @@ -1210,7 +1211,7 @@ dialog.SetVariables(varlist) values = {"name" : variable.GetName(), "type" : variable.GetType()} dialog.SetValues(values) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: old_type = variable.GetType() values = dialog.GetValues() variable.SetName(values["name"]) @@ -1231,7 +1232,7 @@ dialog.SetMinConnectionSize(connection.GetSize()) values = {"name" : connection.GetName(), "type" : connection.GetType()} dialog.SetValues(values) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: old_type = connection.GetType() values = dialog.GetValues() connection.SetName(values["name"]) @@ -1259,7 +1260,7 @@ values = {"name" : contact.GetName(), "type" : contact.GetType()} dialog.SetValues(values) dialog.SetElementSize(contact.GetSize()) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: values = dialog.GetValues() contact.SetName(values["name"]) contact.SetType(values["type"]) @@ -1285,12 +1286,12 @@ values = {"name" : coil.GetName(), "type" : coil.GetType()} dialog.SetValues(values) dialog.SetElementSize(coil.GetSize()) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: values = dialog.GetValues() coil.SetName(values["name"]) coil.SetType(values["type"]) coil.SetSize(values["width"], values["height"]) - self.RefreshContactModel(coil) + self.RefreshCoilModel(coil) self.RefreshBuffer() self.RefreshScrollBars() self.Refresh() @@ -1299,7 +1300,7 @@ def EditPowerRailContent(self, powerrail): dialog = LDPowerRailDialog(self.Parent, powerrail.GetType(), len(powerrail.GetConnectors())) dialog.SetMinSize(powerrail.GetSize()) - if dialog.ShowModal() == wxID_OK: + if dialog.ShowModal() == wx.ID_OK: old_type = powerrail.GetType() values = dialog.GetValues() powerrail.SetType(values["type"], [True for i in xrange(values["number"])]) @@ -1313,43 +1314,52 @@ self.RefreshScrollBars() self.Refresh() dialog.Destroy() -## -## -## def AddNewTransition(self, bbox): -## dialog = TransitionContentDialog(self.Parent) -## dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) -## if dialog.ShowModal() == wxID_OK: -## id = self.GetNewId() -## values = dialog.GetValues() -## transition = SFC_Transition(self, values["type"], values["value"], id) -## transition.SetPosition(bbox.x, bbox.y) -## min_width, min_height = transition.GetMinSize() -## transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) -## self.Blocks.append(transition) -## self.Elements.append(transition) -## self.Controler.AddCurrentElementEditingTransition(id) -## self.RefreshTransitionModel(transition) -## self.RefreshScrollBars() -## self.Refresh() -## dialog.Destroy() -## -## def AddNewDivergence(self, bbox): -## dialog = DivergenceCreateDialog(self.Parent) -## dialog.SetMinSize((bbox.width, bbox.height)) -## if dialog.ShowModal() == wxID_OK: -## id = self.GetNewId() -## values = dialog.GetValues() -## divergence = SFC_Divergence(self, values["type"], values["number"], id) -## divergence.SetPosition(bbox.x, bbox.y) -## min_width, min_height = divergence.GetMinSize() -## divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) -## self.Blocks.append(divergence) -## self.Elements.append(divergence) -## self.Controler.AddCurrentElementEditingDivergence(id, values["type"]) -## self.RefreshDivergenceModel(divergence) -## self.RefreshScrollBars() -## self.Refresh() -## dialog.Destroy() + + + def EditTransitionContent(self, transition): + dialog = TransitionContentDialog(self.Parent, self.GetDrawingMode() == FREEDRAWING_MODE) + dialog.SetTransitions(self.Controler.GetCurrentElementEditingTransitions()) + dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition()}) + dialog.SetElementSize(transition.GetSize()) + if dialog.ShowModal() == wx.ID_OK: + values = dialog.GetValues() + transition.SetType(values["type"],values["value"]) + transition.RefreshModel() + self.RefreshBuffer() + self.RefreshScrollBars() + self.Refresh() + dialog.Destroy() + + def EditJumpContent(self, jump): + choices = [] + for block in self.Blocks: + if isinstance(block, SFC_Step): + choices.append(block.GetName()) + dialog = wx.SingleChoiceDialog(self.Parent, "Edit jump target", "Please choose a target", choices, wx.OK|wx.CANCEL) + dialog.SetSelection(choices.index(jump.GetTarget())) + if dialog.ShowModal() == wx.ID_OK: + value = dialog.GetStringSelection() + jump.SetTarget(value) + jump.RefreshModel() + self.RefreshBuffer() + self.RefreshScrollBars() + self.Refresh() + dialog.Destroy() + + def EditActionBlockContent(self, actionblock): + dialog = ActionBlockDialog(self.Parent) + dialog.SetQualifierList(self.Controler.GetQualifierTypes()) + dialog.SetActionList(self.Controler.GetCurrentElementEditingActions()) + dialog.SetVariableList(self.Controler.GetCurrentElementEditingInterfaceVars()) + dialog.SetValues(actionblock.GetActions()) + if dialog.ShowModal() == wx.ID_OK: + actions = dialog.GetValues() + actionblock.SetActions(actions) + actionblock.RefreshModel() + self.RefreshBuffer() + self.RefreshScrollBars() + self.Refresh() + dialog.Destroy() #------------------------------------------------------------------------------- # Model update functions @@ -1627,7 +1637,7 @@ def OnPaint(self, event): dc = self.GetLogicalDC() dc.Clear() - dc.SetPen(wxPen(wxColour(230, 230, 230))) + dc.SetPen(wx.Pen(wx.Colour(230, 230, 230))) if self.Scaling and self.DrawGrid: width, height = dc.GetSize() for i in xrange(1, width / self.Scaling[0] + 1):