summaryrefslogtreecommitdiffstats
path: root/utils/themeeditor/parsetreemodel.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-06-17 05:37:01 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-06-17 05:37:01 +0000
commitca564287ee3f48945d45c7d92be7a83452f53745 (patch)
treed6e502bb604f925240a742b3bac2c813a98c447b /utils/themeeditor/parsetreemodel.cpp
parentba07b2055c7eb8f2add96f55cb52b40b9ccb3d63 (diff)
downloadrockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.gz
rockbox-ca564287ee3f48945d45c7d92be7a83452f53745.tar.bz2
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/parsetreemodel.cpp')
-rw-r--r--utils/themeeditor/parsetreemodel.cpp266
1 files changed, 0 insertions, 266 deletions
diff --git a/utils/themeeditor/parsetreemodel.cpp b/utils/themeeditor/parsetreemodel.cpp
deleted file mode 100644
index a709ea762f..0000000000
--- a/utils/themeeditor/parsetreemodel.cpp
+++ /dev/null
@@ -1,266 +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 "parsetreemodel.h"
-#include "symbols.h"
-
-#include <cstdlib>
-
-#include <QObject>
-
-ParseTreeModel::ParseTreeModel(const char* document, QObject* parent):
- QAbstractItemModel(parent)
-{
- this->tree = skin_parse(document);
-
- if(tree)
- this->root = new ParseTreeNode(tree);
- else
- this->root = 0;
-}
-
-
-ParseTreeModel::~ParseTreeModel()
-{
- if(root)
- delete root;
- if(tree)
- skin_free_tree(tree);
-}
-
-QString ParseTreeModel::genCode()
-{
- if(root)
- return root->genCode();
- else
- return "";
-}
-
-QString ParseTreeModel::changeTree(const char *document)
-{
- struct skin_element* test = skin_parse(document);
-
- if(!test)
- {
- QString error = tr("Error on line ") +
- QString::number(skin_error_line())
- + tr(": ") + QString(skin_error_message());
- return error;
- }
-
- ParseTreeNode* temp = new ParseTreeNode(test);
- if(root && temp->genHash() == root->genHash())
- {
- delete temp;
- return tr("Document Parses Successfully");
- }
-
- if(root)
- {
- emit beginRemoveRows(QModelIndex(), 0, root->numChildren() - 1);
- delete root;
- emit endRemoveRows();
- }
-
- root = temp;
-
- emit beginInsertRows(QModelIndex(), 0, temp->numChildren() - 1);
- emit endInsertRows();
-
- return tr("Document Parses Successfully");
-
-}
-
-QModelIndex ParseTreeModel::index(int row, int column,
- const QModelIndex& parent) const
-{
- if(!hasIndex(row, column, parent))
- return QModelIndex();
-
- ParseTreeNode* foundParent;
-
- if(parent.isValid())
- foundParent = static_cast<ParseTreeNode*>(parent.internalPointer());
- else
- foundParent = root;
-
- if(row < foundParent->numChildren() && row >= 0)
- return createIndex(row, column, foundParent->child(row));
- else
- return QModelIndex();
-}
-
-QModelIndex ParseTreeModel::parent(const QModelIndex &child) const
-{
- if(!child.isValid())
- return QModelIndex();
-
- ParseTreeNode* foundParent = static_cast<ParseTreeNode*>
- (child.internalPointer())->getParent();
-
- if(foundParent == root)
- return QModelIndex();
-
- return createIndex(foundParent->getRow(), 0, foundParent);
-}
-
-int ParseTreeModel::rowCount(const QModelIndex &parent) const
-{
- if(!root)
- return 0;
-
- if(!parent.isValid())
- return root->numChildren();
-
- if(parent.column() != typeColumn)
- return 0;
-
- return static_cast<ParseTreeNode*>(parent.internalPointer())->numChildren();
-}
-
-int ParseTreeModel::columnCount(const QModelIndex &parent) const
-{
- if(parent.isValid())
- return numColumns;
- else
- return numColumns;
-}
-
-QVariant ParseTreeModel::data(const QModelIndex &index, int role) const
-{
- if(!index.isValid())
- return QVariant();
-
- if(role != Qt::DisplayRole)
- return QVariant();
-
- return static_cast<ParseTreeNode*>(index.internalPointer())->
- data(index.column());
-}
-
-QVariant ParseTreeModel::headerData(int col, Qt::Orientation orientation,
- int role) const
-{
- if(orientation != Qt::Horizontal)
- return QVariant();
-
- if(col >= numColumns)
- return QVariant();
-
- if(role != Qt::DisplayRole)
- return QVariant();
-
- switch(col)
- {
- case typeColumn:
- return QObject::tr("Type");
-
- case lineColumn:
- return QObject::tr("Line");
-
- case valueColumn:
- return QObject::tr("Value");
- }
-
- return QVariant();
-}
-
-Qt::ItemFlags ParseTreeModel::flags(const QModelIndex &index) const
-{
- Qt::ItemFlags retval = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
-
- ParseTreeNode* element = static_cast<ParseTreeNode*>
- (index.internalPointer());
-
- if((element->isParam()
- || element->getElement()->type == TEXT
- || element->getElement()->type == COMMENT)
- && index.column() == valueColumn)
- {
- retval |= Qt::ItemIsEditable;
- }
-
- return retval;
-}
-
-bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value,
- int role)
-{
- if(role != Qt::EditRole)
- return false;
-
- if(index.column() != valueColumn)
- return false;
-
- ParseTreeNode* node = static_cast<ParseTreeNode*>
- (index.internalPointer());
-
- if(node->isParam())
- {
- struct skin_tag_parameter* param = node->getParam();
-
- /* Now that we've established that we do, in fact, have a parameter,
- * set it to its new value if an acceptable one has been entered
- */
- if(value.toString().trimmed() == QString(QChar(DEFAULTSYM)))
- {
- if(islower(param->type_code))
- param->type = skin_tag_parameter::DEFAULT;
- else
- return false;
- }
- else if(tolower(param->type_code) == 's'
- || tolower(param->type_code) == 'f')
- {
- if(param->type == skin_tag_parameter::STRING)
- free(param->data.text);
-
- param->type = skin_tag_parameter::STRING;
- param->data.text = strdup(value.toString().trimmed().toAscii());
- }
- else if(tolower(param->type_code) == 'i')
- {
- if(!value.canConvert(QVariant::Int))
- return false;
-
- param->type = skin_tag_parameter::NUMERIC;
- param->data.numeric = value.toInt();
- }
- else
- {
- return false;
- }
- }
- else
- {
- struct skin_element* element = node->getElement();
-
- if(element->type != COMMENT && element->type != TEXT)
- return false;
-
- free(element->data);
- element->data = strdup(value.toString().trimmed().toAscii());
- }
-
- emit dataChanged(index, index);
- return true;
-}