← Commit history

v0.9.63: warm BOTH eeschema and pcbnew — Symbol Editor lives in eeschema, Footprint Editor in pcbnew

John Lauer ·8c308f31e7 ·3mo ago ·parent 40bc970
3 files changed +17−7
adom-bridge-kicad-manifest.json+2−2
@@ -3,8 +3,8 @@   "name": "kicad",   "version": "0.9.63",   "url": "https://wiki.adom.inc/download/adom/adom-desktop-kicad-bridge/0.9.63/adom-bridge-kicad-v0.9.63.zip",-  "sha256": "5373614086b6cb5f3143cba5f03b46c0a027bb64799c847c8c78f48500fe212d",-  "size": 352272,+  "sha256": "dc2c2a2fe92105b553c27e77ee33ed1079bc71d9f5ea52d8d1d85541c32b20a7",+  "size": 352487,   "verbPrefixes": [     "kicad_"   ],
adom-bridge-kicad-v0.9.63.zip
⋯ 1 unchanged line ⋯
handlers/demo.py+15−5
@@ -278,10 +278,18 @@ def _warm_kicad(kicad_info: dict, prep: dict) -> dict:     Windows still open in the background; this only costs a few seconds.     """     import time-    r = handle_open_schematic(kicad_info, {"filePath": prep["schematic"]})-    if r.get("success"):-        time.sleep(8)  # let eeschema finish loading its libraries-    return {"warmed": bool(r.get("success")), "raw": r}+    # Symbol Editor is hosted inside EESCHEMA and Footprint Editor inside PCBNEW.+    # Warming only one leaves the other's editor with no host app, which fails as+    # "Could not open the Footprint Editor via the background (plugin) path".+    # So open BOTH documents up front; every later beat then takes the fast+    # in-process plugin pathway.+    sch = handle_open_schematic(kicad_info, {"filePath": prep["schematic"]})+    time.sleep(6)+    brd = handle_open_board(kicad_info, {"filePath": prep["board"]})+    time.sleep(8)   # pcbnew is the slower of the two to paint+    return {"warmed": bool(sch.get("success") and brd.get("success")),+            "eeschema": bool(sch.get("success")), "pcbnew": bool(brd.get("success")),+            "raw": {"schematic": sch, "board": brd}}   def _run_step(kicad_info: dict, step: str, prep: dict) -> dict:@@ -308,6 +316,7 @@ def _run_step(kicad_info: dict, step: str, prep: dict) -> dict:                              "the courtyard rectangle (keep-out for the assembler)"],                 "raw": r}     if step == "footprint3d":+        import time; time.sleep(2)         r = handle_open_3d_viewer(kicad_info, {"editor": "footprint"})         return {"ok": bool(r.get("success")), "window": "3D Viewer",                 "title": "3/6 · That part in 3D",@@ -337,6 +346,7 @@ def _run_step(kicad_info: dict, step: str, prep: dict) -> dict:                              "'Pads 12' in the status bar — proof the footprints loaded"],                 "raw": r}     if step == "board3d":+        import time; time.sleep(2)         r = handle_open_3d_viewer(kicad_info, {"editor": "pcb"})         return {"ok": bool(r.get("success")), "window": "3D Viewer",                 "title": "6/6 · The whole board in 3D",@@ -438,7 +448,7 @@ def handle_demo(kicad_info: dict, args: dict) -> dict:             "models3d": prep.get("models3d"),             "warnings": prep.get("warnings"),             "installedKiCadJustNow": installed_now,-            "warmedUp": (prep.get("warm") or {}).get("warmed"),+            "warmedUp": {k: (prep.get("warm") or {}).get(k) for k in ("warmed", "eeschema", "pcbnew")},             "nextCall": (f'kicad_demo {{"step": "{nxt}"}}' if nxt else None),             "remainingSteps": STEPS[STEPS.index(last) + 1:] if last in STEPS else [],             "screenshotVerb": "kicad_screenshot_all",