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

Plasma

linearlayout.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/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 void insertItem(int index, QGraphicsLayoutItem * item)
00094 void removeItem(QGraphicsLayoutItem * item)
00095 
00096 void setAlignment(QGraphicsLayoutItem * item, Qt::Alignment alignment)
00097 void setStretchFactor(QGraphicsLayoutItem * item, int stretch)
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 //    QScriptValue proto = QScript::wrapGVPointer<QGraphicsLinearLayout>(eng, new QGraphicsLinearLayout(), );
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     //ADD_GET_METHOD(proto, y);
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     //ADD_ENUM_VALUE(ctorFun, QGraphicsItem, ItemIsMovable);
00143 
00144     return ctorFun;
00145 }

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
  •   libsolidcontrol
  •   libtaskmanager
  • Plasma
  •   Animators
  •   Applets
  •   Engines
  • Solid Modules
Generated for API Reference by doxygen 1.5.7
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