Added FormLoader plugin
This commit is contained in:
parent
46a8eddd95
commit
ad60c6978a
6 changed files with 155 additions and 0 deletions
57
telldus-gui/Plugins/FormLoader/formloaderobject.cpp
Normal file
57
telldus-gui/Plugins/FormLoader/formloaderobject.cpp
Normal file
|
@ -0,0 +1,57 @@
|
|||
#include "formloaderobject.h"
|
||||
#include <QApplication>
|
||||
#include <QWidget>
|
||||
#include <QScriptEngine>
|
||||
#include <QUiLoader>
|
||||
#include <QStringList>
|
||||
#include <QDir>
|
||||
#include <QDebug>
|
||||
|
||||
FormLoaderObject::FormLoaderObject( QScriptEngine *e, QObject * parent )
|
||||
: QObject(parent),
|
||||
engine(e)
|
||||
{
|
||||
}
|
||||
|
||||
FormLoaderObject::~FormLoaderObject() {
|
||||
}
|
||||
|
||||
void FormLoaderObject::load( const QString &name ) {
|
||||
foreach( QString path, qApp->libraryPaths() ) {
|
||||
QDir dir(path);
|
||||
if (!dir.cd("Forms")) {
|
||||
continue;
|
||||
}
|
||||
if (!dir.cd(name)) {
|
||||
continue;
|
||||
}
|
||||
if (!dir.exists( QString("%1.ui").arg(name) )) {
|
||||
qDebug() << "UI-file not found for form" << name;
|
||||
continue;
|
||||
}
|
||||
if (!dir.exists( QString("%1.js").arg(name) )) {
|
||||
qDebug() << "JS-file not found for form" << name;
|
||||
continue;
|
||||
}
|
||||
QString scriptFileName( dir.filePath(QString("%1.js").arg(name)) );
|
||||
QFile scriptFile(scriptFileName);
|
||||
scriptFile.open(QIODevice::ReadOnly);
|
||||
engine->evaluate(scriptFile.readAll(), scriptFileName);
|
||||
scriptFile.close();
|
||||
|
||||
QUiLoader loader;
|
||||
QFile uiFile( dir.filePath(QString("%1.ui").arg(name)) );
|
||||
uiFile.open( QIODevice::ReadOnly );
|
||||
QWidget *ui = loader.load(&uiFile);
|
||||
uiFile.close();
|
||||
|
||||
QScriptValue ctor = engine->evaluate(name);
|
||||
QScriptValue scriptUi = engine->newQObject(ui, QScriptEngine::ScriptOwnership);
|
||||
QScriptValue calc = ctor.construct(QScriptValueList() << scriptUi);
|
||||
|
||||
ui->show();
|
||||
return;
|
||||
}
|
||||
qDebug() << "Form" << name << "not found!";
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue