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, event, exclude_group = False): |
262 def FindElement(self, event, exclude_group = False, connectors = True): |
263 if self.GetDrawingMode() == FREEDRAWING_MODE: |
263 if self.GetDrawingMode() == FREEDRAWING_MODE: |
264 return Viewer.FindElement(self, event, exclude_group) |
264 return Viewer.FindElement(self, event, exclude_group, connectors) |
265 |
265 |
266 dc = self.GetLogicalDC() |
266 dc = self.GetLogicalDC() |
267 pos = event.GetLogicalPosition(dc) |
267 pos = event.GetLogicalPosition(dc) |
268 if self.SelectedElement and not isinstance(self.SelectedElement, (Graphic_Group, Wire)): |
268 if self.SelectedElement and not isinstance(self.SelectedElement, (Graphic_Group, Wire)): |
269 if self.SelectedElement.HitTest(pos) or self.SelectedElement.TestHandle(pos) != (0, 0): |
269 if self.SelectedElement.HitTest(pos, connectors) or self.SelectedElement.TestHandle(pos) != (0, 0): |
270 return self.SelectedElement |
270 return self.SelectedElement |
271 elements = [] |
271 elements = [] |
272 for element in self.GetElements(sort_wires=True): |
272 for element in self.GetElements(sort_wires=True): |
273 if element.HitTest(pos) or element.TestHandle(event) != (0, 0): |
273 if element.HitTest(pos, connectors) or element.TestHandle(event) != (0, 0): |
274 elements.append(element) |
274 elements.append(element) |
275 if len(elements) == 1: |
275 if len(elements) == 1: |
276 return elements[0] |
276 return elements[0] |
277 elif len(elements) > 1: |
277 elif len(elements) > 1: |
278 group = Graphic_Group(self) |
278 group = Graphic_Group(self) |