add third argument to 'EQL::addObject' to call 'define-qt-wrappers'

This commit is contained in:
polos 2021-05-11 09:48:00 +02:00
parent 73844d81ab
commit 4f75551971
4 changed files with 35 additions and 22 deletions

View file

@ -215,15 +215,29 @@ void EQL::exec(QWidget* widget, const QString& lispFile, const QString& slimeHoo
if(exec_with_simple_restart) {
eval("(eql::exec-with-simple-restart)"); }}
void EQL::addObject(QObject* object, const QByteArray& varName) {
void EQL::addObject(QObject* object, const QByteArray& varName, bool defineWrappers) {
cl_object l_symbol = ECL_NIL;
int p = varName.indexOf(':');
QByteArray pkg = (p == -1) ? "eql-user" : varName.left(p);
QByteArray var = varName.mid(varName.lastIndexOf(':') + 1);
cl_object l_symbol = cl_intern(2,
STRING_COPY(var.toUpper().constData()),
cl_find_package(STRING_COPY(pkg.toUpper().constData())));
if(p == -1) {
// use current package
l_symbol = cl_intern(1,
STRING_COPY(varName.toUpper().constData())); }
else {
// use provided package
QByteArray pkg = varName.left(p);
QByteArray var = varName.mid(varName.lastIndexOf(':') + 1);
l_symbol = cl_intern(2,
STRING_COPY(var.toUpper().constData()),
cl_find_package(STRING_COPY(pkg.toUpper().constData()))); }
cl_object l_object = qt_object_from_name(LObjects::vanillaQtSuperClassName(object->metaObject()), object);
ecl_defvar(l_symbol, l_object); }
// 'defvar'
ecl_defvar(l_symbol, l_object);
if(defineWrappers) {
// 'define-qt-wrappers'
STATIC_SYMBOL_PKG (s_define_qt_wrappers, "DEFINE-QT-WRAPPERS", "EQL")
cl_funcall(2,
s_define_qt_wrappers,
l_object); }}
void EQL::runOnUiThread(void* function_or_closure) {
const cl_env_ptr l_env = ecl_process_env();