292 self.Bind(wx.EVT_PAINT, self.OnPaint) |
292 self.Bind(wx.EVT_PAINT, self.OnPaint) |
293 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
293 self.Bind(wx.EVT_LEFT_DOWN, self.OnViewerLeftDown) |
294 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
294 self.Bind(wx.EVT_LEFT_UP, self.OnViewerLeftUp) |
295 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
295 self.Bind(wx.EVT_LEFT_DCLICK, self.OnViewerLeftDClick) |
296 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
296 self.Bind(wx.EVT_RIGHT_UP, self.OnViewerRightUp) |
|
297 self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveViewer) |
297 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
298 self.Bind(wx.EVT_MOTION, self.OnViewerMotion) |
298 self.Bind(wx.EVT_CHAR, self.OnChar) |
299 self.Bind(wx.EVT_CHAR, self.OnChar) |
299 if wx.VERSION < (2, 7, 0): |
300 if wx.VERSION < (2, 7, 0): |
300 self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
301 self.Bind(wx.EVT_SCROLLWIN, self.OnMoveWindow) |
301 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
302 self.Bind(wx.EVT_SIZE, self.OnMoveWindow) |
1145 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1147 self.SelectedElement.OnLeftDClick(event, self.GetLogicalDC(), self.Scaling) |
1146 self.Refresh(False) |
1148 self.Refresh(False) |
1147 event.Skip() |
1149 event.Skip() |
1148 |
1150 |
1149 def OnViewerMotion(self, event): |
1151 def OnViewerMotion(self, event): |
|
1152 refresh = False |
|
1153 dc = self.GetLogicalDC() |
|
1154 pos = GetScaledEventPosition(event, dc, self.Scaling) |
|
1155 if not event.Dragging(): |
|
1156 highlighted = self.FindElement(pos) |
|
1157 if self.HighlightedElement is not None and self.HighlightedElement != highlighted: |
|
1158 self.HighlightedElement.SetHighlighted(False) |
|
1159 self.HighlightedElement = None |
|
1160 refresh = True |
|
1161 if highlighted is not None: |
|
1162 highlighted.SetHighlighted(True) |
|
1163 refresh = True |
|
1164 self.HighlightedElement = highlighted |
1150 if self.rubberBand.IsShown(): |
1165 if self.rubberBand.IsShown(): |
1151 self.rubberBand.OnMotion(event, self.GetLogicalDC(), self.Scaling) |
1166 self.rubberBand.OnMotion(event, dc, self.Scaling) |
1152 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
1167 elif self.Mode == MODE_SELECTION and self.SelectedElement: |
1153 if self.DrawingWire: |
1168 if self.DrawingWire: |
1154 dc = self.GetLogicalDC() |
|
1155 pos = GetScaledEventPosition(event, dc, self.Scaling) |
|
1156 connector = self.FindBlockConnector(pos, False) |
1169 connector = self.FindBlockConnector(pos, False) |
1157 if not connector or self.SelectedElement.EndConnected == None: |
1170 if not connector or self.SelectedElement.EndConnected == None: |
1158 self.SelectedElement.ResetPoints() |
1171 self.SelectedElement.ResetPoints() |
1159 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
1172 self.SelectedElement.OnMotion(event, dc, self.Scaling) |
1160 self.SelectedElement.GeneratePoints() |
1173 self.SelectedElement.GeneratePoints() |
1161 self.Refresh(False) |
1174 refresh = True |
1162 elif self.SelectedElement.OnMotion(event, self.GetLogicalDC(), self.Scaling): |
1175 elif self.SelectedElement.OnMotion(event, dc, self.Scaling): |
1163 self.Refresh(False) |
1176 refresh = True |
1164 self.UpdateScrollPos(event) |
1177 self.UpdateScrollPos(event) |
|
1178 if refresh: |
|
1179 self.Refresh(False) |
|
1180 event.Skip() |
|
1181 |
|
1182 def OnLeaveViewer(self, event): |
|
1183 if self.HighlightedElement is not None: |
|
1184 self.HighlightedElement.SetHighlighted(False) |
|
1185 self.HighlightedElement = None |
|
1186 self.Refresh(False) |
1165 event.Skip() |
1187 event.Skip() |
1166 |
1188 |
1167 def UpdateScrollPos(self, event): |
1189 def UpdateScrollPos(self, event): |
1168 if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown(): |
1190 if (event.Dragging() and self.SelectedElement) or self.rubberBand.IsShown(): |
1169 position = event.GetPosition() |
1191 position = event.GetPosition() |
2131 width, height = dc.GetSize() |
2153 width, height = dc.GetSize() |
2132 for i in xrange(1, width / self.Scaling[0] + 1): |
2154 for i in xrange(1, width / self.Scaling[0] + 1): |
2133 dc.DrawLine(i * self.Scaling[0], 0, i * self.Scaling[0], height) |
2155 dc.DrawLine(i * self.Scaling[0], 0, i * self.Scaling[0], height) |
2134 for i in xrange(1, height / self.Scaling[1] + 1): |
2156 for i in xrange(1, height / self.Scaling[1] + 1): |
2135 dc.DrawLine(0, i * self.Scaling[1], width, i * self.Scaling[1]) |
2157 dc.DrawLine(0, i * self.Scaling[1], width, i * self.Scaling[1]) |
|
2158 |
|
2159 # Draw highlighted elements |
|
2160 for comment in self.Comments: |
|
2161 comment.DrawHighlightment(dc) |
|
2162 for wire in self.Wires: |
|
2163 wire.DrawHighlightment(dc) |
|
2164 for block in self.Blocks: |
|
2165 block.DrawHighlightment(dc) |
|
2166 |
|
2167 # Draw all elements |
2136 for comment in self.Comments: |
2168 for comment in self.Comments: |
2137 if comment != self.SelectedElement: |
2169 if comment != self.SelectedElement: |
2138 comment.Draw(dc) |
2170 comment.Draw(dc) |
2139 for wire in self.Wires: |
2171 for wire in self.Wires: |
2140 if wire != self.SelectedElement: |
2172 if wire != self.SelectedElement: |