##// END OF EJS Templates
Added an example QFileImportInterface which doesn't work yet!...
ezust -
r7:404e8f96a20b
parent child
Show More
@@ -0,0 +1,42
1 #include <QFile>
2 #include <QFileInfo>
3
4 #include <PythonQt.h>
5 #include "QFileImportInterface.h"
6
7 QFileImportInterface::QFileImportInterface() {
8 m_oldInterface = PythonQt::importInterface();
9 PythonQt::self()->setImporter(this);
10 }
11
12 QFileImportInterface::~QFileImportInterface() {
13 PythonQt::self()->setImporter(m_oldInterface);
14 }
15
16 QByteArray QFileImportInterface::readFileAsBytes (const QString &filename) {
17 qDebug() << "readFileAsBytes: " << filename;
18 QFile f(filename);
19 return f.readAll();
20 }
21
22 QByteArray QFileImportInterface::readSourceFile (const QString &filename, bool &ok) {
23 QFile f(filename);
24 if (!exists(filename)) {
25 ok = false;
26 return QByteArray();
27 }
28 else {
29 ok = true;
30 return readFileAsBytes(filename);
31 }
32 }
33
34 bool QFileImportInterface::exists (const QString &filename) {
35 QFile f(filename);
36 return f.exists();
37 }
38
39 QDateTime QFileImportInterface::lastModifiedDate (const QString &filename) {
40 QFileInfo fi(filename);
41 return fi.lastModified();
42 }
@@ -0,0 +1,20
1 #ifndef QFILEIMPORTINTERFACE_H
2 #define QFILEIMPORTINTERFACE_H
3
4 #include <PythonQtImportFileInterface.h>
5
6 /** Under Construction : This does not work yet.
7 */
8 class QFileImportInterface : public PythonQtImportFileInterface {
9 public:
10 QFileImportInterface();
11 ~QFileImportInterface();
12 QByteArray readFileAsBytes (const QString &filename);
13 QByteArray readSourceFile (const QString &filename, bool &ok);
14 bool exists (const QString &filename);
15 QDateTime lastModifiedDate (const QString &filename);
16 private:
17 PythonQtImportFileInterface *m_oldInterface;
18 };
19
20 #endif // #ifndef QFILEIMPORTINTERFACE_H
@@ -1,35 +1,49
1 1 #include <PythonQt.h>
2 2 #include <QtGui>
3 #include "QFileImportInterface.h"
4
3 5 int main (int argc, char* argv[]) {
4 6 QApplication app(argc, argv);
5 7 PythonQt::init();
6 8 PythonQtObjectPtr mainModule = PythonQt::self()->getMainModule();
9 mainModule.evalScript(QString("import sys\n"));
7 10 Q_ASSERT(!mainModule.isNull());
8 11 {
9 12 // evaluate a python file embedded in executable as resource:
10 13 mainModule.evalFile(":eyed3tagger.py");
11 14 // create an object, hold onto its reference
12 15 PythonQtObjectPtr tag = mainModule.evalScript("EyeD3Tagger()\n", Py_eval_input);
13 16 Q_ASSERT(!tag.isNull());
14 17 tag.call("setFileName", QVariantList() << "t.mp3");
15 18 QVariant fn = tag.call("fileName", QVariantList());
16 19 Q_ASSERT(fn.toString() == QString("t.mp3"));
17 20 // tag goes out of scope, reference count decremented.
18 21 }
19 22 qDebug() << "test1";
23 /*
24 {
25 // Allow the python system path to recognize QFile paths in the sys.path
26 QFileImportInterface qfii;
27 // append the Qt resource root directory to the sys.path
28 mainModule.evalScript("sys.path.append(':')\n");
29 mainModule.evalScript("import eyed3tagger\n");
30 PythonQtObjectPtr tag = mainModule.evalScript("eyed3tagger.EyeD3Tagger()\n", Py_eval_input);
31 Q_ASSERT(!tag.isNull());
32 tag.call("setFileName", QVariantList() << "t.mp3");
33 QVariant fn = tag.call("fileName", QVariantList());
34 Q_ASSERT(fn.toString() == QString("t.mp3"));
35 }
36 qDebug() << "test2"; */
20 37 { // alternative using import and loading it as a real module from sys.path
21 38 // import sys first
22 mainModule.evalScript(QString("import sys\n"));
23 // append the current directory to the sys.path
24 39 mainModule.evalScript(QString("sys.path.append('%1')\n").arg(QDir::currentPath()));
25 40 mainModule.evalScript("import eyed3tagger\n");
26 41 PythonQtObjectPtr tag = mainModule.evalScript("eyed3tagger.EyeD3Tagger()\n", Py_eval_input);
27 42 Q_ASSERT(!tag.isNull());
28 43 tag.call("setFileName", QVariantList() << "t.mp3");
29 44 QVariant fn = tag.call("fileName", QVariantList());
30 45 Q_ASSERT(fn.toString() == QString("t.mp3"));
31 46 }
32
33 47 qDebug() << "finished";
34 48 return 0;
35 49 }
@@ -1,9 +1,11
1 1 CONFIG += debug
2 2 VPATH +=
3 3 INCLUDEPATH += . $$(PYTHONQT_ROOT)/src /usr/include/python2.5
4 4
5 SOURCES += CPPPyWrapperExample.cpp
5 SOURCES += CPPPyWrapperExample.cpp QFileImportInterface.cpp
6 HEADERS += QFileImportInterface.h
7
6 8
7 9 LIBS += -L$$(PYTHONQT_ROOT)/lib -lPythonQt -lutil
8 10
9 11 RESOURCES += CPPPyWrapperExample.qrc
General Comments 0
You need to be logged in to leave comments. Login now