summaryrefslogtreecommitdiffstats
path: root/utils/themeeditor/models/parsetreenode.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-08-05 00:43:33 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-08-05 00:43:33 +0000
commit054a85fdca651844f969f44755b8531ab2e962d7 (patch)
treed424970a137d4bbdd57102961a46653e67589820 /utils/themeeditor/models/parsetreenode.cpp
parent467451878726a3755eb3b2b472a3b33299cb9245 (diff)
downloadrockbox-054a85fdca651844f969f44755b8531ab2e962d7.tar.gz
rockbox-054a85fdca651844f969f44755b8531ab2e962d7.tar.bz2
rockbox-054a85fdca651844f969f44755b8531ab2e962d7.zip
Theme Editor: Added code generate/undo functionality to SkinViewer
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27704 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/models/parsetreenode.cpp')
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp35
1 files changed, 21 insertions, 14 deletions
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index 8d1fcc7d1a..1dedd4a689 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -36,19 +36,21 @@ int ParseTreeNode::openConditionals = 0;
bool ParseTreeNode::breakFlag = false;
/* Root element constructor */
-ParseTreeNode::ParseTreeNode(struct skin_element* data)
- : parent(0), element(0), param(0), children()
+ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeModel* model)
+ : parent(0), element(0), param(0), children(), model(model)
{
while(data)
{
- children.append(new ParseTreeNode(data, this));
+ children.append(new ParseTreeNode(data, this, model));
data = data->next;
}
}
/* Normal element constructor */
-ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeNode* parent)
- : parent(parent), element(data), param(0), children()
+ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeNode* parent,
+ ParseTreeModel* model)
+ : parent(parent), element(data), param(0),
+ children(), model(model)
{
switch(element->type)
{
@@ -58,29 +60,30 @@ ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeNode* parent)
{
if(element->params[i].type == skin_tag_parameter::CODE)
children.append(new ParseTreeNode(element->params[i].data.code,
- this));
+ this, model));
else
- children.append(new ParseTreeNode(&element->params[i], this));
+ children.append(new ParseTreeNode(&element->params[i], this,
+ model));
}
break;
case CONDITIONAL:
for(int i = 0; i < element->params_count; i++)
- children.append(new ParseTreeNode(&data->params[i], this));
+ children.append(new ParseTreeNode(&data->params[i], this, model));
for(int i = 0; i < element->children_count; i++)
- children.append(new ParseTreeNode(data->children[i], this));
+ children.append(new ParseTreeNode(data->children[i], this, model));
break;
case LINE_ALTERNATOR:
for(int i = 0; i < element->children_count; i++)
{
- children.append(new ParseTreeNode(data->children[i], this));
+ children.append(new ParseTreeNode(data->children[i], this, model));
}
break;
case VIEWPORT:
for(int i = 0; i < element->params_count; i++)
- children.append(new ParseTreeNode(&data->params[i], this));
+ children.append(new ParseTreeNode(&data->params[i], this, model));
/* Deliberate fall-through here */
case LINE:
@@ -89,7 +92,7 @@ case VIEWPORT:
for(struct skin_element* current = data->children[i]; current;
current = current->next)
{
- children.append(new ParseTreeNode(current, this));
+ children.append(new ParseTreeNode(current, this, model));
}
}
break;
@@ -100,8 +103,10 @@ case VIEWPORT:
}
/* Parameter constructor */
-ParseTreeNode::ParseTreeNode(skin_tag_parameter *data, ParseTreeNode *parent)
- : parent(parent), element(0), param(data), children()
+ParseTreeNode::ParseTreeNode(skin_tag_parameter *data, ParseTreeNode *parent,
+ ParseTreeModel *model)
+ : parent(parent), element(0), param(data),
+ children(), model(model)
{
}
@@ -1085,5 +1090,7 @@ void ParseTreeNode::modParam(QVariant value, int index)
param->data.number = value.toInt();
}
+ model->paramChanged(this);
+
}
}