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

kjsembed

qwidget_binding.cpp

Go to the documentation of this file.
00001 /* This file is part of the KDE libraries
00002     Copyright (C) 2005, 2006 Ian Reinhart Geiser <geiseri@kde.org>
00003     Copyright (C) 2005, 2006 Matt Broadstone <mbroadst@gmail.com>
00004     Copyright (C) 2005, 2006 Richard J. Moore <rich@kde.org>
00005     Copyright (C) 2005, 2006 Erik L. Bunce <kde@bunce.us>
00006 
00007     This library is free software; you can redistribute it and/or
00008     modify it under the terms of the GNU Library General Public
00009     License as published by the Free Software Foundation; either
00010     version 2 of the License, or (at your option) any later version.
00011 
00012     This library is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015     Library General Public License for more details.
00016 
00017     You should have received a copy of the GNU Library General Public License
00018     along with this library; see the file COPYING.LIB.  If not, write to
00019     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00020     Boston, MA 02110-1301, USA.
00021 */
00022 #include "qwidget_binding.h"
00023 #include "static_binding.h"
00024 #include "qpainter_binding.h"
00025 #include "kjseglobal.h"
00026 
00027 #include <kjs/object.h>
00028 #include <QtCore/QDebug>
00029 
00030 #include <QtGui/QWidget>
00031 #include <QtGui/QAction>
00032 #include <QtGui/QLayout>
00033 #include <QtUiTools/QUiLoader>
00034 
00035 #include <QtCore/QFile>
00036 
00037 namespace KJSEmbed
00038 {
00039     static QUiLoader *gUiLoader = 0L;
00040 
00041     QUiLoader *uiLoader()
00042     {
00043         if( gUiLoader == 0 )
00044       gUiLoader = new QUiLoader();
00045         return gUiLoader;
00046     }
00047 }
00048 
00049 using namespace KJSEmbed;
00050 
00051 namespace WidgetNS
00052 {
00053 
00054 START_QOBJECT_METHOD( adjustSize, QWidget )
00055     object->adjustSize();
00056 END_QOBJECT_METHOD
00057 START_QOBJECT_METHOD( grabMouse, QWidget )
00058     object->grabMouse();
00059 END_QOBJECT_METHOD
00060 START_QOBJECT_METHOD( grabKeyboard, QWidget )
00061     object->grabKeyboard();
00062 END_QOBJECT_METHOD
00063 START_QOBJECT_METHOD( releaseMouse, QWidget )
00064     object->releaseMouse();
00065 END_QOBJECT_METHOD
00066 START_QOBJECT_METHOD( releaseKeyboard, QWidget )
00067     object->releaseKeyboard();
00068 END_QOBJECT_METHOD
00069 START_QOBJECT_METHOD( childAt, QWidget )
00070     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 0);
00071     int x,y;
00072     QWidget *child = 0;
00073     if( pt.isNull())
00074     {
00075         x = KJSEmbed::extractVariant<int>(exec, args, 0);
00076         y = KJSEmbed::extractVariant<int>(exec, args, 1);
00077         child = object->childAt(x,y);
00078     }
00079     else
00080     {
00081         child = object->childAt(pt);
00082     }
00083     result = new QWidgetBinding(exec, child);
00084 END_QOBJECT_METHOD
00085 START_QOBJECT_METHOD( focusWidget, QWidget )
00086     result = KJSEmbed::createQObject(exec, object->focusWidget() );
00087 END_QOBJECT_METHOD
00088 START_QOBJECT_METHOD( heightForWidth, QWidget )
00089 //    qDebug() << "heightForWidth() object=" << object << " imp=" << imp;
00090     int width = KJSEmbed::extractInt(exec, args, 0);
00091     result = KJS::jsNumber( object->heightForWidth(width));
00092 END_QOBJECT_METHOD
00093 START_QOBJECT_METHOD( mapFrom, QWidget )
00094     QWidget *w = KJSEmbed::extractObject<QWidget>(exec, args, 0, 0);
00095     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 1);
00096     result = KJSEmbed::createVariant(exec, "QPoint", object->mapFrom(w, pt));
00097 END_QOBJECT_METHOD
00098 START_QOBJECT_METHOD( mapFromGlobal, QWidget )
00099     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 0);
00100     result = KJSEmbed::createVariant(exec, "QPoint", object->mapFromGlobal(pt));
00101 END_QOBJECT_METHOD
00102 START_QOBJECT_METHOD( mapFromParent, QWidget )
00103     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 0);
00104     result = KJSEmbed::createVariant(exec, "QPoint", object->mapFromParent(pt));
00105 END_QOBJECT_METHOD
00106 START_QOBJECT_METHOD( mapTo, QWidget )
00107     QWidget *w = KJSEmbed::extractObject<QWidget>(exec, args, 0, 0);
00108     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 1);
00109     result = KJSEmbed::createVariant(exec, "QPoint", object->mapTo(w, pt));
00110 END_QOBJECT_METHOD
00111 START_QOBJECT_METHOD( mapToParent, QWidget )
00112     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 0);
00113     result = KJSEmbed::createVariant(exec, "QPoint", object->mapToParent(pt));
00114 END_QOBJECT_METHOD
00115 START_QOBJECT_METHOD( mapToGlobal, QWidget )
00116     QPoint pt = KJSEmbed::extractVariant<QPoint>(exec, args, 0);
00117     result = KJSEmbed::createVariant(exec, "QPoint", object->mapToGlobal(pt));
00118 END_QOBJECT_METHOD
00119 
00120 }
00121 
00122 START_METHOD_LUT( QWidgetBinding )
00123     {"adjustSize", 0, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::adjustSize},
00124     {"grabMouse", 0, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::grabMouse},
00125     {"grabKeyboard", 0, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::grabKeyboard},
00126     {"releaseMouse", 0, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::releaseMouse},
00127     {"releaseKeyboard", 0, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::releaseKeyboard},
00128     {"childAt", 1, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::childAt},
00129     {"focusWidget", 0, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::focusWidget},
00130     {"heightForWidth", 1, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::heightForWidth},
00131     {"mapFrom", 2, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::mapFrom},
00132     {"mapFromGlobal", 1, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::mapFromGlobal},
00133     {"mapFromParent", 1, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::mapFromParent},
00134     {"mapTo", 2, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::mapTo},
00135     {"mapToParent", 1, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::mapToParent},
00136     {"mapToGlobal", 1, KJS::DontDelete|KJS::ReadOnly, &WidgetNS::mapToGlobal}
00137 END_METHOD_LUT
00138 
00139 NO_ENUMS( QWidgetBinding )
00140 NO_STATICS( QWidgetBinding )
00141 
00142 KJSO_SIMPLE_BINDING_CTOR( QWidgetBinding, QWidget, QObjectBinding )
00143 KJSO_QOBJECT_BIND(QWidgetBinding, QWidget)
00144 
00145 KJSO_START_CTOR( QWidgetBinding, QWidget, 0 )
00146     //qDebug() << "QWidgetBinding::CTOR args.size()=" << args.size();
00147     if( args.size() > 0 )
00148     {
00149         QString widgetName = toQString(args[0]->toString(exec));
00150         QWidget *parentWidget = 0;
00151         KJSEmbed::QObjectBinding *parentImp = KJSEmbed::extractBindingImp<KJSEmbed::QObjectBinding>(exec, args[1] );
00152         if( parentImp )
00153         {
00154             parentWidget = parentImp->object<QWidget>();
00155         }
00156 
00157         QWidget* widget = uiLoader()->createWidget(widgetName, parentWidget, "QWidget");
00158         if( widget )
00159             return new QWidgetBinding(exec, widget);
00160 
00161         return KJS::throwError(exec, KJS::TypeError, toUString(i18n("'%1' is not a valid QWidget.", widgetName)));
00162     }
00163     else
00164     {
00165         QWidget* widget = new QWidget();
00166         if (widget)
00167             return new QWidgetBinding(exec, widget);
00168     }
00169 
00170     return KJS::throwError(exec, KJS::GeneralError, toUString(i18n("Must supply a widget name.")));
00171 END_CTOR
00172 
00173 //kate: indent-spaces on; indent-width 4; replace-tabs on; indent-mode cstyle;

kjsembed

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

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • KIO
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • Kross
  • KUtils
  • Nepomuk
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs 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