pySimBlocks.gui.graphics.group_item

class pySimBlocks.gui.graphics.group_item.GroupBoundaryPortItem(boundary: BoundaryPort, parent_group: GroupItem)[source]

Bases: QGraphicsItem

Visual port on a group rectangle border.

R = 6
L = 15
H = 10
MARGIN = 4
property is_input: bool
property is_on_left_side: bool
connection_anchor() QPointF[source]
update_port_label() None[source]

Refresh the external port label shown next to the boundary port.

boundingRect(self, /) PySide6.QtCore.QRectF[source]
itemChange(self, change: PySide6.QtWidgets.QGraphicsItem.GraphicsItemChange, value: Any, /) Any[source]
mousePressEvent(self, event: PySide6.QtWidgets.QGraphicsSceneMouseEvent, /) None[source]
shape(self, /) PySide6.QtGui.QPainterPath[source]
paint(self, painter: PySide6.QtGui.QPainter, option: PySide6.QtWidgets.QStyleOptionGraphicsItem, /, widget: PySide6.QtWidgets.QWidget | None = None) None[source]
class pySimBlocks.gui.graphics.group_item.GroupItem(group: VisualGroup, view: DiagramView)[source]

Bases: QGraphicsRectItem

Render a visual group container on the diagram.

MIN_WIDTH = 80.0
MIN_HEIGHT = 50.0
GRID_DX = 5
GRID_DY = 5
SELECTION_HANDLE_SIZE = 8
SELECTION_HANDLE_HIT_SIZE = 16
boundary_port_items: dict[str, GroupBoundaryPortItem]
boundary_anchor_for(boundary: BoundaryPort) QPointF[source]

Return the scene anchor for a boundary port on this group.

sync_boundary_ports() None[source]

Rebuild boundary port items from group metadata.

set_orientation(orientation: str) None[source]
refresh_boundary_port_labels() None[source]

Update external port labels after diagram connections change.

get_boundary_anchor(boundary_uid: str) QPointF | None[source]
find_boundary_for_member_port(block_uid: str, port_name: str) str | None[source]
paint(self, painter: PySide6.QtGui.QPainter, option: PySide6.QtWidgets.QStyleOptionGraphicsItem, /, widget: PySide6.QtWidgets.QWidget | None = None) None[source]
mousePressEvent(self, event: PySide6.QtWidgets.QGraphicsSceneMouseEvent, /) None[source]
mouseMoveEvent(self, event: PySide6.QtWidgets.QGraphicsSceneMouseEvent, /) None[source]
mouseReleaseEvent(self, event: PySide6.QtWidgets.QGraphicsSceneMouseEvent, /) None[source]
itemChange(self, change: PySide6.QtWidgets.QGraphicsItem.GraphicsItemChange, value: Any, /) Any[source]
apply_geometry(pos: QPointF, rect: QRectF) None[source]

Apply position and size without triggering layout side effects.

mouseDoubleClickEvent(self, event: PySide6.QtWidgets.QGraphicsSceneMouseEvent, /) None[source]