From 010fa91972caad98b769e81ea3d2453634cebf35 Mon Sep 17 00:00:00 2001 From: Daniel Ziltener Date: Fri, 4 Sep 2020 01:57:54 +0200 Subject: [PATCH] Lots of bindings --- dotherside | 2 +- qml.egg | 1 + qml.scm | 384 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 385 insertions(+), 2 deletions(-) diff --git a/dotherside b/dotherside index 984f30e..f357c6e 160000 --- a/dotherside +++ b/dotherside @@ -1 +1 @@ -Subproject commit 984f30e0a9967d3c6cc60a01b51a2bdff4553fc2 +Subproject commit f357c6edd9b07c769af2a54e1f85d4908b0a08d4 diff --git a/qml.egg b/qml.egg index 39f7c9f..92ec34f 100644 --- a/qml.egg +++ b/qml.egg @@ -6,4 +6,5 @@ (foreign-dependencies dotherside) (components (extension qml (c-include DOtherSide "DOtherSide/DOtherSide.h") + (c-include DOtherSideTypes "DOtherSide/DOtherSideTypes.h") (csc-options "-Idotherside/lib/include")))) diff --git a/qml.scm b/qml.scm index 5379df8..7ef5ba5 100644 --- a/qml.scm +++ b/qml.scm @@ -5,6 +5,388 @@ (import foreigners) (export dos_qcoreapplication_application_dir_path) (begin + (foreign-declare "#include ") + (foreign-declare "#include ") + (define-foreign-type DosQVariant "DosQVariant") + (define-foreign-type DosQModelIndex "DosQModelIndex") + (define-foreign-type DosQAbstractItemModel "DosQAbstractItemModel") + (define-foreign-type DosQAbstractTableModel "DosQAbstractTableModel") + (define-foreign-type DosQQmlApplicationEngine "DosQQmlApplicationEngine") + (define-foreign-type DosQQuickView "DosQQuickView") + (define-foreign-type DosQQmlContext "DosQQmlContext") + (define-foreign-type DosQHashIntQByteArray "DosQHashIntQByteArray") + (define-foreign-type DosQUrl "DosQUrl") + (define-foreign-type DosQMetaObject "DosQMetaObject") + (define-foreign-type DosQObject "DosQObject") + (define-foreign-type DosQQuickImageProvider "DosQQuickImageProvider") + (define-foreign-type DosPixmap "DosPixmap") + (define-foreign-type DosQPointer "DosQPointer") + + (define-foreign-type RequestPixmapCallback (function void + (c-string + (c-pointer int) ; width + (c-pointer int) ; height + int ; requestedWidth + int ; requestedHeight + (c-pointer DosPixmap)))) + (define-foreign-type DObjectCallback (function void + ((c-pointer DosQObject) + (c-pointer DosQVariant) + int + pointer-vector))) + (define-foreign-type RowCountCallback (function void + ((c-pointer DosQAbstractItemModel) + (c-pointer DosQModelIndex) + (c-pointer int)))) + (define-foreign-type ColumnCountCallback (function void + ((c-pointer DosQAbstractItemModel) + (c-pointer DosQModelIndex) + (c-pointer int)))) + (define-foreign-type DataCallback (function void + ((c-pointer DosQAbstractItemModel) + (c-pointer DosQModelIndex) + int + (c-pointer DosQVariant)))) + (define-foreign-type SetDataCallback (function void + ((c-pointer DosQAbstractItemModel) ;; Is that correct? + (c-pointer DosQModelIndex) + (c-pointer DosQVariant) + int + (c-pointer bool)))) + (define-foreign-type RoleNamesCallback (function void + ((c-pointer DosQAbstractItemModel) + (c-pointer DosQHashIntQByteArray)))) + (define-foreign-type FlagsCallback (function void + ((c-pointer DosQAbstractItemModel) + (c-pointer DosQModelIndex) + (c-pointer int)))) + (define-foreign-type HeaderDataCallback (function void + ((c-pointer DosQAbstractItemModel) + int ; section + int ; orientation + int ; role + (c-pointer DosQVariant)))) + (define-foreign-type IndexCallback (function void + ((c-pointer DosQAbstractItemModel) + int ; row + int ; column + (c-pointer DosQModelIndex) ; parent + (c-pointer DosQModelIndex)))) ; result + (define-foreign-type ParentCallback (function void + ((c-pointer QAbstractItemModel) + (c-pointer DosQModelIndex) + (c-pointer DosQModelIndex)))) + (define-foreign-type HasChildrenCallback (function void + ((c-pointer QAbstractItemModel) + (c-pointer DosQModelIndex) + (c-pointer bool)))) + (define-foreign-type CanFetchMoreCallback (function void + ((c-pointer QAbstractItemModel) + (c-pointer DosQModelIndex) + (c-pointer bool)))) + (define-foreign-type FetchMoreCallback (function void + ((c-pointer QAbstractItemModel) + (c-pointer DosQModelIndex)))) + + (define-foreign-type CreateDObject (function void + (int + (c-pointer DosQObject) + pointer-vector + pointer-vector))) + (define-foreign-type DeleteDObject (function void + (int + (c-pointer DosQObject)))) + + (define-foreign-type DosQVariantArray (struct "DosQVariantArray")) + (define-foreign-type QmlRegisterType (struct "QmlRegisterType")) + (define-foreign-type ParameterDefinition (struct "ParameterDefinition")) + (define-foreign-type SignalDefinition (struct "SignalDefinition")) + (define-foreign-type SignalDefinitions (struct "SignalDefinitions")) + (define-foreign-type SlotDefinition (struct "SlotDefinition")) + (define-foreign-type SlotDefinitions (struct "SlotDefinitions")) + (define-foreign-type PropertyDefinition (struct "PropertyDefinition")) + (define-foreign-type PropertyDefinitions (struct "PropertyDefinitions")) + (define-foreign-type DosQAbstractItemModelCallbacks (struct "DosQAbstractItemModelCallbacks")) + + (define-foreign-type DosQEventLoopProcessEventFlag (enum "DosQEventLoopProcessEventFlag")) + (define-foreign-type DosQtConnectionType (enum "DosQtConnectionType")) + + ;; Functions + ;; QCoreApplication (define dos_qcoreapplication_application_dir_path (foreign-lambda* c-string () - "C_return(dos_qcoreapplication_application_dir_path());")))) + "C_return(dos_qcoreapplication_application_dir_path());")) + (define dos_qcoreapplication_process_events + (foreign-lambda* void ((DosQEventLoopProcessEventFlag flags)) + "dos_qcoreapplication_process_events(flags);")) + (define dos_qcoreapplication_process_events_timed + (foreign-lambda* void ((DosQEventLoopProcessEventFlag flags) + (int ms)) + "dos_qcoreapplication_process_events_timed(flags, ms);")) + + ;; QGuiApplication + (define dos_qguiapplication_create + (foreign-lambda* void () + "dos_qguiapplication_create();")) + (define dos_qguiapplication_exec + (foreign-lambda* void () + "dos_qguiapplication_exec();")) + (define dos_qguiapplication_quit + (foreign-lambda* void () + "dos_qguiapplication_quit();")) + (define dos_qguiapplication_delete + (foreign-lambda* void () + "dos_qguiapplication_delete();")) + + ;; QApplication + (define dos_qapplication_create + (foreign-lambda* void () + "dos_qapplication_create();")) + (define dos_qapplication_exec + (foreign-lambda* void () + "dos_qapplication_exec();")) + (define dos_qapplication_quit + (foreign-lambda* void () + "dos_qapplication_quit();")) + (define dos_qapplication_delete + (foreign-lambda* void () + "dos_qapplication_delete();")) + + ;; QQmlApplicationEngine + (define dos_qqmlapplicationengine_create + (foreign-lambda* (c-pointer DosQQmlApplicationEngine) () + "C_return(dos_qqmlapplicationengine_create());")) + (define dos_qqmlapplicationengine_load + (foreign-lambda* void (((c-pointer DosQQmlApplicationEngine) vptr) + (c-string filename)) + "dos_qqmlapplicationengine_load(vptr, filename);")) + (define dos_qqmlapplicationengine_load_url + (foreign-lambda* void (((c-pointer DosQQmlApplicationEngine) vptr) + ((c-pointer DosQUrl) url)) + "dos_qqmlapplicationengine_load_url(vptr, url);")) + (define dos_qqmlapplicationengine_load_data + (foreign-lambda* void (((c-pointer DosQQmlApplicationEngine) vptr) + (c-string data)) + "dos_qqmlapplicationengine_load_data(vptr, data);")) + (define dos_qqmlapplicationengine_add_import_path + (foreign-lambda* void (((c-pointer DosQQmlApplicationEngine) vptr) + (c-string path)) + "dos_qqmlapplicationengine_add_import_path(vptr, path);")) + (define dos_qqmlapplicationengine_context + (foreign-lambda* (c-pointer DosQQmlContext) (((c-pointer DosQQmlApplicationEngine) vptr)) + "C_return(dos_qqmlapplicationengine_context(vptr));")) + (define dos_qqmlapplicationengine_addImageProvider + (foreign-lambda* void (((c-pointer DosQQmlApplicationEngine) vptr) + (c-string name) + ((c-pointer DosQQuickImageProvider) vptr_i)) + "dos_qqmlapplicationengine_addImageProvider(vptr, name, vptr_i);")) + (define dos_qqmlapplicationengine_delete + (foreign-lambda* void (((c-pointer DosQQmlApplicationEngine) vptr)) + "dos_qqmlapplicationengine_delete(vptr);")) + + ;; QQuickImageProvider + (define dos_qquickimageprovider_create + (foreign-lambda* (c-pointer DosQQuickImageProvider) ((RequestPixmapCallback callback)) + "C_return(dos_qquickimageprovider_create((RequestPixmapCallback) callback));")) + (define dos_qquickimageprovider_delete + (foreign-lambda* void (((c-pointer DosQQuickImageProvider) vptr)) + "dos_qquickimageprovider_delete(vptr);")) + + ;; QPixmap + (define dos_qpixmap_create + (foreign-lambda* (c-pointer DosPixmap) () + "C_return(dos_qpixmap_create());")) + (define dos_qpixmap_create_qpixmap + (foreign-lambda* (c-pointer DosPixmap) (((c-pointer DosPixmap) other)) + "C_return(dos_qpixmap_create_qpixmap(other));")) + (define dos_qpixmap_create_width_and_height + (foreign-lambda* (c-pointer DosPixmap) ((int width) + (int height)) + "C_return(dos_qpixmap_create_width_and_height(width, height));")) + (define dos_qpixmap_delete + (foreign-lambda* void (((c-pointer DosPixmap) vptr)) + "dos_qpixmap_delete(vptr);")) + (define dos_qpixmap_load + (foreign-lambda* void (((c-pointer DosPixmap) vptr) + (c-string filepath) + (c-string format)) + "dos_qpixmap_load(vptr, filepath, format);")) + (define dos_qpixmap_loadFromData + (foreign-lambda* void (((c-pointer DosPixmap) vptr) + (unsigned-c-string data) + (unsigned-int len)) + "dos_qpixmap_loadFromData(vptr, data, len);")) + (define dos_qpixmap_fill + (foreign-lambda* void (((c-pointer DosPixmap) vptr) + (unsigned-char r) + (unsigned-char g) + (unsigned-char b) + (unsigned-char a)) + "dos_qpixmap_fill(vptr, r, g, b, a);")) + (define dos_qpixmap_assign + (foreign-lambda* void (((c-pointer DosPixmap) vptr) + ((c-pointer DosPixmap) other)) + "dos_qpixmap_assign(vptr, other);")) + (define dos_qpixmap_isNull + (foreign-lambda* bool (((c-pointer DosPixmap) vptr)) + "C_return(dos_qpixmap_isNull(vptr));")) + + ;; QQuickStyle + (define dos_qquickstyle_set_style + (foreign-lambda* void ((c-string style)) + "dos_qquickstyle_set_style(style);")) + (define dos_qquickstyle_set_fallback_style + (foreign-lambda* void ((c-string style)) + "dos_qquickstyle_set_fallback_style(style);")) + + ;; QQuickView + (define dos_qquickview_create + (foreign-lambda* (c-pointer DosQQuickView) () + "C_return(dos_qquickview_create());")) + (define dos_qquickview_show + (foreign-lambda* void (((c-pointer DosQQuickView) vptr)) + "dos_qquickview_show(vptr);")) + (define dos_qquickview_source + (foreign-lambda* c-string (((c-pointer DosQQuickView) vptr)) + "dos_qquickview_source(vptr);")) + (define dos_qquickview_set_source_url + (foreign-lambda* void (((c-pointer DosQQuickView) vptr) + ((c-pointer DosQUrl) url)) + "dos_qquickview_set_source_url(vptr, url);")) + (define dos_qquickview_set_source + (foreign-lambda* void (((c-pointer DosQQuickView) vptr) + (c-string filename)) + "dos_qquickview_set_source(vptr, filename);")) + (define dos_qquickview_set_resize_mode + (foreign-lambda* void (((c-pointer DosQQuickView) vptr) + (int resizeMode)) + "dos_qquickview_set_resize_mode(vptr, resizeMode);")) + (define dos_qquickview_delete + (foreign-lambda* void (((c-pointer DosQQuickView) vptr)) + "dos_qquickview_delete(vptr);")) + (define dos_qquickview_rootContext + (foreign-lambda* (c-pointer DosQQmlContext) (((c-pointer DosQQuickView) vptr)) + "C_return(dos_qquickview_rootContext(vptr));")) + + ;; QQmlContext + (define dos_qqmlcontext_baseUrl + (foreign-lambda* c-string (((c-pointer DosQQmlContext) vptr)) + "C_return(dos_qqmlcontext_baseUrl(vptr));")) + (define dos_qqmlcontext_setcontextproperty + (foreign-lambda* void (((c-pointer DosQQmlContext) vptr) + (c-string name) + ((c-pointer DosQVariant) value)) + "dos_qqmlcontext_setcontextproperty(vptr, name, value);")) + + ;; String + (define dos_chararray_delete + (foreign-lambda* void ((c-string ptr)) + "dos_chararray_delete(ptr);")) + + ;; QVariant + (define dos_qvariantarray_delete + (foreign-lambda* void (((c-pointer DosQVariantArray) ptr)) + "dos_qvariantarray_delete(ptr);")) + (define dos_qvariant_create + (foreign-lambda* (c-pointer DosQVariant) () + "C_return(dos_qvariant_create());")) + (define dos_qvariant_create_int + (foreign-lambda* (c-pointer DosQVariant) ((int value)) + "C_return(dos_qvariant_create_int(value));")) + (define dos_qvariant_create_bool + (foreign-lambda* (c-pointer DosQVariant) ((bool value)) + "C_return(dos_qvariant_create_bool(value));")) + (define dos_qvariant_create_string + (foreign-lambda* (c-pointer DosQVariant) ((c-string value)) + "C_return(dos_qvariant_create_string(value));")) + (define dos_qvariant_create_qobject + (foreign-lambda* (c-pointer DosQVariant) (((c-pointer DosQObject) value)) + "C_return(dos_qvariant_create_qobject(value));")) + (define dos_qvariant_create_qvariant + (foreign-lambda* (c-pointer DosQVariant) (((c-pointer DosQVariant) value)) + "C_return(dos_qvariant_create_qvariant(value));")) + (define dos_qvariant_create_float + (foreign-lambda* (c-pointer DosQVariant) ((float value)) + "C_return(dos_qvariant_create_float(value));")) + (define dos_qvariant_create_double + (foreign-lambda* (c-pointer DosQVariant) ((double value)) + "C_return(dos_qvariant_create_double(value));")) + (define dos_qvariant_create_array + (foreign-lambda* (c-pointer DosQVariant) ((int size) + (pointer-vector array)) + "C_return(dos_qvariant_create_array(size, (DosQVariant**) array));")) + + (define dos_qvariant_setInt + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + (int value)) + "dos_qvariant_setInt(vptr, value);")) + (define dos_qvariant_setBool + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + (bool value)) + "dos_qvariant_setBool(vptr, value);")) + (define dos_qvariant_setFloat + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + (float value)) + "dos_qvariant_setFloat(vptr, value);")) + (define dos_qvariant_setDouble + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + (double value)) + "dos_qvariant_setDouble(vptr, value);")) + (define dos_qvariant_setString + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + (c-string value)) + "dos_qvariant_setString(vptr, value);")) + (define dos_qvariant_setQObject + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + ((c-pointer DosQObject) value)) + "dos_qvariant_setQObject(vptr, value);")) + (define dos_qvariant_setArray + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + (int size) + (pointer-vector array)) + "dos_qvariant_setArray(vptr, size, array);")) + (define dos_qvariant_isnull + (foreign-lambda* bool (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_isnull(vptr));")) + (define dos_qvariant_delete + (foreign-lambda* void (((c-pointer DosQVariant) vptr)) + "dos_qvariant_delete(vptr);")) + (define dos_qvariant_assign + (foreign-lambda* void (((c-pointer DosQVariant) vptr) + ((c-pointer DosQVariant) other)) + "dos_qvariant_assign(vptr, other);")) + (define dos_qvariant_toInt + (foreign-lambda* int (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toInt(vptr));")) + (define dos_qvariant_toBool + (foreign-lambda* bool (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toBool(vptr));")) + (define dos_qvariant_toString + (foreign-lambda* c-string (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toString(vptr));")) + (define dos_qvariant_toFloat + (foreign-lambda* float (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toFloat(vptr));")) + (define dos_qvariant_toDouble + (foreign-lambda* double (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toDouble(vptr));")) + (define dos_qvariant_toArray + (foreign-lambda* (c-pointer DosQVariantArray) (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toArray(vptr));")) + (define dos_qvariant_toQObject + (foreign-lambda* (c-pointer DosQObject) (((c-pointer DosQVariant) vptr)) + "C_return(dos_qvariant_toQObject(vptr));")) + + ;; QMetaObject + ;; This is broken... + (define dos_qmetaobject_create + (foreign-lambda* (c-pointer DosQMetaObject) (((c-pointer DosQMetaObject) superClassMetaObject) + (c-string className) + ((c-pointer SignalDefinitions) signalDefinitions) + ((c-pointer SlotDefinitions) slotDefinitions) + ((c-pointer PropertyDefinitions) propertyDefinitions)) + "C_return(dos_qmetaobject_create(superClassMetaObject, className, signalDefinitions, slotDefinitions, propertyDefinitions));")) + (define dos_qmetaobject_delete + (foreign-lambda* void (((c-pointer DosQMetaObject) vptr)) + "dos_qmetaobject_delete(vptr);")) +))