• Skip to content
  • Skip to link menu
KDE 4.1 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

Plasma

graphicsitem.cpp

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2007 Richard J. Moore <rich@kde.org>
00003  *
00004  *   This program is free software; you can redistribute it and/or modify
00005  *   it under the terms of the GNU Library General Public License version 2 as
00006  *   published by the Free Software Foundation
00007  *
00008  *   This program is distributed in the hope that it will be useful,
00009  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00010  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011  *   GNU General Public License for more details
00012  *
00013  *   You should have received a copy of the GNU Library General Public
00014  *   License along with this program; if not, write to the
00015  *   Free Software Foundation, Inc.,
00016  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00017  */
00018 
00019 #include <QtScript/QScriptValue>
00020 #include <QtScript/QScriptEngine>
00021 #include <QtScript/QScriptContext>
00022 #include <QtGui/QCursor>
00023 #include <QtGui/QGraphicsItem>
00024 #include <QtGui/QGraphicsScene>
00025 #include "../backportglobal.h"
00026 
00027 Q_DECLARE_METATYPE(QScript::Pointer<QGraphicsItem>::wrapped_pointer_type)
00028 Q_DECLARE_METATYPE(QList<QGraphicsItem*>)
00029 Q_DECLARE_METATYPE(QPainterPath)
00030 #ifndef QT_NO_CURSOR
00031 Q_DECLARE_METATYPE(QCursor)
00032 #endif
00033 Q_DECLARE_METATYPE(QGraphicsItemGroup*)
00034 Q_DECLARE_METATYPE(QPainter*)
00035 Q_DECLARE_METATYPE(QStyleOptionGraphicsItem*)
00036 
00037 Q_DECLARE_METATYPE(QGraphicsPathItem*)
00038 Q_DECLARE_METATYPE(QGraphicsRectItem*)
00039 Q_DECLARE_METATYPE(QGraphicsEllipseItem*)
00040 Q_DECLARE_METATYPE(QGraphicsPolygonItem*)
00041 Q_DECLARE_METATYPE(QGraphicsLineItem*)
00042 Q_DECLARE_METATYPE(QGraphicsPixmapItem*)
00043 Q_DECLARE_METATYPE(QGraphicsTextItem*)
00044 Q_DECLARE_METATYPE(QGraphicsSimpleTextItem*)
00045 
00046 DECLARE_BOOLEAN_GET_SET_METHODS(QGraphicsItem, acceptDrops, setAcceptDrops)
00047 DECLARE_BOOLEAN_GET_SET_METHODS(QGraphicsItem, acceptsHoverEvents, setAcceptsHoverEvents)
00048 DECLARE_GET_METHOD(QGraphicsItem, boundingRect)
00049 DECLARE_GET_METHOD(QGraphicsItem, children)
00050 DECLARE_GET_METHOD(QGraphicsItem, childrenBoundingRect)
00051 #ifndef QT_NO_CURSOR
00052 DECLARE_GET_SET_METHODS(QGraphicsItem, QCursor, cursor, setCursor)
00053 DECLARE_BOOLEAN_GET_METHOD(QGraphicsItem, hasCursor)
00054 #endif
00055 DECLARE_GET_SET_METHODS(QGraphicsItem, QGraphicsItemGroup*, group, setGroup)
00056 DECLARE_BOOLEAN_GET_SET_METHODS(QGraphicsItem, handlesChildEvents, setHandlesChildEvents)
00057 DECLARE_BOOLEAN_GET_METHOD(QGraphicsItem, hasFocus)
00058 DECLARE_BOOLEAN_GET_SET_METHODS(QGraphicsItem, isEnabled, setEnabled)
00059 DECLARE_BOOLEAN_GET_SET_METHODS(QGraphicsItem, isSelected, setSelected)
00060 DECLARE_BOOLEAN_GET_SET_METHODS(QGraphicsItem, isVisible, setVisible)
00061 DECLARE_GET_METHOD(QGraphicsItem, opaqueArea)
00062 DECLARE_GET_METHOD(QGraphicsItem, pos)
00063 DECLARE_QOBJECT_GET_METHOD(QGraphicsItem, scene)
00064 DECLARE_GET_METHOD(QGraphicsItem, sceneBoundingRect)
00065 DECLARE_GET_METHOD(QGraphicsItem, scenePos)
00066 DECLARE_GET_METHOD(QGraphicsItem, sceneTransform)
00067 DECLARE_GET_METHOD(QGraphicsItem, shape)
00068 #ifndef QT_NO_TOOLTIP
00069 DECLARE_STRING_GET_SET_METHODS(QGraphicsItem, toolTip, setToolTip)
00070 #endif
00071 DECLARE_GET_METHOD(QGraphicsItem, topLevelItem)
00072 DECLARE_GET_SET_METHODS(QGraphicsItem, QTransform, transform, setTransform)
00073 DECLARE_NUMBER_GET_METHOD(QGraphicsItem, type)
00074 DECLARE_NUMBER_GET_METHOD(QGraphicsItem, x)
00075 DECLARE_NUMBER_GET_METHOD(QGraphicsItem, y)
00076 DECLARE_NUMBER_GET_SET_METHODS(QGraphicsItem, zValue, setZValue)
00077 
00078 DECLARE_BOOLEAN_1ARG_METHOD(QGraphicsItem, QPointF, contains)
00079 DECLARE_VOID_METHOD(QGraphicsItem, clearFocus)
00080 DECLARE_VOID_METHOD(QGraphicsItem, hide)
00081 DECLARE_BOOLEAN_1ARG_METHOD(QGraphicsItem, QGraphicsItem*, isAncestorOf)
00082 DECLARE_BOOLEAN_1ARG_METHOD(QGraphicsItem, QGraphicsItem*, isObscuredBy)
00083 DECLARE_VOID_NUMBER_NUMBER_METHOD(QGraphicsItem, moveBy)
00084 DECLARE_VOID_METHOD(QGraphicsItem, resetTransform)
00085 #ifndef QT_NO_CURSOR
00086 DECLARE_VOID_METHOD(QGraphicsItem, unsetCursor)
00087 #endif
00088 DECLARE_VOID_METHOD(QGraphicsItem, show)
00089 DECLARE_VOID_NUMBER_NUMBER_METHOD(QGraphicsItem, translate)
00090 DECLARE_VOID_NUMBER_NUMBER_METHOD(QGraphicsItem, scale)
00091 DECLARE_VOID_NUMBER_NUMBER_METHOD(QGraphicsItem, shear)
00092 DECLARE_VOID_1ARG_METHOD(QGraphicsItem, QGraphicsItem*, installSceneEventFilter)
00093 DECLARE_VOID_1ARG_METHOD(QGraphicsItem, QGraphicsItem*, removeSceneEventFilter)
00094 DECLARE_VOID_NUMBER_METHOD(QGraphicsItem, rotate)
00095 
00097 
00098 static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *)
00099 {
00100     return ctx->throwError("QGraphicsItem cannot be instantiated");
00101 }
00102 
00103 BEGIN_DECLARE_METHOD(QGraphicsItem, acceptedMouseButtons) {
00104     return QScriptValue(eng, static_cast<int>(self->acceptedMouseButtons()));
00105 } END_DECLARE_METHOD
00106 
00107 BEGIN_DECLARE_METHOD(QGraphicsItem, advance) {
00108     self->advance(ctx->argument(0).toInt32());
00109     return eng->undefinedValue();
00110 } END_DECLARE_METHOD
00111 
00112 BEGIN_DECLARE_METHOD(QGraphicsItem, collidesWithItem) {
00113     QGraphicsItem *other = qscriptvalue_cast<QGraphicsItem*>(ctx->argument(0));
00114     if (!other) {
00115         return ctx->throwError(QScriptContext::TypeError,
00116                                "QGraphicsItem.prototype.collidesWithItem: argument is not a GraphicsItem");
00117     }
00118     if (ctx->argument(1).isUndefined())
00119         return QScriptValue(eng, self->collidesWithItem(other));
00120     else
00121         return QScriptValue(eng, self->collidesWithItem(other, static_cast<Qt::ItemSelectionMode>(ctx->argument(1).toInt32())));
00122 } END_DECLARE_METHOD
00123 
00124 BEGIN_DECLARE_METHOD(QGraphicsItem, collidesWithPath) {
00125     QPainterPath path = qscriptvalue_cast<QPainterPath>(ctx->argument(0));
00126     if (ctx->argument(1).isUndefined())
00127         return QScriptValue(eng, self->collidesWithPath(path));
00128     else
00129         return QScriptValue(eng, self->collidesWithPath(path, static_cast<Qt::ItemSelectionMode>(ctx->argument(1).toInt32())));
00130 } END_DECLARE_METHOD
00131 
00132 BEGIN_DECLARE_METHOD(QGraphicsItem, collidingItems) {
00133     if (ctx->argument(0).isUndefined())
00134         return qScriptValueFromValue(eng, self->collidingItems());
00135     else
00136         return qScriptValueFromValue(eng, self->collidingItems(static_cast<Qt::ItemSelectionMode>(ctx->argument(0).toInt32())));
00137 } END_DECLARE_METHOD
00138 
00139 BEGIN_DECLARE_METHOD(QGraphicsItem, data) {
00140     return eng->newVariant(self->data(ctx->argument(0).toInt32()));
00141 } END_DECLARE_METHOD
00142 
00143 BEGIN_DECLARE_METHOD(QGraphicsItem, ensureVisible) {
00144     Q_UNUSED(eng);
00145     return ctx->throwError("QGraphicsItem.prototype.ensureVisible is not implemented");
00146 } END_DECLARE_METHOD
00147 
00148 BEGIN_DECLARE_METHOD(QGraphicsItem, flags) {
00149     return QScriptValue(eng, static_cast<int>(self->flags()));
00150 } END_DECLARE_METHOD
00151 
00152 BEGIN_DECLARE_METHOD(QGraphicsItem, isObscured) {
00153     if (ctx->argumentCount() == 0) {
00154         return QScriptValue(eng, self->isObscured());
00155     } else if (ctx->argumentCount() > 1) {
00156         return QScriptValue(eng, self->isObscured(ctx->argument(0).toInt32(),
00157                                                   ctx->argument(1).toInt32(),
00158                                                   ctx->argument(2).toInt32(),
00159                                                   ctx->argument(3).toInt32()));
00160     } else {
00161         return QScriptValue(eng, self->isObscured(qscriptvalue_cast<QRectF>(ctx->argument(0))));
00162     }
00163 } END_DECLARE_METHOD
00164 
00165 BEGIN_DECLARE_METHOD(QGraphicsItem, mapFromItem) {
00166     Q_UNUSED(eng);
00167     return ctx->throwError("QGraphicsItem.prototype.mapFromItem is not implemented");
00168 } END_DECLARE_METHOD
00169 
00170 BEGIN_DECLARE_METHOD(QGraphicsItem, mapFromParent) {
00171     Q_UNUSED(eng);
00172     return ctx->throwError("QGraphicsItem.prototype.mapFromParent is not implemented");
00173 } END_DECLARE_METHOD
00174 
00175 BEGIN_DECLARE_METHOD(QGraphicsItem, mapFromScene) {
00176     Q_UNUSED(eng);
00177     return ctx->throwError("QGraphicsItem.prototype.mapFromScene is not implemented");
00178 } END_DECLARE_METHOD
00179 
00180 BEGIN_DECLARE_METHOD(QGraphicsItem, mapToItem) {
00181     Q_UNUSED(eng);
00182     return ctx->throwError("QGraphicsItem.prototype.mapToItem is not implemented");
00183 } END_DECLARE_METHOD
00184 
00185 BEGIN_DECLARE_METHOD(QGraphicsItem, mapToParent) {
00186     Q_UNUSED(eng);
00187     return ctx->throwError("QGraphicsItem.prototype.mapToParent is not implemented");
00188 } END_DECLARE_METHOD
00189 
00190 BEGIN_DECLARE_METHOD(QGraphicsItem, mapToScene) {
00191     Q_UNUSED(eng);
00192     return ctx->throwError("QGraphicsItem.prototype.mapToScene is not implemented");
00193 } END_DECLARE_METHOD
00194 
00195 BEGIN_DECLARE_METHOD(QGraphicsItem, paint) {
00196     self->paint(qscriptvalue_cast<QPainter*>(ctx->argument(0)),
00197                 qscriptvalue_cast<QStyleOptionGraphicsItem*>(ctx->argument(1)),
00198                 qscriptvalue_cast<QWidget*>(ctx->argument(2)));
00199     return eng->undefinedValue();
00200 } END_DECLARE_METHOD
00201 
00202 BEGIN_DECLARE_METHOD(QGraphicsItem, parentItem) {
00203     QGraphicsItem *parent = self->parentItem();
00204     if (!parent)
00205         return eng->nullValue();
00206     QScriptValue ret = qScriptValueFromValue(eng, parent);
00207     QScriptValue proto;
00208     switch (parent->type()) {
00209     case 2:
00210         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsPathItem*>());
00211         break;
00212     case 3:
00213         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsRectItem*>());
00214         break;
00215     case 4:
00216         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsEllipseItem*>());
00217         break;
00218     case 5:
00219         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsPolygonItem*>());
00220         break;
00221     case 6:
00222         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsLineItem*>());
00223         break;
00224     case 7:
00225         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsPixmapItem*>());
00226         break;
00227     case 8:
00228         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsTextItem*>());
00229         break;
00230     case 9:
00231         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsSimpleTextItem*>());
00232         break;
00233     case 10:
00234         proto = eng->defaultPrototype(qMetaTypeId<QGraphicsItemGroup*>());
00235         break;
00236     }
00237     if (proto.isValid())
00238         ret.setPrototype(proto);
00239     return ret;
00240 } END_DECLARE_METHOD
00241 
00242 BEGIN_DECLARE_METHOD(QGraphicsItem, setAcceptedMouseButtons) {
00243     self->setAcceptedMouseButtons(static_cast<Qt::MouseButtons>(ctx->argument(0).toInt32()));
00244     return eng->undefinedValue();
00245 } END_DECLARE_METHOD
00246 
00247 BEGIN_DECLARE_METHOD(QGraphicsItem, setData) {
00248     self->setData(ctx->argument(0).toInt32(), ctx->argument(1).toVariant());
00249     return eng->undefinedValue();
00250 } END_DECLARE_METHOD
00251 
00252 BEGIN_DECLARE_METHOD(QGraphicsItem, setFlag) {
00253     QGraphicsItem::GraphicsItemFlag flag = static_cast<QGraphicsItem::GraphicsItemFlag>(ctx->argument(0).toInt32());
00254     if (ctx->argument(1).isUndefined())
00255         self->setFlag(flag);
00256     else
00257         self->setFlag(flag, ctx->argument(1).toBoolean());
00258     return eng->undefinedValue();
00259 } END_DECLARE_METHOD
00260 
00261 BEGIN_DECLARE_METHOD(QGraphicsItem, setFlags) {
00262     self->setFlags(static_cast<QGraphicsItem::GraphicsItemFlags>(ctx->argument(0).toInt32()));
00263     return eng->undefinedValue();
00264 } END_DECLARE_METHOD
00265 
00266 BEGIN_DECLARE_METHOD(QGraphicsItem, setFocus) {
00267     if (ctx->argument(0).isUndefined())
00268         self->setFocus();
00269     else
00270         self->setFocus(static_cast<Qt::FocusReason>(ctx->argument(0).toInt32()));
00271     return eng->undefinedValue();
00272 } END_DECLARE_METHOD
00273 
00274 BEGIN_DECLARE_METHOD(QGraphicsItem, setParentItem) {
00275     QScriptValue arg = ctx->argument(0);
00276     QGraphicsItem *item = qscriptvalue_cast<QGraphicsItem*>(arg);
00277     self->setParentItem(item);
00278     if (item)
00279         QScript::maybeReleaseOwnership(ctx->thisObject());
00280     else if (!self->scene())
00281         QScript::maybeTakeOwnership(ctx->thisObject());
00282     return eng->undefinedValue();
00283 } END_DECLARE_METHOD
00284 
00285 BEGIN_DECLARE_METHOD(QGraphicsItem, setPos) {
00286     if (ctx->argumentCount() > 1)
00287         self->setPos(ctx->argument(0).toNumber(), ctx->argument(1).toNumber());
00288     else
00289         self->setPos(qscriptvalue_cast<QPointF>(ctx->argument(0)));
00290     return eng->undefinedValue();
00291 } END_DECLARE_METHOD
00292 
00293 BEGIN_DECLARE_METHOD(QGraphicsItem, update) {
00294     if (ctx->argumentCount() > 1) {
00295         self->update(ctx->argument(0).toNumber(),
00296                      ctx->argument(1).toNumber(),
00297                      ctx->argument(2).toNumber(),
00298                      ctx->argument(3).toNumber());
00299     } else {
00300         self->update(qscriptvalue_cast<QRectF>(ctx->argument(0)));
00301     }
00302     return eng->undefinedValue();
00303 } END_DECLARE_METHOD
00304 
00305 BEGIN_DECLARE_METHOD(QGraphicsItem, toString) {
00306     return QScriptValue(eng, "QGraphicsItem");
00307 } END_DECLARE_METHOD
00308 
00310 
00311 class PrototypeGraphicsItem : public QGraphicsItem
00312 {
00313 public:
00314     PrototypeGraphicsItem()
00315     { }
00316     QRectF boundingRect() const
00317     { return QRectF(); }
00318     void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
00319     { }
00320 };
00321 
00322 QScriptValue constructGraphicsItemClass(QScriptEngine *eng)
00323 {
00324     QScriptValue proto = QScript::wrapGVPointer<QGraphicsItem>(eng, new PrototypeGraphicsItem());
00325     ADD_GET_SET_METHODS(proto, acceptDrops, setAcceptDrops);
00326     ADD_GET_SET_METHODS(proto, acceptsHoverEvents, setAcceptsHoverEvents);
00327     ADD_GET_METHOD(proto, boundingRect);
00328     ADD_GET_METHOD(proto, children);
00329     ADD_GET_METHOD(proto, childrenBoundingRect);
00330 #ifndef QT_NO_CURSOR
00331     ADD_GET_SET_METHODS(proto, cursor, setCursor);
00332     ADD_GET_METHOD(proto, hasCursor);
00333 #endif
00334     ADD_GET_SET_METHODS(proto, group, setGroup);
00335     ADD_GET_SET_METHODS(proto, handlesChildEvents, setHandlesChildEvents);
00336     ADD_GET_METHOD(proto, hasFocus);
00337     ADD_GET_SET_METHODS(proto, isEnabled, setEnabled);
00338     ADD_GET_SET_METHODS(proto, isSelected, setSelected);
00339     ADD_GET_SET_METHODS(proto, isVisible, setVisible);
00340     ADD_GET_METHOD(proto, opaqueArea);
00341     ADD_GET_METHOD(proto, pos);
00342     ADD_GET_METHOD(proto, scene);
00343     ADD_GET_METHOD(proto, sceneBoundingRect);
00344     ADD_GET_METHOD(proto, scenePos);
00345     ADD_GET_METHOD(proto, sceneTransform);
00346     ADD_GET_METHOD(proto, shape);
00347 #ifndef QT_NO_TOOLTIP
00348     ADD_GET_SET_METHODS(proto, toolTip, setToolTip);
00349 #endif
00350     ADD_GET_METHOD(proto, topLevelItem);
00351     ADD_GET_SET_METHODS(proto, transform, setTransform);
00352     ADD_GET_METHOD(proto, type);
00353     ADD_GET_METHOD(proto, x);
00354     ADD_GET_METHOD(proto, y);
00355     ADD_GET_SET_METHODS(proto, zValue, setZValue);
00356 
00357     ADD_METHOD(proto, acceptedMouseButtons);
00358     ADD_METHOD(proto, advance);
00359     ADD_METHOD(proto, clearFocus);
00360     ADD_METHOD(proto, collidesWithItem);
00361     ADD_METHOD(proto, collidesWithPath);
00362     ADD_METHOD(proto, collidingItems);
00363     ADD_METHOD(proto, contains);
00364     ADD_METHOD(proto, data);
00365     ADD_METHOD(proto, ensureVisible);
00366     ADD_METHOD(proto, flags);
00367     ADD_METHOD(proto, hide);
00368     ADD_METHOD(proto, installSceneEventFilter);
00369     ADD_METHOD(proto, isAncestorOf);
00370     ADD_METHOD(proto, isObscured);
00371     ADD_METHOD(proto, isObscuredBy);
00372     ADD_METHOD(proto, mapFromItem);
00373     ADD_METHOD(proto, mapFromParent);
00374     ADD_METHOD(proto, mapFromScene);
00375     ADD_METHOD(proto, mapToItem);
00376     ADD_METHOD(proto, mapToParent);
00377     ADD_METHOD(proto, mapToScene);
00378     ADD_METHOD(proto, moveBy);
00379     ADD_METHOD(proto, paint);
00380     ADD_METHOD(proto, parentItem);
00381     ADD_METHOD(proto, removeSceneEventFilter);
00382     ADD_METHOD(proto, resetTransform);
00383     ADD_METHOD(proto, rotate);
00384     ADD_METHOD(proto, scale);
00385     ADD_METHOD(proto, setAcceptedMouseButtons);
00386     ADD_METHOD(proto, setData);
00387     ADD_METHOD(proto, setFlag);
00388     ADD_METHOD(proto, setFlags);
00389     ADD_METHOD(proto, setFocus);
00390     ADD_METHOD(proto, setParentItem);
00391     ADD_METHOD(proto, setPos);
00392     ADD_METHOD(proto, shear);
00393     ADD_METHOD(proto, show);
00394     ADD_METHOD(proto, toString);
00395     ADD_METHOD(proto, translate);
00396 #ifndef QT_NO_CURSOR
00397     ADD_METHOD(proto, unsetCursor);
00398 #endif
00399     ADD_METHOD(proto, update);
00400 
00401     QScript::registerPointerMetaType<QGraphicsItem>(eng, proto);
00402 
00403     QScriptValue ctorFun = eng->newFunction(ctor, proto);
00404     ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemIsMovable);
00405     ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemIsSelectable);
00406     ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemIsFocusable);
00407     ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemClipsToShape);
00408     ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemClipsChildrenToShape);
00409     ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemIgnoresTransformations);
00410 
00411     return ctorFun;
00412 }

Plasma

Skip menu "Plasma"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

API Reference

Skip menu "API Reference"
  • KWin
  •   KWin Libraries
  • Libraries
  •   libkworkspace
  •   libplasma
  •   libsolidcontrol
  •   libtaskmanager
  • Plasma
  •   Animators
  •   Applets
  •   Engines
  • Solid Modules
Generated for API Reference by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal