qaxscript.h Include File

Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# qaxscript.h

This is the verbatim text of the qaxscript.h include file. It is provided only for illustration; the copyright remains with Trolltech.

    /****************************************************************************
    ** $Id: qt/qaxscript.h   3.3.8   edited Jan 11 14:46 $
    **
    ** Declaration of the TQAxScriptEngine, TQAxScript and TQAxScriptManager classes
    **
    ** Copyright (C) 2002-2007 Trolltech ASA.  All rights reserved.
    **
    ** This file is part of the Active TQt integration.
    **
    ** Licensees holding valid TQt Enterprise Edition
    ** licenses for Windows may use this file in accordance with the TQt Commercial
    ** License Agreement provided with the Software.
    **
    ** This file is not available for use under any other license without
    ** express written permission from the copyright holder.
    **
    ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
    ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    **
    ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
    **   information about TQt Commercial License Agreements.
    **
    ** Contact info@trolltech.com if any conditions of this licensing are
    ** not clear to you.
    **
    **********************************************************************/

    #ifndef TQAXSCRIPT_H
    #define TQAXSCRIPT_H

    #include <qaxobject.h>

    class TQAxBase;
    class TQAxScript;
    class TQAxScriptSite;
    class TQAxScriptEngine;
    class TQAxScriptManager;
    class TQAxScriptManagerPrivate;
    struct IActiveScript;

    class TQAxScriptEngine : public TQAxObject
    {
    public:
        enum State {
    	Uninitialized = 0,
    	Initialized = 5,
    	Started = 1,
    	Connected = 2,
    	Disconnected = 3,
    	Closed = 4
        };

        TQAxScriptEngine(const TQString &language, TQAxScript *script);
        ~TQAxScriptEngine();

        bool isValid() const;
        bool hasIntrospection() const;

        TQString scriptLanguage() const;

        State state() const;
        void setState(State st);

        void addItem(const TQString &name);

        long queryInterface( const TQUuid &, void** ) const;

    protected:
        bool initialize(IUnknown** ptr);

    private:
        TQAxScript *script_code;
        IActiveScript *engine;

        TQString script_language;
    };

    class TQAxScript : public TQObject
    {
        TQ_OBJECT

    public:
        enum FunctionFlags {
    	FunctionNames = 0,
    	FunctionSignatures
        };

        TQAxScript(const TQString &name, TQAxScriptManager *manager);
        ~TQAxScript();

        bool load(const TQString &code, const TQString &language = TQString::null);

        TQStringList functions(FunctionFlags = FunctionNames) const;

        TQString scriptCode() const;
        TQString scriptName() const;
        TQAxScriptEngine *scriptEngine() const;

        TQVariant call(const TQString &function, const TQVariant &v1 = TQVariant(),
    					   const TQVariant &v2 = TQVariant(),
    					   const TQVariant &v3 = TQVariant(),
    					   const TQVariant &v4 = TQVariant(),
    					   const TQVariant &v5 = TQVariant(),
    					   const TQVariant &v6 = TQVariant(),
    					   const TQVariant &v7 = TQVariant(),
    					   const TQVariant &v8 = TQVariant());
        TQVariant call(const TQString &function, TQValueList<TQVariant> &arguments);

    signals:
        void entered();
        void finished();
        void finished(const TQVariant &result);
        void finished(int code, const TQString &source,const TQString &description, const TQString &help);
        void stateChanged(int state);
        void error(int code, const TQString &description, int sourcePosition, const TQString &sourceText);

    private:
        friend class TQAxScriptSite;
        friend class TQAxScriptEngine;

        void updateObjects();
        TQAxBase *findObject(const TQString &name);

        TQString script_name;
        TQString script_code;
        TQAxScriptManager *script_manager;
        TQAxScriptEngine *script_engine;
        TQAxScriptSite *script_site;
    };

    class TQAxScriptManager : public TQObject
    {
        TQ_OBJECT

    public:
        TQAxScriptManager( TQObject *parent = 0, const char *name = 0 );
        ~TQAxScriptManager();

        void addObject(TQAxBase *object);
        void addObject(TQObject *object);

        TQStringList functions(TQAxScript::FunctionFlags = TQAxScript::FunctionNames) const;
        TQStringList scriptNames() const;
        TQAxScript *script(const TQString &name) const;

        TQAxScript* load(const TQString &code, const TQString &name, const TQString &language);
        TQAxScript* load(const TQString &file, const TQString &name);

        TQVariant call(const TQString &function, const TQVariant &v1 = TQVariant(),
    					   const TQVariant &v2 = TQVariant(),
    					   const TQVariant &v3 = TQVariant(),
    					   const TQVariant &v4 = TQVariant(),
    					   const TQVariant &v5 = TQVariant(),
    					   const TQVariant &v6 = TQVariant(),
    					   const TQVariant &v7 = TQVariant(),
    					   const TQVariant &v8 = TQVariant());
        TQVariant call(const TQString &function, TQValueList<TQVariant> &arguments);

        static bool registerEngine(const TQString &name, const TQString &extension, const TQString &code = TQString());
        static TQString scriptFileFilter();

    signals:
        void error(TQAxScript *script, int code, const TQString &description, int sourcePosition, const TQString &sourceText);

    private slots:
        void objectDestroyed(TQObject *o);
        void scriptError(int code, const TQString &description, int sourcePosition, const TQString &sourceText);

    private:
        friend class TQAxScript;
        TQAxScriptManagerPrivate *d;

        void updateScript(TQAxScript*);
        TQAxScript *scriptForFunction(const TQString &function) const;
    };

    // TQAxScript inlines

    inline TQString TQAxScript::scriptCode() const
    {
        return script_code;
    }

    inline TQString TQAxScript::scriptName() const
    {
        return script_name;
    }

    inline TQAxScriptEngine *TQAxScript::scriptEngine() const
    {
        return script_engine;
    }

    // TQAxScriptEngine inlines

    inline bool TQAxScriptEngine::isValid() const
    {
        return engine != 0;
    }

    inline TQString TQAxScriptEngine::scriptLanguage() const
    {
        return script_language;
    }

    // TQAxScriptManager inlines

    inline void TQAxScriptManager::addObject(TQObject *object)
    {
        extern TQAxBase *qax_create_object_wrapper(TQObject*);
        TQAxBase *wrapper = qax_create_object_wrapper(object);
        addObject(wrapper);
    }

    #endif // TQAXSCRIPT_H