Commit graph

85 commits

Author SHA1 Message Date
therecipe
311f7132d9 various qtbox related fixes 2020-08-27 18:35:50 +02:00
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
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
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
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
c97efc221f fix nativeEvent functions + various fixes for minor issues 2019-03-22 20:48:57 +01: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
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
7a6e675e64 revert some changes made with 299f210 2018-04-21 00:45:20 +02:00
therecipe
6d191b17a3 fix const issue + new examples + new sia showcase 2018-03-21 18:22:29 +01: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
7840b778c3 fix invokeMethod signature errors 2017-08-18 00:08:07 +02:00
therecipe
846da6efa0 cleanup callback functions 2017-07-18 00:35:33 +02:00
therecipe
9127474fe4 fix msys2 shared + webkit support + fix for 5.9.1 2017-07-13 17:04:51 +02:00
therecipe
0f99eb634c initial inclusion of vagrant + register missing std types for moc 2017-07-11 23:33:08 +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
9720239949 msys2 + qtrcc + docker fixes 2017-06-16 23:51:36 +02:00
therecipe
404e54013b fixes for 5.9 + qml related qtmoc fixes 2017-06-10 21:37:03 +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
06a1fd8bdf fix destroyed signals 2017-05-30 23:01:01 +02:00
therecipe
d9ade1b5be fix poly issue 2017-05-07 19:31:28 +02:00
Kenneth Shaw
567a430704 Dropping exec permissions on files 2017-04-12 15:21:13 +07:00
therecipe
9b7d566d6d add missing qmlRegisterType function 2017-04-05 17:13:51 +02:00
therecipe
b2418c2c22 partially fix constructors with polymorphic inputs 2017-03-20 18:33:55 +01:00
therecipe
8fc476c30c fix connect functions 2017-03-10 17:40:29 +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
3456e5280a initial support for generic lists / containers 2017-01-27 20:22:58 +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