|
|
#include <PythonQt.h>
|
|
|
#include <QtGui>
|
|
|
#include <QApplication>
|
|
|
|
|
|
int main (int argc, char* argv[]) {
|
|
|
QApplication app(argc, argv);
|
|
|
PythonQt::init();
|
|
|
PythonQtObjectPtr mainModule = PythonQt::self()->getMainModule();
|
|
|
mainModule.evalScript(QString("import sys\n"));
|
|
|
Q_ASSERT(!mainModule.isNull());
|
|
|
{
|
|
|
// evaluate a python file embedded in executable as resource:
|
|
|
mainModule.evalFile(":eyed3tagger.py");
|
|
|
// create an object, hold onto its reference
|
|
|
PythonQtObjectPtr tag = mainModule.evalScript("EyeD3Tagger()\n", Py_eval_input);
|
|
|
Q_ASSERT(!tag.isNull());
|
|
|
tag.call("setFileName", QVariantList() << "t.mp3");
|
|
|
QVariant fn = tag.call("fileName", QVariantList());
|
|
|
Q_ASSERT(fn.toString() == QString("t.mp3"));
|
|
|
// tag goes out of scope, reference count decremented.
|
|
|
}
|
|
|
{
|
|
|
// Allow the python system path to recognize QFile paths in the sys.path
|
|
|
PythonQt::self()->setImporter(NULL);
|
|
|
// append the Qt resource root directory to the sys.path
|
|
|
mainModule.evalScript("sys.path.append(':')\n");
|
|
|
mainModule.evalScript("import eyed3tagger\n");
|
|
|
PythonQtObjectPtr tag = mainModule.evalScript("eyed3tagger.EyeD3Tagger()\n", Py_eval_input);
|
|
|
Q_ASSERT(!tag.isNull());
|
|
|
tag.call("setFileName", QVariantList() << "t.mp3");
|
|
|
QVariant fn = tag.call("fileName", QVariantList());
|
|
|
Q_ASSERT(fn.toString() == QString("t.mp3"));
|
|
|
}
|
|
|
{ // alternative using import and loading it as a real module from sys.path
|
|
|
// import sys first
|
|
|
mainModule.evalScript(QString("sys.path.append('%1')\n").arg(QDir::currentPath()));
|
|
|
mainModule.evalScript("import eyed3tagger\n");
|
|
|
PythonQtObjectPtr tag = mainModule.evalScript("eyed3tagger.EyeD3Tagger()\n", Py_eval_input);
|
|
|
Q_ASSERT(!tag.isNull());
|
|
|
tag.call("setFileName", QVariantList() << "t.mp3");
|
|
|
QVariant fn = tag.call("fileName", QVariantList());
|
|
|
Q_ASSERT(fn.toString() == QString("t.mp3"));
|
|
|
}
|
|
|
qDebug() << "finished";
|
|
|
return 0;
|
|
|
}
|
|
|
|