Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kdablabs/dart-qtbindings
Proof of concept Dart bindings for Qt
https://github.com/kdablabs/dart-qtbindings
Last synced: about 8 hours ago
JSON representation
Proof of concept Dart bindings for Qt
- Host: GitHub
- URL: https://github.com/kdablabs/dart-qtbindings
- Owner: KDABLabs
- License: mit
- Created: 2024-04-09T13:54:10.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-09T13:59:41.000Z (9 months ago)
- Last Synced: 2024-04-09T17:56:04.285Z (9 months ago)
- Language: C++
- Size: 994 KB
- Stars: 0
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dart-qtbindings
This is a proof of concept of Qt bindings for Dart.
The goal is only to showcase the C++ binding generator for Dart, Dartagnan.
There's no intention in creating production ready Qt bindings.![dart-qtbindings](qtbindings.png)
# Build
```bash
cmake .
cmake --build .
```You now have a Qt bindings library: `generated/QtDartBindings/libQtDartBindings.so`
These are the C wrappers produced by our dart generator.# Run
`libQtDartBindings.so` needs to be in your library path, so edit PATH (Windows), LD_LIBRARY_PATH (Linux)
or DYLD_LIBRARY_PATH(macOS). On mac you'll need to disable system integrity protection though.Or alternatively, edit:
```bash
generated/QtDartBindings/dart/lib/Bindings.dart: _dylib = ffi.DynamicLibrary.open('libQtDartBindings.so');
```and use an hardcoded absolute path in the source.
On Linux, it's just:
```
export LD_LIBRARY_PATH=build-dev/generated/QtDartBindings/:$LD_LIBRARY_PATH
```Now run:
```
cd app
dart pub get # Could this be done automatically ?
dart run bin/main.dart
```# Regenerating the Bindings
Be sure to build and install `dartagnan` and put it in path.
Then run:
```
dart pub get
dart refresh_bindings.dart
```# Repo Layout
`app/`
Our dart test app, which shows a Qt window.`generated/`
Contains all the code generated by shiboken.
Includes the dart classes which users will use, and also the intermediate
C and C++ glue which calls the target C++ code.`typesystem.xml`
Used by shiboken, at "binding generation time".
The file for configuring the shiboken generation. Lists all classes we want bindings.for`bindings_global.h`
Used by shiboken, at "binding generation time". Includes all headers we want bindings for.`shiboken_snippets/`
Sometimes shiboken needs a little help and we can provide some snippets for it, so we say
exactly what we want generated.# Known Issues
* macOS: "NSWindow drag regions should only be invalidated on the Main Thread!"
See https://github.com/dart-lang/sdk/issues/38315 , patches welcome![Build Status](https://github.com/KDABLabs/dart-qtbindings/actions/workflows/build.yml/badge.svg