diff options
Diffstat (limited to 'utils/themeeditor/models/parsetreemodel.cpp')
-rw-r--r-- | utils/themeeditor/models/parsetreemodel.cpp | 27 |
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 | ||
33 | ParseTreeModel::ParseTreeModel(const char* document, QObject* parent): | 35 | ParseTreeModel::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 | ||
273 | QGraphicsScene* ParseTreeModel::render(ProjectModel* project) | 275 | QGraphicsScene* 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 | } |