diff -ur -x '*compile*' -x '*.setup' qt-light-0.991/main.cpp qt-light-0.991-1/main.cpp --- qt-light-0.991/main.cpp 2017-10-20 20:50:21.625190966 +0200 +++ qt-light-0.991-1/main.cpp 2017-10-20 23:27:37.870270372 +0200 @@ -64,6 +64,7 @@ #define qtapplication QApplication * #define qtreceiver SimpleReceiver * #define qtwidget QWidget * +#define qtlayout QLayout * #define qtpixmap QPixmap * #define qttimer QTimer * #define qtsound QSound * @@ -98,7 +99,6 @@ return w; } - ___bool qt_run(___bool once) { if(once) { @@ -114,7 +114,7 @@ void qt_deleteobject(QObject *o) { delete o; } void qt_deletepixmap(QPixmap *o) { delete o; } ___bool qt_connect(QWidget *w1, char *sig, QObject *w2, char *slot) { return QObject::connect(w1, sig, w2, slot); } -QWidget *qt_find(QWidget *parent, char *name) { return parent->findChild(QString(name)); } +QObject *qt_find(QObject *parent, char *name) { return parent->findChild(QString(name)); } QObject *qt_receiver(char *name, C_word proc) { return new SimpleReceiver(name, proc); } @@ -413,6 +413,7 @@ void qt_clearlistwidget(qtwidget w) { ((QListWidget *)w)->clear(); } void qt_addcomboboxitem(qtwidget w, char *s) { ((QComboBox *)w)->addItem(s); } void qt_addlistwidgetitem(qtwidget w, char *s) { ((QListWidget *)w)->addItem(s); } +void qt_layoutaddwidget(qtlayout l, qtwidget w) { ((QLayout *)l)->addWidget(w); } void qt_addtreewidgetitem(qtwidget w, char *s) { diff -ur -x '*compile*' -x '*.setup' qt-light-0.991/prototypes.h qt-light-0.991-1/prototypes.h --- qt-light-0.991/prototypes.h 2017-10-20 20:50:21.625190966 +0200 +++ qt-light-0.991-1/prototypes.h 2017-10-20 23:27:29.739226833 +0200 @@ -10,7 +10,7 @@ void qt_deletepixmap(qtpixmap widget); qtpixmap qt_pixmap(char *filename); ___bool qt_connect(qtwidget w1, char *sig, qtobject w2, char *slot); -qtwidget qt_find(qtwidget parent, char *name); +qtobject qt_find(qtobject parent, char *name); qtobject qt_receiver(char *name, C_word proc); int qt_message(char *caption, char *text, qtwidget parent, char *b0, char *b1, char *b2); const char *qt_classname(qtobject w); @@ -49,6 +49,7 @@ void qt_addcomboboxitem(qtwidget w, char *s); void qt_addlistwidgetitem(qtwidget w, char *s); void qt_addtreewidgetitem(qtwidget w, char *s); +void qt_layoutaddwidget(qtlayout l, qtwidget w); char *qt_listwidgetitem(qtwidget w, int i); char *qt_getexistingdirectory(qtwidget p, char *cap, char *dir, int opts); char *qt_getopenfilename(qtwidget p, char *cap, char *dir, char *filter, int opts); diff -ur -x '*compile*' -x '*.setup' qt-light-0.991/qt-light.scm qt-light-0.991-1/qt-light.scm --- qt-light-0.991/qt-light.scm 2017-10-20 20:50:21.625190966 +0200 +++ qt-light-0.991-1/qt-light.scm 2017-10-20 22:31:25.674833006 +0200 @@ -3,11 +3,11 @@ (module qt-light (qt:init qt:widget qt:show qt:hide qt:run - qt:delete qt:message qt:connect qt:find + qt:delete qt:message qt:connect qt:find-widget qt:find-layout qt:find qt:pointer->widget qt:widget qt:receiver qt:pixmap qt:timer qt:property qt:gl qt:update qt:start qt:stop - qt:clear qt:add qt:item qt:classname - + qt:clear qt:add qt:item qt:classname qt:layout-add-widget + qt:get-open-filename qt:get-save-filename qt:get-directory @@ -33,6 +33,7 @@ (define (% (class 'qt-object))) (define (% (class 'qt-sound))) (define (% (class 'qt-widget))) +(define (% (class 'qt-layout))) (define (% (class 'qt-application))) (define (% (class 'qt-pixmap))) (define (% (class 'qt-receiver))) @@ -42,6 +43,7 @@ (define (qt:->pointer i) (and i (? i pointer))) (define (qt:pointer->widget p) (and p (% (pointer p)))) +(define (qt:pointer->layout p) (and p (% (pointer p)))) (define (qt:pointer->object p) (and p (% (pointer p)))) (define (qt:pointer->timer p) (and p (% (pointer p)))) (define (qt:pointer->application p) (and p (% (pointer p)))) @@ -54,6 +56,7 @@ #>? ___declare(substitute, "qt_;qt:") ___declare(type, "qtwidget;c-pointer;qt:->pointer;qt:pointer->widget") +___declare(type, "qtlayout;c-pointer;qt:->pointer;qt:pointer->layout") ___declare(type, "qtapplication;c-pointer;qt:->pointer;qt:pointer->application") ___declare(type, "qtpixmap;c-pointer;qt:->pointer;qt:pointer->pixmap") ___declare(type, "qtobject;c-pointer;qt:->pointer;qt:pointer->object") @@ -171,6 +174,19 @@ ((string=? "QTreeWidget" (qt:classname w)) (qt:addtreewidgetitem w x)) (else (error 'qt:add "invalid widget" w x)) ) ) +(define (qt:layout-add-widget l w) + (if (string=? "QLayout" (qt:classname l)) + (if (string=? "QWidget" (qt:classname w)) + (qt:layoutaddwidget l w) + (error 'qt-layout-add-widget "invalid widget")) + (error 'qt:layout-add-widget "invalid layout") ) ) + +(define (qt:find-layout o s) + (qt:pointer->layout (qt:find o s)) ) + +(define (qt:find-widget o s) + (qt:pointer->widget (qt:find o s)) ) + (define (qt:item w i) (and (positive? i) (qt:listwidgetitem w i))) (define qt:clear qt:clearlistwidget)