Update for QT6 support
This makes some necessary changes to get qt-light working under QT6: • Replace QSound (deprecated) with QSoundEffect • Replace QVariant datatype enums with QMetaTypes’ • Use new constructor for QVariants in propsetters
This commit is contained in:
parent
6a87e2863f
commit
b80d43f031
88
main.cpp
88
main.cpp
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include <QtUiTools>
|
#include <QtUiTools>
|
||||||
#include <QGLWidget>
|
#include <QOpenGLWidget>
|
||||||
#include <QtMultimedia/QSound>
|
#include <QtMultimedia/QSoundEffect>
|
||||||
#include <chicken.h>
|
#include <chicken.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
@ -38,18 +38,17 @@ public slots:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class GLWidget: public QGLWidget
|
class OpenGLWidget: public QOpenGLWidget {
|
||||||
{
|
|
||||||
void *thunk;
|
void *thunk;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GLWidget(char *name, QWidget *parent, C_word proc) : QGLWidget(parent) {
|
OpenGLWidget(char *name, QWidget *parent, C_word proc) : QOpenGLWidget(parent) {
|
||||||
setObjectName(name);
|
setObjectName(name);
|
||||||
thunk = CHICKEN_new_gc_root();
|
thunk = CHICKEN_new_gc_root();
|
||||||
CHICKEN_gc_root_set(thunk, proc);
|
CHICKEN_gc_root_set(thunk, proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
~GLWidget() { CHICKEN_delete_gc_root(thunk); }
|
~OpenGLWidget() { CHICKEN_delete_gc_root(thunk); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Set up the rendering context, define display lists etc.:
|
// Set up the rendering context, define display lists etc.:
|
||||||
|
@ -65,9 +64,9 @@ protected:
|
||||||
#define qtapplication QApplication *
|
#define qtapplication QApplication *
|
||||||
#define qtreceiver SimpleReceiver *
|
#define qtreceiver SimpleReceiver *
|
||||||
#define qtwidget QWidget *
|
#define qtwidget QWidget *
|
||||||
#define qtpixmap QPixmap *
|
#define qtpixmap QPixmap *
|
||||||
#define qttimer QTimer *
|
#define qttimer QTimer *
|
||||||
#define qtsound QSound *
|
#define qtsound QSoundEffect *
|
||||||
#define qttextedit QTextEdit *
|
#define qttextedit QTextEdit *
|
||||||
#define qtaction QAction *
|
#define qtaction QAction *
|
||||||
|
|
||||||
|
@ -174,21 +173,28 @@ int qt_message(char *caption, char *text, QWidget *parent, char *b0, char *b1, c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define propsetter(name, type) \
|
#define propsetter(name, type, metatype) \
|
||||||
___bool qt_set ## name ## property(QWidget *w, char *prop, type val) \
|
___bool qt_set ## name ## property(QWidget *w, char *prop, type val) \
|
||||||
{ \
|
{ \
|
||||||
const QMetaObject *mo = w->metaObject(); \
|
const QMetaObject *mo = w->metaObject(); \
|
||||||
int i = mo->indexOfProperty(prop); \
|
int i = mo->indexOfProperty(prop); \
|
||||||
if(i == -1) return 0; \
|
if(i == -1) return 0; \
|
||||||
else return mo->property(i).write(w, val); \
|
else return mo->property(i).write(w, QVariant(QMetaType(metatype), &val)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
propsetter(string, char *)
|
propsetter(bool, ___bool, QMetaType::Bool)
|
||||||
propsetter(bool, ___bool)
|
propsetter(int, int, QMetaType::Int)
|
||||||
propsetter(int, int)
|
propsetter(float, double, QMetaType::Double)
|
||||||
propsetter(float, double)
|
propsetter(char, char, QMetaType::Char)
|
||||||
propsetter(char, char)
|
|
||||||
|
___bool qt_setstringproperty(QWidget *w, char *prop, const char* val)
|
||||||
|
{
|
||||||
|
const QMetaObject *mo = w->metaObject();
|
||||||
|
int i = mo->indexOfProperty(prop);
|
||||||
|
if(i == -1) return 0;
|
||||||
|
else return mo->property(i).write(w, QVariant(val));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
___bool qt_setpixmapproperty(QWidget *w, char *prop, qtpixmap val)
|
___bool qt_setpixmapproperty(QWidget *w, char *prop, qtpixmap val)
|
||||||
|
@ -206,9 +212,9 @@ ___bool qt_setpointproperty(QWidget *w, char *prop, int *val)
|
||||||
int i = mo->indexOfProperty(prop);
|
int i = mo->indexOfProperty(prop);
|
||||||
if(i == -1) return 0;
|
if(i == -1) return 0;
|
||||||
else {
|
else {
|
||||||
switch(mo->property(i).type()) {
|
switch(mo->property(i).typeId()) {
|
||||||
case QVariant::Point: return mo->property(i).write(w, QPoint(val[ 0 ], val[ 1 ]));
|
case QMetaType::QPoint: return mo->property(i).write(w, QPoint(val[ 0 ], val[ 1 ]));
|
||||||
case QVariant::Size: return mo->property(i).write(w, QSize(val[ 0 ], val[ 1 ]));
|
case QMetaType::QSize: return mo->property(i).write(w, QSize(val[ 0 ], val[ 1 ]));
|
||||||
default: return false;
|
default: return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -221,9 +227,9 @@ ___bool qt_setpointfproperty(QWidget *w, char *prop, double *val)
|
||||||
int i = mo->indexOfProperty(prop);
|
int i = mo->indexOfProperty(prop);
|
||||||
if(i == -1) return 0;
|
if(i == -1) return 0;
|
||||||
else {
|
else {
|
||||||
switch(mo->property(i).type()) {
|
switch(mo->property(i).typeId()) {
|
||||||
case QVariant::PointF: return mo->property(i).write(w, QPointF(val[ 0 ], val[ 1 ]));
|
case QMetaType::QPointF: return mo->property(i).write(w, QPointF(val[ 0 ], val[ 1 ]));
|
||||||
case QVariant::SizeF: return mo->property(i).write(w, QSizeF(val[ 0 ], val[ 1 ]));
|
case QMetaType::QSizeF: return mo->property(i).write(w, QSizeF(val[ 0 ], val[ 1 ]));
|
||||||
default: return false;
|
default: return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -373,22 +379,22 @@ int qt_propertytype(qtwidget w, char *prop)
|
||||||
|
|
||||||
if(i == -1) return 0;
|
if(i == -1) return 0;
|
||||||
else {
|
else {
|
||||||
switch(mo->property(i).type()) {
|
switch(mo->property(i).typeId()) {
|
||||||
case QVariant::Bool: return 1;
|
case QMetaType::Bool: return 1;
|
||||||
case QVariant::Char: return 2;
|
case QMetaType::Char: return 2;
|
||||||
case QVariant::Double: return 3;
|
case QMetaType::Double: return 3;
|
||||||
case QVariant::Int:
|
case QMetaType::Int:
|
||||||
case QVariant::UInt: return 4;
|
case QMetaType::UInt: return 4;
|
||||||
case QVariant::LongLong:
|
case QMetaType::LongLong:
|
||||||
case QVariant::ULongLong: return 3;
|
case QMetaType::ULongLong: return 3;
|
||||||
case QVariant::String: return 5;
|
case QMetaType::QString: return 5;
|
||||||
case QVariant::Pixmap: return 6;
|
case QMetaType::QPixmap: return 6;
|
||||||
case QVariant::PointF: return 7;
|
case QMetaType::QPointF: return 7;
|
||||||
case QVariant::RectF: return 8;
|
case QMetaType::QRectF: return 8;
|
||||||
case QVariant::SizeF: return 9;
|
case QMetaType::QSizeF: return 9;
|
||||||
case QVariant::Point: return 10;
|
case QMetaType::QPoint: return 10;
|
||||||
case QVariant::Size: return 11;
|
case QMetaType::QSize: return 11;
|
||||||
case QVariant::Rect: return 12;
|
case QMetaType::QRect: return 12;
|
||||||
default: return 0;
|
default: return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -396,7 +402,7 @@ int qt_propertytype(qtwidget w, char *prop)
|
||||||
|
|
||||||
|
|
||||||
const char *qt_classname(qtobject w) { return w->metaObject()->className(); }
|
const char *qt_classname(qtobject w) { return w->metaObject()->className(); }
|
||||||
qtwidget qt_gl(char *name, qtwidget parent, C_word proc) { return new GLWidget(name, parent, proc); }
|
qtwidget qt_gl(char *name, qtwidget parent, C_word proc) { return new OpenGLWidget(name, parent, proc); }
|
||||||
void qt_update(qtwidget w) { w->update(); }
|
void qt_update(qtwidget w) { w->update(); }
|
||||||
|
|
||||||
|
|
||||||
|
@ -425,7 +431,11 @@ char *qt_listwidgetitem(qtwidget w, int i) {
|
||||||
return qstrdata(((QListWidget *)w)->item(i)->text());
|
return qstrdata(((QListWidget *)w)->item(i)->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
qtsound qt_sound(char *filename) { return new QSound(filename); }
|
qtsound qt_sound(char *filename) {
|
||||||
|
QSoundEffect* sound = new QSoundEffect();
|
||||||
|
sound->setSource(QUrl::fromLocalFile(filename));
|
||||||
|
return sound;
|
||||||
|
}
|
||||||
void qt_play(qtsound s) { s->play(); }
|
void qt_play(qtsound s) { s->play(); }
|
||||||
|
|
||||||
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue