| 292 | self._ok_btn.setEnabled(False) |
| 293 | |
| 294 | def _show_svg(self, svg_bytes: bytes) -> None: |
| 295 | from PySide6.QtSvg import QSvgRenderer |
| 296 | from PySide6.QtCore import QByteArray |
| 297 | renderer = QSvgRenderer(QByteArray(svg_bytes)) |
| 298 | if not renderer.isValid(): |
| 299 | self._preview_lbl.setText("(invalid SVG)") |
| 300 | return |
| 301 | vb = renderer.viewBoxF() |
| 302 | sw = vb.width() if vb.width() > 0 else renderer.defaultSize().width() |
| 303 | sh = vb.height() if vb.height() > 0 else renderer.defaultSize().height() |
| 304 | if sw <= 0 or sh <= 0: |
| 305 | self._preview_lbl.setText("(empty SVG)") |
| 306 | return |
| 307 | scale = min(self._PREVIEW_MAX_W / sw, self._PREVIEW_MAX_H / sh, 3.0) |
| 308 | pw, ph = max(1, int(sw * scale)), max(1, int(sh * scale)) |
| 309 | px = QPixmap(pw, ph) |
| 310 | px.fill(Qt.white) |
| 311 | p = QPainter(px) |
| 312 | renderer.render(p) |
| 313 | p.end() |
| 314 | self._preview_lbl.setPixmap(px) |
| 315 | |
| 316 | def _compute_natural_size(self, svg_bytes: bytes) -> None: |
| 317 | from PySide6.QtSvg import QSvgRenderer |