Commit graph

66 commits

Author SHA1 Message Date
therecipe
4e7b8703b1 initial commit of the interop engine + new flutter module + fixes for minor issues
this commit introduces the new experimental `interop` module, which is used to allow the use of `therecipe/qt` from languages other than go or javascript.
as a start, there was support for the dart language added (currently only in combination with a custom flutter embedder engine, but plain dart support should follow soon).
the interop module makes great use of the qml/js interop functions and logic that were written to make `https://github.com/therecipe/entry` possible.
additional languages that are planned to be supported in the near future are: swift, kotlin and haxe (maybe with support for the c#, python and java targets, but if this isn't possible in some clean way then these languages will receive standalone bindings as well).
people using `therecipe/qt` from these new languages should then be able to use flutter (and dart) in combination with qt (and go/js) through this binding and also be able to easily communicate across the language barriers with the help of the interop functions.
the interop engine theoretically also makes a cgo-less `therecipe/qt` usage possible, which could be used to workaround the ever growing annoyances that are experienced when using cgo projects in combination with go modules.
the code for the custom flutter embedder that was created to make the flutter/dart binding work can be found in the `flutter` module. it currently only supports debug builds for the desktop targets, but if there is enough interest, then it shouldn't be too difficult to make release builds there, and on the mobile targets work as well (or even on "embedded" systems such as an raspberry pi for that matter).
an example repo how to use the new flutter/dart binding, will be published in the next few days.
2020-06-01 21:40:46 +02:00
therecipe
aa8a227277 even more changes related to the js binding + fixes for Qt 5.14
* support for static darwin docker deployments
2019-12-21 17:42:05 +01:00
therecipe
0cc82d7b2f more changes related to the js binding 2019-12-12 20:47:54 +01:00
therecipe
6dbef71d44 various changes related to the js binding 2019-12-10 17:08:50 +01:00
therecipe
47559b8cfa fixes for various potential memory leaks
* speedup js binding generation + minor js related fixes
* support for private quickcontrols2 classes with `QT_GEN_QUICK_EXTRAS=true`
* fix for static linux deployment issue
* minor example updates
* fix for minor qtmoc docker related issue
2019-11-28 18:42:54 +01:00
therecipe
3738bb9320 greatly extend the Go <-> Qml/JS interoperability
These changes introduce two new functions called (*qml.QJSEngine).NewGoType and (*qml.QJSEngine).ToGoType, that can be used (similiar to how core.NewQVariant1 and (*core.QVariant).ToGoType can be used) to convert Go objects and functions to *qml.QJSValues and vice versa.
This allows for a more natural communication between Go and Qml/JS and makes it possible to simply pass a Go structs to Qml/JS and then call Go methods on that object.
For this to work, the object passed to Qml/JS needs to implement the `Pointer() unsafe.Pointer` and `SetPointer(unsafe.Pointer)` functions atm.
Which means, since all Qt classes already implement these functions, that you can now use the whole binding from Qml/JS as well and theoretically create a full Qt application inside an QJSEngine as well. A few example applications almost entirely written in JS can be found here: https://github.com/therecipe/examples/tree/master/js/
Furthermore, the `widgets_playground` example (https://github.com/therecipe/widgets_playground) now fully works on desktop and mobile targets as well.

other changes:
* core.NewQVariant1 and (*core.QVariant).ToGoType now recognize json tags
* workaround for qtmoc issue related to named imports
* speed-up go module android docker deployments
* fix webengine related qtdeploy bug on macOS
* fix int overflow issue for arm docker images
* fix js docker images
2019-11-17 18:05:18 +01:00
therecipe
6c3ac91945 declare various additional metatypes 2019-10-14 20:30:44 +02:00
therecipe
46e554d25d fix go module related issues + re-add various functions 2019-09-14 19:07:15 +02:00
therecipe
7a4e353ce4 re-add missing QMetaObject class 2019-08-20 17:50:05 +02:00
therecipe
9e0d301216 breaking changes: bump default Qt version to 5.13.0
* fixes for Go 1.13 + retain go module 1.12 GOPATH behavior for internal/examples
* update docker images to 5.13.0
* new docker images (windows_64_shared_512, linux_512, darwin_512)
* update examples to match the Qt 5.13 api
* bump android minSdkVersion to 21 (5.0 / lollipop)
* bump OpenSSL version for android docker deployments to 1.1.1a
* let the binding use the 513 env by default

you can use QT_VERSION=5.12.0 and/or QT_API=5.12.0 to keep the binding backward compatible with your code
just setting QT_API=5.12.0 alone should also be sufficient to keep docker deployments working
if you did install an official Qt version then just set the correct QT_VERSION and procede as usual
2019-06-27 22:16:04 +02:00
therecipe
eedf008a49 fix []string issue + fix docker images + add fcitx plugin to linux images 2019-05-23 00:17:16 +02:00
therecipe
79b8fae1a7 breaking changes: support *long + change internal qt.{Connect,Get,Lend}Signal signature
* various minor fixes and cleanups
* support interface{} returns for js/wasm
* fix android builds on darwin
* support for the virtualkeyboard module
* fixes for docker image builds
* cleanup callback handling
* fix possible moc memory leaks
* new virtualkeyboard examples
2019-04-20 19:34:45 +02:00
therecipe
47435cc1dd various fixes for wasm, raspberry, go 1.12 and minor issues + initial support for Felgo (former V-Play)
* js/wasm GOCACHE fix for Go 1.12+
* make use of the official Go 1.12 wasm build and replace js.NewCallback with js.FuncOf
* update docker images to Go 1.12.4
* revive raspberry images
* fix raspberry related bundling issue
* add the multimedia module to the raspberry images
* fix raspberry related QT_API issue
* remove unecessary *char to []byte copy overhead in some unlikely cases
* fix Qt install script
* initial partially support for Felgo (former V-Play) on darwin
* fix charts/audio example and darwin
* fix common/widgets_demo example on iOS (issue #451)
* fix widgets/renderer memory leak
* fix possible QT_PKG_CONFIG + QT_VERSION race condition
* fix static linux docker image
2019-04-16 18:28:55 +02:00
therecipe
b09bb04a61 breaking changes: some functions accept []byte now
this is the start of series of a few incrementally breaking changes, mainly started to remove the uneccessary conversion of []byte to string or vice versa on your side
the few functions accepting *string will also be affected the future
functions generated by qtmoc are not affected
2018-12-18 20:54:43 +01:00
therecipe
5746a84fb2 support for Qt 5.12
* use clang for android builds
* official windows builds are 64 bit now
2018-12-17 01:52:29 +01:00
therecipe
308a4f1aa8 various changes for js/wasm 2018-11-06 18:16:33 +01:00
therecipe
2df4248fbc fixes for several bugs + change js string conversion + fix showcase example 2018-07-11 16:42:34 +02:00
therecipe
5355937d17 more fixes for 5.11.1 + split js image again + fix sailfish image 2018-06-26 17:34:11 +02:00
therecipe
299f21022a cgo fix for Go 1.10 + fixes for various memory leaks + fix homebrew support 2018-03-19 20:54:58 +01:00
therecipe
a76e708146 update to Qt 5.10.0 + support for Go 1.10 2018-01-17 20:38:03 +01:00
therecipe
4fbdae21b3 fix android ptr issue + mxe win 64 docker issue + remove warnings for msys2 and pkg-config 2017-07-28 22:07:13 +02:00
therecipe
846da6efa0 cleanup callback functions 2017-07-18 00:35:33 +02:00
therecipe
7d84ab4f7b fix packed string issue + qtmoc isBool issue 2017-06-21 17:32:20 +02:00
therecipe
c6cb74d45e support for strings containing null bytes + fix docker file ownership 2017-06-20 22:43:48 +02:00
therecipe
9470f7dba3 android jni related fixes + clear finalizers upon destroy + qtmoc fix 2017-06-09 01:47:53 +02:00
therecipe
35143f319a fix destructors 2017-06-02 16:18:30 +02:00
therecipe
9b0ed9da10 constructor support for objects instantiated in qml 2017-05-31 15:05:10 +02:00
therecipe
d0787d4a4d support for android-emulator + minor qtmoc fix 2017-04-17 19:21:21 +02:00
Kenneth Shaw
567a430704 Dropping exec permissions on files 2017-04-12 15:21:13 +07:00
therecipe
1c2fcd441f breaking changes; make use of qmake + drop legacy code
The cgo files are now generated by parsing the Makefiles generated by
qmake.
This greatly simplifies the support for additional targets, and also
removes the need to maintain extra backward and forward compatibility
code.

But these (backend) changes needed to come along with some breaking
changes to the (fontend) tooling.
So there is now the need to always specify the target when you use
qtmoc, qtrcc or qtminimal.

Some other minor breaking changes were:
The moc and rcc files are not automatically removed anymore by qtdeploy.
Because qtdeploy now has a -fast flag to make used of these cached
files.

The use of docker is now specified by using the -docker flag.

And the docker images were renamed to make their use case more clear.
2017-03-16 20:18:32 +01:00
therecipe
70f198d247 fix connect functions, dynamic mxe lookup, futher qmake related changes 2017-03-02 19:24:25 +01:00
therecipe
4e702e0d6e fix missing header for minimal builds + change empty string behaviour 2017-02-21 14:13:05 +01:00
therecipe
177d16c013 new webview module + example + more subnamespace functions 2017-02-17 18:55:39 +01:00
therecipe
3efb5f57e8 removed unnecessary overridden functions 2017-02-15 17:48:35 +01:00
therecipe
9cb2c840ec initial update to Qt 5.8 + breaking changes + new speech module
1. the qt api changed in various places
2. dropped the "_minimal" suffix for the deployment folders
3. to keep using older versions of Qt (5.7.1 for example), one would
now need to explicit export "QT_VERSION=5.7.1" and also
"QT_DIR=/path/to/Qt5.7.1"
2017-02-10 18:18:44 +01:00
therecipe
580d22b6fb initial support for qtmoc constructors + new androidextras exception functions 2017-01-22 18:34:39 +01:00
therecipe
aa03aa56d5 cleanup + refactor 2017-01-18 19:28:40 +01:00
therecipe
6f05f39db9 minor cleanup 2017-01-14 00:36:20 +01:00
therecipe
a38697d6be support the readData function 2017-01-11 16:18:44 +01:00
therecipe
4afb83f930 partial support of generic containers 2016-11-15 23:07:05 +01:00
therecipe
2ac66d2373 remove (QByteArray == string) + better primitive conversion 2016-11-09 19:31:25 +01:00
therecipe
a1debde078 remove and ignore cgo_* files 2016-10-21 22:09:16 +02:00
therecipe
c0d3e45458 support homebrew on macOS + update ci + new debug logger 2016-10-20 03:25:57 +02:00
therecipe
57b3c13a82 support for pkg-config on linux 2016-10-14 19:06:35 +02:00
therecipe
568a1bf3eb fix qstring whitespace bug on linux 2016-10-13 17:14:49 +02:00
therecipe
2e41f3bfab env vars for deps + fix static link order + amd64 ios-sim + buildtags + winextras + x11extras 2016-10-04 18:12:55 +02:00
therecipe
b852f4e706 support for raspberry pi + update readme 2016-09-16 19:56:36 +02:00
therecipe
7bcd38cd53 fix signal table cleanup 2016-08-26 15:33:11 +02:00
therecipe
2f211fcbb9 fix signal table lookup 2016-08-24 17:00:49 +02:00
therecipe
57465bf582 fix memory leaks + more primitives + cleanup 2016-08-23 22:51:01 +02:00