From 2e3ba66b5a54dca6c7a1cbc6dea78192905aa2b7 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Fri, 20 Mar 2026 02:32:23 +0000 Subject: [PATCH] Nvda now longer inherits from CBindings add wrapper methods in CBindings --- src/nvda_voicemeeter/nvda.py | 38 ++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/nvda_voicemeeter/nvda.py b/src/nvda_voicemeeter/nvda.py index f979e59..176a845 100644 --- a/src/nvda_voicemeeter/nvda.py +++ b/src/nvda_voicemeeter/nvda.py @@ -15,26 +15,38 @@ class CBindings: bind_cancel_speech = libc.nvdaController_cancelSpeech bind_braille_message = libc.nvdaController_brailleMessage - def call(self, fn, *args, ok=(0,)): + def _call(self, fn, *args, ok=(0,)) -> int: retval = fn(*args) if retval not in ok: raise NVDAVMCAPIError(fn.__name__, retval) return retval + def test_if_running(self) -> int: + return self._call(self.bind_test_if_running, ok=(ServerState.RUNNING, ServerState.UNAVAILABLE)) + + def speak_text(self, text: str) -> None: + self._call(self.bind_speak_text, text) + + def cancel_speech(self) -> None: + self._call(self.bind_cancel_speech) + + def braille_message(self, text: str) -> None: + self._call(self.bind_braille_message, text) + + +class Nvda: + def __init__(self): + self._bindings = CBindings() -class Nvda(CBindings): @property - def is_running(self): - return ( - self.call(self.bind_test_if_running, ok=(ServerState.RUNNING, ServerState.UNAVAILABLE)) - == ServerState.RUNNING - ) + def is_running(self) -> bool: + return self._bindings.test_if_running() == ServerState.RUNNING - def speak(self, text): - self.call(self.bind_speak_text, text) + def speak(self, text: str) -> None: + self._bindings.speak_text(text) - def cancel_speech(self): - self.call(self.bind_cancel_speech) + def cancel_speech(self) -> None: + self._bindings.cancel_speech() - def braille_message(self, text): - self.call(self.bind_braille_message, text) + def braille_message(self, text: str) -> None: + self._bindings.braille_message(text)