(self)
| 881 | print_scene(fresh, self) |
| 882 | |
| 883 | def _on_export_netlist(self): |
| 884 | path, _ = QFileDialog.getSaveFileName( |
| 885 | self, "Export Netlist", self._default_export_path("cir", ".cir"), _NET_FILTER |
| 886 | ) |
| 887 | if not path: |
| 888 | return |
| 889 | p = Path(path) |
| 890 | if p.suffix.lower() != ".cir": |
| 891 | p = p.with_suffix(".cir") |
| 892 | from .component_item import ComponentItem |
| 893 | from .wire_item import WireItem |
| 894 | from .command_item import CommandItem |
| 895 | from .analysis_item import AnalysisItem |
| 896 | from .library_item import LibraryItem |
| 897 | from .parameter_item import ParameterItem |
| 898 | from .model_item import ModelItem |
| 899 | from .netlist import build_netlist, NetlistError |
| 900 | items = self._scene.items() |
| 901 | comps = [i for i in items if isinstance(i, ComponentItem)] |
| 902 | wires = [i for i in items if isinstance(i, WireItem)] |
| 903 | cmds = [i for i in items if isinstance(i, (CommandItem, AnalysisItem))] |
| 904 | libs = [i for i in items if isinstance(i, LibraryItem)] |
| 905 | prms = [i for i in items if isinstance(i, ParameterItem)] |
| 906 | models = [i for i in items if isinstance(i, ModelItem)] |
| 907 | title = self._doc_props.title or (self._current_path.stem if self._current_path else "schematic") |
| 908 | try: |
| 909 | text = build_netlist(comps, wires, cmds, title, libs=libs, params=prms, |
| 910 | model_defs=models) |
| 911 | except NetlistError as exc: |
| 912 | QMessageBox.critical( |
| 913 | self, "Netlist not generated", |
| 914 | "Unresolved “?” placeholders remain, so no netlist was written:\n\n" |
| 915 | + "\n".join(exc.errors), |
| 916 | ) |
| 917 | return |
| 918 | try: |
| 919 | p.write_text(text, encoding="utf-8") |
| 920 | except Exception as exc: |
| 921 | QMessageBox.critical(self, "Export failed", str(exc)) |
| 922 | |
| 923 | # ── close / quit ───────────────────────────────────────────────────────── |
| 924 |
nothing calls this directly
no test coverage detected