[Qtscript-bindings] a 'include' method

Ian Monroe ian at monroe.nu
Fri Aug 22 21:06:45 CEST 2008


On Tue, Aug 12, 2008 at 2:14 PM, Peter Hackett
<Peter.Hackett at icmanage.com> wrote:
> This is what I do (right or less than right :-)
> //static
> QScriptValue
> IqtScriptKit::include(QScriptContext* context,QScriptEngine* engine,
>                     bool localScope)
> {
>   QString funcName("include");
>   if ( localScope ) {
>       funcName = "localInclude";
[snip]

In case anyone in Googleland has a  QObject with access to the
scriptEngine and script file location, all that can be simplified to:
    bool
    ScriptImporter::include( const QString& relativeFilename )
    {
        KUrl includeUrl = m_scriptUrl.upUrl();
        includeUrl.addPath( relativeFilename );
        QFile file( includeUrl.toLocalFile() );
        if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )
            return false;
        m_scriptEngine->currentContext()->setActivationObject(

m_scriptEngine->currentContext()->parentContext()->activationObject()
);
        m_scriptEngine->evaluate( file.readAll(), relativeFilename );
        return true;
    }

The m_scriptEngine->currentContext()->setActivationObject(... line is
from Peter and was what I was missing before. Thanks a lot! Not sure I
would've figured that out otherwise...

Ian


More information about the Qtscript-bindings mailing list