Q2NSViz 0.1.0
Q2NS trace visualizer
Loading...
Searching...
No Matches
q2nsviz.ui.canvas.NetworkCanvas Class Reference

Custom widget that renders the network topology and quantum state. More...

Inheritance diagram for q2nsviz.ui.canvas.NetworkCanvas:
[legend]
Collaboration diagram for q2nsviz.ui.canvas.NetworkCanvas:
[legend]

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.
 

Public Attributes

 state_manager
 
 current_time
 
 inflight_qubits
 
 removed_qubits
 
 gate_qubits
 
 measuring_qubits
 
 graph_measuring_qubits
 
 inflight_cbits
 
 removed_cbits
 
 lost_qubits
 
 entangled_qubits
 
 NODE_WIDTH
 
 QUBIT_RADIUS
 
 CHANNEL_WIDTH
 

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
 

Detailed Description

Custom widget that renders the network topology and quantum state.

Paint order (back to front)

  1. Background fill
  2. Channel lines
  3. Node boxes (each with its resident qubits and classical bits)
  4. Lost-qubit crosses
  5. Measured-qubit markers
  6. In-flight qubits (colored circles on the channel lane)
  7. In-flight classical packets (sendPacket)
  8. In-flight classical bits (sendCbit)
  9. Entanglement links (colored lines between qubit circles)
  10. Legend overlay (optional)
  11. Current-time traceText overlay

A 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.

Definition at line 32 of file canvas.py.

Member Function Documentation

◆ apply_theme()

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().

Here is the caller graph for this function:

◆ mouseMoveEvent()

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.

Parameters
eventQt 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ paintEvent()

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.

Here is the call graph for this function:

◆ reset()

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().

Here is the caller graph for this function:

◆ set_snapshot()

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.

Parameters
snapSnapshot 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.

◆ toggle_legend()

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.

◆ toggle_node_labels()

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.

Member Data Documentation

◆ CHANNEL_WIDTH [1/2]

int q2nsviz.ui.canvas.NetworkCanvas.CHANNEL_WIDTH = 6
static

Definition at line 66 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().

◆ CHANNEL_WIDTH [2/2]

q2nsviz.ui.canvas.NetworkCanvas.CHANNEL_WIDTH

Definition at line 711 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().

◆ current_time

q2nsviz.ui.canvas.NetworkCanvas.current_time

◆ entangled_qubits

q2nsviz.ui.canvas.NetworkCanvas.entangled_qubits

Definition at line 117 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().

◆ gate_qubits

q2nsviz.ui.canvas.NetworkCanvas.gate_qubits

Definition at line 111 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().

◆ graph_measuring_qubits

q2nsviz.ui.canvas.NetworkCanvas.graph_measuring_qubits

Definition at line 113 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().

◆ inflight_cbits

q2nsviz.ui.canvas.NetworkCanvas.inflight_cbits

Definition at line 114 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().

◆ inflight_qubits

q2nsviz.ui.canvas.NetworkCanvas.inflight_qubits

Definition at line 109 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().

◆ LAYOUT_MARGIN_X

int q2nsviz.ui.canvas.NetworkCanvas.LAYOUT_MARGIN_X = 100
static

Definition at line 67 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().

◆ LAYOUT_MARGIN_Y

int q2nsviz.ui.canvas.NetworkCanvas.LAYOUT_MARGIN_Y = 75
static

Definition at line 68 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().

◆ LEGEND_RESERVE

int q2nsviz.ui.canvas.NetworkCanvas.LEGEND_RESERVE = 210
static

Definition at line 69 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.paintEvent().

◆ lost_qubits

q2nsviz.ui.canvas.NetworkCanvas.lost_qubits

◆ measuring_qubits

q2nsviz.ui.canvas.NetworkCanvas.measuring_qubits

Definition at line 112 of file canvas.py.

Referenced by q2nsviz.ui.canvas.NetworkCanvas.reset().

◆ NODE_HEIGHT

int q2nsviz.ui.canvas.NetworkCanvas.NODE_HEIGHT = 70
static

◆ NODE_WIDTH [1/2]

int q2nsviz.ui.canvas.NetworkCanvas.NODE_WIDTH = 120
static

◆ NODE_WIDTH [2/2]

q2nsviz.ui.canvas.NetworkCanvas.NODE_WIDTH

◆ QUBIT_RADIUS [1/2]

int q2nsviz.ui.canvas.NetworkCanvas.QUBIT_RADIUS = 8
static

◆ QUBIT_RADIUS [2/2]

q2nsviz.ui.canvas.NetworkCanvas.QUBIT_RADIUS

◆ removed_cbits

q2nsviz.ui.canvas.NetworkCanvas.removed_cbits

◆ removed_qubits

◆ state_manager


The documentation for this class was generated from the following file: