diff options
Diffstat (limited to 'utils/themeeditor/models')
-rw-r--r-- | utils/themeeditor/models/parsetreemodel.cpp | 42 | ||||
-rw-r--r-- | utils/themeeditor/models/parsetreenode.cpp | 2 |
2 files changed, 41 insertions, 3 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index ccae865290..47b24174b7 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp | |||
@@ -290,7 +290,9 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project, | |||
290 | settings.insert("themebase", base.canonicalPath()); | 290 | settings.insert("themebase", base.canonicalPath()); |
291 | } | 291 | } |
292 | 292 | ||
293 | /* Finding imagebase and determining remote/wps status */ | ||
293 | bool remote = false; | 294 | bool remote = false; |
295 | bool wps = false; | ||
294 | if(file) | 296 | if(file) |
295 | { | 297 | { |
296 | QString skinFile = *file; | 298 | QString skinFile = *file; |
@@ -304,14 +306,50 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project, | |||
304 | QString extension = decomp.last(); | 306 | QString extension = decomp.last(); |
305 | if(extension[0] == 'r') | 307 | if(extension[0] == 'r') |
306 | remote = true; | 308 | remote = true; |
309 | if(extension.right(3) == "wps") | ||
310 | wps = true; | ||
311 | } | ||
312 | |||
313 | /* Rendering SBS, if necessary */ | ||
314 | RBScreen* sbsScreen = 0; | ||
315 | if(wps && device->data("rendersbs").toBool()) | ||
316 | { | ||
317 | QString sbsFile = settings.value(remote ? "rsbs" : "sbs", ""); | ||
318 | sbsFile.replace("/.rockbox" , settings.value("themebase","")); | ||
319 | |||
320 | if(QFile::exists(sbsFile)) | ||
321 | { | ||
322 | QFile sbs(sbsFile); | ||
323 | sbs.open(QFile::ReadOnly | QFile::Text); | ||
324 | ParseTreeModel sbsModel(QString(sbs.readAll()).toAscii()); | ||
325 | |||
326 | if(sbsModel.root != 0) | ||
327 | { | ||
328 | RBRenderInfo sbsInfo(&sbsModel, project, &settings, device, | ||
329 | sbsScreen); | ||
330 | |||
331 | sbsScreen = new RBScreen(sbsInfo, remote); | ||
332 | scene->addItem(sbsScreen); | ||
333 | |||
334 | sbsInfo = RBRenderInfo(&sbsModel, project, &settings, device, | ||
335 | sbsScreen); | ||
336 | sbsModel.root->render(sbsInfo); | ||
337 | } | ||
338 | |||
339 | } | ||
307 | } | 340 | } |
308 | 341 | ||
309 | RBScreen* screen = 0; | 342 | RBScreen* screen = 0; |
310 | RBRenderInfo info(this, project, &settings, device, screen); | 343 | RBRenderInfo info(this, project, &settings, device, screen); |
311 | 344 | ||
312 | /* Adding the screen */ | 345 | /* Adding the screen */ |
313 | screen = new RBScreen(info, remote); | 346 | if(sbsScreen) |
314 | scene->addItem(screen); | 347 | screen = new RBScreen(info, remote, sbsScreen->getCustomUI()); |
348 | else | ||
349 | screen = new RBScreen(info, remote); | ||
350 | |||
351 | if(!sbsScreen) | ||
352 | scene->addItem(screen); | ||
315 | 353 | ||
316 | info = RBRenderInfo(this, project, &settings, device, screen); | 354 | info = RBRenderInfo(this, project, &settings, device, screen); |
317 | 355 | ||
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index f1ee3b27ca..ae83f1aadf 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp | |||
@@ -629,7 +629,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) | |||
629 | { | 629 | { |
630 | case 'd': | 630 | case 'd': |
631 | /* %wd */ | 631 | /* %wd */ |
632 | /* Disable SBS rendering */ | 632 | info.screen()->breakSBS(); |
633 | return true; | 633 | return true; |
634 | 634 | ||
635 | case 'e': | 635 | case 'e': |