FunctionRef ScriptManager::getGlobalFunction(const Common::UString &name) const { return getGlobalVariable(name).getFunction(); }
// sample: myinc:///System/Window/Close#HelloWindow // func = Window/Close // arg = HelloWindow QVariant DSystemFuncs::run(const QString &func, const QStringList &arg, const QObject * nativeSender ) { QStringList f = (func.toLower()).split('/', QString::SkipEmptyParts ); if (f.count() <= 1) return g_vErr; const QString* tmp = &f.at(0); if ( *tmp == QString("window") ) { /// window funcs tmp = &f.at(1); if ( *tmp == QString("close") ) { DSystemFuncs::closeWidget( arg.count() != 0 ? arg.at(0): nativeSender->objectName() ); return g_vSuc; } else if ( *tmp == QString("open")) { return MAKE_BOOL(DSystemFuncs::openWidget( arg.at(0) )); } else if ( *tmp == "object") { if ((arg.count() == 0) || (arg.count() > 4)) return g_vErr; int c = arg.count(); return DSystemFuncs::object( c==2?nativeSender->objectName():arg.at(0), arg.at(c - 2), arg.at(c - 1) ); } else if ( *tmp == "setobject" ) { if ((arg.count() == 0) || (arg.count() > 4)) return g_vErr; int c = arg.count(); DSystemFuncs::setObject( c == 3 ? nativeSender->objectName() : arg.at(0), arg.at(1), arg.at(2), arg.at(3) ); return g_vSuc; } else if ( *tmp == "refresh" ) { return MAKE_BOOL(refreshWidget( (arg.count() == 0)? nativeSender->objectName(): arg.at(0) )); } } else if ( *tmp == QString("var") ) { // variable funcs tmp = &f.at(1); if (arg.count() < 1) { return g_vErr; } if ( *tmp == QString("global") ) { /// this is Global Variables if (f.count() != 3) return g_vErr; tmp = &f.at(2); if (*tmp == QString("get")) return getGlobalVariable( arg.at(0) ); else if (*tmp == QString("set")) { if (arg.count() < 2 ) return g_vErr; setGlobalVariable( arg.at(0), arg.at(1) ); return g_vSuc; } } else if ( *tmp == QString("local")) { if (f.count() != 3) return g_vErr; if (arg.count() < 2 ) return g_vErr; tmp = &f.at(2); if (*tmp == QString("get")) return DSystemFuncs::getVariable( arg.at(0), arg.at(1) ); else if (*tmp == QString("set")) { if (arg.count() < 3 ) return g_vErr; DSystemFuncs::setVariable( arg.at(0), arg.at(1), arg.at(2) ); return g_vSuc; } } } else if ( *tmp == g_sNull.toLower() ) return g_vNull; else if ( *tmp == "succses" ) return g_vSuc; else if ( *tmp == "error" ) return g_vErr; return g_vErr; }
TableRef ScriptManager::getGlobalTable(const Common::UString &name) const { return getGlobalVariable(name).getTable(); }