Viewer.py
changeset 140 06d28f03f6f4
parent 138 9c74d00ce93e
child 144 b67a5de5a24a
equal deleted inserted replaced
139:c2d093402005 140:06d28f03f6f4
   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)
   387     def ResetView(self):
   388     def ResetView(self):
   388         self.Blocks = {}
   389         self.Blocks = {}
   389         self.Wires = {}
   390         self.Wires = {}
   390         self.Comments = {}
   391         self.Comments = {}
   391         self.SelectedElement = None
   392         self.SelectedElement = None
       
   393         self.HighlightedElement = None
   392     
   394     
   393     # Remove all elements
   395     # Remove all elements
   394     def CleanView(self):
   396     def CleanView(self):
   395         for block in self.Blocks.keys():
   397         for block in self.Blocks.keys():
   396             block.Clean()
   398             block.Clean()
  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:
  2142         for block in self.Blocks:
  2174         for block in self.Blocks:
  2143             if block != self.SelectedElement:
  2175             if block != self.SelectedElement:
  2144                 block.Draw(dc)
  2176                 block.Draw(dc)
  2145         if self.SelectedElement:
  2177         if self.SelectedElement:
  2146             self.SelectedElement.Draw(dc)
  2178             self.SelectedElement.Draw(dc)
       
  2179         
  2147         if self.rubberBand.IsShown():
  2180         if self.rubberBand.IsShown():
  2148             self.rubberBand.Draw(dc)
  2181             self.rubberBand.Draw(dc)
  2149         dc.EndDrawing()
  2182         dc.EndDrawing()
  2150         event.Skip()
  2183         event.Skip()
  2151 
  2184