1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-17 09:07:41 +02:00

Register translation functions for Nyquist effects into XLisp runtime

This commit is contained in:
Paul Licameli 2018-02-27 13:52:05 -05:00
parent 6ea647cc1d
commit 0879949904

View File

@ -554,8 +554,12 @@ bool NyquistEffect::CheckWhetherSkipEffect()
return (mIsPrompt && mControls.size() > 0);
}
static void RegisterFunctions();
bool NyquistEffect::Process()
{
RegisterFunctions();
bool success = true;
mProjectChanged = false;
@ -2532,3 +2536,39 @@ void NyquistOutputDialog::OnOk(wxCommandEvent & /* event */)
EndModal(wxID_OK);
}
// Registration of extra functions in XLisp.
#include "../../../lib-src/libnyquist/nyquist/xlisp/xlisp.h"
static LVAL gettext()
{
auto string = UTF8CTOWX(getstring(xlgastring()));
xllastarg();
return cvstring(GetCustomTranslation(string).mb_str(wxConvUTF8));
}
static LVAL ngettext()
{
auto string1 = UTF8CTOWX(getstring(xlgastring()));
auto string2 = UTF8CTOWX(getstring(xlgastring()));
auto number = getfixnum(xlgafixnum());
xllastarg();
return cvstring(
wxGetTranslation(string1, string2, number).mb_str(wxConvUTF8));
}
static void RegisterFunctions()
{
// Add functions to XLisp. Do this only once,
// before the first call to nyx_init.
static bool firstTime = true;
if (firstTime) {
firstTime = false;
static const FUNDEF functions[] = {
{ "_", SUBR, gettext },
{ "ngettext", SUBR, ngettext },
};
xlbindfunctions( functions, sizeof(functions)/sizeof(*functions) );
}
}