Skip to content

v0.0.10 — 전면 dialog suppress + suppress_errors() + RegisterModule

Choose a tag to compare

@JunDamin JunDamin released this 15 Apr 08:37
· 73 commits to main since this release

🤫 v0.0.10 — Dialog 전면 suppression

사용자 요청: "확인하는 메시지를 정지시키는 그런 기능을 추가할 수 있을까? 에러메시지 미표시던가?"

이전 `silenced()` 는 단일 dialog 카테고리만 처리. 이제 HWP 의 6개 dialog 카테고리 전부를 한 번에 suppress 가능.

향상된 `silenced()`

```python

String preset (권장)

with app.silenced(): # = "yes"
with app.silenced("yes"): # 모든 dialog → 첫 버튼 (OK/Yes/Abort/...)
with app.silenced("no"): # 모든 dialog → 둘째 버튼 (No/Cancel/...)
with app.silenced("reset"): # 자동 응답 해제

직접 bitfield

with app.silenced(0x020001): # 예/아니오→NO + 확인→OK
```

새 클래스 상수:

상수 동작
`App.SILENCE_ALL_YES` `0x111111` 모든 dialog 첫 버튼
`App.SILENCE_ALL_NO` `0x222222` 모든 dialog 둘째 버튼
`App.SILENCE_RESET` `0xFFFFFF` 자동 응답 해제
`App.SILENCE_SAVE_NO` `0x00020000` 저장 dialog → NO
`App.SILENCE_OK_AUTO` `0x00000001` 확인 dialog → OK

🆕 `suppress_errors()` — Python 예외 + dialog 동시

대량 처리에서 일부 파일 실패해도 루프 계속:

```python
for path in many_paths:
with app.suppress_errors():
app.open(path) # 깨진 파일이어도 silently 무시
app.save(path + ".out")
```

블록 내부 Python Exception 은 `logger.warning` 으로 기록만 하고 진행. dialog 도 자동 abort.

🆕 `register_security_module()` — hwp-mcp 식 명시 helper

App.init 에서 자동 호출되긴 하지만 명시적 (재)등록 가능:

```python
app.register_security_module() # 기본 DLL
app.register_security_module( # 커스텀
module_name="MyChecker",
dll_path=r"C:\my\custom.dll",
)
```

📊 6개 Dialog 카테고리 비트 레이아웃

Bits Dialog Type 첫/둘째/셋째 버튼
0xF 확인 1=OK
0xF0 확인/취소 1=OK, 2=Cancel
0xF00 종료/재시도/무시 1=Abort, 2=Retry, 4=Ignore
0xF000 예/아니오/취소 1=Yes, 2=No, 4=Cancel
0xF0000 예/아니오 1=Yes, 2=No
0xF00000 재시도/취소 1=Retry, 2=Cancel

호환성

100% backward compatible. 1,059 unit tests 통과.

Full changelog: v0.0.9...v0.0.10