summaryrefslogtreecommitdiff
path: root/utils/themeeditor/models
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-08-04 09:16:52 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-08-04 09:16:52 +0000
commit49865b23f601e636c9a80b21826fc607f1964eb5 (patch)
treeeb7959fd8aa5c572842e8d295440348cb17fc3cf /utils/themeeditor/models
parent2db08d41536b875f35b055f8e0bb3845b47a7ba3 (diff)
downloadrockbox-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.cpp14
-rw-r--r--utils/themeeditor/models/parsetreemodel.h2
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp32
-rw-r--r--utils/themeeditor/models/parsetreenode.h2
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);