MCPcopy Index your code
hub / github.com/SLiCAP/SLiCAP_python / mouseReleaseEvent

Method mouseReleaseEvent

SLiCAP/schematic/canvas.py:2286–2434  ·  view source on GitHub ↗
(self, event)

Source from the content-addressed store, hash-verified

2284 w.setSelected(True)
2285
2286 def mouseReleaseEvent(self, event):
2287 if event.button() == Qt.LeftButton:
2288 if self._wire_move_start is not None:
2289 # Remove bridge-wire previews before any geometry operations.
2290 for pw in self._wire_pin_preview_wires:
2291 if pw.scene() is not None:
2292 self.removeItem(pw)
2293 self._wire_pin_preview_wires = []
2294 # Restore Z-values that were raised at drag-start.
2295 for wire in self._wire_move_wires:
2296 if wire.scene() is not None:
2297 wire.setZValue(Z_WIRE)
2298 if self._wire_move_moved:
2299 self._push_snapshot(self._pre_drag_data)
2300 self._reconnect_after_move()
2301 # Footprint of the moved wire(s) at their new position.
2302 moved_segs = [
2303 (QPointF(w.points[i]), QPointF(w.points[i + 1]))
2304 for w in self._wire_move_wires
2305 for i in range(len(w.points) - 1)
2306 ]
2307 # Rule 1: bridge any moved-wire endpoint back to the component
2308 # pin it left, so moving a wire never silently disconnects it.
2309 for comp, local, wire, idx in self._wire_pin_anchors:
2310 if wire.scene() is None or comp.scene() is None:
2311 continue
2312 new_pt = wire.points[idx]
2313 cur_pin = comp.mapToScene(QPointF(*local))
2314 if _pt_key(new_pt) != _pt_key(cur_pin):
2315 self.addItem(WireItem(_elbow(QPointF(cur_pin),
2316 QPointF(new_pt), True)))
2317 self._sync_junctions()
2318 self._remove_short_circuit_wires()
2319 self._sync_junctions()
2320 self._reselect_on_footprint(moved_segs)
2321 self.update()
2322 self._pre_drag_data = None
2323 self._wire_move_start = None
2324 self._wire_move_wires = []
2325 self._wire_move_origins = []
2326 self._wire_move_others = []
2327 self._wire_move_moved = False
2328 self._wire_move_rb = []
2329 self._wire_move_junctions = []
2330 self._wire_pin_anchors = []
2331 self._wire_pin_preview_wires = []
2332 return
2333 if self._vdrag_wire is not None:
2334 # Remove pin preview regardless of movement.
2335 if self._vdrag_pin_preview is not None:
2336 if self._vdrag_pin_preview.scene() is not None:
2337 self.removeItem(self._vdrag_pin_preview)
2338 self._vdrag_pin_preview = None
2339 if self._vdrag_moved:
2340 self._push_snapshot(self._pre_drag_data)
2341 # Bridge wire: if the dragged vertex left its component pin,
2342 # add a wire from the pin to the new vertex position.
2343 if self._vdrag_pin_anchor is not None:

Callers

nothing calls this directly

Calls 9

_push_snapshotMethod · 0.95
_reconnect_after_moveMethod · 0.95
_sync_junctionsMethod · 0.95
WireItemClass · 0.85
_elbowFunction · 0.85
_pt_keyFunction · 0.70
mouseReleaseEventMethod · 0.45

Tested by

no test coverage detected