本文整理汇总了C++中QScriptEngine::importExtension方法的典型用法代码示例。如果您正苦于以下问题:C++ QScriptEngine::importExtension方法的具体用法?C++ QScriptEngine::importExtension怎么用?C++ QScriptEngine::importExtension使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QScriptEngine
的用法示例。
在下文中一共展示了QScriptEngine::importExtension方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: importStaticPlugin
void tst_QScriptExtensionPlugin::importStaticPlugin()
{
Q_INIT_RESOURCE(staticplugin);
QScriptEngine eng;
QVERIFY(eng.availableExtensions().contains("static"));
QVERIFY(eng.importExtension("static").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 1);
QCOMPARE(eng.importedExtensions().at(0), QString::fromLatin1("static"));
QVERIFY(eng.availableExtensions().contains("static"));
QVERIFY(eng.globalObject().property("pluginKey").equals("static"));
// Verify that :/qtscriptextension/static/__init__.js was evaluated.
QVERIFY(eng.evaluate("spy").isObject());
QVERIFY(eng.evaluate("spy.extension").equals("static"));
QVERIFY(eng.evaluate("spy.setupPackage").isFunction());
QVERIFY(eng.evaluate("spy.postInit").isUndefined());
QVERIFY(eng.evaluate("postInitWasCalled").isBool());
QVERIFY(eng.evaluate("postInitWasCalled").toBool());
// Extensions can't be imported multiple times.
eng.globalObject().setProperty("pluginKey", QScriptValue());
QVERIFY(eng.importExtension("static").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 1);
QVERIFY(!eng.globalObject().property("pluginKey").isValid());
}
示例2: init
bool init() {
if( m_script->action()->hadError() )
m_script->action()->clearError();
delete m_engine;
m_engine = new QScriptEngine();
// load the Qross QScriptExtensionPlugin plugin that provides
// us a bridge between Qross and QtScript. See here plugin.h
m_engine->importExtension("qross");
if( m_engine->hasUncaughtException() ) {
handleException();
delete m_engine;
m_engine = 0;
return false;
}
// the Qross QScriptExtensionPlugin exports the "Qross" property.
QScriptValue global = m_engine->globalObject();
m_qross = global.property("Qross");
Q_ASSERT( m_qross.isQObject() );
Q_ASSERT( ! m_engine->hasUncaughtException() );
// Attach our Qross::Action instance to be able to access it in
// scripts. Just like at the Kjs-backend we publish our own
// action as "self".
m_self = m_engine->newQObject( m_script->action() );
global.setProperty("self", m_self, QScriptValue::ReadOnly|QScriptValue::Undeletable);
{ // publish the global objects.
QHash< QString, QObject* > objects = Manager::self().objects();
QHash< QString, QObject* >::Iterator it(objects.begin()), end(objects.end());
for(; it != end; ++it)
global.setProperty(it.key(), m_engine->newQObject( it.value() ) );
}
{ // publish the local objects.
QHash< QString, QObject* > objects = m_script->action()->objects();
QHash< QString, QObject* >::Iterator it(objects.begin()), end(objects.end());
for(; it != end; ++it) {
copyEnumsToProperties( it.value() );
global.setProperty(it.key(), m_engine->newQObject( it.value() ) );
}
}
return ! m_engine->hasUncaughtException();
}
示例3: main
int main(int argc, char **argv)
{
QApplication *app = new QApplication(argc, argv);
app->setApplicationName("kross");
app->setApplicationVersion("0.1");
app->setOrganizationDomain("dipe.org");
QScriptEngine *engine = new QScriptEngine();
engine->installTranslatorFunctions();
/*K4AboutData about("kross",0,ki18n("Kross"),"0.1",
ki18n("KDE application to run Kross scripts."),
K4AboutData::License_LGPL,
ki18n("(C) 2006 Sebastian Sauer"),
ki18n("Run Kross scripts."),
"http://kross.dipe.org","[email protected]");*/
//about.addAuthor(ki18n("Sebastian Sauer"), ki18n("Author"), "[email protected]");
// Initialize command line args
// Tell which options are supported and parse them.
QCommandLineParser parser;
parser.setApplicationDescription(QCoreApplication::translate("main", "KDE application to run Kross scripts."));
parser.addHelpOption();
parser.addOption(QCommandLineOption(QStringList() << "+file", QCoreApplication::translate("main", "Scriptfile")));
parser.process(*app);
const QStringList args = parser.positionalArguments();
// If no options are defined.
if (args.count() < 1) {
parser.showHelp();
//std::cout << "Syntax: " << "kross" << " scriptfile1 [scriptfile2] [scriptfile3] ..." << std::endl;
return -1;
}
QScriptValue global = engine->globalObject();
//qDebug()<<"QLibraryInfo::PluginsPath="<<QLibraryInfo::location(QLibraryInfo::PluginsPath);
engine->importExtension("kross").toString();
foreach (const QString &file, args) {
runScriptFile(engine, file);
}
示例4: main
int main(int argc, char **argv)
{
QCoreApplication app( argc, argv );
QStringList allowedBindings;
allowedBindings << "qt.core" << "qt.gui" << "qt.sql" << "qt.xml" << "qt.uitools" << "qt.network" << "qt.webkit";
QScriptEngine engine;
foreach( QString binding, allowedBindings )
{
QScriptValue error = engine.importExtension( binding );
if( error.isUndefined() )
{ // undefined indiciates success
continue;
}
qDebug() << "Extension" << binding << "not found:" << error.toString();
qDebug() << "Available extensions:" << engine.availableExtensions();
return FAIL;
}
示例5: importSimplePlugin
void tst_QScriptExtensionPlugin::importSimplePlugin()
{
QScriptEngine eng;
QCoreApplication::addLibraryPath("plugins");
QVERIFY(eng.importedExtensions().isEmpty());
QStringList available = eng.availableExtensions();
QVERIFY(available.contains("simple"));
QVERIFY(available.contains("simple.foo"));
QVERIFY(available.contains("simple.foo.bar"));
QScriptValue extensionObject;
{
QVERIFY(eng.importExtension("simple").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 1);
QCOMPARE(eng.importedExtensions().at(0), QString::fromLatin1("simple"));
QVERIFY(eng.availableExtensions().contains("simple"));
QVERIFY(eng.globalObject().property("pluginKey").equals("simple"));
QVERIFY(eng.globalObject().property("package").isObject());
extensionObject = eng.globalObject().property("simple");
QVERIFY(extensionObject.isObject());
QVERIFY(extensionObject.equals(eng.globalObject().property("package")));
}
{
QVERIFY(eng.importExtension("simple.foo").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 2);
QCOMPARE(eng.importedExtensions().at(1), QString::fromLatin1("simple.foo"));
QVERIFY(eng.availableExtensions().contains("simple.foo"));
QVERIFY(eng.globalObject().property("pluginKey").equals("simple.foo"));
QVERIFY(eng.globalObject().property("package").isObject());
QVERIFY(!extensionObject.equals(eng.globalObject().property("package")));
QVERIFY(extensionObject.equals(eng.globalObject().property("simple")));
QVERIFY(extensionObject.property("foo").isObject());
QVERIFY(extensionObject.property("foo").equals(eng.globalObject().property("package")));
}
{
QVERIFY(eng.importExtension("simple.foo.bar").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 3);
QCOMPARE(eng.importedExtensions().at(2), QString::fromLatin1("simple.foo.bar"));
QVERIFY(eng.availableExtensions().contains("simple.foo.bar"));
QVERIFY(eng.globalObject().property("pluginKey").equals("simple.foo.bar"));
QVERIFY(eng.globalObject().property("package").isObject());
QVERIFY(!extensionObject.equals(eng.globalObject().property("package")));
QVERIFY(extensionObject.equals(eng.globalObject().property("simple")));
QVERIFY(extensionObject.property("foo").property("bar").isObject());
QVERIFY(extensionObject.property("foo").property("bar").equals(eng.globalObject().property("package")));
}
// Extensions can't be imported multiple times.
eng.globalObject().setProperty("pluginKey", QScriptValue());
QVERIFY(eng.importExtension("simple").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 3);
QVERIFY(!eng.globalObject().property("pluginKey").isValid());
QVERIFY(eng.importExtension("simple.foo").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 3);
QVERIFY(!eng.globalObject().property("pluginKey").isValid());
QVERIFY(eng.importExtension("simple.foo.bar").isUndefined());
QCOMPARE(eng.importedExtensions().size(), 3);
QVERIFY(!eng.globalObject().property("pluginKey").isValid());
}