66 wx.TextDropTarget.__init__(self) |
66 wx.TextDropTarget.__init__(self) |
67 self.ParentWindow = parent |
67 self.ParentWindow = parent |
68 |
68 |
69 def OnDropText(self, x, y, data): |
69 def OnDropText(self, x, y, data): |
70 x, y = self.ParentWindow.CalcUnscrolledPosition(x, y) |
70 x, y = self.ParentWindow.CalcUnscrolledPosition(x, y) |
|
71 scaling = self.ParentWindow.Scaling |
71 values = eval(data) |
72 values = eval(data) |
72 if values[1] == "program": |
73 if values[1] == "program": |
73 message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR) |
74 message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR) |
74 message.ShowModal() |
75 message.ShowModal() |
75 message.Destroy() |
76 message.Destroy() |
94 if dialog.ShowModal(): |
95 if dialog.ShowModal(): |
95 blockname = dialog.GetValue() |
96 blockname = dialog.GetValue() |
96 dialog.Destroy() |
97 dialog.Destroy() |
97 id = self.ParentWindow.GetNewId() |
98 id = self.ParentWindow.GetNewId() |
98 block = FBD_Block(self.ParentWindow, values[0], blockname, id) |
99 block = FBD_Block(self.ParentWindow, values[0], blockname, id) |
|
100 width, height = block.GetMinSize() |
|
101 if scaling is not None: |
|
102 x = round(float(x) / float(scaling[0])) * scaling[0] |
|
103 y = round(float(y) / float(scaling[1])) * scaling[1] |
|
104 width = round(float(width) / float(scaling[0]) + 0.5) * scaling[0] |
|
105 height = round(float(height) / float(scaling[1]) + 0.5) * scaling[1] |
99 block.SetPosition(x, y) |
106 block.SetPosition(x, y) |
100 width, height = block.GetMinSize() |
|
101 block.SetSize(width, height) |
107 block.SetSize(width, height) |
102 self.ParentWindow.AddBlock(block) |
108 self.ParentWindow.AddBlock(block) |
103 self.ParentWindow.Controler.AddEditedElementBlock(self.ParentWindow.GetTagName(), id, values[0], blockname) |
109 self.ParentWindow.Controler.AddEditedElementBlock(self.ParentWindow.GetTagName(), id, values[0], blockname) |
104 self.ParentWindow.RefreshBlockModel(block) |
110 self.ParentWindow.RefreshBlockModel(block) |
105 self.ParentWindow.RefreshBuffer() |
111 self.ParentWindow.RefreshBuffer() |
106 self.ParentWindow.RefreshScrollBars() |
112 self.ParentWindow.RefreshScrollBars() |
107 self.ParentWindow.ParentWindow.RefreshVariablePanel(self.TagName) |
113 self.ParentWindow.ParentWindow.RefreshVariablePanel(self.ParentWindow.GetTagName()) |
108 self.ParentWindow.Refresh() |
114 self.ParentWindow.Refresh() |
109 elif values[1] != "location": |
115 elif values[1] != "location": |
110 if values[3] == self.ParentWindow.GetTagName(): |
116 if values[3] == self.ParentWindow.GetTagName(): |
111 id = self.ParentWindow.GetNewId() |
117 id = self.ParentWindow.GetNewId() |
112 if values[1] == "Output": |
118 if values[1] == "Output": |
114 elif values[1] == "InOut": |
120 elif values[1] == "InOut": |
115 var_type = INPUT |
121 var_type = INPUT |
116 else: |
122 else: |
117 var_type = INPUT |
123 var_type = INPUT |
118 variable = FBD_Variable(self.ParentWindow, var_type, values[0], values[2], id) |
124 variable = FBD_Variable(self.ParentWindow, var_type, values[0], values[2], id) |
|
125 width, height = variable.GetMinSize() |
|
126 if scaling is not None: |
|
127 x = round(float(x) / float(scaling[0])) * scaling[0] |
|
128 y = round(float(y) / float(scaling[1])) * scaling[1] |
|
129 width = round(float(width) / float(scaling[0]) + 0.5) * scaling[0] |
|
130 height = round(float(height) / float(scaling[1]) + 0.5) * scaling[1] |
119 variable.SetPosition(x, y) |
131 variable.SetPosition(x, y) |
120 width, height = variable.GetMinSize() |
|
121 variable.SetSize(width, height) |
132 variable.SetSize(width, height) |
122 self.ParentWindow.AddBlock(variable) |
133 self.ParentWindow.AddBlock(variable) |
123 self.ParentWindow.Controler.AddEditedElementVariable(self.ParentWindow.TagName, id, var_type) |
134 self.ParentWindow.Controler.AddEditedElementVariable(self.ParentWindow.GetTagName(), id, var_type) |
124 self.ParentWindow.RefreshVariableModel(variable) |
135 self.ParentWindow.RefreshVariableModel(variable) |
125 self.ParentWindow.RefreshBuffer() |
136 self.ParentWindow.RefreshBuffer() |
126 self.ParentWindow.RefreshScrollBars() |
137 self.ParentWindow.RefreshScrollBars() |
127 self.ParentWindow.Refresh() |
138 self.ParentWindow.Refresh() |
128 else: |
139 else: |
267 # Adding a rubberband to Viewer |
278 # Adding a rubberband to Viewer |
268 self.rubberBand = RubberBand(drawingSurface=self) |
279 self.rubberBand = RubberBand(drawingSurface=self) |
269 self.SetBackgroundColour(wx.Colour(255,255,255)) |
280 self.SetBackgroundColour(wx.Colour(255,255,255)) |
270 self.ResetView() |
281 self.ResetView() |
271 self.Scaling = None |
282 self.Scaling = None |
272 #self.Scaling = (8, 8) |
|
273 self.DrawGrid = True |
283 self.DrawGrid = True |
|
284 self.GridBrush = wx.TRANSPARENT_BRUSH |
274 self.DrawingWire = False |
285 self.DrawingWire = False |
275 self.current_id = 0 |
286 self.current_id = 0 |
276 self.TagName = tagname |
287 self.TagName = tagname |
277 |
288 |
278 # Initialize Block, Wire and Comment numbers |
289 # Initialize Block, Wire and Comment numbers |
291 # Link Viewer event to corresponding methods |
302 # Link Viewer event to corresponding methods |
292 self.Bind(wx.EVT_PAINT, self.OnPaint) |
303 self.Bind(wx.EVT_PAINT, self.OnPaint) |
293 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
304 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
294 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
305 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
295 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
306 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
|
307 self.Bind(wx.EVT_RIGHT_DOWN, self.OnViewerRightDown) |
296 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
308 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
297 self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
309 self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
298 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
310 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
299 self.Bind(wx.EVT_CHAR, self.OnChar) |
311 self.Bind(wx.EVT_CHAR, self.OnChar) |
300 self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
312 self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
301 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
313 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
302 |
314 |
303 def GetScrolledRect(self, rect): |
315 def GetScrolledRect(self, rect): |
304 rect.x, rect.y = self.CalcScrolledPosition(rect.x, rect.y) |
316 rect.x, rect.y = self.CalcScrolledPosition(rect.x, rect.y) |
305 return rect |
317 return rect |
|
318 |
|
319 def GetScaling(self): |
|
320 return self.Scaling |
306 |
321 |
307 def SetTagName(self, tagname): |
322 def SetTagName(self, tagname): |
308 self.TagName = tagname |
323 self.TagName = tagname |
309 |
324 |
310 def GetTagName(self): |
325 def GetTagName(self): |
421 def RefreshBuffer(self): |
436 def RefreshBuffer(self): |
422 self.Controler.BufferProject() |
437 self.Controler.BufferProject() |
423 self.ParentWindow.RefreshTitle() |
438 self.ParentWindow.RefreshTitle() |
424 self.ParentWindow.RefreshEditMenu() |
439 self.ParentWindow.RefreshEditMenu() |
425 |
440 |
|
441 # Refresh the current scaling |
|
442 def RefreshScaling(self, refresh=True): |
|
443 properties = self.Controler.GetProjectProperties() |
|
444 scaling = properties["scaling"][self.CurrentLanguage] |
|
445 if scaling != (0, 0): |
|
446 self.Scaling = scaling |
|
447 if self.DrawGrid: |
|
448 bitmap = wx.EmptyBitmap(*scaling) |
|
449 dc = wx.MemoryDC(bitmap) |
|
450 dc.SetBackground(wx.Brush(self.GetBackgroundColour())) |
|
451 dc.Clear() |
|
452 dc.SetPen(wx.Pen(wx.Colour(180, 180, 180))) |
|
453 dc.DrawPoint(0, 0) |
|
454 self.GridBrush = wx.BrushFromBitmap(bitmap) |
|
455 else: |
|
456 self.GridBrush = wx.TRANSPARENT_BRUSH |
|
457 else: |
|
458 self.Scaling = None |
|
459 self.GridBrush = wx.TRANSPARENT_BRUSH |
|
460 if refresh: |
|
461 self.Refresh() |
|
462 |
|
463 |
426 #------------------------------------------------------------------------------- |
464 #------------------------------------------------------------------------------- |
427 # Refresh functions |
465 # Refresh functions |
428 #------------------------------------------------------------------------------- |
466 #------------------------------------------------------------------------------- |
429 |
467 |
430 def ResetBuffer(self): |
468 def ResetBuffer(self): |
569 contact_type = CONTACT_FALLING |
607 contact_type = CONTACT_FALLING |
570 else: |
608 else: |
571 contact_type = CONTACT_NORMAL |
609 contact_type = CONTACT_NORMAL |
572 contact = LD_Contact(self, contact_type, instance["name"], instance["id"]) |
610 contact = LD_Contact(self, contact_type, instance["name"], instance["id"]) |
573 contact.SetPosition(instance["x"], instance["y"]) |
611 contact.SetPosition(instance["x"], instance["y"]) |
|
612 contact.SetSize(instance["width"], instance["height"]) |
574 self.AddBlock(contact) |
613 self.AddBlock(contact) |
575 connectors = contact.GetConnectors() |
614 connectors = contact.GetConnectors() |
576 connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) |
615 connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) |
577 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) |
616 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) |
578 connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) |
617 connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) |
593 coil_type = COIL_RESET |
632 coil_type = COIL_RESET |
594 else: |
633 else: |
595 coil_type = COIL_NORMAL |
634 coil_type = COIL_NORMAL |
596 coil = LD_Coil(self, coil_type, instance["name"], instance["id"]) |
635 coil = LD_Coil(self, coil_type, instance["name"], instance["id"]) |
597 coil.SetPosition(instance["x"], instance["y"]) |
636 coil.SetPosition(instance["x"], instance["y"]) |
|
637 coil.SetSize(instance["width"], instance["height"]) |
598 self.AddBlock(coil) |
638 self.AddBlock(coil) |
599 connectors = coil.GetConnectors() |
639 connectors = coil.GetConnectors() |
600 connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) |
640 connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) |
601 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) |
641 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) |
602 connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) |
642 connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) |
622 if connectors["action"]: |
662 if connectors["action"]: |
623 connectors["action"].SetPosition(wx.Point(*instance["connectors"]["action"]["position"])) |
663 connectors["action"].SetPosition(wx.Point(*instance["connectors"]["action"]["position"])) |
624 elif instance["type"] == "transition": |
664 elif instance["type"] == "transition": |
625 transition = SFC_Transition(self, instance["condition_type"], instance["condition"], instance["priority"], instance["id"]) |
665 transition = SFC_Transition(self, instance["condition_type"], instance["condition"], instance["priority"], instance["id"]) |
626 transition.SetPosition(instance["x"], instance["y"]) |
666 transition.SetPosition(instance["x"], instance["y"]) |
|
667 transition.SetSize(instance["width"], instance["height"]) |
627 self.AddBlock(transition) |
668 self.AddBlock(transition) |
628 connectors = transition.GetConnectors() |
669 connectors = transition.GetConnectors() |
629 connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) |
670 connectors["input"].SetPosition(wx.Point(*instance["connectors"]["input"]["position"])) |
630 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) |
671 self.CreateWires(connectors["input"], instance["connectors"]["input"]["links"], ids) |
631 connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) |
672 connectors["output"].SetPosition(wx.Point(*instance["connectors"]["output"]["position"])) |
656 connector = connectors["outputs"][i] |
697 connector = connectors["outputs"][i] |
657 connector.SetPosition(wx.Point(*output_connector["position"])) |
698 connector.SetPosition(wx.Point(*output_connector["position"])) |
658 elif instance["type"] == "jump": |
699 elif instance["type"] == "jump": |
659 jump = SFC_Jump(self, instance["target"], instance["id"]) |
700 jump = SFC_Jump(self, instance["target"], instance["id"]) |
660 jump.SetPosition(instance["x"], instance["y"]) |
701 jump.SetPosition(instance["x"], instance["y"]) |
|
702 jump.SetSize(instance["width"], instance["height"]) |
661 self.AddBlock(jump) |
703 self.AddBlock(jump) |
662 connector = jump.GetConnector() |
704 connector = jump.GetConnector() |
663 connector.SetPosition(wx.Point(*instance["connector"]["position"])) |
705 connector.SetPosition(wx.Point(*instance["connector"]["position"])) |
664 self.CreateWires(connector, instance["connector"]["links"], ids) |
706 self.CreateWires(connector, instance["connector"]["links"], ids) |
665 elif instance["type"] == "actionBlock": |
707 elif instance["type"] == "actionBlock": |
875 |
917 |
876 def OnAlignLeftMenu(self, event): |
918 def OnAlignLeftMenu(self, event): |
877 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
919 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
878 self.SelectedElement.AlignElements(ALIGN_LEFT, None) |
920 self.SelectedElement.AlignElements(ALIGN_LEFT, None) |
879 self.RefreshBuffer() |
921 self.RefreshBuffer() |
|
922 self.Refresh() |
880 event.Skip() |
923 event.Skip() |
881 |
924 |
882 def OnAlignCenterMenu(self, event): |
925 def OnAlignCenterMenu(self, event): |
883 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
926 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
884 self.SelectedElement.AlignElements(ALIGN_CENTER, None) |
927 self.SelectedElement.AlignElements(ALIGN_CENTER, None) |
885 self.RefreshBuffer() |
928 self.RefreshBuffer() |
|
929 self.Refresh() |
886 event.Skip() |
930 event.Skip() |
887 |
931 |
888 def OnAlignRightMenu(self, event): |
932 def OnAlignRightMenu(self, event): |
889 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
933 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
890 self.SelectedElement.AlignElements(ALIGN_RIGHT, None) |
934 self.SelectedElement.AlignElements(ALIGN_RIGHT, None) |
891 self.RefreshBuffer() |
935 self.RefreshBuffer() |
|
936 self.Refresh() |
892 event.Skip() |
937 event.Skip() |
893 |
938 |
894 def OnAlignTopMenu(self, event): |
939 def OnAlignTopMenu(self, event): |
895 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
940 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
896 self.SelectedElement.AlignElements(None, ALIGN_TOP) |
941 self.SelectedElement.AlignElements(None, ALIGN_TOP) |
897 self.RefreshBuffer() |
942 self.RefreshBuffer() |
|
943 self.Refresh() |
898 event.Skip() |
944 event.Skip() |
899 |
945 |
900 def OnAlignMiddleMenu(self, event): |
946 def OnAlignMiddleMenu(self, event): |
901 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
947 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
902 self.SelectedElement.AlignElements(None, ALIGN_MIDDLE) |
948 self.SelectedElement.AlignElements(None, ALIGN_MIDDLE) |
903 self.RefreshBuffer() |
949 self.RefreshBuffer() |
|
950 self.Refresh() |
904 event.Skip() |
951 event.Skip() |
905 |
952 |
906 def OnAlignBottomMenu(self, event): |
953 def OnAlignBottomMenu(self, event): |
907 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
954 if self.SelectedElement and isinstance(self.SelectedElement, Graphic_Group): |
908 self.SelectedElement.AlignElements(None, ALIGN_BOTTOM) |
955 self.SelectedElement.AlignElements(None, ALIGN_BOTTOM) |
909 self.RefreshBuffer() |
956 self.RefreshBuffer() |
|
957 self.Refresh() |
910 event.Skip() |
958 event.Skip() |
911 |
959 |
912 def OnNoModifierMenu(self, event): |
960 def OnNoModifierMenu(self, event): |
913 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
961 if self.SelectedElement and self.IsBlock(self.SelectedElement): |
914 self.SelectedElement.SetConnectorNegated(False) |
962 self.SelectedElement.SetConnectorNegated(False) |
1002 elif len(elements) == 1: |
1050 elif len(elements) == 1: |
1003 self.SelectedElement = elements[0] |
1051 self.SelectedElement = elements[0] |
1004 self.SelectedElement.SetSelected(True) |
1052 self.SelectedElement.SetSelected(True) |
1005 else: |
1053 else: |
1006 element = self.FindElement(pos) |
1054 element = self.FindElement(pos) |
1007 connector = self.FindBlockConnector(pos) |
1055 if element is None or element.TestHandle(pos) == (0, 0): |
|
1056 connector = self.FindBlockConnector(pos) |
|
1057 else: |
|
1058 connector = None |
1008 if self.DrawingWire: |
1059 if self.DrawingWire: |
1009 self.DrawingWire = False |
1060 self.DrawingWire = False |
1010 if connector: |
1061 if connector: |
1011 event.Dragging = lambda : True |
1062 event.Dragging = lambda : True |
1012 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
1063 self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
1018 element = self.SelectedElement |
1069 element = self.SelectedElement |
1019 self.RefreshBuffer() |
1070 self.RefreshBuffer() |
1020 else: |
1071 else: |
1021 rect = self.SelectedElement.GetRedrawRect() |
1072 rect = self.SelectedElement.GetRedrawRect() |
1022 self.SelectedElement.Delete() |
1073 self.SelectedElement.Delete() |
|
1074 self.SelectedElement = None |
1023 element = None |
1075 element = None |
1024 self.RefreshRect(self.GetScrolledRect(rect)) |
1076 self.RefreshRect(self.GetScrolledRect(rect)) |
1025 elif connector: |
1077 elif connector: |
1026 self.DrawingWire = True |
1078 self.DrawingWire = True |
1027 pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling) |
1079 pos = GetScaledEventPosition(event, self.GetLogicalDC(), self.Scaling) |
1029 wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST]) |
1081 wire = Wire(self, [wx.Point(pos.x, pos.y), EAST], [wx.Point(pos.x, pos.y), WEST]) |
1030 else: |
1082 else: |
1031 wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST]) |
1083 wire = Wire(self, [wx.Point(pos.x, pos.y), WEST], [wx.Point(pos.x, pos.y), EAST]) |
1032 wire.oldPos = pos |
1084 wire.oldPos = pos |
1033 wire.Handle = (HANDLE_POINT, 0) |
1085 wire.Handle = (HANDLE_POINT, 0) |
1034 wire.ProcessDragging(0, 0) |
1086 wire.ProcessDragging(0, 0, self.Scaling) |
1035 wire.Handle = (HANDLE_POINT, 1) |
1087 wire.Handle = (HANDLE_POINT, 1) |
1036 self.AddWire(wire) |
1088 self.AddWire(wire) |
1037 if self.SelectedElement: |
1089 if self.SelectedElement: |
1038 self.SelectedElement.SetSelected(False) |
1090 self.SelectedElement.SetSelected(False) |
1039 self.SelectedElement = wire |
1091 self.SelectedElement = wire |
1102 if self.DrawingWire: |
1154 if self.DrawingWire: |
1103 pos = event.GetLogicalPosition(dc) |
1155 pos = event.GetLogicalPosition(dc) |
1104 connector = self.FindBlockConnector(pos) |
1156 connector = self.FindBlockConnector(pos) |
1105 if self.SelectedElement.EndConnected is not None: |
1157 if self.SelectedElement.EndConnected is not None: |
1106 self.DrawingWire = False |
1158 self.DrawingWire = False |
|
1159 self.SelectedElement.StartConnected.HighlightParentBlock(False) |
|
1160 self.SelectedElement.EndConnected.HighlightParentBlock(False) |
1107 self.SelectedElement.ResetPoints() |
1161 self.SelectedElement.ResetPoints() |
1108 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
1162 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
1109 self.SelectedElement.GeneratePoints() |
1163 self.SelectedElement.GeneratePoints() |
1110 self.SelectedElement.RefreshModel() |
1164 self.SelectedElement.RefreshModel() |
|
1165 if self.HighlightedElement is not None: |
|
1166 self.HighlightedElement.SetHighlighted(False) |
|
1167 self.HighlightedElement = None |
|
1168 self.SelectedElement.SetHighlighted(True) |
|
1169 self.HighlightedElement = self.SelectedElement |
1111 self.SelectedElement.SetSelected(True) |
1170 self.SelectedElement.SetSelected(True) |
1112 self.RefreshBuffer() |
1171 self.RefreshBuffer() |
1113 elif connector is None or self.SelectedElement.GetDragging(): |
1172 elif connector is None or self.SelectedElement.GetDragging(): |
1114 self.DrawingWire = False |
1173 self.DrawingWire = False |
1115 rect = self.SelectedElement.GetRedrawRect() |
1174 rect = self.SelectedElement.GetRedrawRect() |
1122 self.SelectedElement.Refresh() |
1181 self.SelectedElement.Refresh() |
1123 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1182 if self.Mode != MODE_SELECTION and not self.SavedMode: |
1124 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1183 wx.CallAfter(self.ParentWindow.ResetCurrentMode) |
1125 event.Skip() |
1184 event.Skip() |
1126 |
1185 |
|
1186 def OnViewerRightDown(self, event): |
|
1187 if self.Mode == MODE_SELECTION: |
|
1188 dc = self.GetLogicalDC() |
|
1189 pos = event.GetLogicalPosition(dc) |
|
1190 element = self.FindElement(pos) |
|
1191 if self.SelectedElement and self.SelectedElement != element: |
|
1192 self.SelectedElement.SetSelected(False) |
|
1193 self.SelectedElement = None |
|
1194 if element: |
|
1195 self.SelectedElement = element |
|
1196 self.SelectedElement.OnRightDown(event, dc, self.Scaling) |
|
1197 self.SelectedElement.Refresh() |
|
1198 event.Skip() |
|
1199 |
1127 def OnViewerRightUp(self, event): |
1200 def OnViewerRightUp(self, event): |
1128 dc = self.GetLogicalDC() |
1201 dc = self.GetLogicalDC() |
1129 pos = event.GetLogicalPosition(dc) |
1202 if self.SelectedElement: |
1130 element = self.FindElement(pos) |
1203 self.SelectedElement.OnRightUp(event, dc, self.Scaling) |
1131 if element: |
|
1132 if self.SelectedElement and self.SelectedElement != element: |
|
1133 self.SelectedElement.SetSelected(False) |
|
1134 self.SelectedElement = element |
|
1135 self.SelectedElement.SetSelected(True) |
|
1136 self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling) |
|
1137 wx.CallAfter(self.SetCursor, wx.NullCursor) |
1204 wx.CallAfter(self.SetCursor, wx.NullCursor) |
|
1205 self.SelectedElement.Refresh() |
1138 else: |
1206 else: |
1139 self.PopupDefaultMenu(False) |
1207 self.PopupDefaultMenu(False) |
1140 event.Skip() |
1208 event.Skip() |
1141 |
1209 |
1142 def OnViewerLeftDClick(self, event): |
1210 def OnViewerLeftDClick(self, event): |
1152 dc = self.GetLogicalDC() |
1220 dc = self.GetLogicalDC() |
1153 pos = GetScaledEventPosition(event, dc, self.Scaling) |
1221 pos = GetScaledEventPosition(event, dc, self.Scaling) |
1154 if not event.Dragging(): |
1222 if not event.Dragging(): |
1155 highlighted = self.FindElement(pos) |
1223 highlighted = self.FindElement(pos) |
1156 if self.HighlightedElement is not None and self.HighlightedElement != highlighted: |
1224 if self.HighlightedElement is not None and self.HighlightedElement != highlighted: |
1157 rect = self.HighlightedElement.GetRedrawRect() |
|
1158 self.HighlightedElement.SetHighlighted(False) |
1225 self.HighlightedElement.SetHighlighted(False) |
1159 self.HighlightedElement = None |
1226 self.HighlightedElement = None |
1160 if highlighted is not None and self.HighlightedElement != highlighted: |
1227 if highlighted is not None and self.HighlightedElement != highlighted: |
1161 highlighted.SetHighlighted(True) |
1228 highlighted.SetHighlighted(True) |
1162 self.HighlightedElement = highlighted |
1229 self.HighlightedElement = highlighted |
1282 |
1349 |
1283 #------------------------------------------------------------------------------- |
1350 #------------------------------------------------------------------------------- |
1284 # Model adding functions |
1351 # Model adding functions |
1285 #------------------------------------------------------------------------------- |
1352 #------------------------------------------------------------------------------- |
1286 |
1353 |
|
1354 def GetScaledSize(self, width, height): |
|
1355 if self.Scaling is not None: |
|
1356 width = round(float(width) / float(self.Scaling[0]) + 0.4) * self.Scaling[0] |
|
1357 height = round(float(height) / float(self.Scaling[1]) + 0.4) * self.Scaling[1] |
|
1358 return width, height |
|
1359 |
1287 def AddNewBlock(self, bbox): |
1360 def AddNewBlock(self, bbox): |
1288 dialog = BlockPropertiesDialog(self.ParentWindow) |
1361 dialog = BlockPropertiesDialog(self.ParentWindow) |
1289 dialog.SetBlockList(self.Controler.GetBlockTypes(self.TagName)) |
1362 dialog.SetBlockList(self.Controler.GetBlockTypes(self.TagName)) |
1290 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1363 dialog.SetPouNames(self.Controler.GetProjectPouNames()) |
1291 dialog.SetPouElementNames(self.Controler.GetEditedElementVariables(self.TagName)) |
1364 dialog.SetPouElementNames(self.Controler.GetEditedElementVariables(self.TagName)) |
1296 if "name" in values: |
1369 if "name" in values: |
1297 block = FBD_Block(self, values["type"], values["name"], id, values["extension"], values["inputs"]) |
1370 block = FBD_Block(self, values["type"], values["name"], id, values["extension"], values["inputs"]) |
1298 else: |
1371 else: |
1299 block = FBD_Block(self, values["type"], "", id, values["extension"], values["inputs"]) |
1372 block = FBD_Block(self, values["type"], "", id, values["extension"], values["inputs"]) |
1300 block.SetPosition(bbox.x, bbox.y) |
1373 block.SetPosition(bbox.x, bbox.y) |
1301 block.SetSize(values["width"], values["height"]) |
1374 block.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1302 self.AddBlock(block) |
1375 self.AddBlock(block) |
1303 self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None)) |
1376 self.Controler.AddEditedElementBlock(self.TagName, id, values["type"], values.get("name", None)) |
1304 self.RefreshBlockModel(block) |
1377 self.RefreshBlockModel(block) |
1305 self.RefreshBuffer() |
1378 self.RefreshBuffer() |
1306 self.RefreshScrollBars() |
1379 self.RefreshScrollBars() |
1324 if dialog.ShowModal() == wx.ID_OK: |
1397 if dialog.ShowModal() == wx.ID_OK: |
1325 id = self.GetNewId() |
1398 id = self.GetNewId() |
1326 values = dialog.GetValues() |
1399 values = dialog.GetValues() |
1327 variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id) |
1400 variable = FBD_Variable(self, values["type"], values["name"], values["value_type"], id) |
1328 variable.SetPosition(bbox.x, bbox.y) |
1401 variable.SetPosition(bbox.x, bbox.y) |
1329 variable.SetSize(values["width"], values["height"]) |
1402 variable.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1330 self.AddBlock(variable) |
1403 self.AddBlock(variable) |
1331 self.Controler.AddEditedElementVariable(self.TagName, id, values["type"]) |
1404 self.Controler.AddEditedElementVariable(self.TagName, id, values["type"]) |
1332 self.RefreshVariableModel(variable) |
1405 self.RefreshVariableModel(variable) |
1333 self.RefreshBuffer() |
1406 self.RefreshBuffer() |
1334 self.RefreshScrollBars() |
1407 self.RefreshScrollBars() |
1341 if dialog.ShowModal() == wx.ID_OK: |
1414 if dialog.ShowModal() == wx.ID_OK: |
1342 id = self.GetNewId() |
1415 id = self.GetNewId() |
1343 values = dialog.GetValues() |
1416 values = dialog.GetValues() |
1344 connection = FBD_Connector(self, values["type"], values["name"], id) |
1417 connection = FBD_Connector(self, values["type"], values["name"], id) |
1345 connection.SetPosition(bbox.x, bbox.y) |
1418 connection.SetPosition(bbox.x, bbox.y) |
1346 connection.SetSize(values["width"], values["height"]) |
1419 connection.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1347 self.AddBlock(connection) |
1420 self.AddBlock(connection) |
1348 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
1421 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
1349 self.RefreshConnectionModel(connection) |
1422 self.RefreshConnectionModel(connection) |
1350 self.RefreshBuffer() |
1423 self.RefreshBuffer() |
1351 self.RefreshScrollBars() |
1424 self.RefreshScrollBars() |
1361 value = dialog.GetValue() |
1434 value = dialog.GetValue() |
1362 id = self.GetNewId() |
1435 id = self.GetNewId() |
1363 comment = Comment(self, value, id) |
1436 comment = Comment(self, value, id) |
1364 comment.SetPosition(bbox.x, bbox.y) |
1437 comment.SetPosition(bbox.x, bbox.y) |
1365 min_width, min_height = comment.GetMinSize() |
1438 min_width, min_height = comment.GetMinSize() |
1366 comment.SetSize(max(min_width,bbox.width),max(min_height,bbox.height)) |
1439 comment.SetSize(*self.GetScaledSize(max(min_width,bbox.width),max(min_height,bbox.height))) |
1367 self.AddComment(comment) |
1440 self.AddComment(comment) |
1368 self.Controler.AddEditedElementComment(self.TagName, id) |
1441 self.Controler.AddEditedElementComment(self.TagName, id) |
1369 self.RefreshCommentModel(comment) |
1442 self.RefreshCommentModel(comment) |
1370 self.RefreshBuffer() |
1443 self.RefreshBuffer() |
1371 self.RefreshScrollBars() |
1444 self.RefreshScrollBars() |
1386 if dialog.ShowModal() == wx.ID_OK: |
1459 if dialog.ShowModal() == wx.ID_OK: |
1387 id = self.GetNewId() |
1460 id = self.GetNewId() |
1388 values = dialog.GetValues() |
1461 values = dialog.GetValues() |
1389 contact = LD_Contact(self, values["type"], values["name"], id) |
1462 contact = LD_Contact(self, values["type"], values["name"], id) |
1390 contact.SetPosition(bbox.x, bbox.y) |
1463 contact.SetPosition(bbox.x, bbox.y) |
1391 contact.SetSize(values["width"], values["height"]) |
1464 contact.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1392 self.AddBlock(contact) |
1465 self.AddBlock(contact) |
1393 self.Controler.AddEditedElementContact(self.TagName, id) |
1466 self.Controler.AddEditedElementContact(self.TagName, id) |
1394 self.RefreshContactModel(contact) |
1467 self.RefreshContactModel(contact) |
1395 self.RefreshBuffer() |
1468 self.RefreshBuffer() |
1396 self.RefreshScrollBars() |
1469 self.RefreshScrollBars() |
1414 if dialog.ShowModal() == wx.ID_OK: |
1487 if dialog.ShowModal() == wx.ID_OK: |
1415 id = self.GetNewId() |
1488 id = self.GetNewId() |
1416 values = dialog.GetValues() |
1489 values = dialog.GetValues() |
1417 coil = LD_Coil(self, values["type"], values["name"], id) |
1490 coil = LD_Coil(self, values["type"], values["name"], id) |
1418 coil.SetPosition(bbox.x, bbox.y) |
1491 coil.SetPosition(bbox.x, bbox.y) |
1419 coil.SetSize(values["width"], values["height"]) |
1492 coil.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1420 self.AddBlock(coil) |
1493 self.AddBlock(coil) |
1421 self.Controler.AddEditedElementCoil(self.TagName, id) |
1494 self.Controler.AddEditedElementCoil(self.TagName, id) |
1422 self.RefreshCoilModel(coil) |
1495 self.RefreshCoilModel(coil) |
1423 self.RefreshBuffer() |
1496 self.RefreshBuffer() |
1424 self.RefreshScrollBars() |
1497 self.RefreshScrollBars() |
1431 if dialog.ShowModal() == wx.ID_OK: |
1504 if dialog.ShowModal() == wx.ID_OK: |
1432 id = self.GetNewId() |
1505 id = self.GetNewId() |
1433 values = dialog.GetValues() |
1506 values = dialog.GetValues() |
1434 powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])]) |
1507 powerrail = LD_PowerRail(self, values["type"], id, [True for i in xrange(values["number"])]) |
1435 powerrail.SetPosition(bbox.x, bbox.y) |
1508 powerrail.SetPosition(bbox.x, bbox.y) |
1436 powerrail.SetSize(values["width"], values["height"]) |
1509 powerrail.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1437 self.AddBlock(powerrail) |
1510 self.AddBlock(powerrail) |
1438 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1511 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1439 self.RefreshPowerRailModel(powerrail) |
1512 self.RefreshPowerRailModel(powerrail) |
1440 self.RefreshBuffer() |
1513 self.RefreshBuffer() |
1441 self.RefreshScrollBars() |
1514 self.RefreshScrollBars() |
1464 step.AddAction() |
1537 step.AddAction() |
1465 else: |
1538 else: |
1466 step.RemoveAction() |
1539 step.RemoveAction() |
1467 step.SetPosition(bbox.x, bbox.y) |
1540 step.SetPosition(bbox.x, bbox.y) |
1468 min_width, min_height = step.GetMinSize() |
1541 min_width, min_height = step.GetMinSize() |
1469 step.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1542 step.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
1470 self.AddBlock(step) |
1543 self.AddBlock(step) |
1471 self.Controler.AddEditedElementStep(self.TagName, id) |
1544 self.Controler.AddEditedElementStep(self.TagName, id) |
1472 self.RefreshStepModel(step) |
1545 self.RefreshStepModel(step) |
1473 self.RefreshBuffer() |
1546 self.RefreshBuffer() |
1474 self.RefreshScrollBars() |
1547 self.RefreshScrollBars() |
1482 id = self.GetNewId() |
1555 id = self.GetNewId() |
1483 values = dialog.GetValues() |
1556 values = dialog.GetValues() |
1484 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
1557 transition = SFC_Transition(self, values["type"], values["value"], values["priority"], id) |
1485 transition.SetPosition(bbox.x, bbox.y) |
1558 transition.SetPosition(bbox.x, bbox.y) |
1486 min_width, min_height = transition.GetMinSize() |
1559 min_width, min_height = transition.GetMinSize() |
1487 transition.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1560 transition.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
1488 self.AddBlock(transition) |
1561 self.AddBlock(transition) |
1489 self.Controler.AddEditedElementTransition(self.TagName, id) |
1562 self.Controler.AddEditedElementTransition(self.TagName, id) |
1490 self.RefreshTransitionModel(transition) |
1563 self.RefreshTransitionModel(transition) |
1491 self.RefreshBuffer() |
1564 self.RefreshBuffer() |
1492 self.RefreshScrollBars() |
1565 self.RefreshScrollBars() |
1500 id = self.GetNewId() |
1573 id = self.GetNewId() |
1501 values = dialog.GetValues() |
1574 values = dialog.GetValues() |
1502 divergence = SFC_Divergence(self, values["type"], values["number"], id) |
1575 divergence = SFC_Divergence(self, values["type"], values["number"], id) |
1503 divergence.SetPosition(bbox.x, bbox.y) |
1576 divergence.SetPosition(bbox.x, bbox.y) |
1504 min_width, min_height = divergence.GetMinSize(True) |
1577 min_width, min_height = divergence.GetMinSize(True) |
1505 divergence.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1578 divergence.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
1506 self.AddBlock(divergence) |
1579 self.AddBlock(divergence) |
1507 self.Controler.AddEditedElementDivergence(self.TagName, id, values["type"]) |
1580 self.Controler.AddEditedElementDivergence(self.TagName, id, values["type"]) |
1508 self.RefreshDivergenceModel(divergence) |
1581 self.RefreshDivergenceModel(divergence) |
1509 self.RefreshBuffer() |
1582 self.RefreshBuffer() |
1510 self.RefreshScrollBars() |
1583 self.RefreshScrollBars() |
1521 id = self.GetNewId() |
1594 id = self.GetNewId() |
1522 value = dialog.GetStringSelection() |
1595 value = dialog.GetStringSelection() |
1523 jump = SFC_Jump(self, value, id) |
1596 jump = SFC_Jump(self, value, id) |
1524 jump.SetPosition(bbox.x, bbox.y) |
1597 jump.SetPosition(bbox.x, bbox.y) |
1525 min_width, min_height = jump.GetMinSize() |
1598 min_width, min_height = jump.GetMinSize() |
1526 jump.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1599 jump.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
1527 self.AddBlock(jump) |
1600 self.AddBlock(jump) |
1528 self.Controler.AddEditedElementJump(self.TagName, id) |
1601 self.Controler.AddEditedElementJump(self.TagName, id) |
1529 self.RefreshJumpModel(jump) |
1602 self.RefreshJumpModel(jump) |
1530 self.RefreshBuffer() |
1603 self.RefreshBuffer() |
1531 self.RefreshScrollBars() |
1604 self.RefreshScrollBars() |
1541 actions = dialog.GetValues() |
1614 actions = dialog.GetValues() |
1542 id = self.GetNewId() |
1615 id = self.GetNewId() |
1543 actionblock = SFC_ActionBlock(self, actions, id) |
1616 actionblock = SFC_ActionBlock(self, actions, id) |
1544 actionblock.SetPosition(bbox.x, bbox.y) |
1617 actionblock.SetPosition(bbox.x, bbox.y) |
1545 min_width, min_height = actionblock.GetMinSize() |
1618 min_width, min_height = actionblock.GetMinSize() |
1546 actionblock.SetSize(max(bbox.width, min_width), max(bbox.height, min_height)) |
1619 actionblock.SetSize(*self.GetScaledSize(max(bbox.width, min_width), max(bbox.height, min_height))) |
1547 self.AddBlock(actionblock) |
1620 self.AddBlock(actionblock) |
1548 self.Controler.AddEditedElementActionBlock(self.TagName, id) |
1621 self.Controler.AddEditedElementActionBlock(self.TagName, id) |
1549 self.RefreshActionBlockModel(actionblock) |
1622 self.RefreshActionBlockModel(actionblock) |
1550 self.RefreshBuffer() |
1623 self.RefreshBuffer() |
1551 self.RefreshScrollBars() |
1624 self.RefreshScrollBars() |
1570 dialog.SetValues(old_values) |
1643 dialog.SetValues(old_values) |
1571 if dialog.ShowModal() == wx.ID_OK: |
1644 if dialog.ShowModal() == wx.ID_OK: |
1572 new_values = dialog.GetValues() |
1645 new_values = dialog.GetValues() |
1573 if "name" in new_values: |
1646 if "name" in new_values: |
1574 block.SetName(new_values["name"]) |
1647 block.SetName(new_values["name"]) |
1575 block.SetSize(new_values["width"], new_values["height"]) |
1648 block.SetSize(*self.GetScaledSize(new_values["width"], new_values["height"])) |
1576 block.SetType(new_values["type"], new_values["extension"]) |
1649 block.SetType(new_values["type"], new_values["extension"]) |
1577 block.SetExecutionOrder(new_values["executionOrder"]) |
1650 block.SetExecutionOrder(new_values["executionOrder"]) |
1578 self.RefreshBlockModel(block) |
1651 self.RefreshBlockModel(block) |
1579 if old_values["executionOrder"] != new_values["executionOrder"]: |
1652 if old_values["executionOrder"] != new_values["executionOrder"]: |
1580 self.RefreshView() |
1653 self.RefreshView() |
1602 dialog.SetValues(old_values) |
1675 dialog.SetValues(old_values) |
1603 if dialog.ShowModal() == wx.ID_OK: |
1676 if dialog.ShowModal() == wx.ID_OK: |
1604 new_values = dialog.GetValues() |
1677 new_values = dialog.GetValues() |
1605 variable.SetName(new_values["name"]) |
1678 variable.SetName(new_values["name"]) |
1606 variable.SetType(new_values["type"], new_values["value_type"]) |
1679 variable.SetType(new_values["type"], new_values["value_type"]) |
1607 variable.SetSize(new_values["width"], new_values["height"]) |
1680 variable.SetSize(*self.GetScaledSize(new_values["width"], new_values["height"])) |
1608 variable.SetExecutionOrder(new_values["executionOrder"]) |
1681 variable.SetExecutionOrder(new_values["executionOrder"]) |
1609 if old_values["type"] != new_values["type"]: |
1682 if old_values["type"] != new_values["type"]: |
1610 id = variable.GetId() |
1683 id = variable.GetId() |
1611 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1684 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1612 self.Controler.AddEditedElementVariable(self.TagName, id, new_values["type"]) |
1685 self.Controler.AddEditedElementVariable(self.TagName, id, new_values["type"]) |
1626 if dialog.ShowModal() == wx.ID_OK: |
1699 if dialog.ShowModal() == wx.ID_OK: |
1627 old_type = connection.GetType() |
1700 old_type = connection.GetType() |
1628 values = dialog.GetValues() |
1701 values = dialog.GetValues() |
1629 connection.SetName(values["name"]) |
1702 connection.SetName(values["name"]) |
1630 connection.SetType(values["type"]) |
1703 connection.SetType(values["type"]) |
1631 connection.SetSize(values["width"], values["height"]) |
1704 connection.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1632 if old_type != values["type"]: |
1705 if old_type != values["type"]: |
1633 id = connection.GetId() |
1706 id = connection.GetId() |
1634 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1707 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1635 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
1708 self.Controler.AddEditedElementConnection(self.TagName, id, values["type"]) |
1636 self.RefreshConnectionModel(connection) |
1709 self.RefreshConnectionModel(connection) |
1653 dialog.SetElementSize(contact.GetSize()) |
1726 dialog.SetElementSize(contact.GetSize()) |
1654 if dialog.ShowModal() == wx.ID_OK: |
1727 if dialog.ShowModal() == wx.ID_OK: |
1655 values = dialog.GetValues() |
1728 values = dialog.GetValues() |
1656 contact.SetName(values["name"]) |
1729 contact.SetName(values["name"]) |
1657 contact.SetType(values["type"]) |
1730 contact.SetType(values["type"]) |
1658 contact.SetSize(values["width"], values["height"]) |
1731 contact.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1659 self.RefreshContactModel(contact) |
1732 self.RefreshContactModel(contact) |
1660 self.RefreshBuffer() |
1733 self.RefreshBuffer() |
1661 self.RefreshScrollBars() |
1734 self.RefreshScrollBars() |
1662 contact.Refresh() |
1735 contact.Refresh() |
1663 dialog.Destroy() |
1736 dialog.Destroy() |
1679 dialog.SetElementSize(coil.GetSize()) |
1752 dialog.SetElementSize(coil.GetSize()) |
1680 if dialog.ShowModal() == wx.ID_OK: |
1753 if dialog.ShowModal() == wx.ID_OK: |
1681 values = dialog.GetValues() |
1754 values = dialog.GetValues() |
1682 coil.SetName(values["name"]) |
1755 coil.SetName(values["name"]) |
1683 coil.SetType(values["type"]) |
1756 coil.SetType(values["type"]) |
1684 coil.SetSize(values["width"], values["height"]) |
1757 coil.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1685 self.RefreshCoilModel(coil) |
1758 self.RefreshCoilModel(coil) |
1686 self.RefreshBuffer() |
1759 self.RefreshBuffer() |
1687 self.RefreshScrollBars() |
1760 self.RefreshScrollBars() |
1688 coil.Refresh() |
1761 coil.Refresh() |
1689 dialog.Destroy() |
1762 dialog.Destroy() |
1693 dialog.SetMinSize(powerrail.GetSize()) |
1766 dialog.SetMinSize(powerrail.GetSize()) |
1694 if dialog.ShowModal() == wx.ID_OK: |
1767 if dialog.ShowModal() == wx.ID_OK: |
1695 old_type = powerrail.GetType() |
1768 old_type = powerrail.GetType() |
1696 values = dialog.GetValues() |
1769 values = dialog.GetValues() |
1697 powerrail.SetType(values["type"], [True for i in xrange(values["number"])]) |
1770 powerrail.SetType(values["type"], [True for i in xrange(values["number"])]) |
1698 powerrail.SetSize(values["width"], values["height"]) |
1771 powerrail.SetSize(*self.GetScaledSize(values["width"], values["height"])) |
1699 if old_type != values["type"]: |
1772 if old_type != values["type"]: |
1700 id = powerrail.GetId() |
1773 id = powerrail.GetId() |
1701 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1774 self.Controler.RemoveEditedElementInstance(self.TagName, id) |
1702 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1775 self.Controler.AddEditedElementPowerRail(self.TagName, id, values["type"]) |
1703 self.RefreshPowerRailModel(powerrail) |
1776 self.RefreshPowerRailModel(powerrail) |
1777 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName)) |
1850 dialog.SetVariableList(self.Controler.GetEditedElementInterfaceVars(self.TagName)) |
1778 dialog.SetValues(actionblock.GetActions()) |
1851 dialog.SetValues(actionblock.GetActions()) |
1779 if dialog.ShowModal() == wx.ID_OK: |
1852 if dialog.ShowModal() == wx.ID_OK: |
1780 actions = dialog.GetValues() |
1853 actions = dialog.GetValues() |
1781 actionblock.SetActions(actions) |
1854 actionblock.SetActions(actions) |
|
1855 actionblock.SetSize(*self.GetScaledSize(*actionblock.GetSize())) |
1782 actionblock.RefreshModel() |
1856 actionblock.RefreshModel() |
1783 self.RefreshBuffer() |
1857 self.RefreshBuffer() |
1784 self.RefreshScrollBars() |
1858 self.RefreshScrollBars() |
1785 actionblock.Refresh() |
1859 actionblock.Refresh() |
1786 dialog.Destroy() |
1860 dialog.Destroy() |
1791 else: |
1865 else: |
1792 dialog = wx.TextEntryDialog(self.ParentWindow, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL) |
1866 dialog = wx.TextEntryDialog(self.ParentWindow, "Edit comment", "Please enter comment text", comment.GetContent(), wx.OK|wx.CANCEL) |
1793 if dialog.ShowModal() == wx.ID_OK: |
1867 if dialog.ShowModal() == wx.ID_OK: |
1794 value = dialog.GetValue() |
1868 value = dialog.GetValue() |
1795 comment.SetContent(value) |
1869 comment.SetContent(value) |
|
1870 comment.SetSize(*self.GetScaledSize(*comment.GetSize())) |
1796 comment.RefreshModel() |
1871 comment.RefreshModel() |
1797 self.RefreshBuffer() |
1872 self.RefreshBuffer() |
1798 self.RefreshScrollBars() |
1873 self.RefreshScrollBars() |
1799 comment.Refresh() |
1874 comment.Refresh() |
1800 dialog.Destroy() |
1875 dialog.Destroy() |
1806 def RefreshBlockModel(self, block): |
1881 def RefreshBlockModel(self, block): |
1807 blockid = block.GetId() |
1882 blockid = block.GetId() |
1808 infos = {} |
1883 infos = {} |
1809 infos["type"] = block.GetType() |
1884 infos["type"] = block.GetType() |
1810 infos["name"] = block.GetName() |
1885 infos["name"] = block.GetName() |
1811 infos["executionOrder"] = block.GetExecutionOrder() |
1886 if self.CurrentLanguage == "FBD": |
|
1887 infos["executionOrder"] = block.GetExecutionOrder() |
1812 infos["x"], infos["y"] = block.GetPosition() |
1888 infos["x"], infos["y"] = block.GetPosition() |
1813 infos["width"], infos["height"] = block.GetSize() |
1889 infos["width"], infos["height"] = block.GetSize() |
1814 infos["connectors"] = block.GetConnectors() |
1890 infos["connectors"] = block.GetConnectors() |
1815 self.Controler.SetEditedElementBlockInfos(self.TagName, blockid, infos) |
1891 self.Controler.SetEditedElementBlockInfos(self.TagName, blockid, infos) |
1816 |
1892 |
1817 def RefreshVariableModel(self, variable): |
1893 def RefreshVariableModel(self, variable): |
1818 variableid = variable.GetId() |
1894 variableid = variable.GetId() |
1819 infos = {} |
1895 infos = {} |
1820 infos["name"] = variable.GetName() |
1896 infos["name"] = variable.GetName() |
1821 infos["executionOrder"] = variable.GetExecutionOrder() |
1897 if self.CurrentLanguage == "FBD": |
|
1898 infos["executionOrder"] = variable.GetExecutionOrder() |
1822 infos["x"], infos["y"] = variable.GetPosition() |
1899 infos["x"], infos["y"] = variable.GetPosition() |
1823 infos["width"], infos["height"] = variable.GetSize() |
1900 infos["width"], infos["height"] = variable.GetSize() |
1824 infos["connectors"] = variable.GetConnectors() |
1901 infos["connectors"] = variable.GetConnectors() |
1825 self.Controler.SetEditedElementVariableInfos(self.TagName, variableid, infos) |
1902 self.Controler.SetEditedElementVariableInfos(self.TagName, variableid, infos) |
1826 |
1903 |
1827 def RefreshConnectionModel(self, connection): |
1904 def RefreshConnectionModel(self, connection): |
1828 connectionid = connection.GetId() |
1905 connectionid = connection.GetId() |
1829 infos = {} |
1906 infos = {} |
1830 infos["name"] = connection.GetName() |
1907 infos["name"] = connection.GetName() |
1831 infos["executionOrder"] = connection.GetExecutionOrder() |
|
1832 infos["x"], infos["y"] = connection.GetPosition() |
1908 infos["x"], infos["y"] = connection.GetPosition() |
1833 infos["width"], infos["height"] = connection.GetSize() |
1909 infos["width"], infos["height"] = connection.GetSize() |
1834 infos["connector"] = connection.GetConnector() |
1910 infos["connector"] = connection.GetConnector() |
1835 self.Controler.SetEditedElementConnectionInfos(self.TagName, connectionid, infos) |
1911 self.Controler.SetEditedElementConnectionInfos(self.TagName, connectionid, infos) |
1836 |
1912 |
2161 self.RefreshScrollBars() |
2237 self.RefreshScrollBars() |
2162 event.Skip() |
2238 event.Skip() |
2163 |
2239 |
2164 def OnPaint(self, event): |
2240 def OnPaint(self, event): |
2165 dc = self.GetLogicalDC(True) |
2241 dc = self.GetLogicalDC(True) |
|
2242 dc.SetBackground(wx.Brush(self.GetBackgroundColour())) |
2166 dc.Clear() |
2243 dc.Clear() |
2167 dc.SetPen(wx.Pen(wx.Colour(230, 230, 230))) |
|
2168 dc.BeginDrawing() |
2244 dc.BeginDrawing() |
2169 if self.Scaling and self.DrawGrid: |
2245 if self.Scaling and self.DrawGrid: |
2170 width, height = dc.GetSize() |
2246 dc.SetPen(wx.TRANSPARENT_PEN) |
2171 for i in xrange(1, width / self.Scaling[0] + 1): |
2247 dc.SetBrush(self.GridBrush) |
2172 dc.DrawLine(i * self.Scaling[0], 0, i * self.Scaling[0], height) |
2248 width, height = self.GetVirtualSize() |
2173 for i in xrange(1, height / self.Scaling[1] + 1): |
2249 dc.DrawRectangle(0, 0, width, height) |
2174 dc.DrawLine(0, i * self.Scaling[1], width, i * self.Scaling[1]) |
|
2175 |
2250 |
2176 # Draw all elements |
2251 # Draw all elements |
2177 for comment in self.Comments: |
2252 for comment in self.Comments: |
2178 if comment != self.SelectedElement: |
2253 if comment != self.SelectedElement: |
2179 comment.Draw(dc) |
2254 comment.Draw(dc) |