Actually working. Added example.

This commit is contained in:
Daniel Ziltener 2021-04-10 11:43:03 +02:00
parent 3af2c7421c
commit c95bafaca9
5 changed files with 280 additions and 12 deletions

21
examples/helloworld.qml Normal file
View File

@ -0,0 +1,21 @@
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
visible: true
width: 320
height: 480
Rectangle {
id: page
width: 320; height: 480
color: "lightgray"
Text {
id: helloText
text: "Hello world!"
y: 30
anchors.horizontalCenter: page.horizontalCenter
font.pointSize: 24; font.bold: true
}
}
}

11
examples/helloworld.scm Normal file
View File

@ -0,0 +1,11 @@
(import (qml core)
coops)
(gui-application-create)
(define engine (make <QQmlApplicationEngine>))
(define loc (new-QUrl "examples/helloworld.qml"))
(load-url engine loc)
(do ((loop #t))
((not loop) #t)
(process-events-timed (qevent-loop-process-event-flag process-all-events:) 50))

View File

@ -1,13 +1,132 @@
;; -*- geiser-scheme: chicken -*- ;; -*- geiser-scheme: chicken -*-
(module (qml core) (import (r7rs))
*
(import scheme) (define-library (qml core)
(import (chicken gc)) (import (chicken gc))
(import (chicken string)) (import (chicken string))
(import (chicken base))
(import (chicken condition)) (import (chicken condition))
(import (qml lowlevel)) (import (qml lowlevel))
(import (scheme base))
(import coops coops-primitive-objects coops-extras srfi-1 srfi-69) (import coops coops-primitive-objects coops-extras srfi-1 srfi-69)
(export application-dir-path
process-events
process-events-timed
gui-application-create
gui-application-exec
gui-application-quit
gui-application-delete
qapplication-create
qapplication-exec
qapplication-quit
qapplication-delete
qquickstyle-set-style
qquickstyle-set-fallback-style
initialize-instance
set
to
is-null?
assign
copy
delete-pointer
delete-pointer-later
<Enum>
<QEventLoopProcessEventFlag>
qevent-loop-process-event-flag
<QtConnectionType>
qt-connection-type
<QQuickViewResizeMode>
qquick-view-resize-mode
<QItemDataRole>
qitem-data-role
<QtOrientation>
qt-orientation
<QMLBase>
add-ptrentry
remove-ptrentry
<QObject>
signal-emit
<QVariant>
qvariant
<QQmlContext>
base-url
set-property
<QUrl>
new-QUrl
to-string
valid?
<QPixmap>
new-QPixmap
load
load-from-data
fill
assign
<QQuickImageProvider>
new-QQuickImageProvider
<QQmlApplicationEngine>
load
load-url
load-data
add-import-path
context
add-image-provider
<QQuickView>
show
source
set-source-url
set-source
set-resize-mode
root-context
<QMetaObject>
new-QMetaObject
invoke-method
<QModelIndex>
row
column
valid?
data
parent
child
sibling
assign
<QAbstractItemModel>
new-QAbstractItemModel
set-data
flags
header-data
<QAbstractListModel>
new-QAbstractListModel
index
parent
column-count
<QAbstractTableModel>
new-QAbstractTableModel
index
parent
)
(begin
;; Enums ;; Enums
(define-class <Enum> () (define-class <Enum> ()
@ -119,7 +238,9 @@
(define-method (add-ptrentry (qbase <QMLBase>)) (define-method (add-ptrentry (qbase <QMLBase>))
(hash-table-update! callback-registry (ptr qbase) (hash-table-update! callback-registry (ptr qbase)
(lambda (alist) (lambda (alist)
(alist-update refcount: (+ 1 (refcount alist)) alist)) (let* ((refc (refcount alist))
(alist (alist-delete refcount: alist)))
(alist-cons refcount: (+ 1 refc) alist)))
(lambda () (lambda ()
(alist-cons refcount: 1 '())))) (alist-cons refcount: 1 '()))))
(define-method (remove-ptrentry (qbase <QMLBase>)) (define-method (remove-ptrentry (qbase <QMLBase>))
@ -127,7 +248,9 @@
(hash-table-delete! callback-registry (ptr qbase)) (hash-table-delete! callback-registry (ptr qbase))
(hash-table-update! callback-registry (ptr qbase) (hash-table-update! callback-registry (ptr qbase)
(lambda (alist) (lambda (alist)
(alist-update refcount: (- (refcount alist) 1) alist))))) (let* ((refc (refcount alist))
(alist (alist-delete refcount: alist)))
(alist-cons refcount: (- refc 1) alist))) )))
(define-method (initialize-instance (qbase <QMLBase>)) (define-method (initialize-instance (qbase <QMLBase>))
(call-next-method) (call-next-method)
(add-ptrentry qbase) (add-ptrentry qbase)
@ -292,7 +415,7 @@
(dos_qmodelindex_row (ptr qmi))) (dos_qmodelindex_row (ptr qmi)))
(define-method (column (qmi <QModelIndex>)) (define-method (column (qmi <QModelIndex>))
(dos_qmodelindex_column (ptr qmi))) (dos_qmodelindex_column (ptr qmi)))
(define-method (is-valid? (qmi <QModelIndex>)) (define-method (valid? (qmi <QModelIndex>))
(dos_qmodelindex_isValid (ptr qmi))) (dos_qmodelindex_isValid (ptr qmi)))
(define-method (data (qmi <QModelIndex>) (role <QItemDataRole>)) (define-method (data (qmi <QModelIndex>) (role <QItemDataRole>))
(dos_qmodelindex_data (ptr qmi) (val role))) (dos_qmodelindex_data (ptr qmi) (val role)))
@ -333,4 +456,6 @@
(define-method (index (qatm <QAbstractTableModel>) (row <integer>) (column <integer>) (parent <QModelIndex>)) (define-method (index (qatm <QAbstractTableModel>) (row <integer>) (column <integer>) (parent <QModelIndex>))
(dos_qabstracttablemodel_index (ptr qatm) row column (ptr parent))) (dos_qabstracttablemodel_index (ptr qatm) row column (ptr parent)))
(define-method (parent (qatm <QAbstractTableModel>) (child <QModelIndex>)) (define-method (parent (qatm <QAbstractTableModel>) (child <QModelIndex>))
(dos_qabstracttablemodel_parent (ptr qatm) (ptr child)))) (dos_qabstracttablemodel_parent (ptr qatm) (ptr child)))
)
)

View File

@ -50,7 +50,8 @@
dotherside/lib/src/DosQQuickImageProvider dotherside/lib/src/DosQQuickImageProvider
dotherside/lib/src/DOtherSide dotherside/lib/src/DOtherSide
dotherside/lib/src/DOtherSideTypesCpp) dotherside/lib/src/DOtherSideTypesCpp)
(csc-options "-c++" "-Idotherside/lib/include" (csc-options "-X" "r7rs" "-R" "r7rs" "-sJ"
"-c++" "-Idotherside/lib/include"
"-L" "-lQt5Core" "-L" "-lQt5Core"
"-L" "-lQt5Widgets" "-L" "-lQt5Widgets"
"-L" "-lQt5Gui" "-L" "-lQt5Gui"
@ -63,4 +64,5 @@
"-L" "-lQt5QuickTest" "-L" "-lQt5QuickTest"
"-L" "-lOpenGL")) "-L" "-lOpenGL"))
(extension qml.core (extension qml.core
(csc-options "-X" "r7rs" "-R" "r7rs" "-sJ")
(component-dependencies qml.lowlevel)))) (component-dependencies qml.lowlevel))))

View File

@ -1,9 +1,118 @@
;; -*- geiser-scheme: chicken -*- ;; -*- geiser-scheme: chicken -*-
(module (qml lowlevel) (import (r7rs))
*
(import scheme) (define-library (qml lowlevel)
(import (scheme base))
(import (chicken foreign)) (import (chicken foreign))
(import foreigners) (import foreigners)
(export DosQEventLoopProcessEventFlagProcessAllEvents
DosQEventLoopProcessEventFlagExcludeUserInputEvents
DosQEventLoopProcessEventFlagProcessExcludeSocketNotifiers
DosQEventLoopProcessEventFlagProcessAllEventsWaitForMoreEvents
DosQtConnectionTypeAutoConnection
DosQtConnectionTypeDirectConnection
DosQtConnectionTypeQueuedConnection
DosQtConnectionTypeBlockingConnection
DosQtConnectionTypeUniqueConnection
dos_qcoreapplication_application_dir_path
dos_qcoreapplication_process_events
dos_qcoreapplication_process_events_timed
dos_qguiapplication_create
dos_qguiapplication_exec
dos_qguiapplication_quit
dos_qguiapplication_delete
dos_qapplication_create
dos_qapplication_exec
dos_qapplication_quit
dos_qapplication_delete
dos_qquickstyle_set_style
dos_qquickstyle_set_fallback_style
dos_qobject_signal_emit
dos_qobject_delete
dos_qobject_deleteLater
dos_qvariant_create
dos_qvariant_create_int
dos_qvariant_create_bool
dos_qvariant_create_string
dos_qvariant_create_qobject
dos_qvariant_create_float
dos_qvariant_setInt
dos_qvariant_setBool
dos_qvariant_setFloat
dos_qvariant_setString
dos_qvariant_setQObject
dos_qvariant_toInt
dos_qvariant_toBool
dos_qvariant_toString
dos_qvariant_toFloat
dos_qvariant_toQObject
dos_qvariant_isnull
dos_qvariant_assign
dos_qvariant_create_qvariant
dos_qvariant_delete
dos_qqmlcontext_baseUrl
dos_qqmlcontext_setcontextproperty
dos_qurl_create
dos_qurl_to_string
dos_qurl_isValid
dos_qurl_delete
dos_qpixmap_create
dos_qpixmap_create_width_and_height
dos_qpixmap_create_qpixmap
dos_qpixmap_load
dos_qpixmap_loadFromData
dos_qpixmap_fill
dos_qpixmap_assign
dos_qpixmap_isNull
dos_qpixmap_delete
dos_qquickimageprovider_create
dos_qquickimageprovider_delete
dos_qqmlapplicationengine_create
dos_qqmlapplicationengine_load
dos_qqmlapplicationengine_load_url
dos_qqmlapplicationengine_load_data
dos_qqmlapplicationengine_add_import_path
dos_qqmlapplicationengine_context
dos_qqmlapplicationengine_addImageProvider
dos_qqmlapplicationengine_delete
dos_qquickview_create
dos_qquickview_show
dos_qquickview_source
dos_qquickview_set_source_url
dos_qquickview_set_source
dos_qquickview_set_resize_mode
dos_qquickview_rootContext
dos_qquickview_delete
dos_qmetaobject_create
dos_qmetaobject_invoke_method
dos_qmetaobject_delete
dos_qobject_qmetaobject
dos_qabstractitemmodel_qmetaobject
dos_qabstracttablemodel_qmetaobject
dos_qabstractlistmodel_qmetaobject
dos_qmodelindex_create
dos_qmodelindex_create_qmodelindex
dos_qmodelindex_row
dos_qmodelindex_column
dos_qmodelindex_isValid
dos_qmodelindex_data
dos_qmodelindex_parent
dos_qmodelindex_child
dos_qmodelindex_sibling
dos_qmodelindex_assign
dos_qmodelindex_delete
dos_qabstractitemmodel_create
dos_qabstractitemmodel_setData
dos_qabstractitemmodel_flags
dos_qabstractitemmodel_headerData
dos_qabstractlistmodel_create
dos_qabstractlistmodel_index
dos_qabstractlistmodel_parent
dos_qabstractlistmodel_columnCount
dos_qabstracttablemodel_create
dos_qabstracttablemodel_index
dos_qabstracttablemodel_parent)
(begin (begin
(foreign-declare "#include <DOtherSide/DOtherSideTypes.h>") (foreign-declare "#include <DOtherSide/DOtherSideTypes.h>")
(foreign-declare "#include <DOtherSide/DOtherSide.h>") (foreign-declare "#include <DOtherSide/DOtherSide.h>")