diff options
Diffstat (limited to 'utils/themeeditor/models')
| -rw-r--r-- | utils/themeeditor/models/parsetreemodel.cpp | 27 | ||||
| -rw-r--r-- | utils/themeeditor/models/parsetreemodel.h | 2 | ||||
| -rw-r--r-- | utils/themeeditor/models/parsetreenode.cpp | 12 | ||||
| -rw-r--r-- | utils/themeeditor/models/projectmodel.h | 2 |
4 files changed, 34 insertions, 9 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index 41cecc4..4e94bfa 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp @@ -29,6 +29,8 @@ #include <QObject> #include <QPixmap> +#include <QMap> +#include <QDir> ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): QAbstractItemModel(parent) @@ -270,23 +272,40 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value, return true; } -QGraphicsScene* ParseTreeModel::render(ProjectModel* project) +QGraphicsScene* ParseTreeModel::render(ProjectModel* project, + const QString* file) { scene->clear(); /* Setting the background */ scene->setBackgroundBrush(QBrush(QPixmap(":/render/scenebg.png"))); + /* Preparing settings */ + QMap<QString, QString> settings; + if(project) + settings = project->getSettings(); + + /* Setting themebase if it can't be derived from the project */ + if(settings.value("themebase", "") == "" && file && QFile::exists(*file)) + { + QDir base(*file); + base.cdUp(); + settings.insert("themebase", base.canonicalPath()); + } + + RBScreen* screen = 0; + RBRenderInfo info(this, project, &settings, screen); + /* Adding the screen */ - RBScreen* screen = new RBScreen(project); + screen = new RBScreen(info); scene->addItem(screen); - RBRenderInfo info(this, project, screen); + info = RBRenderInfo(this, project, &settings, screen); + /* Rendering the tree */ if(root) root->render(info); - return scene; } diff --git a/utils/themeeditor/models/parsetreemodel.h b/utils/themeeditor/models/parsetreemodel.h index 1f252a3..df64403 100644 --- a/utils/themeeditor/models/parsetreemodel.h +++ b/utils/themeeditor/models/parsetreemodel.h @@ -60,7 +60,7 @@ public: Qt::ItemFlags flags(const QModelIndex &index) const; bool setData(const QModelIndex &index, const QVariant &value, int role); - QGraphicsScene* render(ProjectModel* project); + QGraphicsScene* render(ProjectModel* project, const QString* file = 0); static QString safeSetting(ProjectModel* project, QString key, QString fallback) diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index 97beca4..a74dd23 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp @@ -25,6 +25,8 @@ #include "parsetreenode.h" #include "parsetreemodel.h" +#include <iostream> + int ParseTreeNode::openConditionals = 0; /* Root element constructor */ @@ -490,11 +492,13 @@ void ParseTreeNode::render(const RBRenderInfo& info) return; } - switch(element->type) + if(element->type != VIEWPORT) { - case VIEWPORT: - rendered = new RBViewport(element, info); - break; + std::cerr << QObject::tr("Error in parse tree").toStdString() + << std::endl; + return; } + + rendered = new RBViewport(element, info); } diff --git a/utils/themeeditor/models/projectmodel.h b/utils/themeeditor/models/projectmodel.h index 791c07e..4cc531b 100644 --- a/utils/themeeditor/models/projectmodel.h +++ b/utils/themeeditor/models/projectmodel.h @@ -49,6 +49,8 @@ public: return settings.value(key, fallback); } + const QMap<QString, QString>& getSettings() const{ return settings; } + signals: public slots: |