summaryrefslogtreecommitdiffstats
path: root/kjsembed/slotutils.h
diff options
context:
space:
mode:
Diffstat (limited to 'kjsembed/slotutils.h')
-rw-r--r--kjsembed/slotutils.h175
1 files changed, 175 insertions, 0 deletions
diff --git a/kjsembed/slotutils.h b/kjsembed/slotutils.h
new file mode 100644
index 00000000..ff43a95a
--- /dev/null
+++ b/kjsembed/slotutils.h
@@ -0,0 +1,175 @@
+// -*- c++ -*-
+
+/*
+ * Copyright (C) 2001-2003, Richard J. Moore <rich@kde.org>
+ *
+ * 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 <kjs/object.h>
+#include <kjsembed/jsbinding.h>
+
+class QObject;
+
+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,
+
+ SignatureQWidget,
+
+ 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 QString &sig );
+
+ /** Connects the specified signal to the specified slot. */
+ static bool connect( QObject *sender, const char *sig, QObject *recv, const char *dest );
+
+ static KJS::Boolean disconnect( KJS::ExecState *exec, KJS::Object &self,
+ QObject *sender, const char *sig, QObject *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 QUObject or KJS::Null. */
+ static KJS::Value extractValue( KJS::ExecState *exec, QUObject *uo, JSObjectProxy *parent=0 );
+
+ /** Implant an int into a QUObject. */
+ static void implantInt( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v );
+ /** Implant a QString into a QUObject. */
+ static void implantQString( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v );
+ /** Implant a bool into a QUObject. */
+ static void implantBool( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v );
+ /** Implant a double into a QUObject. */
+ static void implantDouble( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v );
+ /** Implant a C string into a QUObject. */
+ static void implantCString( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v );
+
+ /** Implant a KURL into a QUObject. */
+ static void implantURL( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, KURL *url );
+ /** Implant a QColor into a QUObject. */
+ static void implantColor( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QColor *color );
+ /** Implant a QPoint into a QUObject. */
+ static void implantPoint( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QPoint *point );
+ /** Implant a QRect into a QUObject. */
+ static void implantRect( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QRect *rect );
+ /** Implant a QSize into a QUObject. */
+ static void implantSize( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QSize *size );
+
+ /** Implant a QDate into a QUObject. */
+ static void implantDate( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QDate *date );
+ /** Implant a QTime into a QUObject. */
+ static void implantTime( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QTime *time );
+ /** Implant a QDateTime into a QUObject. */
+ static void implantDateTime( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QDateTime *datetime );
+ /** Implant a QPixmap into a QUObject. */
+ static void implantPixmap( KJS::ExecState *exec, QUObject *uo, const KJS::Value &v, QPixmap *pix );
+
+ /**
+ * Implant a value proxy into a QUObject. 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, QUObject *uo,
+ const KJS::Value &v, const QString &clazz);
+
+ /** Implant a QVariant into a QUObject. */
+ static bool implantQVariant( KJS::ExecState *exec, QUObject *uo,const KJS::Value &v);
+
+ /**
+ * Implant an opaque proxy into a QUObject. 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 *, QUObject *uo,
+ const KJS::Value &v, const QString &clazz );
+
+ /**
+ * Implant an object proxy into a QUObject. The object proxy'd by the specified value
+ * must inherit the class specified for the converstion to succeed.
+ */
+ static bool implantObjectProxy( KJS::ExecState *exec, QUObject *uo,
+ const KJS::Value &v, const QString &clazz );
+ /** Implant a QString into a QUObject. */
+ static void implantStringList(KJS::ExecState *exec, QUObject *uo,
+ const KJS::Value &v, QStringList *lst );
+
+ /** Implant a char* into a QUObject. */
+ static void implantCharStar( KJS::ExecState *exec, QUObject *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: