From 13f56cad12f05a93951c83d4f79e96319cb5e29f Mon Sep 17 00:00:00 2001 From: Andrey Paskal Date: Tue, 22 Dec 2009 14:22:31 +0300 Subject: [PATCH] Successuly compiled first time. --- src/lib/lib.pro | 4 +++ src/lib/sys/aapplication.cpp | 2 +- src/plugins/aform.cpp | 3 +- src/plugins/aform.h | 6 +++- src/plugins/engine.cpp | 57 ++++++++++++++++++++++++----------------- src/plugins/engine.h | 21 ++++++++++----- src/plugins/plugins.pro | 4 ++- 7 files changed, 61 insertions(+), 36 deletions(-) diff --git a/src/lib/lib.pro b/src/lib/lib.pro index 469bfef..4a68266 100644 --- a/src/lib/lib.pro +++ b/src/lib/lib.pro @@ -1,6 +1,10 @@ include(../plugins/plugins.pri) include(lib.pri) +QT += script +QT += scripttools + + TARGET = ananas4 TEMPLATE = lib shared:CONFIG += dll diff --git a/src/lib/sys/aapplication.cpp b/src/lib/sys/aapplication.cpp index a7634e8..b0f0046 100644 --- a/src/lib/sys/aapplication.cpp +++ b/src/lib/sys/aapplication.cpp @@ -37,7 +37,7 @@ AApplication::AApplication( int & argc, char ** argv, AApplicationType aat ) :QApplication( argc, argv, true ) { v_aat = aat; - printf("langDir = %s\n", langDir().toUtf8().data() ); + //printf("langDir = %s\n", langDir().toUtf8().data() ); } int diff --git a/src/plugins/aform.cpp b/src/plugins/aform.cpp index a108061..017549e 100644 --- a/src/plugins/aform.cpp +++ b/src/plugins/aform.cpp @@ -42,7 +42,8 @@ #include #include #include -#include +//#include + //--#include #include //--#include diff --git a/src/plugins/aform.h b/src/plugins/aform.h index 993ea6f..b0655d4 100644 --- a/src/plugins/aform.h +++ b/src/plugins/aform.h @@ -37,8 +37,10 @@ #include #include -#include -#include +//#include +//#include + + //--#include #include //Added by qt3to4: diff --git a/src/plugins/engine.cpp b/src/plugins/engine.cpp index 3ee23e6..3690b96 100644 --- a/src/plugins/engine.cpp +++ b/src/plugins/engine.cpp @@ -260,31 +260,40 @@ aEngine::init( const QString &rcfile ) ""; bool ok = false; - if ( db->init( rcfile ) ) { - md = &db->cfg; - code = project.interpreter(); -// code->setErrorMode(QSInterpreter::Notify); - code->setErrorMode(QSInterpreter::Nothing); - connect(code, SIGNAL( error ( const QString &, QObject *, const QString &, int )), - this, SLOT ( error ( const QString &, QObject *, const QString &, int ))); - code->addObjectFactory( new QSInputDialogFactory ); - code->addObjectFactory( new aObjectsFactory( this ) ); - code->addObjectFactory( new QSUtilFactory ); - project.addObject( this ); - project.addObject( md ); - project.addObject( AMetaData::metadata() ); - mGlobal = md->sText( md->find( md->find( mdc_metadata ), md_globals, 0 ), md_sourcecode ); - if ( ! mGlobal.isEmpty() ) { -// project.createScript("global", mGlobal); -// project.createScript(this, mGlobal ); -// project.createScript( "globalmodule", sysf ); -// project.createScript( this, sourcePreprocessor(mGlobal)); - project.createScript( "globalmodule", sysf+sourcePreprocessor(mGlobal)); -// code->evaluate(sourcePreprocessor(mGlobal)); - } else { + if ( ! db->init( rcfile ) ) { + return false; + } + + md = &db->cfg; + code = new QScriptEngine(); + debugger = new QScriptEngineDebugger(); + debugger->attachTo(code); //окно дебагера появится при ошибке выполнении скрипта + + //code->addObjectFactory( new QSInputDialogFactory ); + code->addObjectFactory( new aObjectsFactory( this ) ); + //code->addObjectFactory( new QSUtilFactory ); + + //project.addObject( this ); + + // Объект sys часто используется для вывода сообщений в окно сообщений + QScriptValue ananasEngineObject = code.newQObject(this); + code.globalObject().setProperty("sys", ananasEngineObject); + + + //project.addObject( md ); + // Похоже не используется + QScriptValue ananasMetadataObject = code.newQObject(md*); + code.globalObject().setProperty("Metadata", ananasMetadataObject); + +// project.addObject( AMetaData::metadata() ); + QScriptValue ananasMetadataData = code.newQObject(md*); + code.globalObject().setProperty("MetaData", ananasMetadataData); + mGlobal = md->sText( md->find( md->find( mdc_metadata ), md_globals, 0 ), md_sourcecode ); + if ( ! mGlobal.isEmpty() ) { + code->evaluate(sysf+sourcePreprocessor(mGlobal)); + } else { // printf("Global module is empty\n"); - } - } else return false; + } return true; } diff --git a/src/plugins/engine.h b/src/plugins/engine.h index 2e0e46d..155c73f 100644 --- a/src/plugins/engine.h +++ b/src/plugins/engine.h @@ -33,9 +33,13 @@ #define ENGINE_H #include #include -#include -#include -#include + +//#include +//#include +//#include +#include +#include + //Added by qt3to4: #include #include @@ -51,7 +55,9 @@ class aEngine; class aWidget; -class QSInterpreter; +class QScriptEngine; + + /*! * \~english @@ -62,7 +68,7 @@ class QSInterpreter; * Наследует QSObjectFactory. * \~ */ -class QT_WIDGET_PLUGIN_EXPORT aObjectsFactory : public QSObjectFactory +class QT_WIDGET_PLUGIN_EXPORT aObjectsFactory { public: aEngine *engine; @@ -131,7 +137,8 @@ public: * ссылка на интерпретатор скрипта. * \~ */ - QSInterpreter* code; + QScriptEngine* code; + QScriptEngineDebugger debugger; /*! * \~english * link to script project. @@ -139,7 +146,7 @@ public: * ссылка на проект. * \~ */ - QSProject project; + //QSProject project; /*! * \~english * number to form diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index f741003..7bd452d 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -4,7 +4,9 @@ TARGET = ananasplugin4 include( plugins.pri ) include( ../lib/lib.pri ) include ( ../ananas.pri ) -load(qsa) +#load(qsa) +QT += script +QT += scripttools TEMPLATE = lib shared:CONFIG += dll plugin -- 1.7.1