From 7038c187d00673a72c033d73b90cd65488eaba32 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 22 Nov 2020 16:01:06 +0530 Subject: [PATCH] Wrap pause/resume/stop cocoa apis --- src/calibre/gui2/tts/nsss.m | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/calibre/gui2/tts/nsss.m b/src/calibre/gui2/tts/nsss.m index 324001bd56..aa99e24590 100644 --- a/src/calibre/gui2/tts/nsss.m +++ b/src/calibre/gui2/tts/nsss.m @@ -227,11 +227,34 @@ NSSS_status(NSSS *self, PyObject *args) { return ans; } +static PyObject* +NSSS_pause(NSSS *self, PyObject *args) { + unsigned int boundary = NSSpeechWordBoundary; + if (!PyArg_ParseTuple(args, "|I", &boundary)) return NULL; + [self->nsss pauseSpeakingAtBoundary:boundary]; + Py_RETURN_NONE; +} + +static PyObject* +NSSS_resume(NSSS *self, PyObject *args) { + [self->nsss continueSpeaking]; + Py_RETURN_NONE; +} + +static PyObject* +NSSS_stop(NSSS *self, PyObject *args) { + [self->nsss stopSpeaking]; + Py_RETURN_NONE; +} + + // Boilerplate {{{ #define M(name, args) { #name, (PyCFunction)NSSS_##name, args, ""} static PyMethodDef NSSS_methods[] = { M(get_all_voices, METH_NOARGS), M(status, METH_NOARGS), + M(resume, METH_NOARGS), + M(stop, METH_NOARGS), M(speak, METH_VARARGS), M(start_saving_to_path, METH_VARARGS), M(speaking, METH_NOARGS), @@ -244,6 +267,7 @@ static PyMethodDef NSSS_methods[] = { M(get_current_rate, METH_NOARGS), M(set_current_rate, METH_VARARGS), M(set_command_delimiters, METH_VARARGS), + M(pause, METH_VARARGS), {NULL, NULL, 0, NULL} }; #undef M @@ -267,6 +291,9 @@ nsss_init_module(PyObject *module) { } PyModule_AddIntMacro(module, MARK); PyModule_AddIntMacro(module, END); + PyModule_AddIntMacro(module, NSSpeechImmediateBoundary); + PyModule_AddIntMacro(module, NSSpeechWordBoundary); + PyModule_AddIntMacro(module, NSSpeechSentenceBoundary); return 0; }