/*************************************************************************** * This file is part of awesome-widgets * * * * awesome-widgets is free software: you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation, either version 3 of the * * License, or (at your option) any later version. * * * * awesome-widgets is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ #include "extscript.h" #include #include #include #include #include ExtScript::ExtScript(const QString scriptName, const QStringList directories, const bool debugCmd) : QObject(0), name(scriptName), dirs(directories), debug(debugCmd) { readConfiguration(); } ExtScript::~ExtScript() { if (debug) qDebug() << PDEBUG; } void ExtScript::addDirectory(const QString dir) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Directory" << dir; QString absPath = QDir(dir).absolutePath(); if (!QDir(absPath).exists()) return; for (int i=0; i settings; for (int i=0; i newSettings = getConfigurationFromFile(fileName); for (int i=0; itoUnicode(process.error).trimmed(); QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed(); switch(redirect) { case stdout2stderr: if (debug) qDebug() << PDEBUG << ":" << "Debug" << info; if (debug) qDebug() << PDEBUG << ":" << "Output" << qoutput; break; case stderr2stdout: response.output = info + QString("\t") + qoutput; break; default: if (debug) qDebug() << PDEBUG << ":" << "Debug" << info; response.output = qoutput; break; } if (!output) response.output = QString::number(process.exitCode); return response; } void ExtScript::fromExternalConfiguration(const QMap settings) { if (settings.contains(QString("ACTIVE"))) setActive(settings[QString("ACTIVE")] == QString("true")); if (settings.contains(QString("INTERVAL"))) setInterval(settings[QString("INTERVAL")].toInt()); if (settings.contains(QString("PREFIX"))) setPrefix(settings[QString("PREFIX")]); if (settings.contains(QString("OUTPUT"))) setHasOutput(settings[QString("OUTPUT")] == QString("true")); if (settings.contains(QString("REDIRECT"))) setRedirect((Redirect)settings[QString("REDIRECT")].toInt()); if (!output) redirect = stdout2stderr; } QMap ExtScript::getConfigurationFromFile(const QString fileName) { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "File" << fileName; QMap settings; QFile configFile(fileName); QString fileStr; if (!configFile.open(QIODevice::ReadOnly)) return settings; while (true) { fileStr = QString(configFile.readLine()).trimmed(); if ((fileStr.isEmpty()) && (!configFile.atEnd())) continue; if ((fileStr[0] == QChar('#')) && (!configFile.atEnd())) continue; if ((fileStr[0] == QChar(';')) && (!configFile.atEnd())) continue; if (fileStr.contains(QChar('='))) settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]; if (configFile.atEnd()) break; } configFile.close(); for (int i=0; i