summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models/parsetreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/themeeditor/models/parsetreemodel.cpp')
-rw-r--r--utils/themeeditor/models/parsetreemodel.cpp27
1 files changed, 23 insertions, 4 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp
index 41cecc4c20..4e94bfa0bf 100644
--- a/utils/themeeditor/models/parsetreemodel.cpp
+++ b/utils/themeeditor/models/parsetreemodel.cpp
@@ -29,6 +29,8 @@
29 29
30#include <QObject> 30#include <QObject>
31#include <QPixmap> 31#include <QPixmap>
32#include <QMap>
33#include <QDir>
32 34
33ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): 35ParseTreeModel::ParseTreeModel(const char* document, QObject* parent):
34 QAbstractItemModel(parent) 36 QAbstractItemModel(parent)
@@ -270,23 +272,40 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value,
270 return true; 272 return true;
271} 273}
272 274
273QGraphicsScene* ParseTreeModel::render(ProjectModel* project) 275QGraphicsScene* ParseTreeModel::render(ProjectModel* project,
276 const QString* file)
274{ 277{
275 scene->clear(); 278 scene->clear();
276 279
277 /* Setting the background */ 280 /* Setting the background */
278 scene->setBackgroundBrush(QBrush(QPixmap(":/render/scenebg.png"))); 281 scene->setBackgroundBrush(QBrush(QPixmap(":/render/scenebg.png")));
279 282
283 /* Preparing settings */
284 QMap<QString, QString> settings;
285 if(project)
286 settings = project->getSettings();
287
288 /* Setting themebase if it can't be derived from the project */
289 if(settings.value("themebase", "") == "" && file && QFile::exists(*file))
290 {
291 QDir base(*file);
292 base.cdUp();
293 settings.insert("themebase", base.canonicalPath());
294 }
295
296 RBScreen* screen = 0;
297 RBRenderInfo info(this, project, &settings, screen);
298
280 /* Adding the screen */ 299 /* Adding the screen */
281 RBScreen* screen = new RBScreen(project); 300 screen = new RBScreen(info);
282 scene->addItem(screen); 301 scene->addItem(screen);
283 302
284 RBRenderInfo info(this, project, screen); 303 info = RBRenderInfo(this, project, &settings, screen);
304
285 305
286 /* Rendering the tree */ 306 /* Rendering the tree */
287 if(root) 307 if(root)
288 root->render(info); 308 root->render(info);
289 309
290
291 return scene; 310 return scene;
292} 311}