fix the extraction of the layout items
svn path=/trunk/KDE/kdebase/runtime/; revision=1094811
This commit is contained in:
parent
82d8d472b9
commit
16cd227083
|
@ -43,33 +43,11 @@ DECLARE_VOID_NUMBER_METHOD(QGraphicsAnchorLayout, removeAt)
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
QGraphicsLayoutItem *convertToLayoutItem (QScriptContext *ctx, int index = 0)
|
QGraphicsLayoutItem *extractLayoutItem (QScriptContext *ctx, int index = 0);
|
||||||
{
|
|
||||||
QObject *object = ctx->argument(index).toQObject();
|
|
||||||
QGraphicsLayoutItem *item = qobject_cast<QGraphicsWidget*>(object);
|
|
||||||
|
|
||||||
if (!item) {
|
|
||||||
item = qscriptvalue_cast<QGraphicsAnchorLayout*>(ctx->argument(index));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!item) {
|
|
||||||
AppletInterface *interface = qobject_cast<AppletInterface*>(object);
|
|
||||||
|
|
||||||
if (!interface) {
|
|
||||||
interface = qobject_cast<AppletInterface*>(ctx->engine()->globalObject().property("plasmoid").toQObject());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (interface) {
|
|
||||||
item = interface->applet();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
||||||
{
|
{
|
||||||
QGraphicsLayoutItem *parent = convertToLayoutItem(ctx);
|
QGraphicsLayoutItem *parent = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
|
return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
|
||||||
|
@ -79,8 +57,8 @@ static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addAnchor) {
|
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addAnchor) {
|
||||||
QGraphicsLayoutItem *item1 = convertToLayoutItem(ctx, 0);
|
QGraphicsLayoutItem *item1 = extractLayoutItem(ctx, 0);
|
||||||
QGraphicsLayoutItem *item2 = convertToLayoutItem(ctx, 2);
|
QGraphicsLayoutItem *item2 = extractLayoutItem(ctx, 2);
|
||||||
|
|
||||||
if (!item1 || !item2) {
|
if (!item1 || !item2) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -93,8 +71,8 @@ BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addAnchor) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, anchor) {
|
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, anchor) {
|
||||||
QGraphicsLayoutItem *item1 = convertToLayoutItem(ctx, 0);
|
QGraphicsLayoutItem *item1 = extractLayoutItem(ctx, 0);
|
||||||
QGraphicsLayoutItem *item2 = convertToLayoutItem(ctx, 2);
|
QGraphicsLayoutItem *item2 = extractLayoutItem(ctx, 2);
|
||||||
|
|
||||||
if (!item1 || !item2) {
|
if (!item1 || !item2) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -107,8 +85,8 @@ BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, anchor) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addCornerAnchors) {
|
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addCornerAnchors) {
|
||||||
QGraphicsLayoutItem *item1 = convertToLayoutItem(ctx, 0);
|
QGraphicsLayoutItem *item1 = extractLayoutItem(ctx, 0);
|
||||||
QGraphicsLayoutItem *item2 = convertToLayoutItem(ctx, 2);
|
QGraphicsLayoutItem *item2 = extractLayoutItem(ctx, 2);
|
||||||
|
|
||||||
if (!item1 || !item2) {
|
if (!item1 || !item2) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -121,8 +99,8 @@ BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addCornerAnchors) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addAnchors) {
|
BEGIN_DECLARE_METHOD(QGraphicsAnchorLayout, addAnchors) {
|
||||||
QGraphicsLayoutItem *item1 = convertToLayoutItem(ctx, 0);
|
QGraphicsLayoutItem *item1 = extractLayoutItem(ctx, 0);
|
||||||
QGraphicsLayoutItem *item2 = convertToLayoutItem(ctx, 1);
|
QGraphicsLayoutItem *item2 = extractLayoutItem(ctx, 1);
|
||||||
|
|
||||||
if (!item1 || !item2) {
|
if (!item1 || !item2) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
|
|
@ -72,33 +72,11 @@ DECLARE_INT_NUMBER_SET_METHOD(QGraphicsGridLayout, setColumnFixedWidth)
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
QGraphicsLayoutItem *getLayoutItem(QScriptContext *ctx, int index = 0)
|
QGraphicsLayoutItem *extractLayoutItem(QScriptContext *ctx, int index = 0);
|
||||||
{
|
|
||||||
QObject *object = ctx->argument(index).toQObject();
|
|
||||||
QGraphicsLayoutItem *item = qobject_cast<QGraphicsWidget*>(object);
|
|
||||||
|
|
||||||
if (!item) {
|
|
||||||
item = qscriptvalue_cast<QGraphicsLayout*>(ctx->argument(index));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!item) {
|
|
||||||
AppletInterface *interface = qobject_cast<AppletInterface*>(object);
|
|
||||||
|
|
||||||
if (!interface) {
|
|
||||||
interface = qobject_cast<AppletInterface*>(ctx->engine()->globalObject().property("plasmoid").toQObject());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (interface) {
|
|
||||||
item = interface->applet();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
|
|
||||||
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
||||||
{
|
{
|
||||||
QGraphicsLayoutItem *parent = getLayoutItem(ctx);
|
QGraphicsLayoutItem *parent = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
|
return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
|
||||||
|
@ -108,7 +86,7 @@ static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
||||||
}
|
}
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsGridLayout, setAlignment) {
|
BEGIN_DECLARE_METHOD(QGraphicsGridLayout, setAlignment) {
|
||||||
QGraphicsLayoutItem *item = getLayoutItem(ctx);
|
QGraphicsLayoutItem *item = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -119,7 +97,7 @@ BEGIN_DECLARE_METHOD(QGraphicsGridLayout, setAlignment) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsGridLayout, addItem) {
|
BEGIN_DECLARE_METHOD(QGraphicsGridLayout, addItem) {
|
||||||
QGraphicsLayoutItem *item = getLayoutItem(ctx);
|
QGraphicsLayoutItem *item = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
|
|
@ -19,9 +19,11 @@
|
||||||
#include <QtScript/QScriptValue>
|
#include <QtScript/QScriptValue>
|
||||||
#include <QtScript/QScriptEngine>
|
#include <QtScript/QScriptEngine>
|
||||||
#include <QtScript/QScriptContext>
|
#include <QtScript/QScriptContext>
|
||||||
#include <QtGui/QGraphicsWidget>
|
#include <QtGui/QGraphicsAnchorLayout>
|
||||||
#include <QtGui/QGraphicsLinearLayout>
|
|
||||||
#include <QtGui/QGraphicsLayout>
|
#include <QtGui/QGraphicsLayout>
|
||||||
|
#include <QtGui/QGraphicsLinearLayout>
|
||||||
|
#include <QtGui/QGraphicsGridLayout>
|
||||||
|
#include <QtGui/QGraphicsWidget>
|
||||||
|
|
||||||
#include <Plasma/Applet>
|
#include <Plasma/Applet>
|
||||||
|
|
||||||
|
@ -32,6 +34,8 @@ Q_DECLARE_METATYPE(QScript::Pointer<QGraphicsItem>::wrapped_pointer_type)
|
||||||
Q_DECLARE_METATYPE(QGraphicsWidget*)
|
Q_DECLARE_METATYPE(QGraphicsWidget*)
|
||||||
Q_DECLARE_METATYPE(QGraphicsLayout*)
|
Q_DECLARE_METATYPE(QGraphicsLayout*)
|
||||||
Q_DECLARE_METATYPE(QGraphicsLayoutItem*)
|
Q_DECLARE_METATYPE(QGraphicsLayoutItem*)
|
||||||
|
Q_DECLARE_METATYPE(QGraphicsAnchorLayout*)
|
||||||
|
Q_DECLARE_METATYPE(QGraphicsGridLayout*)
|
||||||
DECLARE_POINTER_METATYPE(QGraphicsLinearLayout)
|
DECLARE_POINTER_METATYPE(QGraphicsLinearLayout)
|
||||||
|
|
||||||
DECLARE_VOID_NUMBER_METHOD(QGraphicsLinearLayout, removeAt)
|
DECLARE_VOID_NUMBER_METHOD(QGraphicsLinearLayout, removeAt)
|
||||||
|
@ -42,24 +46,45 @@ DECLARE_VOID_QUAD_NUMBER_METHOD(QGraphicsLinearLayout, setContentsMargins)
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
QGraphicsLayoutItem *layoutItem(QScriptContext *ctx, int index = 0)
|
// Q_DECLARE_METATYPE(QGraphicsLayoutItem*)
|
||||||
|
QGraphicsLayoutItem *extractLayoutItem(QScriptContext *ctx, int index = 0)
|
||||||
{
|
{
|
||||||
QObject *object = ctx->argument(index).toQObject();
|
QScriptValue v = ctx->argument(index);
|
||||||
QGraphicsLayoutItem *item = qobject_cast<QGraphicsWidget*>(object);
|
if (ctx->argumentCount() == 0 || v.isQObject()) {
|
||||||
|
QObject *object = v.toQObject();
|
||||||
|
QGraphicsWidget *w = qobject_cast<QGraphicsWidget *>(object);
|
||||||
|
if (!w) {
|
||||||
|
AppletInterface *interface = qobject_cast<AppletInterface*>(object);
|
||||||
|
if (!interface) {
|
||||||
|
interface = qobject_cast<AppletInterface*>(ctx->engine()->globalObject().property("plasmoid").toQObject());
|
||||||
|
}
|
||||||
|
|
||||||
if (!item) {
|
if (interface) {
|
||||||
item = qscriptvalue_cast<QGraphicsLayout*>(ctx->argument(index));
|
w = interface->applet();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!item) {
|
|
||||||
AppletInterface *interface = qobject_cast<AppletInterface*>(object);
|
|
||||||
|
|
||||||
if (!interface) {
|
|
||||||
interface = qobject_cast<AppletInterface*>(ctx->engine()->globalObject().property("plasmoid").toQObject());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interface) {
|
return w;
|
||||||
item = interface->applet();
|
}
|
||||||
|
|
||||||
|
QVariant variant = v.toVariant();
|
||||||
|
QGraphicsLayoutItem *item = variant.value<QGraphicsLayoutItem *>();
|
||||||
|
//this is horribly ugly code, but when a QLinearLayout* is stuffed into a QVariant,
|
||||||
|
//QVariant does not know that it is a QGraphicsLayoutItem. repeat for all subclasses
|
||||||
|
//of same
|
||||||
|
if (!item) {
|
||||||
|
item = variant.value<QGraphicsLayout *>();
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
item = variant.value<QGraphicsLinearLayout *>();
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
item = variant.value<QGraphicsGridLayout *>();
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
item = variant.value<QGraphicsAnchorLayout *>();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,7 +93,7 @@ QGraphicsLayoutItem *layoutItem(QScriptContext *ctx, int index = 0)
|
||||||
|
|
||||||
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
|
||||||
{
|
{
|
||||||
QGraphicsLayoutItem *parent = layoutItem(ctx);
|
QGraphicsLayoutItem *parent = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
|
return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
|
||||||
|
@ -86,7 +111,7 @@ BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, orientation) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setAlignment) {
|
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setAlignment) {
|
||||||
QGraphicsLayoutItem *item = layoutItem(ctx);
|
QGraphicsLayoutItem *item = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -97,7 +122,7 @@ BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setAlignment) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, insertItem) {
|
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, insertItem) {
|
||||||
QGraphicsLayoutItem *item = layoutItem(ctx, 1);
|
QGraphicsLayoutItem *item = extractLayoutItem(ctx, 1);
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -108,7 +133,7 @@ BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, insertItem) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, removeItem) {
|
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, removeItem) {
|
||||||
QGraphicsLayoutItem *item = layoutItem(ctx);
|
QGraphicsLayoutItem *item = extractLayoutItem(ctx);
|
||||||
|
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return eng->undefinedValue();
|
return eng->undefinedValue();
|
||||||
|
@ -130,7 +155,7 @@ BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setStretchFactor) {
|
||||||
} END_DECLARE_METHOD
|
} END_DECLARE_METHOD
|
||||||
|
|
||||||
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, addItem) {
|
BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, addItem) {
|
||||||
QGraphicsLayoutItem *item = layoutItem(ctx);
|
QGraphicsLayoutItem *item = extractLayoutItem(ctx);
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return ctx->throwError(QScriptContext::TypeError,
|
return ctx->throwError(QScriptContext::TypeError,
|
||||||
"QGraphicsLinearLayout.prototype.addItem: argument is not a GraphicsLayoutItem");
|
"QGraphicsLinearLayout.prototype.addItem: argument is not a GraphicsLayoutItem");
|
||||||
|
@ -171,6 +196,11 @@ BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, spacing) {
|
||||||
QScriptValue constructLinearLayoutClass(QScriptEngine *eng)
|
QScriptValue constructLinearLayoutClass(QScriptEngine *eng)
|
||||||
{
|
{
|
||||||
// QScriptValue proto = QScript::wrapGVPointer<QGraphicsLinearLayout>(eng, new QGraphicsLinearLayout(), );
|
// QScriptValue proto = QScript::wrapGVPointer<QGraphicsLinearLayout>(eng, new QGraphicsLinearLayout(), );
|
||||||
|
qRegisterMetaType<QGraphicsLayoutItem*>();
|
||||||
|
QGraphicsLayoutItem * i = new QGraphicsLinearLayout;
|
||||||
|
QVariant v;
|
||||||
|
///v.setValue<QGraphicsLayoutItem*>(i);
|
||||||
|
v.setValue<void*>(i);
|
||||||
QScriptValue proto = QScript::wrapPointer<QGraphicsLinearLayout>(eng, new QGraphicsLinearLayout(), QScript::UserOwnership);
|
QScriptValue proto = QScript::wrapPointer<QGraphicsLinearLayout>(eng, new QGraphicsLinearLayout(), QScript::UserOwnership);
|
||||||
const QScriptValue::PropertyFlags getter = QScriptValue::PropertyGetter;
|
const QScriptValue::PropertyFlags getter = QScriptValue::PropertyGetter;
|
||||||
const QScriptValue::PropertyFlags setter = QScriptValue::PropertySetter;
|
const QScriptValue::PropertyFlags setter = QScriptValue::PropertySetter;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user