unix: add "make install" option for exe, lib, modules (refactor file locations)

This commit is contained in:
polos 2017-04-28 12:05:59 +02:00
parent 4b8d9603e3
commit 71bc1d3525
120 changed files with 267 additions and 1928 deletions

View file

@ -1,7 +1,8 @@
QT += widgets
TEMPLATE = lib
CONFIG += plugin release
LIBS += -L../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ../
TARGET = eql_fun_cpp
OBJECTS_DIR = ./tmp/
@ -12,4 +13,5 @@ win32 {
}
HEADERS += lib.h
SOURCES += lib.cpp

View file

@ -1,5 +1,5 @@
#include "lib.h"
#include "../../src/eql_fun.h" // for eql_fun()
#include <eql5/eql_fun.h> // for eql_fun()
QT_BEGIN_NAMESPACE

View file

@ -1,5 +1,5 @@
#include "qt_plugin.h"
#include "eql.h"
#include <eql5/eql.h>
QT_BEGIN_NAMESPACE

View file

@ -1,7 +1,7 @@
TEMPLATE = lib
CONFIG += dll no_keywords release
INCLUDEPATH += ../src
LIBS += -L.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
TARGET = qt_plugin
DESTDIR = ./
OBJECTS_DIR = ./tmp/

View file

@ -47,8 +47,8 @@ REQUIREMENTS
QtWebKit note:
If you want QtWebKit included in the official downloads from qt.io archives,
you need to choose Qt 5.5, and not later versions!
QtWebKit will continue to work with versions > 5.5, but it has to be compiled
manually (which is not fun).
QtWebKit will continue to work with versions > 5.5, but it has to be
compiled manually (which is not fun).
QtWebKit has a better, more native integration with Qt than QtWebEngine, see
for example QWebElement, which doesn't exist in QtWebEngine.
@ -57,21 +57,25 @@ REQUIREMENTS
PREPARE
=======
Install the ECL sources, and build it from the sources (ECL needs to be built with the
same compiler you'll use to compile EQL5).
Install the ECL sources, and build it from the sources (ECL needs to be built
with the same compiler you'll use to compile EQL5).
Just use the standard configuration of ECL (both threads & unicode enabled).
Qt4/Qt5 note:
You can have both old EQL (Qt4) and EQL5 (Qt5) installed in parallel (exe and lib
names differ).
You can have both old EQL (Qt4) and EQL5 (Qt5) installed in parallel (exe and
lib names differ).
If you have both Qt4 and Qt5 installed, you can use the following environment variable
to switch between the both (Unix):
If you have both Qt4 and Qt5 installed, you can use the following environment
variable to switch between the both (Unix):
export QT_SELECT=5
Please note that you need to build EQL5 in a path where you will keep it (you
can't move around the whole file tree later, since the build path needs to be
hard-coded in the executable).
BUILD
@ -80,7 +84,8 @@ BUILD
(N.B. for rebuilding, please see README-REBUILD.txt)
[Windows]
You first need to adapt the file 'src/windows.pri' (include & library paths).
You first need to adapt the file 'src/windows.pri' (include & library
paths).
Since EQL requires the C compiler anyway (not the bytecode compiler), you
should put this line in your '~/.eclrc':
(require :cmp)
@ -89,12 +94,13 @@ BUILD
Substitute make with nmake.
[MinGW]
If 'make' is stuck in an infinite loop of creating the 'Makefile', just remove
the line 'include(windows.pri)' from your '*.pro' file, setting eventually
needed paths in your '~/.profile' instead.
If 'make' is stuck in an infinite loop of creating the 'Makefile', just
remove the line 'include(windows.pri)' from your '*.pro' file, setting
eventually needed paths in your '~/.profile' instead.
[OSX]
To force creation of a Makefile (instead of an Xcode project), use this flag:
To force creation of a Makefile (instead of an Xcode project), use this
flag:
qmake -spec macx-g++
1) In src/ run:
@ -105,15 +111,25 @@ BUILD
qmake eql_lib.pro
make
sudo make install (unix only)
qmake eql_exe.pro
make
sudo make install (unix only)
This will build both the EQL executable and shared library.
If you ran "make install", you'll find the installed files here:
/usr/local/bin/
/usr/local/lib/
/usr/local/include/eql5/
3) cd ..
[Linux]
N.B: skip this if you did "sudo make install"
You need to create links to EQL, something like (note the "5"):
cd /usr/lib
sudo ln -s ~/eql5/libeql5.so.1 libeql5.so.1
@ -121,12 +137,14 @@ BUILD
sudo ln -s ~/eql5/eql5 eql5
[OSX]
N.B: skip this if you did "sudo make install"
You need to create links to EQL, something like (note the "5"):
cd /usr/local/lib
sudo ln -s ~/eql5/libeql5.1.dylib libeql5.1.dylib
cd /usr/local/bin
sudo ln -s ~/eql5/eql5.app/Contents/MacOS/eql5 eql5
[Windows]
Add your EQL directory to the Path environment variable, see:
<Control Panel:System:Advanced:Environment Variables>
@ -136,11 +154,6 @@ BUILD
RUN
===
PLEASE NOTE:
You will often need to "reset" (command) your console/shell after EQL finished
working, especially during development time or other exits than "(eql:qquit)".
You can run a simple interactive REPL UI doing:
eql5 -qgui
@ -150,8 +163,8 @@ To run a Lisp file without top-level, do:
(If you don't see the application window, it might be in the background.
Use your taskbar to show it.)
If you start the EQL executable without arguments, it will start the usual ECL top-level
(without processing Qt events).
If you start the EQL executable without arguments, it will start the usual ECL
top-level (without processing Qt events).
To _not_ load ~/.eclrc on startup, do:
eql5 -norc
@ -160,12 +173,19 @@ To quit the tool, do:
(eql:qquit) or
(eql:qq)
In order to run (sort of) a top-level processing Qt events, do (requires ECL threads):
In order to run (sort of) a top-level processing Qt events, do:
eql5 -qtpl
Note: If you want to use "ecl-readline" together with "-qtpl", just compile
"eql5/src/lisp/ecl-readline.lisp" (which depends on the "readline" C library).
It will then be loaded automatically on startup.
"lib/ecl-readline.lisp" (which depends on the "readline" C library).
It will then be loaded automatically on startup:
cd ~/eql5/lib
ecl -compile ecl-readline.lisp
N.B: Using readline, you will often need to "reset" (command) your
console/shell after EQL finished working, especially during
development time or other exits than "(eql:qquit)".
@ -176,8 +196,10 @@ To build an EQL module (corresponding to a Qt module), do the following in src/:
qmake module_<name>.pro (e.g. qmake module_network.pro)
make
sudo make install (unix only)
[Linux,OSX]
(N.B: skip this if you did "sudo make install")
You need to create links to the modules, see EQL library above.
In Lisp, use function QREQUIRE to load a module:
@ -194,9 +216,10 @@ You might want to put this in your ~/.eclrc file:
(setf eql:*qtpl* t ; same as -qtpl
eql:*break-on-errors* t)
It is HIGHLY RECOMMENDED to integrate the wrapper functions, see README-3-OPTIONAL.
This will make all Qt functions real Lisp functions, which also means symbol tab-
completion, both in Emacs/Slime and with ecl-readline.
It is HIGHLY RECOMMENDED to integrate the wrapper functions, see
README-3-OPTIONAL.
This will make all Qt functions real Lisp functions, which also means symbol
tab-completion, both in Emacs/Slime and with ecl-readline.

View file

@ -1,12 +1,13 @@
REBUILD STEPS (on every upgrade of: ECL, Qt, EQL)
=============
1) remove directory src/tmp/
remove file src/lisp/ecl-readline.fas*
0) cd src
1) remove directory tmp/
2) ecl -shell make-eql-lib.lisp
3) qmake, make in this order: (MSVC: nmake)
3) qmake, make, sudo make install (Unix only) in this order: (MSVC: nmake)
eql_lib.pro
eql_exe.pro
@ -14,10 +15,6 @@ REBUILD STEPS (on every upgrade of: ECL, Qt, EQL)
module_network.pro
module_...
for readline (Unix):
ecl -compile src/lisp/ecl-readline.lisp
Optionally (integrate wrapper functions):
4) eql5 make-eql-lib-wrappers.lisp
@ -27,6 +24,7 @@ Optionally (integrate wrapper functions):
touch tmp/eql.o (or delete "tmp/eql.o*")
qmake eql_lib.pro
make
sudo make install (Unix only)
IMPORTANT NOTES
@ -50,4 +48,4 @@ ECL/C++ integration).
TIP
===
If you're on Linux, see "src/rebuild".
If you're on Linux, see "src/rebuild" (needs password for make install).

View file

@ -121,7 +121,7 @@ is resolved automatically (<code>RESTART-QT-EVENTS</code> would block the REPL i
<p>In order to automatically switch the REPL to a given package after loading a file, add this line:</p>
<pre> (qlater (lambda () (in-package :my-package)))</pre>
<br>
<p>If you use ECL readline (see <code>ecl-readline.lisp</code> in sources):<br>After entering <code>:qq</code> (quitting the top-level), the console/shell should always be reset (but you won't probably see the command while typing it; an <code>alias</code> might help):</p>
<p>If you use ECL readline (see <code>lib/ecl-readline.lisp</code>, to be compiled manually the first time):<br>After entering <code>:qq</code> (quitting the top-level), the console/shell should always be reset (but you won't probably see the command while typing it; an <code>alias</code> might help):</p>
<pre> $ <span class="input">reset</span></pre>
<br>&nbsp;
<br>&nbsp;

View file

@ -11,10 +11,11 @@
<p>Please follow the <code>my_app/README.txt</code> (which assumes that your lisp files are in <code>my_app/lisp/</code>)</p>
<p>The dependencies are:</p>
<ul>
<li><code>eql5</code>, <code>ecl</code>, <code>QtCore</code>, <code>QtGui</code>, <code>QtWidgets</code>, <code>QtPrintSupport</code> shared libraries
<li><code>eql5</code>, <code>ecl</code>, <code>Qt5Core</code>, <code>Qt5Gui</code>, <code>Qt5Widgets</code>, <code>Qt5PrintSupport</code> shared libraries (plus used modules, both Qt5 and EQL5)
<li>your <code>*.ui</code> files (if any)
<li>your <code>*.qm</code> translation files (if any)
</ul>
<p><b>[Unix]</b><br>Deploy the installed libraries from <code>/usr/local/lib/</code>, because they have already been stripped, and are therefore smaller.</p>
<p>A detailed description of deploying Qt applications can be found in Qt Assistant.</p>
</div>
</body>

View file

@ -58,7 +58,7 @@
cl_funcall(1, (cl_object)closure); // ECL function call
}
</pre>
<p>After introducing a macro <code>qrun*</code>, and wrapping all EQL functions in it (see <code>"slime/thread-safe.lisp"</code>), we are done!</p>
<p>After introducing a macro <code>qrun*</code>, and wrapping all EQL functions in it (see <code>"lib/thread-safe.lisp"</code>), we are done!</p>
<p>(Please note that the above code is a stripped down version, see sources for the actual implementation.)</p>
<br>
</div>

View file

@ -49,7 +49,7 @@
<br>
<h3>Notes</h3>
<p>If you notice slow execution of a function called from the REPL, try to wrap it in <code>qrun</code>/<code>qrun*</code>, as this will reduce eventual, multiple thread switches (for each EQL function call) to a single one.</p>
<p>All EQL functions are wrapped in <code>qrun*</code> (see <code>eql5/slime/thread-safe.lisp</code>), so it's safe to call them either directly from the REPL or using 'eval region' (or from any other ECL thread).</p>
<p>All EQL functions are wrapped in <code>qrun*</code> (see <code>lib/thread-safe.lisp</code>), so it's safe to call them either directly from the REPL or using 'eval region' (or from any other ECL thread).</p>
<p>If the Slime REPL hangs, you can simply try to connect again (losing the old connection): no need to restart Lisp.</p>
<p>This Slime mode is both convenient and simple to use, but conses a little more for every EQL function call.
<br>If you absolutely want direct EQL function calls, please see the less convenient <a href="Slime-REPL-hook.htm">Slime REPL Hook</a> mode.</p>

View file

@ -1,6 +1,3 @@
Please note that you will need to build a small C++ plugin for most of the
examples (see "lib/"); this is just for providing the "import EQL5" in QML.
If you are new to QML/EQL5, you probably want to go through the examples
(and READMEs) in this order:

View file

@ -1,60 +0,0 @@
#ifndef LIB_H
#define LIB_H
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
class Lisp : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QVariant call(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
Q_INVOKABLE QVariant apply(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
};
class EQLPaintedItem : public QQuickPaintedItem {
Q_OBJECT
public:
EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {}
void paint(QPainter* painter) {
eql_fun("qml:paint",
Q_ARG(QQuickPaintedItem*, this),
Q_ARG(QPainter*, painter)); }
};
QT_END_NAMESPACE
#endif

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
(defvar *qml-lisp* (qload-c++ "lib/qml_lisp"))
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -4,8 +4,6 @@
;;; This is a port of a QtQuick1/Qt4 example.
;;; The JS game logic has been ported to Lisp.
;;;
;;; (requires a C++ plugin, see "lib/")
;;;
#-qt-wrapper-functions ; see README-OPTIONAL.txt
(load (in-home "src/lisp/all-wrappers"))

View file

@ -1,108 +0,0 @@
#include "qml_lisp.h"
QT_BEGIN_NAMESPACE
static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);
qmlRegisterType<EQLPaintedItem>("EQL5", 1, 0, "PaintedItem"); }
return lisp; }
static QQmlContext* rootContext() {
QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar);
return Q_PTR(QQmlContext*, var); }
static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) {
QVariant var =
eql_fun("qml:qml-apply", QVariant::String,
Q_ARG(QObject*, caller),
Q_ARG(QString, function),
Q_ARG(QVariantList, arguments));
QString str(var.toString());
if(str.startsWith("#<>")) { // prepared in Lisp for JS eval
QQmlExpression exp(rootContext(), caller, str.mid(3));
return exp.evaluate(); }
return var; }
QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0,
const QJSValue& arg1,
const QJSValue& arg2,
const QJSValue& arg3,
const QJSValue& arg4,
const QJSValue& arg5,
const QJSValue& arg6,
const QJSValue& arg7,
const QJSValue& arg8,
const QJSValue& arg9,
const QJSValue& arg10,
const QJSValue& arg11,
const QJSValue& arg12,
const QJSValue& arg13,
const QJSValue& arg14,
const QJSValue& arg15,
const QJSValue& arg16) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arg0.toString(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
if(!function_or_arg0.isUndefined()) {
arguments << function_or_arg0.toVariant(); }}
if(!arg1.isUndefined()) {
arguments << arg1.toVariant();
if(!arg2.isUndefined()) {
arguments << arg2.toVariant();
if(!arg3.isUndefined()) {
arguments << arg3.toVariant();
if(!arg4.isUndefined()) {
arguments << arg4.toVariant();
if(!arg5.isUndefined()) {
arguments << arg5.toVariant();
if(!arg6.isUndefined()) {
arguments << arg6.toVariant();
if(!arg7.isUndefined()) {
arguments << arg7.toVariant();
if(!arg8.isUndefined()) {
arguments << arg8.toVariant();
if(!arg9.isUndefined()) {
arguments << arg9.toVariant();
if(!arg10.isUndefined()) {
arguments << arg10.toVariant();
if(!arg11.isUndefined()) {
arguments << arg11.toVariant();
if(!arg12.isUndefined()) {
arguments << arg12.toVariant();
if(!arg13.isUndefined()) {
arguments << arg13.toVariant();
if(!arg14.isUndefined()) {
arguments << arg14.toVariant();
if(!arg15.isUndefined()) {
arguments << arg15.toVariant();
if(!arg16.isUndefined()) {
arguments << arg16.toVariant(); }}}}}}}}}}}}}}}}
return qmlApply(caller, function, arguments); }
QVariant Lisp::apply(const QJSValue& caller_or_function,
const QJSValue& function_or_arguments,
const QJSValue& arguments_or_undefined) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arguments.toString();
arguments = arguments_or_undefined.toVariant().value<QVariantList>(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
arguments = function_or_arguments.toVariant().value<QVariantList>(); }
return qmlApply(caller, function, arguments); }
QT_END_NAMESPACE

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
(defvar *qml-lisp* (qload-c++ "lib/qml_lisp"))
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -1,108 +0,0 @@
#include "qml_lisp.h"
QT_BEGIN_NAMESPACE
static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);
qmlRegisterType<EQLPaintedItem>("EQL5", 1, 0, "PaintedItem"); }
return lisp; }
static QQmlContext* rootContext() {
QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar);
return Q_PTR(QQmlContext*, var); }
static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) {
QVariant var =
eql_fun("qml:qml-apply", QVariant::String,
Q_ARG(QObject*, caller),
Q_ARG(QString, function),
Q_ARG(QVariantList, arguments));
QString str(var.toString());
if(str.startsWith("#<>")) { // prepared in Lisp for JS eval
QQmlExpression exp(rootContext(), caller, str.mid(3));
return exp.evaluate(); }
return var; }
QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0,
const QJSValue& arg1,
const QJSValue& arg2,
const QJSValue& arg3,
const QJSValue& arg4,
const QJSValue& arg5,
const QJSValue& arg6,
const QJSValue& arg7,
const QJSValue& arg8,
const QJSValue& arg9,
const QJSValue& arg10,
const QJSValue& arg11,
const QJSValue& arg12,
const QJSValue& arg13,
const QJSValue& arg14,
const QJSValue& arg15,
const QJSValue& arg16) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arg0.toString(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
if(!function_or_arg0.isUndefined()) {
arguments << function_or_arg0.toVariant(); }}
if(!arg1.isUndefined()) {
arguments << arg1.toVariant();
if(!arg2.isUndefined()) {
arguments << arg2.toVariant();
if(!arg3.isUndefined()) {
arguments << arg3.toVariant();
if(!arg4.isUndefined()) {
arguments << arg4.toVariant();
if(!arg5.isUndefined()) {
arguments << arg5.toVariant();
if(!arg6.isUndefined()) {
arguments << arg6.toVariant();
if(!arg7.isUndefined()) {
arguments << arg7.toVariant();
if(!arg8.isUndefined()) {
arguments << arg8.toVariant();
if(!arg9.isUndefined()) {
arguments << arg9.toVariant();
if(!arg10.isUndefined()) {
arguments << arg10.toVariant();
if(!arg11.isUndefined()) {
arguments << arg11.toVariant();
if(!arg12.isUndefined()) {
arguments << arg12.toVariant();
if(!arg13.isUndefined()) {
arguments << arg13.toVariant();
if(!arg14.isUndefined()) {
arguments << arg14.toVariant();
if(!arg15.isUndefined()) {
arguments << arg15.toVariant();
if(!arg16.isUndefined()) {
arguments << arg16.toVariant(); }}}}}}}}}}}}}}}}
return qmlApply(caller, function, arguments); }
QVariant Lisp::apply(const QJSValue& caller_or_function,
const QJSValue& function_or_arguments,
const QJSValue& arguments_or_undefined) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arguments.toString();
arguments = arguments_or_undefined.toVariant().value<QVariantList>(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
arguments = function_or_arguments.toVariant().value<QVariantList>(); }
return qmlApply(caller, function, arguments); }
QT_END_NAMESPACE

View file

@ -1,60 +0,0 @@
#ifndef LIB_H
#define LIB_H
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
class Lisp : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QVariant call(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
Q_INVOKABLE QVariant apply(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
};
class EQLPaintedItem : public QQuickPaintedItem {
Q_OBJECT
public:
EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {}
void paint(QPainter* painter) {
eql_fun("qml:paint",
Q_ARG(QQuickPaintedItem*, this),
Q_ARG(QPainter*, painter)); }
};
QT_END_NAMESPACE
#endif

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
(defvar *qml-lisp* (qload-c++ "lib/qml_lisp"))
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -60,7 +60,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName')."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(if (stringp item)
(find-quick-item item)

View file

@ -1,108 +0,0 @@
#include "qml_lisp.h"
QT_BEGIN_NAMESPACE
static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);
qmlRegisterType<EQLPaintedItem>("EQL5", 1, 0, "PaintedItem"); }
return lisp; }
static QQmlContext* rootContext() {
QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar);
return Q_PTR(QQmlContext*, var); }
static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) {
QVariant var =
eql_fun("qml:qml-apply", QVariant::String,
Q_ARG(QObject*, caller),
Q_ARG(QString, function),
Q_ARG(QVariantList, arguments));
QString str(var.toString());
if(str.startsWith("#<>")) { // prepared in Lisp for JS eval
QQmlExpression exp(rootContext(), caller, str.mid(3));
return exp.evaluate(); }
return var; }
QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0,
const QJSValue& arg1,
const QJSValue& arg2,
const QJSValue& arg3,
const QJSValue& arg4,
const QJSValue& arg5,
const QJSValue& arg6,
const QJSValue& arg7,
const QJSValue& arg8,
const QJSValue& arg9,
const QJSValue& arg10,
const QJSValue& arg11,
const QJSValue& arg12,
const QJSValue& arg13,
const QJSValue& arg14,
const QJSValue& arg15,
const QJSValue& arg16) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arg0.toString(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
if(!function_or_arg0.isUndefined()) {
arguments << function_or_arg0.toVariant(); }}
if(!arg1.isUndefined()) {
arguments << arg1.toVariant();
if(!arg2.isUndefined()) {
arguments << arg2.toVariant();
if(!arg3.isUndefined()) {
arguments << arg3.toVariant();
if(!arg4.isUndefined()) {
arguments << arg4.toVariant();
if(!arg5.isUndefined()) {
arguments << arg5.toVariant();
if(!arg6.isUndefined()) {
arguments << arg6.toVariant();
if(!arg7.isUndefined()) {
arguments << arg7.toVariant();
if(!arg8.isUndefined()) {
arguments << arg8.toVariant();
if(!arg9.isUndefined()) {
arguments << arg9.toVariant();
if(!arg10.isUndefined()) {
arguments << arg10.toVariant();
if(!arg11.isUndefined()) {
arguments << arg11.toVariant();
if(!arg12.isUndefined()) {
arguments << arg12.toVariant();
if(!arg13.isUndefined()) {
arguments << arg13.toVariant();
if(!arg14.isUndefined()) {
arguments << arg14.toVariant();
if(!arg15.isUndefined()) {
arguments << arg15.toVariant();
if(!arg16.isUndefined()) {
arguments << arg16.toVariant(); }}}}}}}}}}}}}}}}
return qmlApply(caller, function, arguments); }
QVariant Lisp::apply(const QJSValue& caller_or_function,
const QJSValue& function_or_arguments,
const QJSValue& arguments_or_undefined) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arguments.toString();
arguments = arguments_or_undefined.toVariant().value<QVariantList>(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
arguments = function_or_arguments.toVariant().value<QVariantList>(); }
return qmlApply(caller, function, arguments); }
QT_END_NAMESPACE

View file

@ -1,60 +0,0 @@
#ifndef LIB_H
#define LIB_H
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
class Lisp : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QVariant call(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
Q_INVOKABLE QVariant apply(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
};
class EQLPaintedItem : public QQuickPaintedItem {
Q_OBJECT
public:
EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {}
void paint(QPainter* painter) {
eql_fun("qml:paint",
Q_ARG(QQuickPaintedItem*, this),
Q_ARG(QPainter*, painter)); }
};
QT_END_NAMESPACE
#endif

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -1,568 +0,0 @@
/****************************************************************************
** Meta object code from reading C++ file 'qml_lisp.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.5.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "../qml_lisp.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'qml_lisp.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.5.1. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
struct qt_meta_stringdata_Lisp_t {
QByteArrayData data[5];
char stringdata0[26];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_Lisp_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_Lisp_t qt_meta_stringdata_Lisp = {
{
QT_MOC_LITERAL(0, 0, 4), // "Lisp"
QT_MOC_LITERAL(1, 5, 4), // "call"
QT_MOC_LITERAL(2, 10, 0), // ""
QT_MOC_LITERAL(3, 11, 8), // "QJSValue"
QT_MOC_LITERAL(4, 20, 5) // "apply"
},
"Lisp\0call\0\0QJSValue\0apply"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_Lisp[] = {
// content:
7, // revision
0, // classname
0, 0, // classinfo
21, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// methods: name, argc, parameters, tag, flags
1, 18, 119, 2, 0x02 /* Public */,
1, 17, 156, 2, 0x22 /* Public | MethodCloned */,
1, 16, 191, 2, 0x22 /* Public | MethodCloned */,
1, 15, 224, 2, 0x22 /* Public | MethodCloned */,
1, 14, 255, 2, 0x22 /* Public | MethodCloned */,
1, 13, 284, 2, 0x22 /* Public | MethodCloned */,
1, 12, 311, 2, 0x22 /* Public | MethodCloned */,
1, 11, 336, 2, 0x22 /* Public | MethodCloned */,
1, 10, 359, 2, 0x22 /* Public | MethodCloned */,
1, 9, 380, 2, 0x22 /* Public | MethodCloned */,
1, 8, 399, 2, 0x22 /* Public | MethodCloned */,
1, 7, 416, 2, 0x22 /* Public | MethodCloned */,
1, 6, 431, 2, 0x22 /* Public | MethodCloned */,
1, 5, 444, 2, 0x22 /* Public | MethodCloned */,
1, 4, 455, 2, 0x22 /* Public | MethodCloned */,
1, 3, 464, 2, 0x22 /* Public | MethodCloned */,
1, 2, 471, 2, 0x22 /* Public | MethodCloned */,
1, 1, 476, 2, 0x22 /* Public | MethodCloned */,
4, 3, 479, 2, 0x02 /* Public */,
4, 2, 486, 2, 0x22 /* Public | MethodCloned */,
4, 1, 491, 2, 0x22 /* Public | MethodCloned */,
// methods: parameters
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 0x80000000 | 3, 2, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 0x80000000 | 3, 2, 2,
QMetaType::QVariant, 0x80000000 | 3, 2,
0 // eod
};
void Lisp::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
Lisp *_t = static_cast<Lisp *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])),(*reinterpret_cast< const QJSValue(*)>(_a[16])),(*reinterpret_cast< const QJSValue(*)>(_a[17])),(*reinterpret_cast< const QJSValue(*)>(_a[18])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 1: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])),(*reinterpret_cast< const QJSValue(*)>(_a[16])),(*reinterpret_cast< const QJSValue(*)>(_a[17])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 2: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])),(*reinterpret_cast< const QJSValue(*)>(_a[16])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 3: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])),(*reinterpret_cast< const QJSValue(*)>(_a[15])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 4: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])),(*reinterpret_cast< const QJSValue(*)>(_a[14])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 5: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])),(*reinterpret_cast< const QJSValue(*)>(_a[13])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 6: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])),(*reinterpret_cast< const QJSValue(*)>(_a[12])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 7: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])),(*reinterpret_cast< const QJSValue(*)>(_a[11])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 8: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])),(*reinterpret_cast< const QJSValue(*)>(_a[10])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 9: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])),(*reinterpret_cast< const QJSValue(*)>(_a[9])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 10: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])),(*reinterpret_cast< const QJSValue(*)>(_a[8])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 11: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])),(*reinterpret_cast< const QJSValue(*)>(_a[7])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 12: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])),(*reinterpret_cast< const QJSValue(*)>(_a[6])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 13: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])),(*reinterpret_cast< const QJSValue(*)>(_a[5])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 14: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])),(*reinterpret_cast< const QJSValue(*)>(_a[4])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 15: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 16: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 17: { QVariant _r = _t->call((*reinterpret_cast< const QJSValue(*)>(_a[1])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 18: { QVariant _r = _t->apply((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])),(*reinterpret_cast< const QJSValue(*)>(_a[3])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 19: { QVariant _r = _t->apply((*reinterpret_cast< const QJSValue(*)>(_a[1])),(*reinterpret_cast< const QJSValue(*)>(_a[2])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
case 20: { QVariant _r = _t->apply((*reinterpret_cast< const QJSValue(*)>(_a[1])));
if (_a[0]) *reinterpret_cast< QVariant*>(_a[0]) = _r; } break;
default: ;
}
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
switch (_id) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 17:
case 16:
case 15:
case 14:
case 13:
case 12:
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 1:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 16:
case 15:
case 14:
case 13:
case 12:
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 2:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 15:
case 14:
case 13:
case 12:
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 3:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 14:
case 13:
case 12:
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 4:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 13:
case 12:
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 5:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 12:
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 6:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 11:
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 7:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 10:
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 8:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 9:
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 9:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 8:
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 10:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 7:
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 11:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 6:
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 12:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 13:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 4:
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 14:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 3:
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 15:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 16:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 17:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 18:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 2:
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 19:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 1:
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
case 20:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QJSValue >(); break;
}
break;
}
}
}
const QMetaObject Lisp::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_Lisp.data,
qt_meta_data_Lisp, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
const QMetaObject *Lisp::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *Lisp::qt_metacast(const char *_clname)
{
if (!_clname) return Q_NULLPTR;
if (!strcmp(_clname, qt_meta_stringdata_Lisp.stringdata0))
return static_cast<void*>(const_cast< Lisp*>(this));
return QObject::qt_metacast(_clname);
}
int Lisp::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 21)
qt_static_metacall(this, _c, _id, _a);
_id -= 21;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 21)
qt_static_metacall(this, _c, _id, _a);
_id -= 21;
}
return _id;
}
struct qt_meta_stringdata_EQLPaintedItem_t {
QByteArrayData data[1];
char stringdata0[15];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_EQLPaintedItem_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_EQLPaintedItem_t qt_meta_stringdata_EQLPaintedItem = {
{
QT_MOC_LITERAL(0, 0, 14) // "EQLPaintedItem"
},
"EQLPaintedItem"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_EQLPaintedItem[] = {
// content:
7, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void EQLPaintedItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
const QMetaObject EQLPaintedItem::staticMetaObject = {
{ &QQuickPaintedItem::staticMetaObject, qt_meta_stringdata_EQLPaintedItem.data,
qt_meta_data_EQLPaintedItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
const QMetaObject *EQLPaintedItem::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *EQLPaintedItem::qt_metacast(const char *_clname)
{
if (!_clname) return Q_NULLPTR;
if (!strcmp(_clname, qt_meta_stringdata_EQLPaintedItem.stringdata0))
return static_cast<void*>(const_cast< EQLPaintedItem*>(this));
return QQuickPaintedItem::qt_metacast(_clname);
}
int EQLPaintedItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QQuickPaintedItem::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
return _id;
}
QT_END_MOC_NAMESPACE

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
;;(defvar *qml-lisp* (qload-c++ "lib/qml_lisp")) ; not needed for this example
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -1,108 +0,0 @@
#include "qml_lisp.h"
QT_BEGIN_NAMESPACE
static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);
qmlRegisterType<EQLPaintedItem>("EQL5", 1, 0, "PaintedItem"); }
return lisp; }
static QQmlContext* rootContext() {
QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar);
return Q_PTR(QQmlContext*, var); }
static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) {
QVariant var =
eql_fun("qml:qml-apply", QVariant::String,
Q_ARG(QObject*, caller),
Q_ARG(QString, function),
Q_ARG(QVariantList, arguments));
QString str(var.toString());
if(str.startsWith("#<>")) { // prepared in Lisp for JS eval
QQmlExpression exp(rootContext(), caller, str.mid(3));
return exp.evaluate(); }
return var; }
QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0,
const QJSValue& arg1,
const QJSValue& arg2,
const QJSValue& arg3,
const QJSValue& arg4,
const QJSValue& arg5,
const QJSValue& arg6,
const QJSValue& arg7,
const QJSValue& arg8,
const QJSValue& arg9,
const QJSValue& arg10,
const QJSValue& arg11,
const QJSValue& arg12,
const QJSValue& arg13,
const QJSValue& arg14,
const QJSValue& arg15,
const QJSValue& arg16) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arg0.toString(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
if(!function_or_arg0.isUndefined()) {
arguments << function_or_arg0.toVariant(); }}
if(!arg1.isUndefined()) {
arguments << arg1.toVariant();
if(!arg2.isUndefined()) {
arguments << arg2.toVariant();
if(!arg3.isUndefined()) {
arguments << arg3.toVariant();
if(!arg4.isUndefined()) {
arguments << arg4.toVariant();
if(!arg5.isUndefined()) {
arguments << arg5.toVariant();
if(!arg6.isUndefined()) {
arguments << arg6.toVariant();
if(!arg7.isUndefined()) {
arguments << arg7.toVariant();
if(!arg8.isUndefined()) {
arguments << arg8.toVariant();
if(!arg9.isUndefined()) {
arguments << arg9.toVariant();
if(!arg10.isUndefined()) {
arguments << arg10.toVariant();
if(!arg11.isUndefined()) {
arguments << arg11.toVariant();
if(!arg12.isUndefined()) {
arguments << arg12.toVariant();
if(!arg13.isUndefined()) {
arguments << arg13.toVariant();
if(!arg14.isUndefined()) {
arguments << arg14.toVariant();
if(!arg15.isUndefined()) {
arguments << arg15.toVariant();
if(!arg16.isUndefined()) {
arguments << arg16.toVariant(); }}}}}}}}}}}}}}}}
return qmlApply(caller, function, arguments); }
QVariant Lisp::apply(const QJSValue& caller_or_function,
const QJSValue& function_or_arguments,
const QJSValue& arguments_or_undefined) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arguments.toString();
arguments = arguments_or_undefined.toVariant().value<QVariantList>(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
arguments = function_or_arguments.toVariant().value<QVariantList>(); }
return qmlApply(caller, function, arguments); }
QT_END_NAMESPACE

View file

@ -1,60 +0,0 @@
#ifndef LIB_H
#define LIB_H
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
class Lisp : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QVariant call(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
Q_INVOKABLE QVariant apply(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
};
class EQLPaintedItem : public QQuickPaintedItem {
Q_OBJECT
public:
EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {}
void paint(QPainter* painter) {
eql_fun("qml:paint",
Q_ARG(QQuickPaintedItem*, this),
Q_ARG(QPainter*, painter)); }
};
QT_END_NAMESPACE
#endif

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
(defvar *qml-lisp* (qload-c++ "lib/qml_lisp"))
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -14,7 +14,7 @@ Item {
// use JS arrays for lists (can be nested);
//
// * the only limit to Lisp.call() is the number of arguments (max. 16);
// this is just an implementation detail; feel free to extend it (see "../lib/");
// this is just an implementation detail; feel free to extend it (see sources);
//
// * return values can be nested Lisp lists or vectors, which will be converted to
// nested JS arrays: they will be prepared in Lisp and passed to JS eval;

View file

@ -1,108 +0,0 @@
#include "qml_lisp.h"
QT_BEGIN_NAMESPACE
static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);
qmlRegisterType<EQLPaintedItem>("EQL5", 1, 0, "PaintedItem"); }
return lisp; }
static QQmlContext* rootContext() {
QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar);
return Q_PTR(QQmlContext*, var); }
static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) {
QVariant var =
eql_fun("qml:qml-apply", QVariant::String,
Q_ARG(QObject*, caller),
Q_ARG(QString, function),
Q_ARG(QVariantList, arguments));
QString str(var.toString());
if(str.startsWith("#<>")) { // prepared in Lisp for JS eval
QQmlExpression exp(rootContext(), caller, str.mid(3));
return exp.evaluate(); }
return var; }
QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0,
const QJSValue& arg1,
const QJSValue& arg2,
const QJSValue& arg3,
const QJSValue& arg4,
const QJSValue& arg5,
const QJSValue& arg6,
const QJSValue& arg7,
const QJSValue& arg8,
const QJSValue& arg9,
const QJSValue& arg10,
const QJSValue& arg11,
const QJSValue& arg12,
const QJSValue& arg13,
const QJSValue& arg14,
const QJSValue& arg15,
const QJSValue& arg16) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arg0.toString(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
if(!function_or_arg0.isUndefined()) {
arguments << function_or_arg0.toVariant(); }}
if(!arg1.isUndefined()) {
arguments << arg1.toVariant();
if(!arg2.isUndefined()) {
arguments << arg2.toVariant();
if(!arg3.isUndefined()) {
arguments << arg3.toVariant();
if(!arg4.isUndefined()) {
arguments << arg4.toVariant();
if(!arg5.isUndefined()) {
arguments << arg5.toVariant();
if(!arg6.isUndefined()) {
arguments << arg6.toVariant();
if(!arg7.isUndefined()) {
arguments << arg7.toVariant();
if(!arg8.isUndefined()) {
arguments << arg8.toVariant();
if(!arg9.isUndefined()) {
arguments << arg9.toVariant();
if(!arg10.isUndefined()) {
arguments << arg10.toVariant();
if(!arg11.isUndefined()) {
arguments << arg11.toVariant();
if(!arg12.isUndefined()) {
arguments << arg12.toVariant();
if(!arg13.isUndefined()) {
arguments << arg13.toVariant();
if(!arg14.isUndefined()) {
arguments << arg14.toVariant();
if(!arg15.isUndefined()) {
arguments << arg15.toVariant();
if(!arg16.isUndefined()) {
arguments << arg16.toVariant(); }}}}}}}}}}}}}}}}
return qmlApply(caller, function, arguments); }
QVariant Lisp::apply(const QJSValue& caller_or_function,
const QJSValue& function_or_arguments,
const QJSValue& arguments_or_undefined) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arguments.toString();
arguments = arguments_or_undefined.toVariant().value<QVariantList>(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
arguments = function_or_arguments.toVariant().value<QVariantList>(); }
return qmlApply(caller, function, arguments); }
QT_END_NAMESPACE

View file

@ -1,60 +0,0 @@
#ifndef LIB_H
#define LIB_H
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
class Lisp : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QVariant call(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
Q_INVOKABLE QVariant apply(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
};
class EQLPaintedItem : public QQuickPaintedItem {
Q_OBJECT
public:
EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {}
void paint(QPainter* painter) {
eql_fun("qml:paint",
Q_ARG(QQuickPaintedItem*, this),
Q_ARG(QPainter*, painter)); }
};
QT_END_NAMESPACE
#endif

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
(defvar *qml-lisp* (qload-c++ "lib/qml_lisp"))
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -1,108 +0,0 @@
#include "qml_lisp.h"
QT_BEGIN_NAMESPACE
static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);
qmlRegisterType<EQLPaintedItem>("EQL5", 1, 0, "PaintedItem"); }
return lisp; }
static QQmlContext* rootContext() {
QVariant var = eql_fun("qml:root-context", QMetaType::VoidStar);
return Q_PTR(QQmlContext*, var); }
static QVariant qmlApply(QObject* caller, const QString& function, const QVariantList& arguments) {
QVariant var =
eql_fun("qml:qml-apply", QVariant::String,
Q_ARG(QObject*, caller),
Q_ARG(QString, function),
Q_ARG(QVariantList, arguments));
QString str(var.toString());
if(str.startsWith("#<>")) { // prepared in Lisp for JS eval
QQmlExpression exp(rootContext(), caller, str.mid(3));
return exp.evaluate(); }
return var; }
QVariant Lisp::call(const QJSValue& caller_or_function, const QJSValue& function_or_arg0,
const QJSValue& arg1,
const QJSValue& arg2,
const QJSValue& arg3,
const QJSValue& arg4,
const QJSValue& arg5,
const QJSValue& arg6,
const QJSValue& arg7,
const QJSValue& arg8,
const QJSValue& arg9,
const QJSValue& arg10,
const QJSValue& arg11,
const QJSValue& arg12,
const QJSValue& arg13,
const QJSValue& arg14,
const QJSValue& arg15,
const QJSValue& arg16) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arg0.toString(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
if(!function_or_arg0.isUndefined()) {
arguments << function_or_arg0.toVariant(); }}
if(!arg1.isUndefined()) {
arguments << arg1.toVariant();
if(!arg2.isUndefined()) {
arguments << arg2.toVariant();
if(!arg3.isUndefined()) {
arguments << arg3.toVariant();
if(!arg4.isUndefined()) {
arguments << arg4.toVariant();
if(!arg5.isUndefined()) {
arguments << arg5.toVariant();
if(!arg6.isUndefined()) {
arguments << arg6.toVariant();
if(!arg7.isUndefined()) {
arguments << arg7.toVariant();
if(!arg8.isUndefined()) {
arguments << arg8.toVariant();
if(!arg9.isUndefined()) {
arguments << arg9.toVariant();
if(!arg10.isUndefined()) {
arguments << arg10.toVariant();
if(!arg11.isUndefined()) {
arguments << arg11.toVariant();
if(!arg12.isUndefined()) {
arguments << arg12.toVariant();
if(!arg13.isUndefined()) {
arguments << arg13.toVariant();
if(!arg14.isUndefined()) {
arguments << arg14.toVariant();
if(!arg15.isUndefined()) {
arguments << arg15.toVariant();
if(!arg16.isUndefined()) {
arguments << arg16.toVariant(); }}}}}}}}}}}}}}}}
return qmlApply(caller, function, arguments); }
QVariant Lisp::apply(const QJSValue& caller_or_function,
const QJSValue& function_or_arguments,
const QJSValue& arguments_or_undefined) {
QObject* caller = 0;
QString function;
QVariantList arguments;
if(caller_or_function.isQObject()) {
caller = caller_or_function.toQObject();
function = function_or_arguments.toString();
arguments = arguments_or_undefined.toVariant().value<QVariantList>(); }
else if(caller_or_function.isString()) {
function = caller_or_function.toString();
arguments = function_or_arguments.toVariant().value<QVariantList>(); }
return qmlApply(caller, function, arguments); }
QT_END_NAMESPACE

View file

@ -1,60 +0,0 @@
#ifndef LIB_H
#define LIB_H
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
class Lisp : public QObject {
Q_OBJECT
public:
Q_INVOKABLE QVariant call(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
Q_INVOKABLE QVariant apply(const QJSValue&,
const QJSValue& = QJSValue(),
const QJSValue& = QJSValue());
};
class EQLPaintedItem : public QQuickPaintedItem {
Q_OBJECT
public:
EQLPaintedItem(QQuickItem* parent = 0) : QQuickPaintedItem(parent) {}
void paint(QPainter* painter) {
eql_fun("qml:paint",
Q_ARG(QQuickPaintedItem*, this),
Q_ARG(QPainter*, painter)); }
};
QT_END_NAMESPACE
#endif

View file

@ -1,17 +0,0 @@
QT += qml quick
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
DESTDIR = ./
TARGET = qml_lisp
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../../src/windows.pri)
}
HEADERS += qml_lisp.h
SOURCES += qml_lisp.cpp

View file

@ -6,7 +6,7 @@
(defun show-properties-dialog (&optional item)
"Lists all instance properties of a QML item (either a QQuickItem or an 'objectName'). If no item is passed, QML:*CALLER* will be used."
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (%sym :show :properties)
(or (if (stringp item)
(qml:find-quick-item item)

View file

@ -3,7 +3,6 @@
;;; * allows to get/set any QML property from Lisp (needs 'objectName' to be set)
;;; * allows to evaluate JS code from Lisp (needs 'objectName' to be set)
;;;
;;; (requires a C++ plugin, see "lib/")
(defpackage :qml-lisp
(:use :common-lisp :eql)
@ -26,9 +25,8 @@
(in-package :qml-lisp)
(defvar *qml-lisp* (qload-c++ "lib/qml_lisp"))
(defvar *caller* nil)
(defvar *quick-view* nil)
(defvar *caller* nil)
(defun string-to-symbol (name)
(let ((upper (string-upcase name))

View file

@ -1 +0,0 @@
//exclude "*.*"

View file

@ -3,7 +3,7 @@
#include <QtWidgets>
#include <QtWebKitWidgets>
#include <eql_fun.h>
#include <eql5/eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)

View file

@ -1,8 +1,8 @@
QT += webkitwidgets
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../src
LIBS += -L../../../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ./
TARGET = webkit_bridge
OBJECTS_DIR = ./tmp/
@ -16,5 +16,6 @@ win32 {
HEADERS += _invokables.h \
webkit_bridge.h
SOURCES += webkit_bridge.cpp

View file

@ -3,7 +3,7 @@
#include <QtGui>
#include <QtWebKit>
#include <eql_fun.h>
#include <eql5/eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)

View file

@ -1,8 +1,8 @@
QT += webkitwidgets
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ./
TARGET = webkit_bridge
OBJECTS_DIR = ./tmp/
@ -16,5 +16,6 @@ win32 {
HEADERS += _invokables.h \
webkit_bridge.h
SOURCES += webkit_bridge.cpp

View file

@ -3,7 +3,7 @@
#include <QtWidgets>
#include <QtWebKitWidgets>
#include <eql_fun.h>
#include <eql5/eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)

View file

@ -1,8 +1,8 @@
QT += webkitwidgets
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../../src
LIBS += -L../../../../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ./
TARGET = webkit_bridge
OBJECTS_DIR = ./tmp/
@ -16,5 +16,6 @@ win32 {
HEADERS += _invokables.h \
webkit_bridge.h
SOURCES += webkit_bridge.cpp

View file

@ -3,7 +3,7 @@
#include <QtWidgets>
#include <QtWebKitWidgets>
#include <eql_fun.h>
#include <eql5/eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)

View file

@ -1,8 +1,8 @@
QT += webkitwidgets
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../src
LIBS += -L../../../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ./
TARGET = webkit_bridge
OBJECTS_DIR = ./tmp/
@ -16,5 +16,6 @@ win32 {
HEADERS += _invokables.h \
webkit_bridge.h
SOURCES += webkit_bridge.cpp

View file

@ -1,5 +1,5 @@
#include "lib.h"
#include "eql_fun.h"
#include <eql5/eql_fun.h>
QT_BEGIN_NAMESPACE

View file

@ -1,7 +1,7 @@
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../src
LIBS += -L../../../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ./
TARGET = easing_curve
OBJECTS_DIR = ./tmp/
@ -12,4 +12,5 @@ win32 {
}
HEADERS += lib.h
SOURCES += lib.cpp

View file

@ -1,7 +1,8 @@
#undef SLOT
#include <ecl/ecl.h>
#include "eql.h"
#include <eql5/eql.h>
#include <eql5/eql_fun.h>
#include "main.h"
extern "C" void ini_app(cl_object);

View file

@ -2,7 +2,6 @@
#define MAIN_H
#include <QtWidgets>
#include "eql_fun.h"
QT_BEGIN_NAMESPACE

View file

@ -1,16 +1,17 @@
QT += widgets
TEMPLATE = app
TEMPLATE = app
CONFIG += no_keywords release
INCLUDEPATH += ../../../../src
LIBS += -lecl -L. -lstatic -L../../../.. -leql5
TARGET = palindrome
DESTDIR = ./
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
INCLUDEPATH += /usr/local/include
LIBS += -lecl -L. -lstatic -L/usr/local/include -leql5
TARGET = palindrome
DESTDIR = ./
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../../../../src/windows.pri)
}
HEADERS += main.h
SOURCES += main.cpp

View file

@ -1,7 +1,7 @@
TEMPLATE = lib
CONFIG += plugin release
INCLUDEPATH += ../../../../src
LIBS += -L../../../.. -leql5
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -leql5
DESTDIR = ./
TARGET = qimage
OBJECTS_DIR = ./tmp/
@ -12,4 +12,5 @@ win32 {
}
HEADERS += lib.h
SOURCES += lib.cpp

View file

@ -648,7 +648,7 @@
(if gui "" (format nil "~%#include \"../_main_~(~A~)_methods.h\"" type))
(if gui
(format nil "~%#include \"../extras.h\"~
~%#include \"../eql_global.h\"")
~%#include \"../eql5/eql_global.h\"")
(format nil "~%~A" (module-include module))))))
(let* ((n 0)
(methods (if (eql :q type) *q-methods* *n-methods*))
@ -796,8 +796,8 @@
~%#include \"_main_n_classes.h\"~
~%#include \"_main_q_methods.h\"~
~%#include \"_main_n_methods.h\"~
~%#include \"../dyn_object.h\"~
~%#include \"../eql.h\"~
~%#include \"../eql5/dyn_object.h\"~
~%#include \"../eql5/eql.h\"~
~%~
~%int LObjects::T_QAudioDeviceInfo = -1;~
~%int LObjects::T_QList_QAudioDeviceInfo = -1;~

View file

@ -16,7 +16,7 @@
(in-package :gui)
(defconstant +history-file+ (in-home "gui/.command-history"))
(defconstant +history-file+ (in-home "lib/.command-history"))
(defconstant +max-history+ 50)
(defparameter * nil)
@ -24,7 +24,7 @@
(defparameter *** nil)
(defparameter *q* nil)
(defvar *gui* (qload-ui (in-home "gui/gui.ui")))
(defvar *gui* (qload-ui (in-home "lib/gui.ui")))
(defvar-ui *gui*
*display*
@ -408,7 +408,7 @@
(defun show-properties-dialog ()
(unless (find-package :properties)
(load (in-home "gui/properties")))
(load (in-home "lib/properties")))
(funcall (find-symbol "SHOW" :properties) *q*))
(gui)

View file

@ -10,7 +10,7 @@
(in-package :properties)
(defvar *main* (qload-ui (in-home "gui/properties")))
(defvar *main* (qload-ui (in-home "lib/properties")))
(defvar-ui *main*
*meta-class-name*

View file

@ -1,11 +1,11 @@
#undef SLOT
#include <ecl/ecl.h>
#include <eql5/eql.h>
#include <QApplication>
#include <QTextCodec>
#include <QSettings>
#include <QTranslator>
#include "eql.h"
extern "C" void ini_app(cl_object);

View file

@ -1,12 +1,12 @@
QT += widgets printsupport uitools
TEMPLATE = app
TEMPLATE = app
CONFIG += no_keywords release
INCLUDEPATH += ../src
LIBS += -lecl -L. -lmy_lib -L.. -leql5
TARGET = my_app
DESTDIR = ./
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
INCLUDEPATH += /usr/local/include
LIBS += -lecl -L. -lmy_lib -L/usr/local/include -leql5
TARGET = my_app
DESTDIR = ./
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
win32 {
include(../src/windows.pri)

View file

@ -2,7 +2,7 @@
;;; This is a less convenient Slime mode using a REPL eval hook,
;;; with the advantage of running all EQL functions natively.
;;;
;;; (See "thread-safe.lisp" for the default Slime mode.)
;;; (See "../lib/thread-safe.lisp" for the default Slime mode.)
(in-package :eql)

View file

@ -1,6 +1,6 @@
// copyright (c) Polos Ruetz
#include "dyn_object.h"
#include "eql5/dyn_object.h"
#include "ecl_fun.h"
#include "gen/_lobjects.h"
#include <QMetaMethod>

View file

@ -1,8 +1,8 @@
// copyright (c) Polos Ruetz
#include "ecl_fun.h"
#include "eql.h"
#include "dyn_object.h"
#include "eql5/eql.h"
#include "eql5/dyn_object.h"
#include "gen/_lobjects.h"
#include "ui_loader.h"
#include "single_shot.h"
@ -2433,14 +2433,11 @@ cl_object qrequire2(cl_object l_name, cl_object l_quiet) { /// qrequire
/// (qrequire :network)
ecl_process_env()->nvalues = 1;
QString name = symbolName(l_name);
QString prefix, postfix;
#ifdef Q_OS_DARWIN
prefix = "lib"; postfix = ".1.dylib";
#endif
#ifdef Q_OS_LINUX
prefix = "lib"; postfix = ".so.1";
#endif
QLibrary lib(prefix + "eql5_" + name + postfix); // global library
QString fileName = "eql5_" + name;
QLibrary lib(fileName); // global library
if(!lib.load()) {
fileName.prepend("/usr/local/lib/"); // "local" might not be in library search path
lib.setFileName(fileName); }
typedef void (*Ini)();
Ini ini = (Ini)lib.resolve("ini");
if(ini) {

View file

@ -6,7 +6,7 @@
#undef SLOT
#include <ecl/ecl.h>
#include "eql_global.h"
#include "eql5/eql_global.h"
#include <QList>
#include <QUiLoader>
#include <QByteArray>
@ -304,7 +304,7 @@ struct EQL_EXPORT QtObject {
};
// for Qt_EQL
struct eql_pointer {
struct EQL_EXPORT eql_pointer {
void* pointer;
int id;

View file

@ -1,13 +1,13 @@
// copyright (c) Polos Ruetz
#include "eql.h"
#include "eql5/eql.h"
#include "ecl_fun.h"
#include "gen/_lobjects.h"
#include <QApplication>
#include <QTimer>
#include <QStringList>
const char EQL::version[] = "17.4.2"; // Apr 2017
const char EQL::version[] = "17.4.3"; // Apr 2017
extern "C" void ini_EQL(cl_object);
@ -48,7 +48,6 @@ void EQL::exec(const QStringList& args) {
bool exec_with_simple_restart = false;
QStringList arguments(args);
eval("(in-package :eql-user)");
eval(QString("(eql::set-home \"%1\")").arg(home()).toLatin1().constData());
QStringList forms;
// .eclrc
if(arguments.contains("-norc")) {
@ -79,8 +78,8 @@ void EQL::exec(const QStringList& args) {
arguments.removeAll("-qtpl");
ecl_setq(ecl_process_env(), s_qtpl, Ct);
QApplication::setQuitOnLastWindowClosed(false);
forms << "(when (directory (in-home \"src/lisp/ecl-readline.fas*\"))"
" (load (in-home \"src/lisp/ecl-readline\")))"
forms << "(when (directory (in-home \"lib/ecl-readline.fas*\"))"
" (load (x:check-recompile (in-home \"lib/ecl-readline\"))))"
<< "(qsingle-shot 500 'eql::start-read-thread)";
exec_with_simple_restart = true; }
// -qgui
@ -132,7 +131,6 @@ void EQL::exec(const QStringList& args) {
void EQL::exec(lisp_ini ini, const QByteArray& expression, const QByteArray& package) {
// see my_app example
eval(QString("(eql::set-home \"%1\")").arg(home()).toLatin1().constData());
read_VV(OBJNULL, ini);
eval(QString("(in-package :%1)").arg(QString(package)).toLatin1().constData());
eval(expression.constData()); }
@ -144,8 +142,7 @@ void EQL::exec(QWidget* widget, const QString& lispFile, const QString& slimeHoo
bool exec_with_simple_restart = false;
QStringList forms;
eval("(in-package :eql)");
forms << QString("(set-home \"%1\")").arg(home())
<< QString("(defvar *qt-main* (qt-object %1 0 (qid \"%2\")))")
forms << QString("(defvar *qt-main* (qt-object %1 0 (qid \"%2\")))")
.arg((quintptr)widget)
.arg(QString(LObjects::vanillaQtSuperClassName(widget->metaObject())))
<< QString("(export '*qt-main*)")

View file

@ -6,12 +6,12 @@
#undef SLOT
#include <ecl/ecl.h>
#include <eql5/dyn_object.h>
#include <eql5/eql_global.h>
#include <QObject>
#include <QByteArray>
#include <QStringList>
#include <QCoreApplication>
#include "dyn_object.h"
#include "eql_global.h"
QT_BEGIN_NAMESPACE

View file

@ -1,20 +1,20 @@
QT += widgets printsupport uitools
TEMPLATE = app
CONFIG += no_keywords release
INCLUDEPATH += ../src /usr/local/include
LIBS += -lecl -leql5 -L.. -L/usr/local/lib
TARGET = eql5
DESTDIR = ../
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
QT += widgets printsupport uitools
TEMPLATE = app
CONFIG += no_keywords release
INCLUDEPATH += ../src /usr/local/include
LIBS += -lecl -leql5 -L.. -L/usr/local/lib
TARGET = eql5
DESTDIR = ../
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
QMAKE_RPATHDIR = /usr/local/lib
target.path = /usr/local/bin
INSTALLS += target
win32 {
include(windows.pri)
}
win32 {
CONFIG += console
}
SOURCES += main.cpp

View file

@ -1,13 +1,18 @@
QT += widgets printsupport uitools
TEMPLATE = lib
CONFIG += dll no_keywords release
DEFINES += EQL_LIBRARY
INCLUDEPATH += /usr/local/include
LIBS += -lecl -lini -L. -L/usr/local/lib
TARGET = eql5
DESTDIR = ../
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
QT += widgets printsupport uitools
TEMPLATE = lib
CONFIG += dll no_keywords release
DEFINES += EQL_LIBRARY
INCLUDEPATH += /usr/local/include
LIBS += -lecl -L. -lini_eql5
TARGET = eql5
DESTDIR = ../
OBJECTS_DIR = ./tmp/
MOC_DIR = ./tmp/
include.files = eql5/*
include.path = /usr/local/include/eql5
target.path = /usr/local/lib
INSTALLS = include target
win32 {
include(windows.pri)
@ -18,15 +23,15 @@ HEADERS += gen/_lobjects.h \
gen/_main_n_classes.h \
gen/_main_q_methods.h \
gen/_main_n_methods.h \
eql_fun.h \
eql5/eql.h \
eql5/eql_fun.h \
eql5/eql_global.h \
eql5/dyn_object.h \
qt_eql.h \
dyn_object.h \
ui_loader.h \
single_shot.h \
eql_global.h \
ecl_fun.h \
extras.h \
eql.h
extras.h
SOURCES += gen/_lobjects.cpp \
qt_eql.cpp \

View file

@ -5,8 +5,8 @@
#include "_main_n_classes.h"
#include "_main_q_methods.h"
#include "_main_n_methods.h"
#include "../dyn_object.h"
#include "../eql.h"
#include "../eql5/dyn_object.h"
#include "../eql5/eql.h"
int LObjects::T_QAudioDeviceInfo = -1;
int LObjects::T_QList_QAudioDeviceInfo = -1;

View file

@ -4,7 +4,7 @@
#undef SLOT
#include <ecl/ecl.h>
#include "../eql_global.h"
#include "../eql5/eql_global.h"
#include "../ecl_fun.h"
#include <QtWidgets>
#include <QtPrintSupport>

View file

@ -7,7 +7,7 @@
#include <QtWidgets>
#include <QtPrintSupport>
#include "../extras.h"
#include "../eql_global.h"
#include "../eql5/eql_global.h"
QT_BEGIN_NAMESPACE

View file

@ -7,7 +7,7 @@
#include <QtWidgets>
#include <QtPrintSupport>
#include "../extras.h"
#include "../eql_global.h"
#include "../eql5/eql_global.h"
QT_BEGIN_NAMESPACE

View file

@ -3,7 +3,7 @@
#include "_ini.h"
#include "../_lobjects.h"
#include "../../eql.h"
#include <eql5/eql.h>
#include <QtGui>
QT_BEGIN_NAMESPACE

View file

@ -3,7 +3,7 @@
#include "_ini.h"
#include "../_lobjects.h"
#include "../../eql.h"
#include <eql5/eql.h>
#include <QtGui>
QT_BEGIN_NAMESPACE

View file

@ -3,7 +3,7 @@
#include "_ini.h"
#include "../_lobjects.h"
#include "../../eql.h"
#include <eql5/eql.h>
#include <QtGui>
QT_BEGIN_NAMESPACE

View file

@ -2,8 +2,9 @@
#define INI2_H
#include "_ini.h"
#include "qml_lisp.h"
#include "../_lobjects.h"
#include "../../eql.h"
#include <eql5/eql.h>
#include <QtGui>
QT_BEGIN_NAMESPACE
@ -25,7 +26,8 @@ void ini2() {
META_TYPE_(LObjects::T_QQmlProperty, QQmlProperty)
META_TYPE_(LObjects::T_QQmlScriptString, QQmlScriptString)
META_TYPE_(LObjects::T_QList_QQmlError, QList<QQmlError>)
META_TYPE_(LObjects::T_QList_QQuickItem, QList<QQuickItem*>) }
META_TYPE_(LObjects::T_QList_QQuickItem, QList<QQuickItem*>)
iniQml(); }
void* toMetaArg(int n, cl_object l_arg, bool* found) {
void* p = 0;

View file

@ -6,7 +6,7 @@ static Lisp* lisp = 0;
static QObject* lisp_provider(QQmlEngine*, QJSEngine*) { return lisp; }
QObject* ini() {
QObject* iniQml() {
if(!lisp) {
lisp = new Lisp;
qmlRegisterSingletonType<Lisp>("EQL5", 1, 0, "Lisp", lisp_provider);

View file

@ -1,19 +1,18 @@
#ifndef LIB_H
#define LIB_H
#ifndef QML_LISP_H
#define QML_LISP_H
#include "../../ecl_fun.h"
#include "../../qt_eql.h"
#include <QtQml>
#include <QQuickPaintedItem>
#include <eql_fun.h>
#ifdef Q_CC_MSVC
#define LIB_EXPORT __declspec(dllexport)
#else
#define LIB_EXPORT
#endif
QT_BEGIN_NAMESPACE
extern "C" { LIB_EXPORT QObject* ini(); }
#define Q_PTR(type, var) (eql_check_type(var.value<eql_pointer>().id, #type) \
? (type)var.value<eql_pointer>().pointer \
: 0)
QObject* iniQml();
class Lisp : public QObject {
Q_OBJECT

Some files were not shown because too many files have changed in this diff Show more