SFCViewer.py
changeset 563 3f92a5e18804
parent 409 34c9f624c2fe
child 720 2a9d4eafaddd
equal deleted inserted replaced
562:0ce12552cf36 563:3f92a5e18804
   166 
   166 
   167     def OnViewerLeftDown(self, event):
   167     def OnViewerLeftDown(self, event):
   168         if self.GetDrawingMode() == FREEDRAWING_MODE:
   168         if self.GetDrawingMode() == FREEDRAWING_MODE:
   169             Viewer.OnViewerLeftDown(self, event)
   169             Viewer.OnViewerLeftDown(self, event)
   170         elif self.Mode == MODE_SELECTION:
   170         elif self.Mode == MODE_SELECTION:
   171             dc = self.GetLogicalDC()
       
   172             pos = event.GetLogicalPosition(dc)
       
   173             if event.ShiftDown() and not event.ControlDown() and self.SelectedElement is not None:
   171             if event.ShiftDown() and not event.ControlDown() and self.SelectedElement is not None:
   174                 element = self.FindElement(pos, True)
   172                 element = self.FindElement(event, True)
   175                 if element and not self.IsWire(element):
   173                 if element and not self.IsWire(element):
   176                     if isinstance(self.SelectedElement, Graphic_Group):
   174                     if isinstance(self.SelectedElement, Graphic_Group):
   177                         self.SelectedElement.SelectElement(element)
   175                         self.SelectedElement.SelectElement(element)
   178                     else:
   176                     else:
   179                         group = Graphic_Group(self)
   177                         group = Graphic_Group(self)
   186                         self.SelectedElement = element
   184                         self.SelectedElement = element
   187                     elif len(elements) == 1:
   185                     elif len(elements) == 1:
   188                         self.SelectedElement = elements[0]
   186                         self.SelectedElement = elements[0]
   189                     self.SelectedElement.SetSelected(True)
   187                     self.SelectedElement.SetSelected(True)
   190             else:
   188             else:
   191                 element = self.FindElement(pos)
   189                 element = self.FindElement(event)
   192                 if self.SelectedElement and self.SelectedElement != element:
   190                 if self.SelectedElement and self.SelectedElement != element:
   193                     if self.IsWire(self.SelectedElement):
   191                     if self.IsWire(self.SelectedElement):
   194                         self.SelectedElement.SetSelectedSegment(None)
   192                         self.SelectedElement.SetSelectedSegment(None)
   195                     else:
   193                     else:
   196                         self.SelectedElement.SetSelected(False)
   194                         self.SelectedElement.SetSelected(False)
   197                     self.SelectedElement = None
   195                     self.SelectedElement = None
   198                 if element:
   196                 if element:
   199                     self.SelectedElement = element
   197                     self.SelectedElement = element
   200                     self.SelectedElement.OnLeftDown(event, dc, self.Scaling)
   198                     self.SelectedElement.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
   201                     self.SelectedElement.Refresh()
   199                     self.SelectedElement.Refresh()
   202                 else:
   200                 else:
   203                     self.rubberBand.Reset()
   201                     self.rubberBand.Reset()
   204                     self.rubberBand.OnLeftDown(event, dc, self.Scaling)
   202                     self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
   205         elif self.Mode == MODE_COMMENT:
   203         elif self.Mode == MODE_COMMENT:
   206             self.rubberBand.Reset()
   204             self.rubberBand.Reset()
   207             self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
   205             self.rubberBand.OnLeftDown(event, self.GetLogicalDC(), self.Scaling)
   208         event.Skip()
   206         event.Skip()
   209 
   207 
   241     
   239     
   242     def OnViewerRightUp(self, event):
   240     def OnViewerRightUp(self, event):
   243         if self.GetDrawingMode() == FREEDRAWING_MODE:
   241         if self.GetDrawingMode() == FREEDRAWING_MODE:
   244             Viewer.OnViewerRightUp(self, event)
   242             Viewer.OnViewerRightUp(self, event)
   245         else:
   243         else:
   246             dc = self.GetLogicalDC()
   244             element = self.FindElement(event)
   247             pos = event.GetLogicalPosition(dc)
       
   248             element = self.FindElement(pos)
       
   249             if element:
   245             if element:
   250                 if self.SelectedElement and self.SelectedElement != element:
   246                 if self.SelectedElement and self.SelectedElement != element:
   251                     self.SelectedElement.SetSelected(False)
   247                     self.SelectedElement.SetSelected(False)
   252                 self.SelectedElement = element
   248                 self.SelectedElement = element
   253                 if self.IsWire(self.SelectedElement):
   249                 if self.IsWire(self.SelectedElement):
   254                     self.SelectedElement.SetSelectedSegment(0)
   250                     self.SelectedElement.SetSelectedSegment(0)
   255                 else:
   251                 else:
   256                     self.SelectedElement.SetSelected(True)
   252                     self.SelectedElement.SetSelected(True)
   257                     self.SelectedElement.OnRightUp(event, dc, self.Scaling)
   253                     self.SelectedElement.OnRightUp(event, self.GetLogicalDC(), self.Scaling)
   258                     self.SelectedElement.Refresh()
   254                     self.SelectedElement.Refresh()
   259                 wx.CallAfter(self.SetCurrentCursor, 0)
   255                 wx.CallAfter(self.SetCurrentCursor, 0)
   260         event.Skip()
   256         event.Skip()
   261     
   257     
   262     def OnViewerLeftDClick(self, event):
   258     def OnViewerLeftDClick(self, event):