![]() |
Q2NSViz 0.1.0
Q2NS trace visualizer
|
Custom widget that renders the network topology and quantum state. More...
Public Member Functions | |
| set_snapshot (self, Snapshot snap) | |
| Display the state carried by snap and repaint. | |
| reset (self) | |
| Clear all transient qubit sets and repaint an empty canvas. | |
| mouseMoveEvent (self, event) | |
| Hit-test nodes and in-flight qubits on hover and update the tooltip. | |
| paintEvent (self, event) | |
| Render one frame of the network visualization. | |
| bool | toggle_legend (self) |
| Toggle legend visibility and repaint. | |
| bool | toggle_node_labels (self) |
| Toggle node label visibility and repaint. | |
| apply_theme (self) | |
| Repaint the canvas with the currently active color palette. | |
Static Public Attributes | |
| int | NODE_WIDTH = 120 |
| int | NODE_HEIGHT = 70 |
| int | QUBIT_RADIUS = 8 |
| int | CHANNEL_WIDTH = 6 |
| int | LAYOUT_MARGIN_X = 100 |
| int | LAYOUT_MARGIN_Y = 75 |
| int | LEGEND_RESERVE = 210 |
Custom widget that renders the network topology and quantum state.
sendPacket)sendCbit)traceText overlayA qubit inside an operation window wears a ring whose style names the operation: dashed single for entangle, solid single for measure, solid double for graphMeasure.
The widget owns no state of its own beyond the Snapshot pushed by the QuantumVisualizerWindow controller via set_snapshot() and the qubit sets derived from it. The shared state_manager is read only for the static topology and the raw event list (in-flight animation geometry and traceText overlays). The widget is not thread-safe; call only from the Qt main thread.
| q2nsviz.ui.canvas.NetworkCanvas.apply_theme | ( | self | ) |
Repaint the canvas with the currently active color palette.
Call after toggle_dark() to reflect palette changes.
Definition at line 912 of file canvas.py.
Referenced by q2nsviz.ui.window.QuantumVisualizerWindow.load_file().
| q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent | ( | self, | |
| event | |||
| ) |
Hit-test nodes and in-flight qubits on hover and update the tooltip.
Tests each node bounding box first; on a miss, scans in-flight qubits. Updates the Qt tooltip text so the OS displays it near the cursor.
| event | Qt mouse-move event providing the current cursor position. |
Definition at line 142 of file canvas.py.
References q2nsviz.ui.canvas.NetworkCanvas._node_positions_cache, q2nsviz.ui.canvas.NetworkCanvas._qubit_positions_cache, q2nsviz.ui.canvas.NetworkCanvas._snap, q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), q2nsviz.ui.canvas.NetworkCanvas.NODE_HEIGHT, q2nsviz.ui.canvas.NetworkCanvas.NODE_WIDTH, q2nsviz.ui.canvas.NetworkCanvas.QUBIT_RADIUS, q2nsviz.logic._StateSnapshot.removed_cbits, q2nsviz.logic.Snapshot.removed_cbits, q2nsviz.logic.SimulationStateManager.removed_cbits, q2nsviz.ui.canvas.NetworkCanvas.removed_cbits, q2nsviz.logic._StateSnapshot.removed_qubits, q2nsviz.logic.Snapshot.removed_qubits, q2nsviz.logic.SimulationStateManager.removed_qubits, and q2nsviz.ui.canvas.NetworkCanvas.removed_qubits.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent().
| q2nsviz.ui.canvas.NetworkCanvas.paintEvent | ( | self, | |
| event | |||
| ) |
Render one frame of the network visualization.
Computes node and qubit screen positions once, then executes the layered draw passes listed in the class docstring. Caches qubit positions in _qubit_positions_cache for use by the tooltip hit-test in mouseMoveEvent.
Definition at line 174 of file canvas.py.
References q2nsviz.ui.canvas.NetworkCanvas._calculate_positions(), q2nsviz.ui.canvas.NetworkCanvas._draw_channels(), q2nsviz.ui.canvas.NetworkCanvas._draw_empty_state(), q2nsviz.ui.canvas.NetworkCanvas._draw_entanglement(), q2nsviz.ui.canvas.NetworkCanvas._draw_event_overlay(), q2nsviz.ui.canvas.NetworkCanvas._draw_inflight_cbits(), q2nsviz.ui.canvas.NetworkCanvas._draw_inflight_packets(), q2nsviz.ui.canvas.NetworkCanvas._draw_inflight_qubits(), q2nsviz.ui.canvas.NetworkCanvas._draw_legend(), q2nsviz.ui.canvas.NetworkCanvas._draw_lost_qubits(), q2nsviz.ui.canvas.NetworkCanvas._draw_measured_qubits(), q2nsviz.ui.canvas.NetworkCanvas._draw_nodes(), q2nsviz.ui.canvas.NetworkCanvas._get_qubit_positions(), q2nsviz.ui.canvas.NetworkCanvas._legend_visible, q2nsviz.ui.canvas.NetworkCanvas._node_positions_cache, q2nsviz.ui.canvas.NetworkCanvas._qubit_positions_cache, q2nsviz.ui.canvas.NetworkCanvas._snap, q2nsviz.ui.canvas.NetworkCanvas.CHANNEL_WIDTH, q2nsviz.ui.canvas.NetworkCanvas.LAYOUT_MARGIN_X, q2nsviz.ui.canvas.NetworkCanvas.LAYOUT_MARGIN_Y, q2nsviz.ui.canvas.NetworkCanvas.LEGEND_RESERVE, q2nsviz.logic.Snapshot.lost_qubits, q2nsviz.ui.canvas.NetworkCanvas.lost_qubits, q2nsviz.ui.canvas.NetworkCanvas.NODE_HEIGHT, q2nsviz.ui.canvas.NetworkCanvas.NODE_WIDTH, q2nsviz.ui.canvas.NetworkCanvas.QUBIT_RADIUS, q2nsviz.logic._StateSnapshot.removed_qubits, q2nsviz.logic.Snapshot.removed_qubits, q2nsviz.logic.SimulationStateManager.removed_qubits, q2nsviz.ui.canvas.NetworkCanvas.removed_qubits, q2nsviz.ui.canvas.NetworkCanvas.state_manager, q2nsviz.ui.window.PlaybackController.state_manager, and q2nsviz.ui.window.QuantumVisualizerWindow.state_manager.
| q2nsviz.ui.canvas.NetworkCanvas.reset | ( | self | ) |
Clear all transient qubit sets and repaint an empty canvas.
Called when the user loads a new file or the application starts.
Definition at line 120 of file canvas.py.
References q2nsviz.ui.canvas.NetworkCanvas._node_positions_cache, q2nsviz.ui.canvas.NetworkCanvas._qubit_positions_cache, q2nsviz.ui.canvas.NetworkCanvas._snap, q2nsviz.ui.canvas.NetworkCanvas.current_time, q2nsviz.ui.canvas.NetworkCanvas.entangled_qubits, q2nsviz.logic._StateSnapshot.gate_qubits, q2nsviz.logic.Snapshot.gate_qubits, q2nsviz.ui.canvas.NetworkCanvas.gate_qubits, q2nsviz.logic._StateSnapshot.graph_measuring_qubits, q2nsviz.logic.Snapshot.graph_measuring_qubits, q2nsviz.ui.canvas.NetworkCanvas.graph_measuring_qubits, q2nsviz.logic._StateSnapshot.inflight_cbits, q2nsviz.logic.Snapshot.inflight_cbits, q2nsviz.ui.canvas.NetworkCanvas.inflight_cbits, q2nsviz.logic._StateSnapshot.inflight_qubits, q2nsviz.logic.Snapshot.inflight_qubits, q2nsviz.ui.canvas.NetworkCanvas.inflight_qubits, q2nsviz.logic.Snapshot.lost_qubits, q2nsviz.ui.canvas.NetworkCanvas.lost_qubits, q2nsviz.logic._StateSnapshot.measuring_qubits, q2nsviz.logic.Snapshot.measuring_qubits, q2nsviz.ui.canvas.NetworkCanvas.measuring_qubits, q2nsviz.logic._StateSnapshot.removed_cbits, q2nsviz.logic.Snapshot.removed_cbits, q2nsviz.logic.SimulationStateManager.removed_cbits, q2nsviz.ui.canvas.NetworkCanvas.removed_cbits, q2nsviz.logic._StateSnapshot.removed_qubits, q2nsviz.logic.Snapshot.removed_qubits, q2nsviz.logic.SimulationStateManager.removed_qubits, and q2nsviz.ui.canvas.NetworkCanvas.removed_qubits.
Referenced by q2nsviz.logic.SimulationStateManager.load_events().
| q2nsviz.ui.canvas.NetworkCanvas.set_snapshot | ( | self, | |
| Snapshot | snap | ||
| ) |
Display the state carried by snap and repaint.
Called by the QuantumVisualizerWindow controller, which performs the per-frame snapshot_at() query and pushes the resulting Snapshot here. Unpacks the inflight, removed, and in-progress-operation qubit sets, then triggers a full repaint. Must be called from the Qt main thread.
| snap | Snapshot of the network state to render. |
Definition at line 96 of file canvas.py.
References q2nsviz.ui.canvas.NetworkCanvas._snap, and q2nsviz.ui.canvas.NetworkCanvas.current_time.
| bool q2nsviz.ui.canvas.NetworkCanvas.toggle_legend | ( | self | ) |
Toggle legend visibility and repaint.
Returns the new visible state.
Definition at line 682 of file canvas.py.
References q2nsviz.ui.canvas.NetworkCanvas._legend_visible.
| bool q2nsviz.ui.canvas.NetworkCanvas.toggle_node_labels | ( | self | ) |
Toggle node label visibility and repaint.
Returns the new visible state.
Definition at line 688 of file canvas.py.
References q2nsviz.ui.canvas.NetworkCanvas._show_node_labels.
|
static |
Definition at line 66 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
| q2nsviz.ui.canvas.NetworkCanvas.CHANNEL_WIDTH |
Definition at line 711 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
| q2nsviz.ui.canvas.NetworkCanvas.current_time |
Definition at line 75 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset(), and q2nsviz.ui.canvas.NetworkCanvas.set_snapshot().
| q2nsviz.ui.canvas.NetworkCanvas.entangled_qubits |
Definition at line 117 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().
| q2nsviz.ui.canvas.NetworkCanvas.gate_qubits |
Definition at line 111 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().
| q2nsviz.ui.canvas.NetworkCanvas.graph_measuring_qubits |
Definition at line 113 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().
| q2nsviz.ui.canvas.NetworkCanvas.inflight_cbits |
Definition at line 114 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().
| q2nsviz.ui.canvas.NetworkCanvas.inflight_qubits |
Definition at line 109 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().
|
static |
Definition at line 67 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
|
static |
Definition at line 68 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
|
static |
Definition at line 69 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
| q2nsviz.ui.canvas.NetworkCanvas.lost_qubits |
Definition at line 116 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent(), and q2nsviz.ui.canvas.NetworkCanvas.reset().
| q2nsviz.ui.canvas.NetworkCanvas.measuring_qubits |
Definition at line 112 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().
|
static |
Definition at line 64 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), and q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
|
static |
Definition at line 63 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), and q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
| q2nsviz.ui.canvas.NetworkCanvas.NODE_WIDTH |
Definition at line 437 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), and q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
|
static |
Definition at line 65 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), and q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
| q2nsviz.ui.canvas.NetworkCanvas.QUBIT_RADIUS |
Definition at line 525 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), and q2nsviz.ui.canvas.NetworkCanvas.paintEvent().
| q2nsviz.ui.canvas.NetworkCanvas.removed_cbits |
Definition at line 115 of file canvas.py.
Referenced by q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), q2nsviz.ui.canvas.NetworkCanvas.reset(), and q2nsviz.logic.SimulationStateManager.snapshot_at().
| q2nsviz.ui.canvas.NetworkCanvas.removed_qubits |
Definition at line 110 of file canvas.py.
Referenced by q2nsviz.logic.SimulationStateManager.get_entangled_states(), q2nsviz.logic.SimulationStateManager.get_entanglement_groups(), q2nsviz.ui.canvas.NetworkCanvas.mouseMoveEvent(), q2nsviz.ui.canvas.NetworkCanvas.paintEvent(), q2nsviz.ui.canvas.NetworkCanvas.reset(), and q2nsviz.logic.SimulationStateManager.snapshot_at().
| q2nsviz.ui.canvas.NetworkCanvas.state_manager |
Definition at line 73 of file canvas.py.
Referenced by q2nsviz.ui.window.PlaybackController.jump_to_end(), q2nsviz.ui.window.PlaybackController.jump_to_start(), q2nsviz.ui.window.QuantumVisualizerWindow.load_file(), q2nsviz.ui.canvas.NetworkCanvas.paintEvent(), q2nsviz.ui.window.PlaybackController.step_backward(), and q2nsviz.ui.window.PlaybackController.step_forward().