diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /kjsembed/bindings/dcop_imp.h | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kjsembed/bindings/dcop_imp.h')
-rw-r--r-- | kjsembed/bindings/dcop_imp.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/kjsembed/bindings/dcop_imp.h b/kjsembed/bindings/dcop_imp.h new file mode 100644 index 00000000..56466a11 --- /dev/null +++ b/kjsembed/bindings/dcop_imp.h @@ -0,0 +1,152 @@ +// $Id$ +// -*- c++ -*- + +/* + * Copyright (C) 2003, Ian Reinhart Geiser <[email protected]> + * + * 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 KJSEMBED_DCOP_IMP_H +#define KJSEMBED_DCOP_IMP_H + +#include "bindingobject.h" +#include <kjsembed/jsobjectproxy_imp.h> +#include <kjsembed/jsbindingbase.h> +#include <dcopobject.h> + +class DCOPClient; +#include <kdatastream.h> +#include <qvariant.h> +#include <qstring.h> + +namespace KJS +{ + class Interpreter; +} + +namespace KJSEmbed { +namespace Bindings { +class JSDCOPInterfacerLoader : public JSBindingBase +{ + public: + KJS::Object createBinding(KJSEmbedPart *jspart, KJS::ExecState *exec, const KJS::List &args) const; + void addBindings( KJSEmbedPart *jspart, KJS::ExecState *exec, KJS::Object &proxy) const; +}; + +/** +* QObject Binding for a DCOP interface +*/ +class JSDCOPInterface : public BindingObject, public DCOPObject +{ + Q_OBJECT + +public: + JSDCOPInterface( KJS::Interpreter *js, QObject *parent, const char *name=0 ); + virtual ~JSDCOPInterface(); + QCStringList functionsDynamic(); + bool processDynamic (const QCString &fun, const QByteArray &data, QCString &replyType, QByteArray &replyData); +public slots: + void publish(const QString& signature); + +private: + QCStringList m_Members; + KJS::Interpreter *m_js; +}; + +class JSDCOPRefLoader : public JSBindingBase +{ + public: + KJS::Object createBinding(KJSEmbedPart *jspart, KJS::ExecState *exec, const KJS::List &args) const; + void addBindings( KJSEmbedPart *jspart, KJS::ExecState *exec, KJS::Object &proxy) const; +}; + +/** + * DCOPRef binding. +*/ +class JSDCOPRef : public JSProxyImp +{ + enum MethodId { Methodcall, Methodsend, Methodapp, Methodobj, Methodtype, MethodsetRef }; + +public: + JSDCOPRef( KJS::ExecState *exec, int id ); + virtual ~JSDCOPRef(); + static void addBindings( KJS::ExecState *exec, KJS::Object &object ); + + /** Returns true iff this object implements the call function. */ + virtual bool implementsCall() const { return true; } + + /** Invokes the call function. */ + virtual KJS::Value call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ); + +private: + int mid; + +}; + +class JSDCOPClientLoader : public JSBindingBase +{ + public: + KJS::Object createBinding(KJSEmbedPart *jspart, KJS::ExecState *exec, const KJS::List &args) const; + void addBindings( KJSEmbedPart *jspart, KJS::ExecState *exec, KJS::Object &proxy) const; +}; + +/** + * Binding for DCOPClient. + */ +class JSDCOPClient : public JSProxyImp +{ + enum MethodId { Methodattach, Methoddetach, MethodisAttached, MethodregisteredApplications, MethodremoteObjects, MethodremoteInterfaces, MethodremoteFunctions, MethodconnectDCOPSignal, MethoddisconnectDCOPSignal, Methodcall, Methodsend, MethodDCOPStart, MethodappId, MethodisApplicationRegistered }; + +public: + JSDCOPClient( KJS::ExecState *exec, int id ); + virtual ~JSDCOPClient(); + + static void addBindings( KJS::ExecState *exec, KJS::Object &object ); + + /** Returns true iff this object implements the call function. */ + virtual bool implementsCall() const { return true; } + + /** Invokes the call function. */ + virtual KJS::Value call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ); + + static KJS::Value demarshall( KJS::ExecState * exec, const QCString& type, QDataStream& data); + static QVariant demarshall( const QCString &type, QDataStream &ds); + static void marshall( const QVariant& data, const QString &typeName, QByteArray& buffer ); + static QStringList getTypes( const QString& function); + + bool attach() const; + bool detach() const; + + bool isAttached() const; + + QString dcopStart( const QString& appName, const QStringList& args); + QStringList registeredApplications(); + QStringList remoteObjects( const QString& remApp); + QStringList remoteInterfaces( const QString& remApp, const QString& remObj ); + QStringList remoteFunctions( const QString& remApp, const QString& remObj); + bool connectDCOPSignal (const QString &sender, const QString &senderObj, const QString &signal, const QString &receiverObj, const QString &slot, bool Volatile = false); + bool disconnectDCOPSignal (const QString &sender, const QString &senderObj, const QString &signal, const QString &receiverObj, const QString &slot); + KJS::Value dcopCall(KJS::ExecState *exec, KJS::Object &, const KJS::List &args); + KJS::Value dcopSend(KJS::ExecState *exec, KJS::Object &, const KJS::List &args); + private: + int mid; +}; + +} // namespace Bindings +} // namespace KJSEmbed + +#endif // KJSEMBED_TEXTSTREAM_IMP_H |