94 values = None |
94 values = None |
95 if not isinstance(values, TupleType): |
95 if not isinstance(values, TupleType): |
96 message = "Invalid value \"%s\" for viewer block"%data |
96 message = "Invalid value \"%s\" for viewer block"%data |
97 values = None |
97 values = None |
98 if values is not None: |
98 if values is not None: |
99 if values[1] == "program": |
99 if values[1] == "debug": |
|
100 pass |
|
101 elif values[1] == "program": |
100 message = "Programs can't be used by other POUs!" |
102 message = "Programs can't be used by other POUs!" |
101 elif values[1] in ["function", "functionBlock", "program"]: |
103 elif values[1] in ["function", "functionBlock", "program"]: |
102 name, type = self.ParentWindow.Controler.GetEditedElementType(self.ParentWindow.GetTagName()) |
104 name, type = self.ParentWindow.Controler.GetEditedElementType(self.ParentWindow.GetTagName(), self.ParentWindow.Debug) |
103 if name == values[0]: |
105 if name == values[0]: |
104 message = "\"%s\" can't use itself!"%name |
106 message = "\"%s\" can't use itself!"%name |
105 elif type == "function" and values[1] != "function": |
107 elif type == "function" and values[1] != "function": |
106 message = "Function Blocks can't be used by Functions!" |
108 message = "Function Blocks can't be used by Functions!" |
107 elif self.ParentWindow.Controler.PouIsUsedBy(name, values[0]): |
109 elif self.ParentWindow.Controler.PouIsUsedBy(name, values[0], self.ParentWindow.Debug): |
108 message = "\"%s\" is already used by \"%s\"!"%(name, values[0]) |
110 message = "\"%s\" is already used by \"%s\"!"%(name, values[0]) |
109 else: |
111 else: |
110 blockname = values[2] |
112 blockname = values[2] |
111 if len(values) > 3: |
113 if len(values) > 3: |
112 blockinputs = values[3] |
114 blockinputs = values[3] |
162 self.ParentWindow.AddBlock(variable) |
165 self.ParentWindow.AddBlock(variable) |
163 self.ParentWindow.Controler.AddEditedElementVariable(self.ParentWindow.GetTagName(), id, var_type) |
166 self.ParentWindow.Controler.AddEditedElementVariable(self.ParentWindow.GetTagName(), id, var_type) |
164 self.ParentWindow.RefreshVariableModel(variable) |
167 self.ParentWindow.RefreshVariableModel(variable) |
165 self.ParentWindow.RefreshBuffer() |
168 self.ParentWindow.RefreshBuffer() |
166 self.ParentWindow.RefreshScrollBars() |
169 self.ParentWindow.RefreshScrollBars() |
|
170 self.ParentWindow.RefreshVisibleElements() |
167 self.ParentWindow.Refresh(False) |
171 self.ParentWindow.Refresh(False) |
168 else: |
172 else: |
169 message = "Variable don't belong to this POU!" |
173 message = "Variable don't belong to this POU!" |
170 wx.CallAfter(self.ShowMessage, message) |
174 if message is not None: |
|
175 wx.CallAfter(self.ShowMessage, message) |
171 |
176 |
172 def ShowMessage(self, message): |
177 def ShowMessage(self, message): |
173 if message is not None: |
178 message = wx.MessageDialog(self.ParentWindow, message, "Error", wx.OK|wx.ICON_ERROR) |
174 message = wx.MessageDialog(self.ParentWindow, message, "Error", wx.OK|wx.ICON_ERROR) |
179 message.ShowModal() |
175 message.ShowModal() |
180 message.Destroy() |
176 message.Destroy() |
|
177 |
181 |
178 |
182 |
179 """ |
183 """ |
180 Class that implements a Viewer based on a wx.ScrolledWindow for drawing and |
184 Class that implements a Viewer based on a wx.ScrolledWindow for drawing and |
181 manipulating graphic elements |
185 manipulating graphic elements |
329 font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"]) |
336 font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"]) |
330 dc.SetFont(font) |
337 dc.SetFont(font) |
331 width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
338 width, height = dc.GetTextExtent("ABCDEFGHIJKLMNOPQRSTUVWXYZ") |
332 self.SetFont(font) |
339 self.SetFont(font) |
333 |
340 |
|
341 self.ResetView() |
|
342 |
334 # Link Viewer event to corresponding methods |
343 # Link Viewer event to corresponding methods |
335 self.Bind(wx.EVT_PAINT, self.OnPaint) |
344 self.Bind(wx.EVT_PAINT, self.OnPaint) |
336 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
345 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
337 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
346 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
338 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
347 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
339 self.Bind(wx.EVT_RIGHT_DOWN, self.OnViewerRightDown) |
348 self.Bind(wx.EVT_RIGHT_DOWN, self.OnViewerRightDown) |
340 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
349 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
341 self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
350 self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
342 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
351 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
343 self.Bind(wx.EVT_CHAR, self.OnChar) |
352 self.Bind(wx.EVT_CHAR, self.OnChar) |
344 #self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
353 self.Bind(wx.EVT_SCROLLWIN, self.OnScrollWindow) |
345 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
354 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
346 |
355 |
347 def GetScrolledRect(self, rect): |
356 def GetScrolledRect(self, rect): |
348 rect.x, rect.y = self.CalcScrolledPosition(rect.x, rect.y) |
357 rect.x, rect.y = self.CalcScrolledPosition(rect.x, rect.y) |
349 return rect |
358 return rect |
425 wires.sort(lambda x,y:self.Wires[x].__cmp__(self.Wires[y])) |
441 wires.sort(lambda x,y:self.Wires[x].__cmp__(self.Wires[y])) |
426 if sort_comments: |
442 if sort_comments: |
427 comments.sort(lambda x,y:self.Comments[x].__cmp__(self.Comments[y])) |
443 comments.sort(lambda x,y:self.Comments[x].__cmp__(self.Comments[y])) |
428 return blocks + wires + comments |
444 return blocks + wires + comments |
429 |
445 |
|
446 def RefreshVisibleElements(self, xp = None, yp = None): |
|
447 x, y = self.CalcUnscrolledPosition(0, 0) |
|
448 if xp is not None: |
|
449 x = xp * self.GetScrollPixelsPerUnit()[0] |
|
450 if yp is not None: |
|
451 y = yp * self.GetScrollPixelsPerUnit()[1] |
|
452 width, height = self.GetClientSize() |
|
453 screen = wx.Rect(x, y, width, height) |
|
454 for comment in self.Comments: |
|
455 comment.TestVisible(screen) |
|
456 for wire in self.Wires: |
|
457 wire.TestVisible(screen) |
|
458 for block in self.Blocks: |
|
459 block.TestVisible(screen) |
|
460 |
430 #------------------------------------------------------------------------------- |
461 #------------------------------------------------------------------------------- |
431 # Reset functions |
462 # Reset functions |
432 #------------------------------------------------------------------------------- |
463 #------------------------------------------------------------------------------- |
433 |
464 |
434 # Resets Viewer lists |
465 # Resets Viewer lists |
435 def ResetView(self): |
466 def ResetView(self): |
436 self.Blocks = {} |
467 self.Blocks = {} |
437 self.Wires = {} |
468 self.Wires = {} |
438 self.Comments = {} |
469 self.Comments = {} |
|
470 self.Subscribed = {} |
439 self.SelectedElement = None |
471 self.SelectedElement = None |
440 self.HighlightedElement = None |
472 self.HighlightedElement = None |
|
473 |
|
474 def Flush(self): |
|
475 for block in self.Blocks: |
|
476 block.Flush() |
|
477 for element, iec_path in self.Subscribed.iteritems(): |
|
478 self.Controler.UnsubscribeDebugIECVariable(iec_path, element) |
441 |
479 |
442 # Remove all elements |
480 # Remove all elements |
443 def CleanView(self): |
481 def CleanView(self): |
444 for block in self.Blocks.keys(): |
482 for block in self.Blocks.keys(): |
445 block.Clean() |
483 block.Clean() |
506 |
544 |
507 # Refresh Viewer elements |
545 # Refresh Viewer elements |
508 def RefreshView(self): |
546 def RefreshView(self): |
509 self.current_id = 0 |
547 self.current_id = 0 |
510 # Start by reseting Viewer |
548 # Start by reseting Viewer |
|
549 self.Flush() |
511 self.ResetView() |
550 self.ResetView() |
512 instance = True |
551 instance = {} |
513 # List of ids of already loaded blocks |
552 # List of ids of already loaded blocks |
514 ids = [] |
553 ids = [] |
515 # Load Blocks until they are all loaded |
554 # Load Blocks until they are all loaded |
516 while instance: |
555 while instance is not None: |
517 instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, exclude=ids) |
556 instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, exclude = ids, debug = self.Debug) |
518 if instance: |
557 if instance is not None: |
519 self.loadInstance(instance, ids) |
558 self.loadInstance(instance, ids) |
520 self.RefreshScrollBars() |
559 self.RefreshScrollBars() |
521 |
560 |
522 for wire in self.Wires: |
561 for wire in self.Wires: |
523 if not wire.IsConnectedCompatible(): |
562 if not wire.IsConnectedCompatible(): |
524 wire.MarkAsInvalid() |
563 wire.MarkAsInvalid() |
525 |
564 if self.Debug: |
|
565 block = wire.EndConnected.GetParentBlock() |
|
566 if isinstance(block, LD_PowerRail): |
|
567 wire.SetValue(True) |
|
568 if isinstance(block, FBD_Block): |
|
569 blockname = block.GetName() |
|
570 connectorname = wire.EndConnected.GetName() |
|
571 if blockname != "": |
|
572 iec_path = "%s.%s.%s"%(self.InstancePath, block.GetName(), connectorname) |
|
573 else: |
|
574 if connectorname == "": |
|
575 connectorname = "OUT" |
|
576 iec_path = "%s.%s%d_%s"%(self.InstancePath, block.GetType(), block.GetId(), connectorname) |
|
577 self.Subscribed[wire] = iec_path.upper() |
|
578 self.Controler.SubscribeDebugIECVariable(iec_path.upper(), wire) |
|
579 |
|
580 if self.Debug: |
|
581 for block in self.Blocks.keys(): |
|
582 if isinstance(block, (LD_Contact, LD_Coil)): |
|
583 block.SetValue(False) |
|
584 block.SpreadCurrent() |
|
585 if isinstance(block, LD_Contact): |
|
586 iec_path = "%s.%s"%(self.InstancePath, block.GetName()) |
|
587 self.Subscribed[block] = iec_path.upper() |
|
588 self.Controler.SubscribeDebugIECVariable(iec_path.upper(), block) |
|
589 |
|
590 self.RefreshVisibleElements() |
526 self.ShowErrors() |
591 self.ShowErrors() |
527 self.Refresh(False) |
592 self.Refresh(False) |
528 |
593 |
529 def GetMaxSize(self): |
594 def GetMaxSize(self): |
530 maxx = maxy = 0 |
595 maxx = maxy = 0 |
794 connector.SetPosition(wx.Point(*output_connector["position"])) |
859 connector.SetPosition(wx.Point(*output_connector["position"])) |
795 |
860 |
796 def CreateWires(self, start_connector, links, ids): |
861 def CreateWires(self, start_connector, links, ids): |
797 for link in links: |
862 for link in links: |
798 refLocalId = link["refLocalId"] |
863 refLocalId = link["refLocalId"] |
799 if refLocalId != None: |
864 if refLocalId is not None: |
800 if refLocalId not in ids: |
865 if refLocalId not in ids: |
801 new_instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, refLocalId) |
866 new_instance = self.Controler.GetEditedElementInstanceInfos(self.TagName, refLocalId, debug = self.Debug) |
802 if new_instance: |
867 if new_instance is not None: |
803 self.loadInstance(new_instance, ids) |
868 self.loadInstance(new_instance, ids) |
804 connected = self.FindElementById(refLocalId) |
869 connected = self.FindElementById(refLocalId) |
805 if connected: |
870 if connected is not None: |
806 points = link["points"] |
871 points = link["points"] |
807 end_connector = connected.GetConnector(wx.Point(points[-1][0], points[-1][1]), link["formalParameter"]) |
872 end_connector = connected.GetConnector(wx.Point(points[-1][0], points[-1][1]), link["formalParameter"]) |
808 if end_connector: |
873 if end_connector is not None: |
809 wire = Wire(self) |
874 wire = Wire(self) |
810 wire.SetPoints(points) |
875 wire.SetPoints(points) |
811 start_connector.Connect((wire, 0), False) |
876 start_connector.Connect((wire, 0), False) |
812 end_connector.Connect((wire, -1), False) |
877 end_connector.Connect((wire, -1), False) |
813 wire.ConnectStartPoint(None, start_connector) |
878 wire.ConnectStartPoint(None, start_connector) |
814 wire.ConnectEndPoint(None, end_connector) |
879 wire.ConnectEndPoint(None, end_connector) |
815 self.AddWire(wire) |
880 self.AddWire(wire) |
816 |
881 |
817 def IsOfType(self, type, reference): |
882 def IsOfType(self, type, reference): |
818 return self.Controler.IsOfType(type, reference) |
883 return self.Controler.IsOfType(type, reference, self.Debug) |
819 |
884 |
820 def IsEndType(self, type): |
885 def IsEndType(self, type): |
821 return self.Controler.IsEndType(type) |
886 return self.Controler.IsEndType(type) |
822 |
887 |
823 def GetBlockType(self, type, inputs = None): |
888 def GetBlockType(self, type, inputs = None): |
824 return self.Controler.GetBlockType(type, inputs) |
889 return self.Controler.GetBlockType(type, inputs, self.Debug) |
825 |
890 |
826 #------------------------------------------------------------------------------- |
891 #------------------------------------------------------------------------------- |
827 # Search Element functions |
892 # Search Element functions |
828 #------------------------------------------------------------------------------- |
893 #------------------------------------------------------------------------------- |
829 |
894 |
890 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False) |
955 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS5, False) |
891 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False) |
956 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS6, False) |
892 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
957 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS8, False) |
893 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
958 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS9, False) |
894 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
959 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS14, False) |
895 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames()) |
960 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS16, self.SelectedElement.GetType() in self.Controler.GetProjectPouNames(self.Debug)) |
896 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
961 self.ContextualMenu.Enable(ID_VIEWERCONTEXTUALMENUITEMS17, True) |
897 if connector: |
962 if connector is not None: |
898 if connector.IsNegated(): |
963 if connector.IsNegated(): |
899 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS1, True) |
964 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS1, True) |
900 elif connector.GetEdge() == "rising": |
965 elif connector.GetEdge() == "rising": |
901 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS2, True) |
966 self.ContextualMenu.Check(ID_VIEWERCONTEXTUALMENUITEMS2, True) |
902 elif connector.GetEdge() == "falling": |
967 elif connector.GetEdge() == "falling": |
964 #------------------------------------------------------------------------------- |
1029 #------------------------------------------------------------------------------- |
965 # Menu items functions |
1030 # Menu items functions |
966 #------------------------------------------------------------------------------- |
1031 #------------------------------------------------------------------------------- |
967 |
1032 |
968 def OnAlignLeftMenu(self, event): |
1033 def OnAlignLeftMenu(self, event): |
969 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
1034 if self.SelectedElement is not None and isinstance(self.SelectedElement, Graphic_Group): |
970 self.SelectedElement.AlignElements(ALIGN_LEFT, None) |
1035 self.SelectedElement.AlignElements(ALIGN_LEFT, None) |
971 self.RefreshBuffer() |
1036 self.RefreshBuffer() |
972 self.Refresh(False) |
1037 self.Refresh(False) |
973 event.Skip() |
1038 event.Skip() |
974 |
1039 |
975 def OnAlignCenterMenu(self, event): |
1040 def OnAlignCenterMenu(self, event): |
976 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
1041 if self.SelectedElement is not None and isinstance(self.SelectedElement, Graphic_Group): |
977 self.SelectedElement.AlignElements(ALIGN_CENTER, None) |
1042 self.SelectedElement.AlignElements(ALIGN_CENTER, None) |
978 self.RefreshBuffer() |
1043 self.RefreshBuffer() |
979 self.Refresh(False) |
1044 self.Refresh(False) |
980 event.Skip() |
1045 event.Skip() |
981 |
1046 |
982 def OnAlignRightMenu(self, event): |
1047 def OnAlignRightMenu(self, event): |
983 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
1048 if self.SelectedElement is not None and isinstance(self.SelectedElement, Graphic_Group): |
984 self.SelectedElement.AlignElements(ALIGN_RIGHT, None) |
1049 self.SelectedElement.AlignElements(ALIGN_RIGHT, None) |
985 self.RefreshBuffer() |
1050 self.RefreshBuffer() |
986 self.Refresh(False) |
1051 self.Refresh(False) |
987 event.Skip() |
1052 event.Skip() |
988 |
1053 |
989 def OnAlignTopMenu(self, event): |
1054 def OnAlignTopMenu(self, event): |
990 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
1055 if self.SelectedElement is not None and isinstance(self.SelectedElement, Graphic_Group): |
991 self.SelectedElement.AlignElements(None, ALIGN_TOP) |
1056 self.SelectedElement.AlignElements(None, ALIGN_TOP) |
992 self.RefreshBuffer() |
1057 self.RefreshBuffer() |
993 self.Refresh(False) |
1058 self.Refresh(False) |
994 event.Skip() |
1059 event.Skip() |
995 |
1060 |
996 def OnAlignMiddleMenu(self, event): |
1061 def OnAlignMiddleMenu(self, event): |
997 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
1062 if self.SelectedElement is not None and isinstance(self.SelectedElement, Graphic_Group): |
998 self.SelectedElement.AlignElements(None, ALIGN_MIDDLE) |
1063 self.SelectedElement.AlignElements(None, ALIGN_MIDDLE) |
999 self.RefreshBuffer() |
1064 self.RefreshBuffer() |
1000 self.Refresh(False) |
1065 self.Refresh(False) |
1001 event.Skip() |
1066 event.Skip() |
1002 |
1067 |
1003 def OnAlignBottomMenu(self, event): |
1068 def OnAlignBottomMenu(self, event): |
1004 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
1069 if self.SelectedElement is not None and isinstance(self.SelectedElement, Graphic_Group): |
1005 self.SelectedElement.AlignElements(None, ALIGN_BOTTOM) |
1070 self.SelectedElement.AlignElements(None, ALIGN_BOTTOM) |
1006 self.RefreshBuffer() |
1071 self.RefreshBuffer() |
1007 self.Refresh(False) |
1072 self.Refresh(False) |
1008 event.Skip() |
1073 event.Skip() |
1009 |
1074 |
1010 def OnNoModifierMenu(self, event): |
1075 def OnNoModifierMenu(self, event): |
1011 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
1076 if self.SelectedElement is not None and self.IsBlock(self.SelectedElement): |
1012 self.SelectedElement.SetConnectorNegated(False) |
1077 self.SelectedElement.SetConnectorNegated(False) |
1013 self.SelectedElement.Refresh() |
1078 self.SelectedElement.Refresh() |
1014 self.RefreshBuffer() |
1079 self.RefreshBuffer() |
1015 event.Skip() |
1080 event.Skip() |
1016 |
1081 |
1017 def OnNegatedMenu(self, event): |
1082 def OnNegatedMenu(self, event): |
1018 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
1083 if self.SelectedElement is not None and self.IsBlock(self.SelectedElement): |
1019 self.SelectedElement.SetConnectorNegated(True) |
1084 self.SelectedElement.SetConnectorNegated(True) |
1020 self.SelectedElement.Refresh() |
1085 self.SelectedElement.Refresh() |
1021 self.RefreshBuffer() |
1086 self.RefreshBuffer() |
1022 event.Skip() |
1087 event.Skip() |
1023 |
1088 |
1024 def OnRisingEdgeMenu(self, event): |
1089 def OnRisingEdgeMenu(self, event): |
1025 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
1090 if self.SelectedElement is not None and self.IsBlock(self.SelectedElement): |
1026 self.SelectedElement.SetConnectorEdge("rising") |
1091 self.SelectedElement.SetConnectorEdge("rising") |
1027 self.SelectedElement.Refresh() |
1092 self.SelectedElement.Refresh() |
1028 self.RefreshBuffer() |
1093 self.RefreshBuffer() |
1029 event.Skip() |
1094 event.Skip() |
1030 |
1095 |
1031 def OnFallingEdgeMenu(self, event): |
1096 def OnFallingEdgeMenu(self, event): |
1032 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
1097 if self.SelectedElement is not None and self.IsBlock(self.SelectedElement): |
1033 self.SelectedElement.SetConnectorEdge("falling") |
1098 self.SelectedElement.SetConnectorEdge("falling") |
1034 self.SelectedElement.Refresh() |
1099 self.SelectedElement.Refresh() |
1035 self.RefreshBuffer() |
1100 self.RefreshBuffer() |
1036 event.Skip() |
1101 event.Skip() |
1037 |
1102 |
1038 def OnAddSegmentMenu(self, event): |
1103 def OnAddSegmentMenu(self, event): |
1039 if self.SelectedElement and self.IsWire(self.SelectedElement): |
1104 if self.SelectedElement is not None and self.IsWire(self.SelectedElement): |
1040 self.SelectedElement.AddSegment() |
1105 self.SelectedElement.AddSegment() |
1041 self.SelectedElement.Refresh() |
1106 self.SelectedElement.Refresh() |
1042 event.Skip() |
1107 event.Skip() |
1043 |
1108 |
1044 def OnDeleteSegmentMenu(self, event): |
1109 def OnDeleteSegmentMenu(self, event): |
1045 if self.SelectedElement and self.IsWire(self.SelectedElement): |
1110 if self.SelectedElement is not None and self.IsWire(self.SelectedElement): |
1046 self.SelectedElement.DeleteSegment() |
1111 self.SelectedElement.DeleteSegment() |
1047 self.SelectedElement.Refresh() |
1112 self.SelectedElement.Refresh() |
1048 event.Skip() |
1113 event.Skip() |
1049 |
1114 |
1050 def OnAddBranchMenu(self, event): |
1115 def OnAddBranchMenu(self, event): |
1051 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
1116 if self.SelectedElement is not None and self.IsBlock(self.SelectedElement): |
1052 self.AddDivergenceBranch(self.SelectedElement) |
1117 self.AddDivergenceBranch(self.SelectedElement) |
1053 self.RefreshBuffer() |
1118 self.RefreshBuffer() |
1054 event.Skip() |
1119 event.Skip() |
1055 |
1120 |
1056 def OnDeleteBranchMenu(self, event): |
1121 def OnDeleteBranchMenu(self, event): |
1057 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
1122 if self.SelectedElement is not None and self.IsBlock(self.SelectedElement): |
1058 self.RemoveDivergenceBranch(self.SelectedElement) |
1123 self.RemoveDivergenceBranch(self.SelectedElement) |
1059 self.RefreshBuffer() |
1124 self.RefreshBuffer() |
1060 event.Skip() |
1125 event.Skip() |
1061 |
1126 |
1062 def OnEditBlockMenu(self, event): |
1127 def OnEditBlockMenu(self, event): |
1063 if self.SelectedElement: |
1128 if self.SelectedElement is not None: |
1064 self.ParentWindow.EditProjectElement(ITEM_POU, "P::%s"%self.SelectedElement.GetType()) |
1129 self.ParentWindow.EditProjectElement(ITEM_POU, "P::%s"%self.SelectedElement.GetType()) |
1065 event.Skip() |
1130 event.Skip() |
1066 |
1131 |
1067 def OnDeleteMenu(self, event): |
1132 def OnDeleteMenu(self, event): |
1068 if self.SelectedElement: |
1133 if self.SelectedElement is not None: |
1069 self.SelectedElement.Delete() |
1134 self.SelectedElement.Delete() |
1070 self.SelectedElement = None |
1135 self.SelectedElement = None |
1071 self.RefreshBuffer() |
1136 self.RefreshBuffer() |
1072 self.Refresh(False) |
1137 self.Refresh(False) |
1073 event.Skip() |
1138 event.Skip() |
1088 |
1153 |
1089 def OnViewerLeftDown(self, event): |
1154 def OnViewerLeftDown(self, event): |
1090 if self.Mode == MODE_SELECTION: |
1155 if self.Mode == MODE_SELECTION: |
1091 dc = self.GetLogicalDC() |
1156 dc = self.GetLogicalDC() |
1092 pos = event.GetLogicalPosition(dc) |
1157 pos = event.GetLogicalPosition(dc) |
1093 if event.ControlDown() and self.SelectedElement: |
1158 if event.ControlDown() and self.SelectedElement is not None: |
1094 element = self.FindElement(pos, True) |
1159 element = self.FindElement(pos, True) |
1095 if element: |
1160 if element is not None: |
1096 if isinstance(self.SelectedElement, Graphic_Group): |
1161 if isinstance(self.SelectedElement, Graphic_Group): |
1097 self.SelectedElement.SetSelected(False) |
1162 self.SelectedElement.SetSelected(False) |
1098 self.SelectedElement.SelectElement(element) |
1163 self.SelectedElement.SelectElement(element) |
1099 elif self.SelectedElement: |
1164 elif self.SelectedElement is not None: |
1100 group = Graphic_Group(self) |
1165 group = Graphic_Group(self) |
1101 group.SelectElement(self.SelectedElement) |
1166 group.SelectElement(self.SelectedElement) |
1102 group.SelectElement(element) |
1167 group.SelectElement(element) |
1103 self.SelectedElement = group |
1168 self.SelectedElement = group |
1104 elements = self.SelectedElement.GetElements() |
1169 elements = self.SelectedElement.GetElements() |
1107 elif len(elements) == 1: |
1172 elif len(elements) == 1: |
1108 self.SelectedElement = elements[0] |
1173 self.SelectedElement = elements[0] |
1109 self.SelectedElement.SetSelected(True) |
1174 self.SelectedElement.SetSelected(True) |
1110 else: |
1175 else: |
1111 element = self.FindElement(pos) |
1176 element = self.FindElement(pos) |
1112 if element is None or element.TestHandle(pos) == (0, 0): |
1177 if not self.Debug and (element is None or element.TestHandle(pos) == (0, 0)): |
1113 connector = self.FindBlockConnector(pos) |
1178 connector = self.FindBlockConnector(pos) |
1114 else: |
1179 else: |
1115 connector = None |
1180 connector = None |
1116 if self.DrawingWire: |
1181 if not self.Debug and self.DrawingWire: |
1117 self.DrawingWire = False |
1182 self.DrawingWire = False |
1118 if self.SelectedElement is not None: |
1183 if self.SelectedElement is not None: |
1119 if element is None or element.TestHandle(pos) == (0, 0): |
1184 if element is None or element.TestHandle(pos) == (0, 0): |
1120 connector = self.FindBlockConnector(pos, self.SelectedElement.GetConnectionDirection()) |
1185 connector = self.FindBlockConnector(pos, self.SelectedElement.GetConnectionDirection()) |
1121 if connector: |
1186 if connector is not None: |
1122 event.Dragging = lambda : True |
1187 event.Dragging = lambda : True |
1123 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
1188 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
1124 if self.SelectedElement.EndConnected is not None: |
1189 if self.SelectedElement.EndConnected is not None: |
1125 self.SelectedElement.ResetPoints() |
1190 self.SelectedElement.ResetPoints() |
1126 self.SelectedElement.GeneratePoints() |
1191 self.SelectedElement.GeneratePoints() |
1144 wire.oldPos = scaled_pos |
1209 wire.oldPos = scaled_pos |
1145 wire.Handle = (HANDLE_POINT, 0) |
1210 wire.Handle = (HANDLE_POINT, 0) |
1146 wire.ProcessDragging(0, 0, False, None) |
1211 wire.ProcessDragging(0, 0, False, None) |
1147 wire.Handle = (HANDLE_POINT, 1) |
1212 wire.Handle = (HANDLE_POINT, 1) |
1148 self.AddWire(wire) |
1213 self.AddWire(wire) |
1149 if self.SelectedElement: |
1214 if self.SelectedElement is not None: |
1150 self.SelectedElement.SetSelected(False) |
1215 self.SelectedElement.SetSelected(False) |
1151 self.SelectedElement = wire |
1216 self.SelectedElement = wire |
1152 self.SelectedElement.Refresh() |
1217 self.SelectedElement.Refresh() |
1153 else: |
1218 else: |
1154 if self.SelectedElement and self.SelectedElement != element: |
1219 if self.SelectedElement is not None and self.SelectedElement != element: |
1155 self.SelectedElement.SetSelected(False) |
1220 self.SelectedElement.SetSelected(False) |
1156 self.SelectedElement = None |
1221 self.SelectedElement = None |
1157 if element: |
1222 if element is not None: |
1158 self.SelectedElement = element |
1223 self.SelectedElement = element |
1159 self.SelectedElement.OnLeftDown(event, dc, self.Scaling) |
1224 if self.Debug: |
|
1225 Graphic_Element.OnLeftDown(self.SelectedElement, event, dc, self.Scaling) |
|
1226 else: |
|
1227 self.SelectedElement.OnLeftDown(event, dc, self.Scaling) |
1160 self.SelectedElement.Refresh() |
1228 self.SelectedElement.Refresh() |
1161 else: |
1229 else: |
1162 self.rubberBand.Reset() |
1230 self.rubberBand.Reset() |
1163 self.rubberBand.OnLeftDown(event, dc, self.Scaling) |
1231 self.rubberBand.OnLeftDown(event, dc, self.Scaling) |
1164 elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT, |
1232 elif self.Mode in [MODE_BLOCK, MODE_VARIABLE, MODE_CONNECTION, MODE_COMMENT, |
1234 rect = self.SelectedElement.GetRedrawRect() |
1302 rect = self.SelectedElement.GetRedrawRect() |
1235 self.SelectedElement.Delete() |
1303 self.SelectedElement.Delete() |
1236 self.SelectedElement = None |
1304 self.SelectedElement = None |
1237 self.RefreshRect(self.GetScrolledRect(rect), False) |
1305 self.RefreshRect(self.GetScrolledRect(rect), False) |
1238 else: |
1306 else: |
1239 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1307 if self.Debug: |
|
1308 Graphic_Element.OnLeftUp(self.SelectedElement, event, dc, self.Scaling) |
|
1309 else: |
|
1310 self.SelectedElement.OnLeftUp(event, dc, self.Scaling) |
1240 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1311 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1241 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1312 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1242 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1313 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1243 event.Skip() |
1314 event.Skip() |
1244 |
1315 |
1245 def OnViewerRightDown(self, event): |
1316 def OnViewerRightDown(self, event): |
1246 if self.Mode == MODE_SELECTION: |
1317 if self.Mode == MODE_SELECTION: |
1247 dc = self.GetLogicalDC() |
1318 dc = self.GetLogicalDC() |
1248 pos = event.GetLogicalPosition(dc) |
1319 pos = event.GetLogicalPosition(dc) |
1249 element = self.FindElement(pos) |
1320 element = self.FindElement(pos) |
1250 if self.SelectedElement and self.SelectedElement != element: |
1321 if self.SelectedElement is not None and self.SelectedElement != element: |
1251 self.SelectedElement.SetSelected(False) |
1322 self.SelectedElement.SetSelected(False) |
1252 self.SelectedElement = None |
1323 self.SelectedElement = None |
1253 if element: |
1324 if element: |
1254 self.SelectedElement = element |
1325 self.SelectedElement = element |
1255 self.SelectedElement.OnRightDown(event, dc, self.Scaling) |
1326 if self.Debug: |
|
1327 Graphic_Element.OnRightDown(self.SelectedElement, event, dc, self.Scaling) |
|
1328 else: |
|
1329 self.SelectedElement.OnRightDown(event, dc, self.Scaling) |
1256 self.SelectedElement.Refresh() |
1330 self.SelectedElement.Refresh() |
1257 event.Skip() |
1331 event.Skip() |
1258 |
1332 |
1259 def OnViewerRightUp(self, event): |
1333 def OnViewerRightUp(self, event): |
1260 dc = self.GetLogicalDC() |
1334 dc = self.GetLogicalDC() |
1261 if self.SelectedElement: |
1335 if self.SelectedElement is not None: |
1262 self.SelectedElement.OnRightUp(event, dc, self.Scaling) |
1336 if self.Debug: |
|
1337 Graphic_Element.OnRightUp(self.SelectedElement, event, dc, self.Scaling) |
|
1338 else: |
|
1339 self.SelectedElement.OnRightUp(event, dc, self.Scaling) |
1263 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1340 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1264 else: |
1341 elif not self.Debug: |
1265 self.PopupDefaultMenu(False) |
1342 self.PopupDefaultMenu(False) |
1266 event.Skip() |
1343 event.Skip() |
1267 |
1344 |
1268 def OnViewerLeftDClick(self, event): |
1345 def OnViewerLeftDClick(self, event): |
1269 if self.Mode == MODE_SELECTION and self.SelectedElement: |
1346 if self.Mode == MODE_SELECTION and self.SelectedElement is not None: |
1270 if event.ControlDown() and self.IsBlock(self.SelectedElement) and self.SelectedElement.GetType() in self.Controler.GetProjectPouNames(): |
1347 if self.Debug: |
|
1348 Graphic_Element.OnLeftDClick(self.SelectedElement, event, self.GetLogicalDC(), self.Scaling) |
|
1349 elif event.ControlDown() and self.IsBlock(self.SelectedElement) and self.SelectedElement.GetType() in self.Controler.GetProjectPouNames(self.Debug): |
1271 self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType()) |
1350 self.ParentWindow.EditProjectElement(ITEM_POU, self.SelectedElement.GetType()) |
1272 else: |
1351 else: |
1273 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1352 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1274 event.Skip() |
1353 event.Skip() |
1275 |
1354 |
1285 if highlighted is not None and self.HighlightedElement != highlighted: |
1364 if highlighted is not None and self.HighlightedElement != highlighted: |
1286 highlighted.SetHighlighted(True) |
1365 highlighted.SetHighlighted(True) |
1287 self.HighlightedElement = highlighted |
1366 self.HighlightedElement = highlighted |
1288 if self.rubberBand.IsShown(): |
1367 if self.rubberBand.IsShown(): |
1289 self.rubberBand.OnMotion(event, dc, self.Scaling) |
1368 self.rubberBand.OnMotion(event, dc, self.Scaling) |
1290 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
1369 elif not self.Debug and self.Mode == MODE_SELECTION and self.SelectedElement is not None: |
1291 if self.DrawingWire: |
1370 if self.DrawingWire: |
1292 connector = self.FindBlockConnector(pos, self.SelectedElement.GetConnectionDirection(), False) |
1371 connector = self.FindBlockConnector(pos, self.SelectedElement.GetConnectionDirection(), self.SelectedElement.EndConnected) |
1293 if not connector or self.SelectedElement.EndConnected == None: |
1372 if not connector or self.SelectedElement.EndConnected == None: |
1294 self.SelectedElement.ResetPoints() |
1373 self.SelectedElement.ResetPoints() |
1295 movex, movey = self.SelectedElement.OnMotion(event, dc, self.Scaling) |
1374 movex, movey = self.SelectedElement.OnMotion(event, dc, self.Scaling) |
1296 self.SelectedElement.GeneratePoints() |
1375 self.SelectedElement.GeneratePoints() |
1297 if movex != 0 or movey != 0: |
1376 if movex != 0 or movey != 0: |
1302 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1381 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(movex, movey)), False) |
1303 self.UpdateScrollPos(event) |
1382 self.UpdateScrollPos(event) |
1304 event.Skip() |
1383 event.Skip() |
1305 |
1384 |
1306 def OnLeaveViewer(self, event): |
1385 def OnLeaveViewer(self, event): |
1307 if self.SelectedElement and self.SelectedElement.GetDragging(): |
1386 if self.SelectedElement is not None and self.SelectedElement.GetDragging(): |
1308 event.Skip() |
1387 event.Skip() |
1309 elif self.HighlightedElement is not None: |
1388 elif self.HighlightedElement is not None: |
1310 self.HighlightedElement.SetHighlighted(False) |
1389 self.HighlightedElement.SetHighlighted(False) |
1311 self.HighlightedElement = None |
1390 self.HighlightedElement = None |
1312 event.Skip() |
1391 event.Skip() |
1313 |
1392 |
1314 def UpdateScrollPos(self, event): |
1393 def UpdateScrollPos(self, event): |
1315 if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown(): |
1394 if (event.Dragging() and self.SelectedElement is not None) or self.rubberBand.IsShown(): |
1316 position = event.GetPosition() |
1395 position = event.GetPosition() |
1317 move_window = wx.Point() |
1396 move_window = wx.Point() |
1318 window_size = self.GetClientSize() |
1397 window_size = self.GetClientSize() |
1319 xstart, ystart = self.GetViewStart() |
1398 xstart, ystart = self.GetViewStart() |
1320 if position.x < SCROLL_ZONE and xstart > 0: |
1399 if position.x < SCROLL_ZONE and xstart > 0: |
1336 def OnChar(self, event): |
1415 def OnChar(self, event): |
1337 xpos, ypos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL) |
1416 xpos, ypos = self.GetScrollPos(wx.HORIZONTAL), self.GetScrollPos(wx.VERTICAL) |
1338 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
1417 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
1339 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
1418 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
1340 keycode = event.GetKeyCode() |
1419 keycode = event.GetKeyCode() |
1341 if self.Scaling: |
1420 if self.Scaling is not None: |
1342 scaling = self.Scaling |
1421 scaling = self.Scaling |
1343 else: |
1422 else: |
1344 scaling = (8, 8) |
1423 scaling = (8, 8) |
1345 if keycode == wx.WXK_DELETE and self.SelectedElement: |
1424 if not self.Debug and keycode == wx.WXK_DELETE and self.SelectedElement is not None: |
1346 rect = self.SelectedElement.GetRedrawRect(1, 1) |
1425 rect = self.SelectedElement.GetRedrawRect(1, 1) |
1347 self.SelectedElement.Delete() |
1426 self.SelectedElement.Delete() |
1348 self.SelectedElement = None |
1427 self.SelectedElement = None |
1349 self.RefreshBuffer() |
1428 self.RefreshBuffer() |
1350 self.RefreshScrollBars() |
1429 self.RefreshScrollBars() |
1351 self.SetCursor(wx.NullCursor) |
1430 self.SetCursor(wx.NullCursor) |
1352 self.RefreshRect(self.GetScrolledRect(rect), False) |
1431 self.RefreshRect(self.GetScrolledRect(rect), False) |
1353 elif keycode == wx.WXK_RETURN and self.SelectedElement: |
1432 elif not self.Debug and keycode == wx.WXK_RETURN and self.SelectedElement is not None: |
1354 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1433 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1355 elif keycode == wx.WXK_LEFT: |
1434 elif keycode == wx.WXK_LEFT: |
1356 if event.ControlDown() and event.ShiftDown(): |
1435 if event.ControlDown() and event.ShiftDown(): |
1357 self.Scroll(0, ypos) |
1436 self.Scroll(0, ypos) |
1358 elif event.ControlDown(): |
1437 elif event.ControlDown(): |
1359 event.Skip() |
1438 event.Skip() |
1360 elif self.SelectedElement: |
1439 elif not self.Debug and self.SelectedElement is not None: |
1361 self.SelectedElement.Move(-scaling[0], 0) |
1440 self.SelectedElement.Move(-scaling[0], 0) |
1362 self.SelectedElement.RefreshModel() |
1441 self.SelectedElement.RefreshModel() |
1363 self.RefreshBuffer() |
1442 self.RefreshBuffer() |
1364 self.RefreshScrollBars() |
1443 self.RefreshScrollBars() |
1365 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(-scaling[0], 0)), False) |
1444 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(-scaling[0], 0)), False) |
1366 elif keycode == wx.WXK_RIGHT: |
1445 elif keycode == wx.WXK_RIGHT: |
1367 if event.ControlDown() and event.ShiftDown(): |
1446 if event.ControlDown() and event.ShiftDown(): |
1368 self.Scroll(xmax, ypos) |
1447 self.Scroll(xmax, ypos) |
1369 elif event.ControlDown(): |
1448 elif event.ControlDown(): |
1370 event.Skip() |
1449 event.Skip() |
1371 elif self.SelectedElement: |
1450 elif not self.Debug and self.SelectedElement is not None: |
1372 self.SelectedElement.Move(scaling[0], 0) |
1451 self.SelectedElement.Move(scaling[0], 0) |
1373 self.SelectedElement.RefreshModel() |
1452 self.SelectedElement.RefreshModel() |
1374 self.RefreshBuffer() |
1453 self.RefreshBuffer() |
1375 self.RefreshScrollBars() |
1454 self.RefreshScrollBars() |
1376 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(scaling[0], 0)), False) |
1455 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(scaling[0], 0)), False) |
1377 elif keycode == wx.WXK_UP: |
1456 elif keycode == wx.WXK_UP: |
1378 if event.ControlDown() and event.ShiftDown(): |
1457 if event.ControlDown() and event.ShiftDown(): |
1379 self.Scroll(xpos, 0) |
1458 self.Scroll(xpos, 0) |
1380 elif event.ControlDown(): |
1459 elif event.ControlDown(): |
1381 event.Skip() |
1460 event.Skip() |
1382 elif self.SelectedElement: |
1461 elif not self.Debug and self.SelectedElement is not None: |
1383 self.SelectedElement.Move(0, -scaling[1]) |
1462 self.SelectedElement.Move(0, -scaling[1]) |
1384 self.SelectedElement.RefreshModel() |
1463 self.SelectedElement.RefreshModel() |
1385 self.RefreshBuffer() |
1464 self.RefreshBuffer() |
1386 self.RefreshScrollBars() |
1465 self.RefreshScrollBars() |
1387 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(0, -scaling[1])), False) |
1466 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(0, -scaling[1])), False) |
1388 elif keycode == wx.WXK_DOWN: |
1467 elif keycode == wx.WXK_DOWN: |
1389 if event.ControlDown() and event.ShiftDown(): |
1468 if event.ControlDown() and event.ShiftDown(): |
1390 self.Scroll(xpos, ymax) |
1469 self.Scroll(xpos, ymax) |
1391 elif event.ControlDown(): |
1470 elif event.ControlDown(): |
1392 event.Skip() |
1471 event.Skip() |
1393 elif self.SelectedElement: |
1472 elif not self.Debug and self.SelectedElement is not None: |
1394 self.SelectedElement.Move(0, scaling[1]) |
1473 self.SelectedElement.Move(0, scaling[1]) |
1395 self.SelectedElement.RefreshModel() |
1474 self.SelectedElement.RefreshModel() |
1396 self.RefreshBuffer() |
1475 self.RefreshBuffer() |
1397 self.RefreshScrollBars() |
1476 self.RefreshScrollBars() |
1398 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(0, scaling[1])), False) |
1477 self.RefreshRect(self.GetScrolledRect(self.SelectedElement.GetRedrawRect(0, scaling[1])), False) |
1399 elif keycode == wx.WXK_SPACE and self.SelectedElement is not None and self.SelectedElement.Dragging: |
1478 elif not self.Debug and keycode == wx.WXK_SPACE and self.SelectedElement is not None and self.SelectedElement.Dragging: |
1400 if self.IsBlock(self.SelectedElement) or self.IsComment(self.SelectedElement): |
1479 if self.IsBlock(self.SelectedElement) or self.IsComment(self.SelectedElement): |
1401 self.CopyBlock(self.SelectedElement, wx.Point(*self.SelectedElement.GetPosition())) |
1480 self.CopyBlock(self.SelectedElement, wx.Point(*self.SelectedElement.GetPosition())) |
1402 self.RefreshBuffer() |
1481 self.RefreshBuffer() |
1403 self.RefreshScrollBars() |
1482 self.RefreshScrollBars() |
1404 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1483 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1437 self.AddBlock(block) |
1516 self.AddBlock(block) |
1438 self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None)) |
1517 self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None)) |
1439 self.RefreshBlockModel(block) |
1518 self.RefreshBlockModel(block) |
1440 self.RefreshBuffer() |
1519 self.RefreshBuffer() |
1441 self.RefreshScrollBars() |
1520 self.RefreshScrollBars() |
|
1521 self.RefreshVisibleElements() |
1442 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1522 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1443 self.ParentWindow.RefreshInstancesTree() |
1523 self.ParentWindow.RefreshInstancesTree() |
1444 block.Refresh() |
1524 block.Refresh() |
1445 dialog.Destroy() |
1525 dialog.Destroy() |
1446 |
1526 |
1447 def AddNewVariable(self, bbox): |
1527 def AddNewVariable(self, bbox): |
1448 dialog = VariablePropertiesDialog(self.ParentWindow, self.Controler) |
1528 dialog = VariablePropertiesDialog(self.ParentWindow, self.Controler) |
1449 dialog.SetPreviewFont(self.GetFont()) |
1529 dialog.SetPreviewFont(self.GetFont()) |
1450 dialog.SetMinVariableSize((bbox.width, bbox.height)) |
1530 dialog.SetMinVariableSize((bbox.width, bbox.height)) |
1451 varlist = [] |
1531 varlist = [] |
1452 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName) |
1532 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug) |
1453 if vars: |
1533 if vars: |
1454 for var in vars: |
1534 for var in vars: |
1455 if var["Edit"]: |
1535 if var["Edit"]: |
1456 varlist.append((var["Name"], var["Class"], var["Type"])) |
1536 varlist.append((var["Name"], var["Class"], var["Type"])) |
1457 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName) |
1537 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName, self.Debug) |
1458 if returntype: |
1538 if returntype: |
1459 varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype)) |
1539 varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype)) |
1460 dialog.SetVariables(varlist) |
1540 dialog.SetVariables(varlist) |
1461 if dialog.ShowModal() == wx.ID_OK: |
1541 if dialog.ShowModal() == wx.ID_OK: |
1462 id = self.GetNewId() |
1542 id = self.GetNewId() |
1531 self.AddBlock(contact) |
1614 self.AddBlock(contact) |
1532 self.Controler.AddEditedElementContact(self.TagName, id) |
1615 self.Controler.AddEditedElementContact(self.TagName, id) |
1533 self.RefreshContactModel(contact) |
1616 self.RefreshContactModel(contact) |
1534 self.RefreshBuffer() |
1617 self.RefreshBuffer() |
1535 self.RefreshScrollBars() |
1618 self.RefreshScrollBars() |
|
1619 self.RefreshVisibleElements() |
1536 contact.Refresh() |
1620 contact.Refresh() |
1537 dialog.Destroy() |
1621 dialog.Destroy() |
1538 |
1622 |
1539 def AddNewCoil(self, bbox): |
1623 def AddNewCoil(self, bbox): |
1540 dialog = LDElementDialog(self.ParentWindow, self.Controler, "coil") |
1624 dialog = LDElementDialog(self.ParentWindow, self.Controler, "coil") |
1541 dialog.SetPreviewFont(self.GetFont()) |
1625 dialog.SetPreviewFont(self.GetFont()) |
1542 varlist = [] |
1626 varlist = [] |
1543 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName) |
1627 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug) |
1544 if vars: |
1628 if vars: |
1545 for var in vars: |
1629 for var in vars: |
1546 if var["Class"] != "Input" and var["Type"] == "BOOL": |
1630 if var["Class"] != "Input" and var["Type"] == "BOOL": |
1547 varlist.append(var["Name"]) |
1631 varlist.append(var["Name"]) |
1548 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName) |
1632 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName, self.Debug) |
1549 if returntype == "BOOL": |
1633 if returntype == "BOOL": |
1550 varlist.append(self.Controler.GetEditedElementName(self.TagName)) |
1634 varlist.append(self.Controler.GetEditedElementName(self.TagName)) |
1551 dialog.SetVariables(varlist) |
1635 dialog.SetVariables(varlist) |
1552 dialog.SetValues({"name":"","type":COIL_NORMAL}) |
1636 dialog.SetValues({"name":"","type":COIL_NORMAL}) |
1553 dialog.SetElementSize((bbox.width, bbox.height)) |
1637 dialog.SetElementSize((bbox.width, bbox.height)) |
1578 self.AddBlock(powerrail) |
1663 self.AddBlock(powerrail) |
1579 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1664 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1580 self.RefreshPowerRailModel(powerrail) |
1665 self.RefreshPowerRailModel(powerrail) |
1581 self.RefreshBuffer() |
1666 self.RefreshBuffer() |
1582 self.RefreshScrollBars() |
1667 self.RefreshScrollBars() |
|
1668 self.RefreshVisibleElements() |
1583 powerrail.Refresh() |
1669 powerrail.Refresh() |
1584 dialog.Destroy() |
1670 dialog.Destroy() |
1585 |
1671 |
1586 def AddNewStep(self, bbox, initial = False): |
1672 def AddNewStep(self, bbox, initial = False): |
1587 dialog = StepContentDialog(self.ParentWindow, self.Controler, initial) |
1673 dialog = StepContentDialog(self.ParentWindow, self.Controler, initial) |
1588 dialog.SetPreviewFont(self.GetFont()) |
1674 dialog.SetPreviewFont(self.GetFont()) |
1589 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1675 dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug)) |
1590 dialog.SetVariables(self.Controler.GetEditedElementInterfaceVars(self.TagName)) |
1676 dialog.SetVariables(self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)) |
1591 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)]) |
1677 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step)]) |
1592 dialog.SetMinStepSize((bbox.width, bbox.height)) |
1678 dialog.SetMinStepSize((bbox.width, bbox.height)) |
1593 if dialog.ShowModal() == wx.ID_OK: |
1679 if dialog.ShowModal() == wx.ID_OK: |
1594 id = self.GetNewId() |
1680 id = self.GetNewId() |
1595 values = dialog.GetValues() |
1681 values = dialog.GetValues() |
1612 self.AddBlock(step) |
1698 self.AddBlock(step) |
1613 self.Controler.AddEditedElementStep(self.TagName, id) |
1699 self.Controler.AddEditedElementStep(self.TagName, id) |
1614 self.RefreshStepModel(step) |
1700 self.RefreshStepModel(step) |
1615 self.RefreshBuffer() |
1701 self.RefreshBuffer() |
1616 self.RefreshScrollBars() |
1702 self.RefreshScrollBars() |
|
1703 self.RefreshVisibleElements() |
1617 step.Refresh() |
1704 step.Refresh() |
1618 dialog.Destroy() |
1705 dialog.Destroy() |
1619 |
1706 |
1620 def AddNewTransition(self, bbox): |
1707 def AddNewTransition(self, bbox): |
1621 dialog = TransitionContentDialog(self.ParentWindow, self.Controler, self.GetDrawingMode() == FREEDRAWING_MODE) |
1708 dialog = TransitionContentDialog(self.ParentWindow, self.Controler, self.GetDrawingMode() == FREEDRAWING_MODE) |
1622 dialog.SetPreviewFont(self.GetFont()) |
1709 dialog.SetPreviewFont(self.GetFont()) |
1623 dialog.SetTransitions(self.Controler.GetEditedElementTransitions(self.TagName)) |
1710 dialog.SetTransitions(self.Controler.GetEditedElementTransitions(self.TagName, self.Debug)) |
1624 if dialog.ShowModal() == wx.ID_OK: |
1711 if dialog.ShowModal() == wx.ID_OK: |
1625 id = self.GetNewId() |
1712 id = self.GetNewId() |
1626 values = dialog.GetValues() |
1713 values = dialog.GetValues() |
1627 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
1714 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
1628 transition.SetPosition(bbox.x, bbox.y) |
1715 transition.SetPosition(bbox.x, bbox.y) |
1671 self.AddBlock(jump) |
1760 self.AddBlock(jump) |
1672 self.Controler.AddEditedElementJump(self.TagName, id) |
1761 self.Controler.AddEditedElementJump(self.TagName, id) |
1673 self.RefreshJumpModel(jump) |
1762 self.RefreshJumpModel(jump) |
1674 self.RefreshBuffer() |
1763 self.RefreshBuffer() |
1675 self.RefreshScrollBars() |
1764 self.RefreshScrollBars() |
|
1765 self.RefreshVisibleElements() |
1676 jump.Refresh() |
1766 jump.Refresh() |
1677 dialog.Destroy() |
1767 dialog.Destroy() |
1678 |
1768 |
1679 def AddNewActionBlock(self, bbox): |
1769 def AddNewActionBlock(self, bbox): |
1680 dialog = ActionBlockDialog(self.ParentWindow) |
1770 dialog = ActionBlockDialog(self.ParentWindow) |
1681 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
1771 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
1682 dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName)) |
1772 dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName, self.Debug)) |
1683 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName)) |
1773 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)) |
1684 if dialog.ShowModal() == wx.ID_OK: |
1774 if dialog.ShowModal() == wx.ID_OK: |
1685 actions = dialog.GetValues() |
1775 actions = dialog.GetValues() |
1686 id = self.GetNewId() |
1776 id = self.GetNewId() |
1687 actionblock = SFC_ActionBlock(self, actions, id) |
1777 actionblock = SFC_ActionBlock(self, actions, id) |
1688 actionblock.SetPosition(bbox.x, bbox.y) |
1778 actionblock.SetPosition(bbox.x, bbox.y) |
1691 self.AddBlock(actionblock) |
1781 self.AddBlock(actionblock) |
1692 self.Controler.AddEditedElementActionBlock(self.TagName, id) |
1782 self.Controler.AddEditedElementActionBlock(self.TagName, id) |
1693 self.RefreshActionBlockModel(actionblock) |
1783 self.RefreshActionBlockModel(actionblock) |
1694 self.RefreshBuffer() |
1784 self.RefreshBuffer() |
1695 self.RefreshScrollBars() |
1785 self.RefreshScrollBars() |
|
1786 self.RefreshVisibleElements() |
1696 actionblock.Refresh() |
1787 actionblock.Refresh() |
1697 dialog.Destroy() |
1788 dialog.Destroy() |
1698 |
1789 |
1699 #------------------------------------------------------------------------------- |
1790 #------------------------------------------------------------------------------- |
1700 # Edit element content functions |
1791 # Edit element content functions |
1701 #------------------------------------------------------------------------------- |
1792 #------------------------------------------------------------------------------- |
1702 |
1793 |
1703 def EditBlockContent(self, block): |
1794 def EditBlockContent(self, block): |
1704 dialog = BlockPropertiesDialog(self.ParentWindow, self.Controler) |
1795 dialog = BlockPropertiesDialog(self.ParentWindow, self.Controler) |
1705 dialog.SetPreviewFont(self.GetFont()) |
1796 dialog.SetPreviewFont(self.GetFont()) |
1706 dialog.SetBlockList(self.Controler.GetBlockTypes(self.TagName)) |
1797 dialog.SetBlockList(self.Controler.GetBlockTypes(self.TagName, self.Debug)) |
1707 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1798 dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug)) |
1708 variable_names = self.Controler.GetEditedElementVariables(self.TagName) |
1799 variable_names = self.Controler.GetEditedElementVariables(self.TagName, self.Debug) |
1709 if block.GetName() != "": |
1800 if block.GetName() != "": |
1710 variable_names.remove(block.GetName()) |
1801 variable_names.remove(block.GetName()) |
1711 dialog.SetPouElementNames(variable_names) |
1802 dialog.SetPouElementNames(variable_names) |
1712 dialog.SetMinBlockSize(block.GetSize()) |
1803 dialog.SetMinBlockSize(block.GetSize()) |
1713 old_values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes(), |
1804 old_values = {"name" : block.GetName(), "type" : block.GetType(), "inputs" : block.GetInputTypes(), |
1727 self.RefreshBlockModel(block) |
1818 self.RefreshBlockModel(block) |
1728 if old_values["executionOrder"] != new_values["executionOrder"]: |
1819 if old_values["executionOrder"] != new_values["executionOrder"]: |
1729 self.RefreshView() |
1820 self.RefreshView() |
1730 self.RefreshBuffer() |
1821 self.RefreshBuffer() |
1731 self.RefreshScrollBars() |
1822 self.RefreshScrollBars() |
|
1823 self.RefreshVisibleElements() |
1732 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1824 self.ParentWindow.RefreshVariablePanel(self.TagName) |
1733 self.ParentWindow.RefreshInstancesTree() |
1825 self.ParentWindow.RefreshInstancesTree() |
1734 block.Refresh(rect) |
1826 block.Refresh(rect) |
1735 dialog.Destroy() |
1827 dialog.Destroy() |
1736 |
1828 |
1737 def EditVariableContent(self, variable): |
1829 def EditVariableContent(self, variable): |
1738 dialog = VariablePropertiesDialog(self.ParentWindow, self.Controler) |
1830 dialog = VariablePropertiesDialog(self.ParentWindow, self.Controler) |
1739 dialog.SetPreviewFont(self.GetFont()) |
1831 dialog.SetPreviewFont(self.GetFont()) |
1740 dialog.SetMinVariableSize(variable.GetSize()) |
1832 dialog.SetMinVariableSize(variable.GetSize()) |
1741 varlist = [] |
1833 varlist = [] |
1742 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName) |
1834 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug) |
1743 if vars: |
1835 if vars: |
1744 for var in vars: |
1836 for var in vars: |
1745 if var["Edit"]: |
1837 if var["Edit"]: |
1746 varlist.append((var["Name"], var["Class"], var["Type"])) |
1838 varlist.append((var["Name"], var["Class"], var["Type"])) |
1747 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName) |
1839 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName, self.Debug) |
1748 if returntype: |
1840 if returntype: |
1749 varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype)) |
1841 varlist.append((self.Controler.GetEditedElementName(self.TagName), "Output", returntype)) |
1750 dialog.SetVariables(varlist) |
1842 dialog.SetVariables(varlist) |
1751 old_values = {"name" : variable.GetName(), "type" : variable.GetType(), |
1843 old_values = {"name" : variable.GetName(), "type" : variable.GetType(), |
1752 "executionOrder" : variable.GetExecutionOrder()} |
1844 "executionOrder" : variable.GetExecutionOrder()} |
1790 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1883 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1791 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
1884 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
1792 self.RefreshConnectionModel(connection) |
1885 self.RefreshConnectionModel(connection) |
1793 self.RefreshBuffer() |
1886 self.RefreshBuffer() |
1794 self.RefreshScrollBars() |
1887 self.RefreshScrollBars() |
|
1888 self.RefreshVisibleElements() |
1795 connection.Refresh(rect) |
1889 connection.Refresh(rect) |
1796 dialog.Destroy() |
1890 dialog.Destroy() |
1797 |
1891 |
1798 def EditContactContent(self, contact): |
1892 def EditContactContent(self, contact): |
1799 dialog = LDElementDialog(self.ParentWindow, self.Controler, "contact") |
1893 dialog = LDElementDialog(self.ParentWindow, self.Controler, "contact") |
1800 dialog.SetPreviewFont(self.GetFont()) |
1894 dialog.SetPreviewFont(self.GetFont()) |
1801 varlist = [] |
1895 varlist = [] |
1802 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName) |
1896 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug) |
1803 if vars: |
1897 if vars: |
1804 for var in vars: |
1898 for var in vars: |
1805 if var["Class"] != "Output" and var["Type"] == "BOOL": |
1899 if var["Class"] != "Output" and var["Type"] == "BOOL": |
1806 varlist.append(var["Name"]) |
1900 varlist.append(var["Name"]) |
1807 dialog.SetVariables(varlist) |
1901 dialog.SetVariables(varlist) |
1816 contact.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1910 contact.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1817 rect = rect.Union(contact.GetRedrawRect()) |
1911 rect = rect.Union(contact.GetRedrawRect()) |
1818 self.RefreshContactModel(contact) |
1912 self.RefreshContactModel(contact) |
1819 self.RefreshBuffer() |
1913 self.RefreshBuffer() |
1820 self.RefreshScrollBars() |
1914 self.RefreshScrollBars() |
|
1915 self.RefreshVisibleElements() |
1821 contact.Refresh(rect) |
1916 contact.Refresh(rect) |
1822 dialog.Destroy() |
1917 dialog.Destroy() |
1823 |
1918 |
1824 def EditCoilContent(self, coil): |
1919 def EditCoilContent(self, coil): |
1825 dialog = LDElementDialog(self.ParentWindow, self.Controler, "coil") |
1920 dialog = LDElementDialog(self.ParentWindow, self.Controler, "coil") |
1826 dialog.SetPreviewFont(self.GetFont()) |
1921 dialog.SetPreviewFont(self.GetFont()) |
1827 varlist = [] |
1922 varlist = [] |
1828 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName) |
1923 vars = self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug) |
1829 if vars: |
1924 if vars: |
1830 for var in vars: |
1925 for var in vars: |
1831 if var["Class"] != "Input" and var["Type"] == "BOOL": |
1926 if var["Class"] != "Input" and var["Type"] == "BOOL": |
1832 varlist.append(var["Name"]) |
1927 varlist.append(var["Name"]) |
1833 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName) |
1928 returntype = self.Controler.GetEditedElementInterfaceReturnType(self.TagName, self.Debug) |
1834 if returntype == "BOOL": |
1929 if returntype == "BOOL": |
1835 varlist.append(self.Controler.GetEditedElementName(self.TagName)) |
1930 varlist.append(self.Controler.GetEditedElementName(self.TagName)) |
1836 dialog.SetVariables(varlist) |
1931 dialog.SetVariables(varlist) |
1837 values = {"name" : coil.GetName(), "type" : coil.GetType()} |
1932 values = {"name" : coil.GetName(), "type" : coil.GetType()} |
1838 dialog.SetValues(values) |
1933 dialog.SetValues(values) |
1866 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1962 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1867 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1963 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1868 self.RefreshPowerRailModel(powerrail) |
1964 self.RefreshPowerRailModel(powerrail) |
1869 self.RefreshBuffer() |
1965 self.RefreshBuffer() |
1870 self.RefreshScrollBars() |
1966 self.RefreshScrollBars() |
|
1967 self.RefreshVisibleElements() |
1871 powerrail.Refresh(rect) |
1968 powerrail.Refresh(rect) |
1872 dialog.Destroy() |
1969 dialog.Destroy() |
1873 |
1970 |
1874 def EditStepContent(self, step): |
1971 def EditStepContent(self, step): |
1875 dialog = StepContentDialog(self.ParentWindow, self.Controler, step.GetInitial()) |
1972 dialog = StepContentDialog(self.ParentWindow, self.Controler, step.GetInitial()) |
1876 dialog.SetPreviewFont(self.GetFont()) |
1973 dialog.SetPreviewFont(self.GetFont()) |
1877 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1974 dialog.SetPouNames(self.Controler.GetProjectPouNames(self.Debug)) |
1878 dialog.SetVariables(self.Controler.GetEditedElementInterfaceVars(self.TagName)) |
1975 dialog.SetVariables(self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)) |
1879 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()]) |
1976 dialog.SetStepNames([block.GetName() for block in self.Blocks if isinstance(block, SFC_Step) and block.GetName() != step.GetName()]) |
1880 dialog.SetMinStepSize(step.GetSize()) |
1977 dialog.SetMinStepSize(step.GetSize()) |
1881 values = {"name" : step.GetName()} |
1978 values = {"name" : step.GetName()} |
1882 connectors = step.GetConnectors() |
1979 connectors = step.GetConnectors() |
1883 values["input"] = connectors["input"] != None |
1980 values["input"] = connectors["input"] != None |
1903 step.UpdateSize(*self.GetScaledSize(values["width"], values["height"])) |
2000 step.UpdateSize(*self.GetScaledSize(values["width"], values["height"])) |
1904 rect = rect.Union(step.GetRedrawRect()) |
2001 rect = rect.Union(step.GetRedrawRect()) |
1905 self.RefreshStepModel(step) |
2002 self.RefreshStepModel(step) |
1906 self.RefreshBuffer() |
2003 self.RefreshBuffer() |
1907 self.RefreshScrollBars() |
2004 self.RefreshScrollBars() |
|
2005 self.RefreshVisibleElements() |
1908 step.Refresh(rect) |
2006 step.Refresh(rect) |
1909 |
2007 |
1910 def EditTransitionContent(self, transition): |
2008 def EditTransitionContent(self, transition): |
1911 dialog = TransitionContentDialog(self.ParentWindow, self.Controler, self.GetDrawingMode() == FREEDRAWING_MODE) |
2009 dialog = TransitionContentDialog(self.ParentWindow, self.Controler, self.GetDrawingMode() == FREEDRAWING_MODE) |
1912 dialog.SetPreviewFont(self.GetFont()) |
2010 dialog.SetPreviewFont(self.GetFont()) |
1913 dialog.SetTransitions(self.Controler.GetEditedElementTransitions(self.TagName)) |
2011 dialog.SetTransitions(self.Controler.GetEditedElementTransitions(self.TagName, self.Debug)) |
1914 dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()}) |
2012 dialog.SetValues({"type":transition.GetType(),"value":transition.GetCondition(), "priority":transition.GetPriority()}) |
1915 dialog.SetElementSize(transition.GetSize()) |
2013 dialog.SetElementSize(transition.GetSize()) |
1916 if dialog.ShowModal() == wx.ID_OK: |
2014 if dialog.ShowModal() == wx.ID_OK: |
1917 values = dialog.GetValues() |
2015 values = dialog.GetValues() |
1918 rect = transition.GetRedrawRect(1, 1) |
2016 rect = transition.GetRedrawRect(1, 1) |
1938 jump.SetTarget(value) |
2037 jump.SetTarget(value) |
1939 rect = rect.Union(jump.GetRedrawRect()) |
2038 rect = rect.Union(jump.GetRedrawRect()) |
1940 self.RefreshJumpModel(jump) |
2039 self.RefreshJumpModel(jump) |
1941 self.RefreshBuffer() |
2040 self.RefreshBuffer() |
1942 self.RefreshScrollBars() |
2041 self.RefreshScrollBars() |
|
2042 self.RefreshVisibleElements() |
1943 jump.Refresh(rect) |
2043 jump.Refresh(rect) |
1944 dialog.Destroy() |
2044 dialog.Destroy() |
1945 |
2045 |
1946 def EditActionBlockContent(self, actionblock): |
2046 def EditActionBlockContent(self, actionblock): |
1947 dialog = ActionBlockDialog(self.ParentWindow) |
2047 dialog = ActionBlockDialog(self.ParentWindow) |
1948 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
2048 dialog.SetQualifierList(self.Controler.GetQualifierTypes()) |
1949 dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName)) |
2049 dialog.SetActionList(self.Controler.GetEditedElementActions(self.TagName, self.Debug)) |
1950 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName)) |
2050 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)) |
1951 dialog.SetValues(actionblock.GetActions()) |
2051 dialog.SetValues(actionblock.GetActions()) |
1952 if dialog.ShowModal() == wx.ID_OK: |
2052 if dialog.ShowModal() == wx.ID_OK: |
1953 actions = dialog.GetValues() |
2053 actions = dialog.GetValues() |
1954 rect = actionblock.GetRedrawRect(1, 1) |
2054 rect = actionblock.GetRedrawRect(1, 1) |
1955 actionblock.SetActions(actions) |
2055 actionblock.SetActions(actions) |
1956 actionblock.SetSize(*self.GetScaledSize(*actionblock.GetSize())) |
2056 actionblock.SetSize(*self.GetScaledSize(*actionblock.GetSize())) |
1957 rect = rect.Union(actionblock.GetRedrawRect()) |
2057 rect = rect.Union(actionblock.GetRedrawRect()) |
1958 self.RefreshActionBlockModel(actionblock) |
2058 self.RefreshActionBlockModel(actionblock) |
1959 self.RefreshBuffer() |
2059 self.RefreshBuffer() |
1960 self.RefreshScrollBars() |
2060 self.RefreshScrollBars() |
|
2061 self.RefreshVisibleElements() |
1961 actionblock.Refresh(rect) |
2062 actionblock.Refresh(rect) |
1962 dialog.Destroy() |
2063 dialog.Destroy() |
1963 |
2064 |
1964 def EditCommentContent(self, comment): |
2065 def EditCommentContent(self, comment): |
1965 if wx.VERSION >= (2, 5, 0): |
2066 if wx.VERSION >= (2, 5, 0): |
2252 self.ParentWindow.RefreshVariablePanel(self.TagName) |
2354 self.ParentWindow.RefreshVariablePanel(self.TagName) |
2253 self.ParentWindow.RefreshInstancesTree() |
2355 self.ParentWindow.RefreshInstancesTree() |
2254 self.RefreshRect(self.GetScrolledRect(rect), False) |
2356 self.RefreshRect(self.GetScrolledRect(rect), False) |
2255 |
2357 |
2256 def Copy(self): |
2358 def Copy(self): |
2257 if self.IsBlock(self.SelectedElement) or self.IsComment(self.SelectedElement): |
2359 if not self.Debug and (self.IsBlock(self.SelectedElement) or self.IsComment(self.SelectedElement)): |
2258 self.ParentWindow.SetCopyBuffer(self.SelectedElement.Clone(self)) |
2360 self.ParentWindow.SetCopyBuffer(self.SelectedElement.Clone(self)) |
2259 |
2361 |
2260 def Paste(self): |
2362 def Paste(self): |
2261 element = self.ParentWindow.GetCopyBuffer() |
2363 element = self.ParentWindow.GetCopyBuffer() |
2262 if element is not None and self.CanAddBlock(element): |
2364 if not self.Debug and element is not None and self.CanAddBlock(element): |
2263 block = self.CopyBlock(element, wx.Point(*self.CalcUnscrolledPosition(30, 30))) |
2365 block = self.CopyBlock(element, wx.Point(*self.CalcUnscrolledPosition(30, 30))) |
2264 if self.SelectedElement is not None: |
2366 if self.SelectedElement is not None: |
2265 self.SelectedElement.SetSelected(False) |
2367 self.SelectedElement.SetSelected(False) |
2266 self.SelectedElement = block |
2368 self.SelectedElement = block |
2267 self.SelectedElement.SetSelected(True) |
2369 self.SelectedElement.SetSelected(True) |
2268 self.RefreshBuffer() |
2370 self.RefreshBuffer() |
2269 self.RefreshScrollBars() |
2371 self.RefreshScrollBars() |
|
2372 self.RefreshVisibleElements() |
2270 self.ParentWindow.RefreshVariablePanel(self.TagName) |
2373 self.ParentWindow.RefreshVariablePanel(self.TagName) |
2271 self.ParentWindow.RefreshInstancesTree() |
2374 self.ParentWindow.RefreshInstancesTree() |
2272 |
2375 |
2273 def CanAddBlock(self, block): |
2376 def CanAddBlock(self, block): |
2274 if self.CurrentLanguage == "SFC": |
2377 if self.CurrentLanguage == "SFC": |