Commit graph

15 commits

Author SHA1 Message Date
therecipe
0506a9f95d re-gen and make the cgo-less version the default one
This commit replaces the default (cgo) binding with a cgo-less one, which was generated by setting "QT_GEN_GO=true" prior running qtsetup.

The cgo-less version is still experimental and also lacking integration with most of the advanced features provided by qtmoc and qtrcc, but it should already be sufficiently stable and cover a great part of the basic features.

The intention for these changes are to simplify and speedup onboarding of new users, speedup development circles of existing users, simplify the usage of this package in a go module context and also to have the portable therecipe/qt runtime (http://github.com/therecipe/box) tested more broadly.

Also since this version removes all dependencies on cgo, one is now able to "go get" an project that makes use of therecipe/qt like this: ("go get -ldflags="-w" github.com/therecipe/examples/basic/widgets && $(go env GOPATH)/bin/widgets") without any additional requirements.
2020-08-17 19:25:49 +02:00
therecipe
7f61353ee7 add support for haxe and swift + fix interop stack overflow issue
* fix unsafe pointer arithmetic issues
2020-07-01 22:05:31 +02:00
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
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
e9f3046c76 new (*QObject).ConnectSignal function + new fedora docker image
* new docker images to make it easier to deploy to "embedded" armv6/armv7/arm64 systems such as Raspberry Pi, Orange Pi, Banana Pi, BeagleBone, BeagleBoard, ODROID, Asus Tinker Board, ...
2019-10-06 22:14:18 +02:00
therecipe
5aa0dd4260 fix static linux deployment issue + re-add various QWebEnginePage/View functions
* make changes from 38467ad2 available for js/wasm as well
2019-09-03 18:23:46 +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
01e05b1d5c support for the uic
* fix faulty dealloc
* fix qtminimal issue
* fix windows 32 bit deployment issue
* update sailfish docker image
2019-05-06 23:55:31 +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