Beispiel #1
0
PyObject *
pyotherside_find_module(PyObject *self, PyObject *args) {

    char *fullname, *path;
    int err = PyArg_ParseTuple(args, "s|z", &fullname, &path);

    QString filename(fullname);
    qDebug() << "Search for module " + filename.toUtf8();
    if(err == 0)
    {
        PyObject_Print(PyErr_Occurred(), stdout, Py_PRINT_RAW);
        PySys_WriteStdout("\n");
        PyErr_Print();
        PySys_WriteStdout("\n");
        return Py_None;
    }

    QDir qrc(":/");
    if (((qrc.exists(filename+".py"))
         | (qrc.exists(filename+".pyc"))
         | (qrc.exists(filename+".pyo")))
            | (QDir(":/"+filename).exists())) {
        Py_INCREF(self);
        qDebug() << "Found module "+filename.toUtf8();
        return self;
    }
    qDebug() << "Can't found module "+filename.toUtf8();
    Py_INCREF(Py_None);
    return Py_None;
}
bool PackageGenerator::buildQRC(){
    output("Build qrc");
    for(qint32 s=0;s<_targetSizes.size();++s){
        QString sizeset=FKUtility::sizeToString(_targetSizes.at(s));
        QFile qrc(QString("%1/package.qrc").arg(_buildFolder.filePath(sizeset)));
        if(qrc.open(QIODevice::WriteOnly)){
            QXmlStreamWriter xml(&qrc);
            xml.writeStartElement("RCC");
                xml.writeStartElement("qresource");
                    xml.writeAttribute("prefix","/"+_sourceFolder.dirName());
                    for(QMap<QString,ImageSetting>::ConstIterator i=_imageSettings.constBegin();i!=_imageSettings.constEnd();++i){
                        xml.writeTextElement("file",i.key());
                    }
                xml.writeEndElement();
            xml.writeEndElement();
        }else{
            output(QString("Unable write qrc file for %1 package %2 sizeset").arg(_sourceFolder.dirName()).arg(sizeset));
            return false;
        }
    }
    output("Success");
    return true;
}
Beispiel #3
0
static PyObject *
pyotherside_get_code_from_data(QString filename) {

    QString buf;
    QDir qrc(":/");
    PyObject *module_code;
    FILE *fh;

    if (qrc.exists(filename+"/__init__.py")) {
        QFile module_data(":/"+filename+"/__init__.py");
        if(module_data.open(QIODevice::ReadOnly | QIODevice::Text)) {
            QTextStream data(&module_data);
            buf = data.readAll();
            module_data.close();
            if (buf == NULL) {
                qDebug() << "Can t get code of "+filename.toUtf8();
            }

            // Compile module code
            module_code = Py_CompileString(buf.toUtf8().constData(), filename.toUtf8().constData(), Py_file_input);
            if (module_code != NULL){
                return module_code;
            }
            else {
                qDebug() << "Can t compile code of "+filename.toUtf8();
                return NULL;
            }
        } else {
            qDebug() << "Can't get content from qrc (__init__) for "+filename.toUtf8();
        }
    }

    // WIP
    /*if (qrc.exists(filename+".pyc")) {
        QFile module_data(":/"+filename+".pyc");
        qDebug() << "Opening compiled module pyc : " + filename.toUtf8();
        if(module_data.open(QIODevice::ReadOnly | QIODevice::Text)) {
            int h = module_data.handle();          
            FILE* fh = fdopen(h, "rb");
            qDebug() << "Read MarchalObject from fh : " + filename.toUtf8();
            module_code = PyMarshal_ReadObjectFromFile(fh);
            fclose(fh);
            qDebug() << "Close MarchalObject from fh : " + filename.toUtf8();

            //Load bytecode
            qDebug() << "Loading bytecode from fh : " + filename.toUtf8();
            module_code = unmarshal_code(filename.toUtf8().data(), PyBytes_FromString(buf.toUtf8().data()));
            if (module_code != NULL){
                qDebug() << "Bytecode loaded from fh : " + filename.toUtf8();
                return module_code;
            }

        }
    }*/

    // WIP
    /*if (qrc.exists(filename+".pyo")) {
        QFile module_data(":/"+filename+".pyo");
        if(module_data.open(QIODevice::ReadOnly | QIODevice::Text)) {
            buf = module_data.readAll().constData();

            //Load bytecode
            module_code = unmarshal_code(filename.toUtf8().data(), PyBytes_FromString(buf));
            if (module_code != NULL){
                return module_code;
            }
        }
    }*/

    if (qrc.exists(filename+".py")) {
        QFile module_data(":/"+filename+".py");
        if(module_data.open(QIODevice::ReadOnly | QIODevice::Text)) {
            QTextStream data(&module_data);
            buf = data.readAll();
            module_data.close();

            qDebug() << "Content:";
            qDebug() << buf;

            // Compile module code
            module_code = Py_CompileString(buf.toUtf8().constData(), filename.toUtf8().constData(), Py_file_input);
            if (module_code != NULL){
                return module_code;
            }
            else {
                qDebug() << "Can t compile code of "+filename.toUtf8();
                return NULL;

            }
        } else {
            qDebug() << "Can't get qrc content for " + filename.toUtf8();
        }
    }

    qDebug() << filename.toUtf8() + ' not found';
    return NULL;
}