// -*- 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 TQObject; 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 TQString &sig ); /** Connects the specified signal to the specified slot. */ static bool connect( TQObject *sender, const char *sig, TQObject *recv, const char *dest ); static KJS::Boolean disconnect( KJS::ExecState *exec, KJS::Object &self, TQObject *sender, const char *sig, TQObject *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 TQString 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 TQColor into a TQUObject. */ static void implantColor( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQColor *color ); /** Implant a TQPoint into a TQUObject. */ static void implantPoint( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQPoint *point ); /** Implant a TQRect into a TQUObject. */ static void implantRect( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQRect *rect ); /** Implant a TQSize into a TQUObject. */ static void implantSize( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQSize *size ); /** Implant a TQDate into a TQUObject. */ static void implantDate( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQDate *date ); /** Implant a TQTime into a TQUObject. */ static void implantTime( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQTime *time ); /** Implant a TQDateTime into a TQUObject. */ static void implantDateTime( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQDateTime *datetime ); /** Implant a TQPixmap into a TQUObject. */ static void implantPixmap( KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQPixmap *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 TQString &clazz); /** Implant a TQVariant 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 TQString &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 TQString &clazz ); /** Implant a TQString into a TQUObject. */ static void implantStringList(KJS::ExecState *exec, TQUObject *uo, const KJS::Value &v, TQStringList *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: