// -*- c++ -*- /* * Copyright (C) 2001-2003, Richard J. Moore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef KJSEMBEDSLOTUTILS_H #define KJSEMBEDSLOTUTILS_H #include "global.h" #include #include class TTQObject; namespace KJS { class Interpreter; } namespace KJSEmbed { namespace Bindings { class JSObjectProxyImp; /** * Provides utility methods for slot invocation. * * @author Richard Moore, rich@kde.org * @version $Id$ */ class KJSEMBED_EXPORT JSSlotUtils { public: /** * Identifiers for fast slot signatures. */ enum SignatureId { SignatureNotSupported = -1, SignatureUnknown, SignatureNone, SignatureInt, SignatureUInt, SignatureLong, SignatureULong, SignatureBool, SignatureDouble, SignatureDateTime, SignatureString, SignatureCString, SignatureDate, SignatureTime, SignatureURL, SignatureColor, SignaturePoint, SignatureRect, SignatureSize, SignaturePixmap, SignatureFont, SignatureImage, SignatureTQWidget, SignatureIntInt, SignatureStringInt, SignatureRectBool, SignatureStringString, SignatureDateDate, SignatureColorString, SignatureStringBool, SignatureIntColor, SignatureIntBool, SignatureURLURL, SignatureURLString, SignatureStringURL, SignatureStringStringString, SignatureStringBoolBool, SignatureStringIntInt, SignatureIntColorBool, SignatureIntIntBool, SignatureIntIntString, SignatureStringBoolInt, SignatureIntIntIntInt,SignatureIntIntFloatFloat, SignatureStringBoolBoolBool, SignatureIntIntIntIntBool, SignatureIntIntIntIntInt, SignatureIntIntIntIntIntInt, SignatureCustom }; /** * Returns the method id for the specified slot signature. If there is no match * then -1 is returned. */ static int findSignature( const TTQString &sig ); /** Connects the specified signal to the specified slot. */ static bool connect( TTQObject *sender, const char *sig, TTQObject *recv, const char *dest ); static KJS::Boolean disconnect( KJS::ExecState *exec, KJS::Object &self, TTQObject *sender, const char *sig, TTQObject *recv, const char *dest ); static KJS::Value invokeSlot( KJS::ExecState *exec, KJS::Object &self, const KJS::List&args, JSObjectProxyImp *proxyimp ); /** Returns the value of the TQUObject or KJS::Null. */ static KJS::Value extractValue( KJS::ExecState *exec, TQUObject *uo, JSObjectProxy *parent=0 ); /** Implant an int into a TQUObject. */ static void implantInt( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v ); /** Implant a TTQString into a TQUObject. */ static void implantTQString( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v ); /** Implant a bool into a TQUObject. */ static void implantBool( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v ); /** Implant a double into a TQUObject. */ static void implantDouble( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v ); /** Implant a C string into a TQUObject. */ static void implantCString( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v ); /** Implant a KURL into a TQUObject. */ static void implantURL( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, KURL *url ); /** Implant a TTQColor into a TQUObject. */ static void implantColor( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQColor *color ); /** Implant a TTQPoint into a TQUObject. */ static void implantPoint( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQPoint *point ); /** Implant a TTQRect into a TQUObject. */ static void implantRect( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQRect *rect ); /** Implant a TTQSize into a TQUObject. */ static void implantSize( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQSize *size ); /** Implant a TTQDate into a TQUObject. */ static void implantDate( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQDate *date ); /** Implant a TTQTime into a TQUObject. */ static void implantTime( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQTime *time ); /** Implant a TTQDateTime into a TQUObject. */ static void implantDateTime( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQDateTime *datetime ); /** Implant a TTQPixmap into a TQUObject. */ static void implantPixmap( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQPixmap *pix ); /** * Implant a value proxy into a TQUObject. The type specified in the clazz parameter * must match the type of the proxy'd value for the method to succeed. */ static bool implantValueProxy( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, const TTQString &clazz); /** Implant a TTQVariant into a TQUObject. */ static bool implantTQVariant( KJS::ExecState *exec, TQUObject *uo,const KJS::Value &v); /** * Implant an opaque proxy into a TQUObject. The type specified in the * clazz parameter must match the type of the proxy'd value for the method * to succeed. */ static bool implantOpaqueProxy( KJS::ExecState *, TQUObject *uo, const KJS::Value &v, const TTQString &clazz ); /** * Implant an object proxy into a TQUObject. The object proxy'd by the specified value * must inherit the class specified for the converstion to succeed. */ static bool implantObjectProxy( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, const TTQString &clazz ); /** Implant a TTQString into a TQUObject. */ static void implantStringList(KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TTQStringList *lst ); /** Implant a char* into a TQUObject. */ static void implantCharStar( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v ); private: JSSlotUtils(); ~JSSlotUtils(); class JSSlotUtilsPrivate *d; }; } // namespace KJSEmbed::Bindings } // namespace KJSEmbed #endif // KJSEMBEDSLOTUTILS_H // Local Variables: // c-basic-offset: 4 // End: