diff --git a/60 ScansProcessing/extract_patient_info.py b/60 ScansProcessing/extract_patient_info.py index 8b44926..b14dd72 100644 --- a/60 ScansProcessing/extract_patient_info.py +++ b/60 ScansProcessing/extract_patient_info.py @@ -408,8 +408,43 @@ def interactive_rename(pdf_path: Path, info: dict, verif: dict) -> bool: print(f" Navržený název: {nazev}") print(" Otevírám dialog...") + # Otevři PDF v prohlížeči (konkrétní proces, abychom zavřeli jen toto okno) + viewer_proc = None + try: + import subprocess + import winreg + import shlex + + def _get_pdf_exe() -> list[str] | None: + try: + with winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, r".pdf") as k: + prog_id = winreg.QueryValue(k, "") + with winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, rf"{prog_id}\shell\open\command") as k: + cmd = winreg.QueryValue(k, "") + parts = shlex.split(cmd.replace("\\", "/")) + exe = parts[0].replace("/", "\\") + return [exe, str(pdf_path)] + except Exception: + return None + + cmd = _get_pdf_exe() + if cmd: + viewer_proc = subprocess.Popen(cmd) + else: + subprocess.Popen(["start", "", str(pdf_path)], shell=True) + except Exception as e: + print(f" [Prohlížeč] Nepodařilo se otevřít: {e}") + odpoved = _rename_dialog(nazev or "", info_lines) + # Zavři jen tento konkrétní proces prohlížeče a počkej na uvolnění zámku + if viewer_proc is not None: + try: + viewer_proc.terminate() + viewer_proc.wait(timeout=10) + except Exception: + pass + if odpoved is None: print(" Přeskočeno.") return False