non fatal errors
svn path=/trunk/KDE/kdebase/runtime/; revision=1171474
This commit is contained in:
parent
60bda70955
commit
9b47926ebe
@ -358,17 +358,27 @@ QSet<QString> ScriptEnv::loadedExtensions() const
|
|||||||
QScriptValue ScriptEnv::debug(QScriptContext *context, QScriptEngine *engine)
|
QScriptValue ScriptEnv::debug(QScriptContext *context, QScriptEngine *engine)
|
||||||
{
|
{
|
||||||
if (context->argumentCount() != 1) {
|
if (context->argumentCount() != 1) {
|
||||||
return context->throwError(i18n("debug takes one argument"));
|
return throwNonFatalError(i18n("debug takes one argument"), context, engine);
|
||||||
}
|
}
|
||||||
|
|
||||||
kDebug() << context->argument(0).toString();
|
kDebug() << context->argument(0).toString();
|
||||||
return engine->undefinedValue();
|
return engine->undefinedValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QScriptValue ScriptEnv::throwNonFatalError(const QString &msg, QScriptContext *context, QScriptEngine *engine)
|
||||||
|
{
|
||||||
|
QScriptValue rv = context->throwError(msg);
|
||||||
|
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
|
||||||
|
if (env) {
|
||||||
|
env->checkForErrors(false);
|
||||||
|
}
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
QScriptValue ScriptEnv::print(QScriptContext *context, QScriptEngine *engine)
|
QScriptValue ScriptEnv::print(QScriptContext *context, QScriptEngine *engine)
|
||||||
{
|
{
|
||||||
if (context->argumentCount() != 1) {
|
if (context->argumentCount() != 1) {
|
||||||
return context->throwError(i18n("print() takes one argument"));
|
return throwNonFatalError(i18n("print() takes one argument"), context, engine);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << context->argument(0).toString().toLocal8Bit().constData() << std::endl;
|
std::cout << context->argument(0).toString().toLocal8Bit().constData() << std::endl;
|
||||||
@ -378,7 +388,7 @@ QScriptValue ScriptEnv::print(QScriptContext *context, QScriptEngine *engine)
|
|||||||
QScriptValue ScriptEnv::listAddons(QScriptContext *context, QScriptEngine *engine)
|
QScriptValue ScriptEnv::listAddons(QScriptContext *context, QScriptEngine *engine)
|
||||||
{
|
{
|
||||||
if (context->argumentCount() < 1) {
|
if (context->argumentCount() < 1) {
|
||||||
return context->throwError(i18n("listAddons takes one argument: addon type"));
|
return throwNonFatalError(i18n("listAddons takes one argument: addon type"), context, engine);
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString type = context->argument(0).toString();
|
const QString type = context->argument(0).toString();
|
||||||
@ -406,24 +416,14 @@ QScriptValue ScriptEnv::listAddons(QScriptContext *context, QScriptEngine *engin
|
|||||||
QScriptValue ScriptEnv::loadAddon(QScriptContext *context, QScriptEngine *engine)
|
QScriptValue ScriptEnv::loadAddon(QScriptContext *context, QScriptEngine *engine)
|
||||||
{
|
{
|
||||||
if (context->argumentCount() < 2) {
|
if (context->argumentCount() < 2) {
|
||||||
QScriptValue rv = context->throwError(i18n("loadAddon takes two arguments: addon type and addon name to load"));
|
return throwNonFatalError(i18n("loadAddon takes two arguments: addon type and addon name to load"), context, engine);
|
||||||
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
|
|
||||||
if (env) {
|
|
||||||
env->checkForErrors(false);
|
|
||||||
}
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString type = context->argument(0).toString();
|
const QString type = context->argument(0).toString();
|
||||||
const QString plugin = context->argument(1).toString();
|
const QString plugin = context->argument(1).toString();
|
||||||
|
|
||||||
if (type.isEmpty() || plugin.isEmpty()) {
|
if (type.isEmpty() || plugin.isEmpty()) {
|
||||||
QScriptValue rv = context->throwError(i18n("loadAddon takes two arguments: addon type and addon name to load"));
|
return throwNonFatalError(i18n("loadAddon takes two arguments: addon type and addon name to load"), context, engine);
|
||||||
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
|
|
||||||
if (env) {
|
|
||||||
env->checkForErrors(false);
|
|
||||||
}
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString constraint = QString("[X-KDE-PluginInfo-Category] == '%1' and [X-KDE-PluginInfo-Name] == '%2'")
|
const QString constraint = QString("[X-KDE-PluginInfo-Category] == '%1' and [X-KDE-PluginInfo-Name] == '%2'")
|
||||||
@ -431,28 +431,17 @@ QScriptValue ScriptEnv::loadAddon(QScriptContext *context, QScriptEngine *engine
|
|||||||
KService::List offers = KServiceTypeTrader::self()->query("Plasma/JavascriptAddon", constraint);
|
KService::List offers = KServiceTypeTrader::self()->query("Plasma/JavascriptAddon", constraint);
|
||||||
|
|
||||||
if (offers.isEmpty()) {
|
if (offers.isEmpty()) {
|
||||||
QScriptValue rv = context->throwError(i18n("Failed to find Addon %1 of type %2", plugin, type));
|
return throwNonFatalError(i18n("Failed to find Addon %1 of type %2", plugin, type), context, engine);
|
||||||
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
|
|
||||||
if (env) {
|
|
||||||
env->checkForErrors(false);
|
|
||||||
}
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Plasma::PackageStructure::Ptr structure(new JavascriptAddonPackageStructure);
|
Plasma::PackageStructure::Ptr structure(new JavascriptAddonPackageStructure);
|
||||||
const QString subPath = structure->defaultPackageRoot() + '/' + plugin + '/';
|
const QString subPath = structure->defaultPackageRoot() + '/' + plugin + '/';
|
||||||
const QString path = KStandardDirs::locate("data", subPath);
|
const QString path = KStandardDirs::locate("data", subPath);
|
||||||
Plasma::Package package(path, structure);
|
Plasma::Package package(path, structure);
|
||||||
//FIXME include() will not work from within addons; needs a solution
|
|
||||||
|
|
||||||
QFile file(package.filePath("mainscript"));
|
QFile file(package.filePath("mainscript"));
|
||||||
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
QScriptValue rv = context->throwError(i18n("Failed to open script file for Addon %1: %2", plugin, package.filePath("mainscript")));
|
return throwNonFatalError(i18n("Failed to open script file for Addon %1: %2", plugin, package.filePath("mainscript")), context, engine);
|
||||||
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
|
|
||||||
if (env) {
|
|
||||||
env->checkForErrors(false);
|
|
||||||
}
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QTextStream buffer(&file);
|
QTextStream buffer(&file);
|
||||||
|
@ -86,6 +86,7 @@ private:
|
|||||||
static QScriptValue addEventListener(QScriptContext *context, QScriptEngine *engine);
|
static QScriptValue addEventListener(QScriptContext *context, QScriptEngine *engine);
|
||||||
static QScriptValue removeEventListener(QScriptContext *context, QScriptEngine *engine);
|
static QScriptValue removeEventListener(QScriptContext *context, QScriptEngine *engine);
|
||||||
static QScriptValue hasExtension(QScriptContext *context, QScriptEngine *engine);
|
static QScriptValue hasExtension(QScriptContext *context, QScriptEngine *engine);
|
||||||
|
static QScriptValue throwNonFatalError(const QString &msg, QScriptContext *context, QScriptEngine *engine);
|
||||||
//static QScriptValue addonFilePath(QScriptContext *context, QScriptEngine *engine);
|
//static QScriptValue addonFilePath(QScriptContext *context, QScriptEngine *engine);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user