LDViewer.py
changeset 563 3f92a5e18804
parent 554 08c26c62f5a7
child 586 9aa96a36cf33
equal deleted inserted replaced
562:0ce12552cf36 563:3f92a5e18804
   257         for i, rung in enumerate(self.Rungs):
   257         for i, rung in enumerate(self.Rungs):
   258             if rung.IsElementIn(element):
   258             if rung.IsElementIn(element):
   259                 return i
   259                 return i
   260         return None
   260         return None
   261 
   261 
   262     def FindElement(self, pos, exclude_group = False):
   262     def FindElement(self, event, exclude_group = False):
   263         if self.GetDrawingMode() == FREEDRAWING_MODE:
   263         if self.GetDrawingMode() == FREEDRAWING_MODE:
   264             return Viewer.FindElement(self, pos, exclude_group)
   264             return Viewer.FindElement(self, event, exclude_group)
   265         
   265         
       
   266         dc = self.GetLogicalDC()
       
   267         pos = event.GetLogicalPosition(dc)
   266         if self.SelectedElement and not isinstance(self.SelectedElement, (Graphic_Group, Wire)):
   268         if self.SelectedElement and not isinstance(self.SelectedElement, (Graphic_Group, Wire)):
   267             if self.SelectedElement.HitTest(pos) or self.SelectedElement.TestHandle(pos) != (0, 0):
   269             if self.SelectedElement.HitTest(pos) or self.SelectedElement.TestHandle(pos) != (0, 0):
   268                 return self.SelectedElement
   270                 return self.SelectedElement
   269         elements = []
   271         elements = []
   270         for element in self.GetElements(sort_wires=True):
   272         for element in self.GetElements(sort_wires=True):
   271             if element.HitTest(pos) or element.TestHandle(pos) != (0, 0):
   273             if element.HitTest(pos) or element.TestHandle(event) != (0, 0):
   272                 elements.append(element)
   274                 elements.append(element)
   273         if len(elements) == 1:
   275         if len(elements) == 1:
   274             return elements[0]
   276             return elements[0]
   275         elif len(elements) > 1:
   277         elif len(elements) > 1:
   276             group = Graphic_Group(self)
   278             group = Graphic_Group(self)
   294 
   296 
   295     def OnViewerLeftDown(self, event):
   297     def OnViewerLeftDown(self, event):
   296         if self.GetDrawingMode() == FREEDRAWING_MODE:
   298         if self.GetDrawingMode() == FREEDRAWING_MODE:
   297             Viewer.OnViewerLeftDown(self, event)
   299             Viewer.OnViewerLeftDown(self, event)
   298         elif self.Mode == MODE_SELECTION:
   300         elif self.Mode == MODE_SELECTION:
   299             dc = self.GetLogicalDC()
   301             element = self.FindElement(event)
   300             pos = event.GetLogicalPosition(dc)
       
   301             element = self.FindElement(pos)
       
   302             if self.SelectedElement:
   302             if self.SelectedElement:
   303                 if not isinstance(self.SelectedElement, Graphic_Group):
   303                 if not isinstance(self.SelectedElement, Graphic_Group):
   304                     if self.SelectedElement != element:
   304                     if self.SelectedElement != element:
   305                         if self.IsWire(self.SelectedElement):
   305                         if self.IsWire(self.SelectedElement):
   306                             self.SelectedElement.SetSelectedSegment(None)
   306                             self.SelectedElement.SetSelectedSegment(None)
   321                             elt.SetSelectedSegment(None)
   321                             elt.SetSelectedSegment(None)
   322                     self.SelectedElement.SetSelected(False)
   322                     self.SelectedElement.SetSelected(False)
   323                     self.SelectedElement = None
   323                     self.SelectedElement = None
   324             if element:
   324             if element:
   325                 self.SelectedElement = element
   325                 self.SelectedElement = element
   326                 self.SelectedElement.OnLeftDown(event, dc, self.Scaling)
   326                 self.SelectedElement.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
   327                 self.SelectedElement.Refresh()
   327                 self.SelectedElement.Refresh()
   328             else:
   328             else:
   329                 self.rubberBand.Reset()
   329                 self.rubberBand.Reset()
   330                 self.rubberBand.OnLeftDown(event, dc, self.Scaling)
   330                 self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
   331         event.Skip()
   331         event.Skip()
   332 
   332 
   333     def OnViewerLeftUp(self, event):
   333     def OnViewerLeftUp(self, event):
   334         if self.GetDrawingMode() == FREEDRAWING_MODE:
   334         if self.GetDrawingMode() == FREEDRAWING_MODE:
   335             Viewer.OnViewerLeftUp(self, event)
   335             Viewer.OnViewerLeftUp(self, event)
   364 
   364 
   365     def OnViewerRightUp(self, event):
   365     def OnViewerRightUp(self, event):
   366         if self.GetDrawingMode() == FREEDRAWING_MODE:
   366         if self.GetDrawingMode() == FREEDRAWING_MODE:
   367             Viewer.OnViewerRightUp(self, event)
   367             Viewer.OnViewerRightUp(self, event)
   368         else:
   368         else:
   369             dc = self.GetLogicalDC()
   369             element = self.FindElement(event)
   370             pos = event.GetLogicalPosition(dc)
       
   371             element = self.FindElement(pos)
       
   372             if element:
   370             if element:
   373                 if self.SelectedElement and self.SelectedElement != element:
   371                 if self.SelectedElement and self.SelectedElement != element:
   374                     self.SelectedElement.SetSelected(False)
   372                     self.SelectedElement.SetSelected(False)
   375                 self.SelectedElement = element
   373                 self.SelectedElement = element
   376                 if self.IsWire(self.SelectedElement):
   374                 if self.IsWire(self.SelectedElement):
   377                     self.SelectedElement.SetSelectedSegment(0)
   375                     self.SelectedElement.SetSelectedSegment(0)
   378                 else:
   376                 else:
   379                     self.SelectedElement.SetSelected(True)
   377                     self.SelectedElement.SetSelected(True)
   380                     self.SelectedElement.OnRightUp(event, dc, self.Scaling)
   378                     self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling)
   381                     self.SelectedElement.Refresh()
   379                     self.SelectedElement.Refresh()
   382                 wx.CallAfter(self.SetCurrentCursor, 0)
   380                 wx.CallAfter(self.SetCurrentCursor, 0)
   383         event.Skip()
   381         event.Skip()
   384 
   382 
   385 #-------------------------------------------------------------------------------
   383 #-------------------------------------------------------------------------------