Plasma
linearlayout.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <QtScript/QScriptValue>
00020 #include <QtScript/QScriptEngine>
00021 #include <QtScript/QScriptContext>
00022 #include <QtGui/QGraphicsWidget>
00023 #include <QtGui/QGraphicsGridLayout>
00024 #include <QtGui/QGraphicsLinearLayout>
00025
00026 #include <Plasma/Applet>
00027
00028 #include "../backportglobal.h"
00029 #include "../appletinterface.h"
00030
00031 Q_DECLARE_METATYPE(QScript::Pointer<QGraphicsItem>::wrapped_pointer_type)
00032 Q_DECLARE_METATYPE(QGraphicsWidget*)
00033 Q_DECLARE_METATYPE(QGraphicsGridLayout*)
00034 DECLARE_POINTER_METATYPE(QGraphicsLinearLayout)
00035
00036 DECLARE_VOID_NUMBER_METHOD(QGraphicsLinearLayout, removeAt)
00037 DECLARE_VOID_NUMBER_METHOD(QGraphicsLinearLayout, addStretch)
00038 DECLARE_VOID_NUMBER_NUMBER_METHOD(QGraphicsLinearLayout, insertStretch)
00039 DECLARE_VOID_NUMBER_NUMBER_METHOD(QGraphicsLinearLayout, setItemSpacing)
00040 DECLARE_VOID_QUAD_NUMBER_METHOD(QGraphicsLinearLayout, setContentsMargins)
00041 DECLARE_NUMBER_GET_SET_METHODS(QGraphicsLinearLayout, spacing, setSpacing)
00042
00044
00045 QGraphicsLayoutItem *layoutItem(QScriptContext *ctx, int index)
00046 {
00047 QGraphicsLayoutItem *item = qscriptvalue_cast<QGraphicsWidget*>(ctx->argument(0));
00048
00049 if (!item) {
00050 item = qscriptvalue_cast<QGraphicsLinearLayout*>(ctx->argument(0));
00051 }
00052
00053 if (!item) {
00054 item = qscriptvalue_cast<QGraphicsGridLayout*>(ctx->argument(0));
00055 }
00056
00057 QObject *appletObject = ctx->argument(0).toQObject();
00058 if (appletObject) {
00059 AppletInterface *interface = qobject_cast<AppletInterface*>(appletObject);
00060 if (interface) {
00061 item = interface->applet();
00062 }
00063 }
00064
00065 return item;
00066 }
00067
00068 static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
00069 {
00070 if (ctx->argumentCount() == 0) {
00071 return ctx->throwError(i18n("LinearLayout requires a parent"));
00072 }
00073
00074 QGraphicsLayoutItem *parent = layoutItem(ctx, 0);
00075
00076 if (!parent) {
00077 return ctx->throwError(i18n("The parent must be a QGraphicsLayoutItem"));
00078 }
00079
00080 return qScriptValueFromValue(eng, new QGraphicsLinearLayout(parent));
00081 }
00082
00083 BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, orientation) {
00084 return QScriptValue(eng, static_cast<int>(self->orientation()));
00085 } END_DECLARE_METHOD
00086
00087 BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, setOrientation) {
00088 self->setOrientation(static_cast<Qt::Orientation>(ctx->argument(0).toInt32()));
00089 return eng->undefinedValue();
00090 } END_DECLARE_METHOD
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100 BEGIN_DECLARE_METHOD(QGraphicsLinearLayout, addItem) {
00101 QGraphicsLayoutItem *item = layoutItem(ctx, 0);
00102 if (!item) {
00103 return ctx->throwError(QScriptContext::TypeError,
00104 "QGraphicsLinearLayout.prototype.addItem: argument is not a GraphicsLayoutItem");
00105 }
00106
00107 self->addItem(item);
00108 return eng->undefinedValue();
00109 } END_DECLARE_METHOD
00110
00111 BEGIN_DECLARE_METHOD(QGraphicsItem, toString) {
00112 return QScriptValue(eng, "QGraphicsLinearLayout");
00113 } END_DECLARE_METHOD
00114
00116
00117 class PrototypeLinearLayout : public QGraphicsLinearLayout
00118 {
00119 public:
00120 PrototypeLinearLayout()
00121 { }
00122 };
00123
00124 QScriptValue constructLinearLayoutClass(QScriptEngine *eng)
00125 {
00126
00127 QScriptValue proto = QScript::wrapPointer<QGraphicsLinearLayout>(eng, new QGraphicsLinearLayout(), QScript::UserOwnership);
00128 ADD_GET_SET_METHODS(proto, spacing, setSpacing);
00129 ADD_GET_SET_METHODS(proto, orientation, setOrientation);
00130
00131 ADD_METHOD(proto, removeAt);
00132 ADD_METHOD(proto, addStretch);
00133 ADD_METHOD(proto, insertStretch);
00134 ADD_METHOD(proto, setItemSpacing);
00135 ADD_METHOD(proto, setContentsMargins);
00136 ADD_METHOD(proto, addItem);
00137 ADD_METHOD(proto, toString);
00138
00139 QScript::registerPointerMetaType<QGraphicsLinearLayout>(eng, proto);
00140
00141 QScriptValue ctorFun = eng->newFunction(ctor, proto);
00142
00143
00144 return ctorFun;
00145 }