Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members

kjsembedpart.h

Go to the documentation of this file.
00001 // -*- c++ -*-
00002 
00003 /*
00004  *  Copyright (C) 2001-2003, Richard J. Moore <rich@kde.org>
00005  *
00006  *  This library is free software; you can redistribute it and/or
00007  *  modify it under the terms of the GNU Library General Public
00008  *  License as published by the Free Software Foundation; either
00009  *  version 2 of the License, or (at your option) any later version.
00010  *
00011  *  This library is distributed in the hope that it will be useful,
00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  *  Library General Public License for more details.
00015  *
00016  *  You should have received a copy of the GNU Library General Public License
00017  *  along with this library; see the file COPYING.LIB.  If not, write to
00018  *  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019  *  Boston, MA 02111-1307, USA.
00020  */
00021 
00022 #ifndef KJSEMBEDJSCONSOLEPART_H
00023 #define KJSEMBEDJSCONSOLEPART_H
00024 
00025 #include <qstringlist.h>
00026 
00027 #ifndef QT_ONLY
00028 #include <kparts/part.h>
00029 #endif
00030 
00031 #include <kjs/interpreter.h>
00032 #include <kjs/object.h>
00033 #include <kjs/value.h>
00034 
00035 #include <kjsembed/jsbinding.h>
00036 
00037 #ifndef QT_ONLY
00038 #include <kjsembed/xmlactionclient.h>
00039 #else
00040 #include <kjsembed/qtstubs.h>
00041 #endif
00042 
00043 class QWidget;
00044 
00045 #define KJSEMBED_VERSION_STRING "0.3"
00046 #define KJSEMBED_VERSION_MAJOR 0
00047 #define KJSEMBED_VERSION_MINOR 3
00048 
00052 namespace KJSEmbed {
00053 
00054 class JSObjectProxy;
00055 class JSConsoleWidget;
00056 class JSFactory;
00057 class JSBuiltIn;
00058 
00065 class KJSEmbedPart : public KParts::ReadOnlyPart
00066 {
00067     Q_OBJECT
00068     Q_PROPERTY( QStringList constructorNames READ constructorNames )
00069     Q_PROPERTY( QCString versionString READ versionString )
00070     Q_PROPERTY( int versionMajor READ versionMajor )
00071     Q_PROPERTY( int versionMinor READ versionMinor )
00072 
00073 public:
00075     KJSEmbedPart( QObject *parent=0, const char *name=0 );
00076 
00086     KJSEmbedPart( QWidget *wparent, const char *wname=0, QObject *parent=0, const char *name=0 );
00087 
00093     KJSEmbedPart( KJS::Interpreter *js, QWidget *wparent, const char *wname=0,
00094                   QObject *parent=0, const char *name=0 );
00095 
00097     virtual ~KJSEmbedPart();
00098 
00099     //
00100     // Version information
00101     //
00102 
00104     QCString versionString() const;
00105 
00107     int versionMajor() const;
00108 
00110     int versionMinor() const;
00111 
00112     //
00113     // Script environment.
00114     //
00115     
00123     bool hasMethod( const QString &methodName );
00124     
00136     KJS::Value callMethod(const QString &methodName, const KJS::List &args) const;
00143     KJS::Value getValue( const QString &valueName ) const;
00144     
00153     void putValue( const QString &valueName, const KJS::Value &value);
00154 
00161     void putVariant( const QString &valueName, const QVariant &value);
00162     
00169     QVariant getVariant( const QString &valueName ) const;
00170     
00172     KJS::Object globalObject() const { return js->globalObject(); }
00173 
00175     KJS::Completion completion() const { return res; }
00176 
00178     KJS::Object partObject() const { return partobj; }
00179 
00184     KJS::Object addObject( QObject *obj, const char *name=0 );
00185 
00190     KJS::Object addObject( QObject *obj, KJS::Object &parent, const char *name=0 );
00191 
00193     KJS::Object bind( QObject *obj );
00194 
00195     //
00196     // Query the supported types
00197     //
00198 
00200     QStringList constructorNames() const;
00201 
00203     KJS::Value constructors() const;
00204 
00206     KJS::List constructorList() const;
00207 
00208 public slots:
00209     //
00210     // Reimplement the KPart API.
00211     //
00212 
00214     virtual KJSEmbed::JSConsoleWidget *view();
00215 
00217     virtual bool openURL( const KURL &url );
00218 
00219     //
00220     // XML Action Handling
00221     //
00222 
00224     KJSEmbed::XMLActionClient *actionClient() const { return xmlclient; }
00225 
00227     bool loadActionSet( const QString &file );
00228 
00229     //
00230     // Script environemnt
00231     //
00232 
00234     KJS::Interpreter *interpreter() const { return js; }
00235 
00237     KJS::ExecState *globalExec() const { return js->globalExec(); }
00238 
00240     JSFactory *factory() const { return jsfactory; }
00241 
00243     virtual KJS::Value evaluate( const QString &script, const KJS::Value &self=KJS::Null() );
00244 
00246     bool execute( const QString &script, const KJS::Value &self=KJS::Null() );
00247 
00252     virtual bool execute( KJS::Completion &result, const QString &script, const KJS::Value &self );
00253 
00255     virtual bool runFile( const QString &filename, const KJS::Value &self=KJS::Null() );
00256 
00262     QString loadFile( const QString &file );
00263 
00264 protected:
00266     void createInterpreter();
00267 
00275     void createBuiltIn( KJS::ExecState *exec, KJS::Object &parent );
00276 
00278     void createActionClient();
00279 
00281     virtual bool openFile() { return false; }
00282 
00284     virtual void virtual_hook( int id, void *data );
00285 
00286 private:
00287     XMLActionClient *xmlclient;
00288     JSConsoleWidget *jsConsole;
00289     JSFactory *jsfactory;
00290     JSBuiltIn *builtins;
00291     QWidget *widgetparent;
00292     QCString widgetname;
00293 
00294     KJS::Object partobj;
00295     KJS::Completion res;
00296     KJS::Interpreter *js;
00297     bool deletejs;
00298 
00299     class KJSEmbedPartPrivate *d;
00300 };
00301 
00302 
00303 } // namespace KJSEmbed
00304 
00305 #endif // KJSEMBEDJSCONSOLEPART_H
00306 
00307 // Local Variables:
00308 // c-basic-offset: 4
00309 // End:
00310 

Generated on Sat May 29 03:13:07 2004 for KJSEmbed by doxygen 1.3.2