MCPcopy Create free account
hub / github.com/SLiCAP/SLiCAP_python / CreateSubcircuitDialog

Class CreateSubcircuitDialog

SLiCAP/schematic/create_subcircuit_dialog.py:17–133  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15
16
17class CreateSubcircuitDialog(QDialog):
18 def __init__(self, name: str, ports: list[str],
19 params: list | None = None, parent=None):
20 super().__init__(parent, Qt.Window)
21 self.setWindowTitle("Create Subcircuit")
22 self.setMinimumWidth(420)
23
24 outer = QVBoxLayout(self)
25
26 # ── name ───────────────────────────────────────────────────────────────
27 head = QGridLayout()
28 head.addWidget(QLabel("<b>Subcircuit name:</b>"), 0, 0)
29 head.addWidget(QLabel(name or "(set a title in Document Properties)"), 0, 1)
30 outer.addLayout(head)
31
32 # ── ports (reorderable node list) ──────────────────────────────────────
33 outer.addWidget(QLabel("Nodes (top → bottom = left → right node order):"))
34 port_row = QHBoxLayout()
35 self._ports = QListWidget()
36 for p in ports:
37 self._ports.addItem(p)
38 if self._ports.count():
39 self._ports.setCurrentRow(0)
40 port_row.addWidget(self._ports)
41
42 btn_col = QVBoxLayout()
43 up = QPushButton("Up")
44 dn = QPushButton("Down")
45 up.clicked.connect(lambda: self._move(-1))
46 dn.clicked.connect(lambda: self._move(+1))
47 btn_col.addWidget(up)
48 btn_col.addWidget(dn)
49 btn_col.addStretch(1)
50 port_row.addLayout(btn_col)
51 outer.addLayout(port_row)
52
53 if not ports:
54 warn = QLabel("No ports found — add 'port' symbols and name them.")
55 warn.setStyleSheet("color: #b00;")
56 outer.addWidget(warn)
57
58 # ── parameters ─────────────────────────────────────────────────────────
59 outer.addWidget(QLabel("Parameters (overridable defaults):"))
60 self._params = QTableWidget(0, 2)
61 self._params.setHorizontalHeaderLabels(["Name", "Default"])
62 self._params.horizontalHeader().setStretchLastSection(True)
63 for pair in (params or []):
64 self._add_param_row(*(list(pair) + ["", ""])[:2])
65 outer.addWidget(self._params)
66
67 param_btns = QHBoxLayout()
68 add_btn = QPushButton("Add parameter")
69 del_btn = QPushButton("Remove")
70 add_btn.clicked.connect(lambda: self._add_param_row("", ""))
71 del_btn.clicked.connect(self._remove_param_row)
72 param_btns.addWidget(add_btn)
73 param_btns.addWidget(del_btn)
74 param_btns.addStretch(1)

Callers 1

_save_subcircuitMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected