diff options
author | Robert Bieber <robby@bieberphoto.com> | 2010-06-17 05:37:01 +0000 |
---|---|---|
committer | Robert Bieber <robby@bieberphoto.com> | 2010-06-17 05:37:01 +0000 |
commit | ca564287ee3f48945d45c7d92be7a83452f53745 (patch) | |
tree | d6e502bb604f925240a742b3bac2c813a98c447b /utils/themeeditor/parsetreenode.cpp | |
parent | ba07b2055c7eb8f2add96f55cb52b40b9ccb3d63 (diff) | |
download | rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.gz rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.zip |
Theme Editor: Moved source files into subdirectories
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26876 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/parsetreenode.cpp')
-rw-r--r-- | utils/themeeditor/parsetreenode.cpp | 474 |
1 files changed, 0 insertions, 474 deletions
diff --git a/utils/themeeditor/parsetreenode.cpp b/utils/themeeditor/parsetreenode.cpp deleted file mode 100644 index 397031aee1..0000000000 --- a/utils/themeeditor/parsetreenode.cpp +++ /dev/null @@ -1,474 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * $Id$ - * - * Copyright (C) 2010 Robert Bieber - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - -#include "symbols.h" -#include "tag_table.h" - -#include "parsetreenode.h" -#include "parsetreemodel.h" - -int ParseTreeNode::openConditionals = 0; - -/* Root element constructor */ -ParseTreeNode::ParseTreeNode(struct skin_element* data) - : parent(0), element(0), param(0), children() -{ - while(data) - { - children.append(new ParseTreeNode(data, this)); - data = data->next; - } -} - -/* Normal element constructor */ -ParseTreeNode::ParseTreeNode(struct skin_element* data, ParseTreeNode* parent) - : parent(parent), element(data), param(0), children() -{ - switch(element->type) - { - - case TAG: - for(int i = 0; i < element->params_count; i++) - { - if(element->params[i].type == skin_tag_parameter::CODE) - children.append(new ParseTreeNode(element->params[i].data.code, - this)); - else - children.append(new ParseTreeNode(&element->params[i], this)); - } - break; - - case CONDITIONAL: - for(int i = 0; i < element->params_count; i++) - children.append(new ParseTreeNode(&data->params[i], this)); - for(int i = 0; i < element->children_count; i++) - children.append(new ParseTreeNode(data->children[i], this)); - break; - - case SUBLINES: - for(int i = 0; i < element->children_count; i++) - { - children.append(new ParseTreeNode(data->children[i], this)); - } - break; - -case VIEWPORT: - for(int i = 0; i < element->params_count; i++) - children.append(new ParseTreeNode(&data->params[i], this)); - /* Deliberate fall-through here */ - - case LINE: - for(int i = 0; i < data->children_count; i++) - { - for(struct skin_element* current = data->children[i]; current; - current = current->next) - { - children.append(new ParseTreeNode(current, this)); - } - } - break; - - default: - break; - } -} - -/* Parameter constructor */ -ParseTreeNode::ParseTreeNode(skin_tag_parameter *data, ParseTreeNode *parent) - : parent(parent), element(0), param(data), children() -{ - -} - -QString ParseTreeNode::genCode() const -{ - QString buffer = ""; - - if(element) - { - switch(element->type) - { - case UNKNOWN: - break; - case VIEWPORT: - /* Generating the Viewport tag, if necessary */ - if(element->tag) - { - buffer.append(TAGSYM); - buffer.append(element->tag->name); - buffer.append(ARGLISTOPENSYM); - for(int i = 0; i < element->params_count; i++) - { - buffer.append(children[i]->genCode()); - if(i != element->params_count - 1) - buffer.append(ARGLISTSEPERATESYM); - } - buffer.append(ARGLISTCLOSESYM); - buffer.append('\n'); - } - - for(int i = element->params_count; i < children.count(); i++) - buffer.append(children[i]->genCode()); - break; - - case LINE: - for(int i = 0; i < children.count(); i++) - { - buffer.append(children[i]->genCode()); - } - if(openConditionals == 0 - && !(parent && parent->element->type == SUBLINES)) - { - buffer.append('\n'); - } - break; - - case SUBLINES: - for(int i = 0; i < children.count(); i++) - { - buffer.append(children[i]->genCode()); - if(i != children.count() - 1) - buffer.append(MULTILINESYM); - } - if(openConditionals == 0) - buffer.append('\n'); - break; - - case CONDITIONAL: - openConditionals++; - - /* Inserting the tag part */ - buffer.append(TAGSYM); - buffer.append(CONDITIONSYM); - buffer.append(element->tag->name); - if(element->params_count > 0) - { - buffer.append(ARGLISTOPENSYM); - for(int i = 0; i < element->params_count; i++) - { - buffer.append(children[i]->genCode()); - if( i != element->params_count - 1) - buffer.append(ARGLISTSEPERATESYM); - buffer.append(ARGLISTCLOSESYM); - } - } - - /* Inserting the sublines */ - buffer.append(ENUMLISTOPENSYM); - for(int i = element->params_count; i < children.count(); i++) - { - buffer.append(children[i]->genCode()); - if(i != children.count() - 1) - buffer.append(ENUMLISTSEPERATESYM); - } - buffer.append(ENUMLISTCLOSESYM); - openConditionals--; - break; - - case TAG: - buffer.append(TAGSYM); - buffer.append(element->tag->name); - - if(element->params_count > 0) - { - /* Rendering parameters if there are any */ - buffer.append(ARGLISTOPENSYM); - for(int i = 0; i < children.count(); i++) - { - buffer.append(children[i]->genCode()); - if(i != children.count() - 1) - buffer.append(ARGLISTSEPERATESYM); - } - buffer.append(ARGLISTCLOSESYM); - } - break; - - case TEXT: - for(char* cursor = (char*)element->data; *cursor; cursor++) - { - if(find_escape_character(*cursor)) - buffer.append(TAGSYM); - buffer.append(*cursor); - } - break; - - case COMMENT: - buffer.append(COMMENTSYM); - buffer.append((char*)element->data); - buffer.append('\n'); - break; - } - } - else if(param) - { - switch(param->type) - { - case skin_tag_parameter::STRING: - for(char* cursor = param->data.text; *cursor; cursor++) - { - if(find_escape_character(*cursor)) - buffer.append(TAGSYM); - buffer.append(*cursor); - } - break; - - case skin_tag_parameter::NUMERIC: - buffer.append(QString::number(param->data.numeric, 10)); - break; - - case skin_tag_parameter::DEFAULT: - buffer.append(DEFAULTSYM); - break; - - case skin_tag_parameter::CODE: - buffer.append(QObject::tr("This doesn't belong here")); - break; - - } - } - else - { - for(int i = 0; i < children.count(); i++) - buffer.append(children[i]->genCode()); - } - - return buffer; -} - -/* A more or less random hashing algorithm */ -int ParseTreeNode::genHash() const -{ - int hash = 0; - char *text; - - if(element) - { - hash += element->type; - switch(element->type) - { - case UNKNOWN: - break; - case VIEWPORT: - case LINE: - case SUBLINES: - case CONDITIONAL: - hash += element->children_count; - break; - - case TAG: - for(unsigned int i = 0; i < strlen(element->tag->name); i++) - hash += element->tag->name[i]; - break; - - case COMMENT: - case TEXT: - text = (char*)element->data; - for(unsigned int i = 0; i < strlen(text); i++) - { - if(i % 2) - hash += text[i] % element->type; - else - hash += text[i] % element->type * 2; - } - break; - } - - } - - if(param) - { - hash += param->type; - switch(param->type) - { - case skin_tag_parameter::DEFAULT: - case skin_tag_parameter::CODE: - break; - - case skin_tag_parameter::NUMERIC: - hash += param->data.numeric * (param->data.numeric / 4); - break; - - case skin_tag_parameter::STRING: - for(unsigned int i = 0; i < strlen(param->data.text); i++) - { - if(i % 2) - hash += param->data.text[i] * 2; - else - hash += param->data.text[i]; - } - break; - } - } - - for(int i = 0; i < children.count(); i++) - { - hash += children[i]->genHash(); - } - - return hash; -} - -ParseTreeNode* ParseTreeNode::child(int row) -{ - if(row < 0 || row >= children.count()) - return 0; - - return children[row]; -} - -int ParseTreeNode::numChildren() const -{ - return children.count(); -} - - -QVariant ParseTreeNode::data(int column) const -{ - switch(column) - { - case ParseTreeModel::typeColumn: - if(element) - { - switch(element->type) - { - case UNKNOWN: - return QObject::tr("Unknown"); - case VIEWPORT: - return QObject::tr("Viewport"); - - case LINE: - return QObject::tr("Logical Line"); - - case SUBLINES: - return QObject::tr("Alternator"); - - case COMMENT: - return QObject::tr("Comment"); - - case CONDITIONAL: - return QObject::tr("Conditional Tag"); - - case TAG: - return QObject::tr("Tag"); - - case TEXT: - return QObject::tr("Plaintext"); - } - } - else if(param) - { - switch(param->type) - { - case skin_tag_parameter::STRING: - return QObject::tr("String"); - - case skin_tag_parameter::NUMERIC: - return QObject::tr("Number"); - - case skin_tag_parameter::DEFAULT: - return QObject::tr("Default Argument"); - - case skin_tag_parameter::CODE: - return QObject::tr("This doesn't belong here"); - } - } - else - { - return QObject::tr("Root"); - } - - break; - - case ParseTreeModel::valueColumn: - if(element) - { - switch(element->type) - { - case UNKNOWN: - case VIEWPORT: - case LINE: - case SUBLINES: - return QString(); - - case CONDITIONAL: - return QString(element->tag->name); - - case TEXT: - case COMMENT: - return QString((char*)element->data); - - case TAG: - return QString(element->tag->name); - } - } - else if(param) - { - switch(param->type) - { - case skin_tag_parameter::DEFAULT: - return QObject::tr("-"); - - case skin_tag_parameter::STRING: - return QString(param->data.text); - - case skin_tag_parameter::NUMERIC: - return QString::number(param->data.numeric, 10); - - case skin_tag_parameter::CODE: - return QObject::tr("Seriously, something's wrong here"); - } - } - else - { - return QString(); - } - break; - - case ParseTreeModel::lineColumn: - if(element) - return QString::number(element->line, 10); - else - return QString(); - break; - } - - return QVariant(); -} - - -int ParseTreeNode::getRow() const -{ - if(!parent) - return -1; - - return parent->children.indexOf(const_cast<ParseTreeNode*>(this)); -} - -ParseTreeNode* ParseTreeNode::getParent() const -{ - return parent; -} - -ParseTreeNode::~ParseTreeNode() -{ - for(int i = 0; i < children.count(); i++) - delete children[i]; -} |