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): |