Commit graph

113 commits

Author SHA1 Message Date
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
6e660afb3d fix go module related docker deployment issue + hide env patch fallback warning for non go module dev on macOS + fix docker images 2019-11-10 19:46:04 +01:00
therecipe
79e83fbcfd make it possible to use NewQVariant1 + (*QVariant).ToGoType to convert a Go object to an QVariant and vice versa
* support a few more QVariant + QJSValue functions
* support for QWebEngineProfile + QJSValueIterator
* docker deployments now automatically uses the pinned tooling version for projects making use of go modules
* bump Go version for docker images to 1.13.4
2019-11-01 23:45:04 +01:00
therecipe
98ccee3b6f fix qtrcc issue + skip initEnv for docker deployments 2019-10-10 19:41:53 +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
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
89b7941f48 overall deployment speedup and size reduction
* various fixes for js/wasm ([]byte support, quickcompiler support, moc fixes)
* docker go modules support
* android arm64 support
* hide rarely used dependencies behind build flags
* various minor fixes
2019-05-13 20:37:59 +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
9f97258ffe support for quickcompiler + minor cleanup + qtmoc speedup 2019-05-01 02:39:02 +02:00
therecipe
27fd3fea5f fix docker builds + reduce go module encapsulation + make setup more portable 2019-04-21 01:03:23 +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
be7a7d5463 new static linux docker image + add qtsetup failfast flag + minor fix for docker deployments 2019-04-07 00:31:32 +02:00
therecipe
3dab3e932d replace golang.org/x imports with github.com/golang again + fix arch docker image 2019-03-27 02:27:55 +01:00
therecipe
6803925396 replace golang.org/x imports with github.com/golang 2019-03-26 23:29:06 +01:00
therecipe
c97efc221f fix nativeEvent functions + various fixes for minor issues 2019-03-22 20:48:57 +01:00
therecipe
be468a4be7 more fixes for go modules 2019-01-21 19:28:43 +01:00
therecipe
c2993933fe change default env symlink path on windows + fix docker wine images + new example 2018-12-22 23:42:14 +01:00
therecipe
49d1c9b84e initial support for the windows desktop env + fix windows qml deployment issues 2018-12-22 19:25:34 +01:00
therecipe
3d04e41a82 fix desktop env related issues 2018-12-21 02:11:22 +01:00
therecipe
a790897844 the tooling now supports the pkg path format + initial support for the go get-able desktop env
these changes should make the life of all newly incoming developers (or consumers of applications build with this binding) way easier

all one needs to do now is to install Git, Go and an C/C++ compiler then the binding can be setup by running:
go get -v github.com/therecipe/qt/cmd/... && $(go env GOPATH)/bin/qtsetup

or if one is only interested in building a specific application:
go get -v github.com/therecipe/qt/cmd/... && $(go env GOPATH)/bin/qtdeploy test desktop github.com/therecipe/examples/basic/widgets

for this to work, the tooling now recognizes a pkg path and "go gets" the package if necessary

beside these changes, the deployed binaries are now properly stripped on linux and console debugging is now enabled by default on windows
2018-12-20 22:26:22 +01:00
therecipe
179fefb5f9 refine module support 2018-12-18 20:22:12 +01:00
therecipe
86108509bd initial support for go modules 2018-12-17 18:56:35 +01:00
therecipe
5251d3454c fix for go module support + fix readData memory leak + fix docker wine support 2018-12-16 20:54:28 +01:00
therecipe
9885bf8662 fix for js/wasm + make fast deployments possible for js/wasm docker images 2018-11-18 04:08:14 +01:00
therecipe
c2524f50a5 breaking changes: make *bool usable
+ various fixes for js/wasm
+ fix QT_DEBUG_QML for android(-emulator)
+ make os.Args usable in android(-emulator) and ios(-simulator)
2018-11-12 18:38:23 +01:00
therecipe
308a4f1aa8 various changes for js/wasm 2018-11-06 18:16:33 +01:00
therecipe
70c935202e fixes for various minor issues + webassembly support 2018-10-30 16:53:05 +01:00
therecipe
f3ae350b57 fix qtdeploy fast flag + update mxe docker images to Qt 5.11.1 2018-08-18 16:55:15 +02:00
therecipe
41dadd489d minor cleanup + fix signal/slot error type issue 2018-07-23 22:18:06 +02:00
therecipe
491342284b initial support for the js target 2018-06-09 02:31:50 +02:00
therecipe
7038382d6c fix minor qtrcc issue 2018-04-30 22:56:13 +02:00
therecipe
b95c8155e7 add comply and dynamic flags + syntactic sugar for moc structs 2018-04-07 21:05:41 +02:00
therecipe
599f8bc2c9 fix windows docker issue + new slow flag for qtmoc 2017-09-25 19:11:52 +02:00
therecipe
0f99eb634c initial inclusion of vagrant + register missing std types for moc 2017-07-11 23:33:08 +02:00
therecipe
7ca03f7c28 qtdeploy iOS simulator device flag 2017-07-01 00:29:11 +02:00
therecipe
4db4e9c202 misc changes
recursive dependency resolution for qtrcc
fix ci qtmoc issue
support for fluid + demo
support for kirigami + demo
init files for c++ modules
new webkit 5.8.0 *.index file
2017-05-28 20:43:28 +02:00
therecipe
ca652e24be build tag support for qtmoc/qtminimal + new sql/masterdetail_qml example 2017-05-16 00:06:35 +02:00
therecipe
8ab2d91209 add tags flag to qtdeploy 2017-05-03 03:16:05 +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
6d11509f78 add support for the WebKit module 2017-04-10 23:38:26 +02:00
therecipe
88938f41fe update the readme + preparations for Qt 5.9.0 2017-04-08 19:46:06 +02:00
therecipe
a0460f5a46 selfstanding docker setup 2017-03-23 21:06:55 +01:00
therecipe
067db73d52 new webchannel examples 2017-03-18 17:15:46 +01:00
therecipe
b144b9ffd3 several fixes + rpi docker images 2017-03-17 21:36:32 +01: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
b07306acc2 further qmake related changes + more refactoring 2017-03-10 22:54:09 +01:00
therecipe
256c681ec8 further preparations for qmake + pre-build openssl for docker 2017-02-26 22:03:27 +01:00
therecipe
a15e5055c5 preparation for qmake + new update mechanism + qtmoc fix 2017-02-24 22:53:17 +01:00