Пример #1
0
QScriptValue include(QScriptContext *context, QScriptEngine *engine){
	if (context->argumentCount() != 1) return engine->undefinedValue();
	QString name = context->argument(0).toString();
	bool found = false;
	QString macro;
	if (scriptengine::macros) {
		for (int i=0;i<scriptengine::macros->size();i++)
			if (scriptengine::macros->at(i).name == name) {
				found = true;
				macro = scriptengine::macros->at(i).tag;
				break;
			}
	}
	if (!found) {
		QString filename;
		if (QFileInfo(name).exists()) filename = name;
		else filename = findResourceFile(name, true);
		if (filename.isEmpty() || !needPrivileges(engine, "include", filename, false))
			return engine->undefinedValue();
		QFile f(filename);
		if (!f.open(QFile::ReadOnly)) 
			return engine->undefinedValue();
		macro = QString::fromUtf8(f.readAll().data());
	}
	if (macro.startsWith("%SCRIPT")) macro.remove(0, strlen("%SCRIPT"));
	if (macro.isEmpty()) return engine->undefinedValue();
	return engine->evaluate(macro);
}
Пример #2
0
QAbstractFileEngine *QFileResourceFileEngineHandler::create(const QString &path) const
{
    if ( path.length() > 0 && path[0] == ':' ) {
        QString p = findResourceFile(path);
        if (!p.isNull())
            return new QFSFileEngine(p);
    }
    return 0;
}