Commit graph

69 commits

Author SHA1 Message Date
polos
9738cdad85 'Qt_EQL': in 'EQL::addObject' / 'define-qt-wrappers': also add methods of all super classes; make lispifying C names optional; 2021-06-14 20:13:15 +02:00
polos
4f75551971 add third argument to 'EQL::addObject' to call 'define-qt-wrappers' 2021-05-11 09:48:00 +02:00
polos
2156ea501f add convenience function EQL::addObject() for adding Qt class instances as Lisp variables 2021-05-09 17:31:43 +02:00
polos
44056e0853 add 'cl_shutdown()' in destructor of class EQL 2021-04-30 16:09:01 +02:00
polos
0871e751fa revision of Sailfish ini 2021-03-25 10:38:50 +01:00
polos
8e0a6a6e0c add QML ini for SailfishOS 2021-03-14 16:32:08 +01:00
polos
799cc1de36 replace deprecated ECL C names; revisions; integrate QML into the library ('qml-lisp.lisp' is obsolete now); 2021-03-13 16:03:09 +01:00
polos
8d3bc5234f add fast, direct (low-level) JS function calls for QML 2021-03-08 21:04:21 +01:00
polos
ac63828762 restore default debug behavior with command line option -qtpl 2020-12-07 22:39:35 +01:00
polos
c70380b4d2 re-arrange 'si_safe_eval' code for MSVC compilers 2020-11-28 11:29:42 +01:00
Bernd Wachter
e41ee54d21 Add optional error handling to si_safe_eval
Currently eql5 has a tendency to deadlock when encountering errors,
especially when executing scripts. The problem is that si_safe_eval
when called without a return flag expects to have errors handled in a
debugger, which does not exist in this case. As a result the lisp
runtime dies, while the code moves on to starting the Qt event loop
with nothing to control it.

This change introduces three flags to control the error handling
behaviour for eval:

- DebugOnError expects a debugger to be there, which is the old
  behaviour. It can be restored by passing -debug-on-error to eql5
- LogOnError will log about the error, but does not handle it. This is
  mainly a placeholder for better error handling in the future -
  without error handling this also results in a deadlock.
- DieOnError is the new default, which logs the code leading to the
  error, and exits with an error code.

Another patch should expose those flags to the Lisp runtime, and make
the error behaviour configurable both at initializing EQL from C++ and
later on during runtime.

A drawback of this change that we only get to see the the expression
triggering the error, not the actual error - that one is thrown away
by safe-eval:
                             #'(lambda (condition)
                                 (declare (ignore condition))
                                 (return-from safe-eval err-value))

I still feel for working with eql5 this is an overall
improvement. Next steps on this issue should include:

- either provide debugger hooks, or override invoke-debugger to behave
  more sensibly
- possibly override/provide a custom variant of safe-eval to print the
  error before returning
- check a few locations to set more sensible defaults, i.e. if
  somebody just runl eql5 without a script they'd probably want to end
  up in the debugger on errors.
2020-11-13 01:11:48 +02:00
Bernd Wachter
b85c3895b8 Allow passing argc to EQL::ini
Current implementation only passes in the first element of argv,
breaking command line argument parsing in scripts executed by eql5.

The eql5 binary now passes all arguments, while custom code can chose
the old or new behaviour, depending on which ini form is used.
2020-11-11 11:32:50 +02:00
polos
ca22ff0254 add convenience function '(eql:qml)' for auto generating vars according to QML item's 'objectName'; bump version number; 2020-07-24 11:45:01 +02:00
polos
680f4cf6ed add missing type QList<QHostAddress> (module :network) 2020-05-07 11:51:30 +02:00
polos
eb9eba1869 new version number 19.9.1: modules can now be integrated statically (needed for iOS; for experts only!) 2019-09-28 10:25:49 +02:00
polos
b2c280bed4 make 'eql5' executable independant from source installation (e.g. for eql5 -qgui, Slime) 2019-02-27 21:47:39 +01:00
polos
36232f6d37 change/fix long name of 'qrun' to 'qrun-on-ui-thread' (erroneously called 'qrun-in-gui-thread') 2018-02-24 11:08:38 +01:00
polos
0f0cbedb86 revision of 'qlog' (for EQL5-Android); tiny revision; 2018-01-27 17:17:28 +01:00
polos
7b8aba492d add function 'qlog' for android logging (EQL5-Android only) 2018-01-24 18:29:28 +01:00
polos
8ffe0bc0a4 change modules from 'dll' to 'plugin'; macOS: search plugin in bundle; 2017-10-04 07:58:47 +02:00
polos
fef57f5447 build wrapper functions by default (no more optionally) 2017-09-14 13:17:44 +02:00
polos
2814efdfaf slight change to wrapper functions (for easier cross-compiling to Android) 2017-07-06 13:38:06 +02:00
polos
1b3ef77336 set version number to 17.6.1 2017-06-30 16:59:40 +02:00
polos
44c48ca563 review 'eql5.pro' 2017-05-07 08:52:29 +02:00
polos
7ddb30afc2 remove obsolete EQL::home() 2017-04-29 09:02:40 +02:00
polos
a7474cd78e add 'eql5.pro' for simpler build process 2017-04-28 16:07:52 +02:00
polos
71bc1d3525 unix: add "make install" option for exe, lib, modules (refactor file locations) 2017-04-28 12:05:59 +02:00
polos
dacd05957d some modifications to easier build on OSX 2017-04-26 11:19:00 +02:00
polos
afd381467d small revision; new version number (clang support); 2017-04-20 22:21:14 +02:00
polos
c334036d87 fix FunctorOrLambda type handling 2017-03-27 15:38:03 +02:00
polos
64da2454ed review module :webengine, adding Qt/Lisp meta type for FunctorOrLambda 2017-03-26 18:51:33 +02:00
polos
d45616d23a fix wrapper function names from module :webengine 2017-03-25 20:33:00 +01:00
polos
64d140c8e3 add module :webengine (tested with Qt 5.8) 2017-03-25 17:03:58 +01:00
polos
0ad3c10f40 add QML example "table-view"; some revisions; 2017-03-19 00:16:31 +01:00
polos
1f880635e4 add function X:CHECK-RECOMPILE, to automatically recompile "slime/thread-safe.lisp" on every version change (ECL/Qt5/EQL5) 2017-02-17 11:32:51 +01:00
polos
2f67ce73b4 extend QSELECT / QSEL to work with QML items; revision of property dialog; small revisions; 2017-02-16 17:24:08 +01:00
polos
2c288a5f31 fix function QPROPERTIES*; update docu; extend "gui/properties.lisp" for QML; fix QAPROPOS inverse sorting; 2017-02-14 00:22:37 +01:00
polos
733cc55033 add function QPROPERTIES* for QQuickItems (for QML defined properties); some revisions; 2017-02-13 10:59:09 +01:00
polos
919005a21c add GC (using ECL finalizer) to return values from QOVERRIDE; add note in "abstract-model.lisp"; 2017-02-11 11:27:25 +01:00
polos
d80096d947 new version number (got rid of JS glue in "quick") 2017-02-07 10:35:35 +01:00
polos
21120a77b7 remove things that won't let us compile with Qt 5.5.1 on Windows 2017-02-06 21:30:41 +01:00
polos
376b7caed4 add examples in "quick/item-model"; lots of minor revisions; 2017-02-01 16:36:18 +01:00
polos
2aee9968c6 "quick": rename "Lisp.fun()" to "Lisp.call()"; allow optionally passing JS "this" (a QQuickItem) as first argument; 2017-01-26 20:37:44 +01:00
polos
feddd49e1e fix recently introduced bug (meta arg handling of reference types) 2017-01-25 01:19:14 +01:00
polos
0f0b5a1a1a add "eql5.js" to compiled eql5 lib resources; add class QResource; 2017-01-24 23:29:35 +01:00
polos
d2d86849ce fix return value of QVARIANT-VALUE to work with QT-OBJECTs 2017-01-22 11:24:01 +01:00
polos
b33a987248 add new function QVARIANT-FROM-VALUE, needed in QML:QML-SET ("quick" examples) 2017-01-21 22:40:08 +01:00
polos
c7cefd839c add example "quick/Tic-Tac-Toe"; lots of minor revisions; 2017-01-19 02:02:30 +01:00
polos
03c7a5ded5 fix and improve "qml-lisp" example; allow nested QVariantLists (JS arrays in QML); 2017-01-17 10:13:45 +01:00
polos
dfccd7eb17 add module :quick (quick, quickwidgets, qml) plus an example; lots of small revisions; 2017-01-16 12:00:00 +01:00