diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-08-04 09:16:52 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-08-04 09:16:52 +0000 |
| commit | 49865b23f601e636c9a80b21826fc607f1964eb5 (patch) | |
| tree | eb7959fd8aa5c572842e8d295440348cb17fc3cf /utils/themeeditor/models | |
| parent | 2db08d41536b875f35b055f8e0bb3845b47a7ba3 (diff) | |
| download | rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.zip rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.tar.gz rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.tar.bz2 rockbox-49865b23f601e636c9a80b21826fc607f1964eb5.tar.xz | |
Theme Editor: Began implementing code generation for movable viewports
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27691 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/models')
| -rw-r--r-- | utils/themeeditor/models/parsetreemodel.cpp | 14 | ||||
| -rw-r--r-- | utils/themeeditor/models/parsetreemodel.h | 2 | ||||
| -rw-r--r-- | utils/themeeditor/models/parsetreenode.cpp | 32 | ||||
| -rw-r--r-- | utils/themeeditor/models/parsetreenode.h | 2 |
4 files changed, 42 insertions, 8 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index 8d8855a..a7f04ff 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp @@ -271,7 +271,8 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value, } QGraphicsScene* ParseTreeModel::render(ProjectModel* project, - DeviceState* device, const QString* file) + DeviceState* device, + SkinDocument* doc, const QString* file) { scene->clear(); @@ -327,14 +328,14 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project, if(sbsModel.root != 0) { - RBRenderInfo sbsInfo(&sbsModel, project, &settings, device, + RBRenderInfo sbsInfo(&sbsModel, project, doc, &settings, device, sbsScreen); sbsScreen = new RBScreen(sbsInfo, remote); scene->addItem(sbsScreen); - sbsInfo = RBRenderInfo(&sbsModel, project, &settings, device, - sbsScreen); + sbsInfo = RBRenderInfo(&sbsModel, project, doc, &settings, + device, sbsScreen); sbsModel.root->render(sbsInfo); } @@ -342,7 +343,7 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project, } RBScreen* screen = 0; - RBRenderInfo info(this, project, &settings, device, screen, sbsScreen); + RBRenderInfo info(this, project, doc, &settings, device, screen, sbsScreen); /* Adding the screen */ if(sbsScreen) @@ -353,7 +354,8 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project, if(!sbsScreen) scene->addItem(screen); - info = RBRenderInfo(this, project, &settings, device, screen, sbsScreen); + info = RBRenderInfo(this, project, doc, &settings, device, screen, + sbsScreen); /* Rendering the tree */ diff --git a/utils/themeeditor/models/parsetreemodel.h b/utils/themeeditor/models/parsetreemodel.h index 463f6ca..ec0a420 100644 --- a/utils/themeeditor/models/parsetreemodel.h +++ b/utils/themeeditor/models/parsetreemodel.h @@ -63,7 +63,7 @@ public: bool setData(const QModelIndex &index, const QVariant &value, int role); QGraphicsScene* render(ProjectModel* project, DeviceState* device, - const QString* file = 0); + SkinDocument* doc, 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 1349ba9..8d1fcc7 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp @@ -523,7 +523,7 @@ void ParseTreeNode::render(const RBRenderInfo& info) return; } - rendered = new RBViewport(element, info); + rendered = new RBViewport(element, info, this); for(int i = element->params_count; i < children.count(); i++) children[i]->render(info, dynamic_cast<RBViewport*>(rendered)); @@ -1057,3 +1057,33 @@ double ParseTreeNode::findConditionalTime(ParseTreeNode *conditional, conditional->children.count()).toInt(); return findBranchTime(conditional->children[child], info); } + +void ParseTreeNode::modParam(QVariant value, int index) +{ + if(element) + { + if(index < 0 || index >= children.count()) + return; + children[index]->modParam(value); + } + else if(param) + { + if(value.type() == QVariant::Double) + { + param->type = skin_tag_parameter::DECIMAL; + param->data.number = static_cast<int>(value.toDouble() * 10); + } + else if(value.type() == QVariant::String) + { + param->type = skin_tag_parameter::STRING; + free(param->data.text); + param->data.text = strdup(value.toString().toStdString().c_str()); + } + else if(value.type() == QVariant::Int) + { + param->type = skin_tag_parameter::INTEGER; + param->data.number = value.toInt(); + } + + } +} diff --git a/utils/themeeditor/models/parsetreenode.h b/utils/themeeditor/models/parsetreenode.h index ca01ddd..39f0dbd 100644 --- a/utils/themeeditor/models/parsetreenode.h +++ b/utils/themeeditor/models/parsetreenode.h @@ -67,6 +67,8 @@ public: double findConditionalTime(ParseTreeNode* conditional, const RBRenderInfo& info); + void modParam(QVariant value, int index = -1); + private: bool execTag(const RBRenderInfo& info, RBViewport* viewport); |