Ejemplo n.º 1
0
void PythonUploader::showSettingsUI(QWidget *parent)
{
    connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    pythonContext.addObject("parentWidget_", parent);
    pythonContext.evalScript(shortname + "_u.showSettingsUI(parentWidget_)");
    if(hadPythonErr)
    {
        PythonQt::self()->handleError();
        WARNING(tr("Failed to call showSettingsUI() in ") + this->className);
        QMessageBox::critical(NULL, tr("Script error in plugin '") + shortname + "'", tr("Failed to call ") + this->className + ".showSettingsUI()" + "\n" + lastPythonErr);
        lastPythonErr.clear();
        hadPythonErr = false;
    }
    disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
}
Ejemplo n.º 2
0
bool PythonUploader::isConfigured()
{
    connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    QVariant result = pythonContext.call(shortname + "_u.isConfigured");
    if(hadPythonErr)
    {
        PythonQt::self()->handleError();
        WARNING("Failed to call isConfigured() in " + this->className);
        QMessageBox::critical(NULL, "Script error in plugin '" + shortname + "'", "Failed to call " + this->className + ".isConfigured()" + "\n" + lastPythonErr);
        lastPythonErr.clear();
        hadPythonErr = false;
        disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
        return false;
    }
    disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    return result.toBool();
}
Ejemplo n.º 3
0
QString PythonUploader::getFilename()
{
    connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    QVariant result = pythonContext.call(shortname + "_u.getFilename");
    if(hadPythonErr)
    {
        PythonQt::self()->handleError();
        WARNING(tr("Failed to call getFilename() in ") + this->className);
        QMessageBox::critical(NULL, tr("Script error in plugin '") + shortname + "'", tr("Failed to call ") + this->className + ".getFilename()" + "\n" + lastPythonErr);
        lastPythonErr.clear();
        hadPythonErr = false;
        disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
        return QString();
    }
    disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    this->filename = result.toString();
    return filename;
}
Ejemplo n.º 4
0
PythonUploader::PythonUploader(QString name, QString shortname, QString className, QString iconFilename, QObject *parent) :
    Uploader(parent)
{
    this->workingDir = PluginManager::pluginPath() + shortname;
    this->shortname = shortname;
    this->name = name;
    this->className = className;
    this->filename = QString();
    QFile iconFile(workingDir + QDir::separator() + iconFilename);
    if(iconFile.exists())
    {
        this->icon = QIcon(iconFile.fileName());
    }
    QFile mainScriptFile(workingDir + QDir::separator() + "main.py");
    if(!mainScriptFile.exists())
    {
        QMessageBox::critical(0, "Error", "Failed to load plugin \"" + shortname + "\". Script file \"main.py\" does not exist.");
        return;
    }
    if (!mainScriptFile.open(QIODevice::ReadOnly | QIODevice::Text))
    {
      QMessageBox::critical(0, "Error", "Failed to load plugin \"" + shortname + "\". File main.py exists, but is not readable.");
      return;
    }
    hadPythonErr = false;
    connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    PythonQt::self()->addSysPath(workingDir + QDir::separator() + "modules");
    moduleObj = PythonQt::self()->createModuleFromScript(shortname + "_uploader");
    moduleObj.addVariable("workingDir", workingDir);
    moduleObj.evalScript(QString(mainScriptFile.readAll()));
    if(hadPythonErr)
    {
        PythonQt::self()->handleError();
        WARNING("Error while parsing script file " + mainScriptFile.fileName());
        QMessageBox::critical(NULL, "Script error in plugin '" + shortname + "'", "Error in file: " + mainScriptFile.fileName() + "\n" + lastPythonErr);
        lastPythonErr.clear();
        hadPythonErr = false;
    }
    pythonContext = PythonQt::self()->getMainModule();
    pythonContext.evalScript("from " + shortname + "_uploader import " + className);
    pythonContext.evalScript(shortname + "_u = " + className + "()");
    disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
}
Ejemplo n.º 5
0
void PythonUploader::showSettingsUI(QWidget *parent)
{
    connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    moduleObj.addObject("parentWidget", parent);
#ifdef Q_OS_WIN
    pythonContext.evalScript(shortname + "_u.showSettingsUI()");
#else
    pythonContext.call(shortname + "_u.showSettingsUI");
#endif
    if(hadPythonErr)
    {
        PythonQt::self()->handleError();
        WARNING("Failed to call showSettingsUI() in " + this->className);
        QMessageBox::critical(NULL, "Script error in plugin '" + shortname + "'", "Failed to call " + this->className + ".showSettingsUI()" + "\n" + lastPythonErr);
        lastPythonErr.clear();
        hadPythonErr = false;
    }
    disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
}
Ejemplo n.º 6
0
void PythonUploader::upload(const QImage &screenshot, QString name)
{
    connect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    QVariantList args;
    args << screenshot;
    args << name;
    QVariant result = pythonContext.call(shortname + "_u.upload", args);
    if(hadPythonErr)
    {
        PythonQt::self()->handleError();
        WARNING("Failed to call upload() in " + this->className);
        emit uploadingError("Failed to call " + this->className + ".upload()" + "\n" + lastPythonErr);
        lastPythonErr.clear();
        hadPythonErr = false;
        disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
        return;
    }
    bool success = result.toBool();
    if(success)
    {
        QString url = moduleObj.getVariable("ScreenCloud.clipboardUrl").toString();
        emit uploadingFinished(url);
    }else
    {
        QString errorString = moduleObj.getVariable("ScreenCloud.uploadingError").toString();
        if(errorString.isEmpty())
        {
            errorString = tr("Unknown error");
        }
        emit uploadingError(errorString);
    }
    //Clean up
    disconnect(PythonQt::self(), SIGNAL(pythonStdErr(QString)), this, SLOT(pythonError(QString)));
    moduleObj.evalScript("ScreenCloud.clipboardUrl = None");
    moduleObj.evalScript("ScreenCloud.uploadingError = None");
    emit finished();
}