| 1268 | """Source × Target mapper for image / video processing.""" |
| 1269 | |
| 1270 | def __init__(self, start_cb: Callable, mapping: list): |
| 1271 | super().__init__(_MAIN) |
| 1272 | self._start_cb = start_cb |
| 1273 | self._map = mapping |
| 1274 | self.setWindowTitle(_("Source x Target Mapper")) |
| 1275 | self.resize(POPUP_WIDTH, POPUP_HEIGHT) |
| 1276 | layout = QVBoxLayout(self) |
| 1277 | |
| 1278 | self._scroll = QScrollArea() |
| 1279 | self._scroll.setWidgetResizable(True) |
| 1280 | layout.addWidget(self._scroll, 1) |
| 1281 | |
| 1282 | self._status = QLabel("") |
| 1283 | self._status.setAlignment(Qt.AlignmentFlag.AlignCenter) |
| 1284 | layout.addWidget(self._status) |
| 1285 | |
| 1286 | btn_submit = QPushButton(_("Submit")) |
| 1287 | btn_submit.clicked.connect(self._on_submit) |
| 1288 | layout.addWidget(btn_submit, alignment=Qt.AlignmentFlag.AlignCenter) |
| 1289 | |
| 1290 | self._rebuild() |
| 1291 | |
| 1292 | def set_status(self, text: str) -> None: |
| 1293 | self._status.setText(_(text)) |