forked from len0rd/rockbox
Theme Editor: Made text and comments editable from a treeview
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26453 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
5943f4c5e2
commit
279969618d
3 changed files with 51 additions and 32 deletions
|
@ -142,8 +142,14 @@ Qt::ItemFlags ParseTreeModel::flags(const QModelIndex &index) const
|
|||
|
||||
ParseTreeNode* element = static_cast<ParseTreeNode*>
|
||||
(index.internalPointer());
|
||||
if(element->isParam() && index.column() == valueColumn)
|
||||
|
||||
if((element->isParam()
|
||||
|| element->getElement()->type == TEXT
|
||||
|| element->getElement()->type == COMMENT)
|
||||
&& index.column() == valueColumn)
|
||||
{
|
||||
retval |= Qt::ItemIsEditable;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
@ -157,15 +163,14 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value,
|
|||
if(index.column() != valueColumn)
|
||||
return false;
|
||||
|
||||
ParseTreeNode* element = static_cast<ParseTreeNode*>
|
||||
ParseTreeNode* node = static_cast<ParseTreeNode*>
|
||||
(index.internalPointer());
|
||||
|
||||
if(!element->isParam())
|
||||
return false;
|
||||
if(node->isParam())
|
||||
{
|
||||
struct skin_tag_parameter* param = node->getParam();
|
||||
|
||||
struct skin_tag_parameter* param = element->getParam();
|
||||
|
||||
/* Now that we've established that we do, in fact, have a parameter, we'll
|
||||
/* 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)))
|
||||
|
@ -175,7 +180,8 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value,
|
|||
else
|
||||
return false;
|
||||
}
|
||||
else if(tolower(param->type_code) == 's' || tolower(param->type_code) == 'f')
|
||||
else if(tolower(param->type_code) == 's'
|
||||
|| tolower(param->type_code) == 'f')
|
||||
{
|
||||
if(param->type == skin_tag_parameter::STRING)
|
||||
free(param->data.text);
|
||||
|
@ -195,6 +201,17 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value,
|
|||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
struct skin_element* element = node->getElement();
|
||||
|
||||
if(element->type != COMMENT && element->type != TEXT)
|
||||
return false;
|
||||
|
||||
free(element->text);
|
||||
element->text = strdup(value.toString().trimmed().toAscii());
|
||||
}
|
||||
|
||||
emit dataChanged(index, index);
|
||||
return true;
|
||||
|
|
|
@ -172,6 +172,7 @@ QString ParseTreeNode::genCode() const
|
|||
case COMMENT:
|
||||
buffer.append(COMMENTSYM);
|
||||
buffer.append(element->text);
|
||||
buffer.append('\n');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -738,6 +738,7 @@ int skin_parse_comment(struct skin_element* element, char** document)
|
|||
*/
|
||||
for(length = 0; cursor[length] != '\n' && cursor[length] != '\0'; length++);
|
||||
|
||||
length--;
|
||||
element->type = COMMENT;
|
||||
element->line = skin_line;
|
||||
element->text = skin_alloc_string(length);
|
||||
|
@ -745,10 +746,10 @@ int skin_parse_comment(struct skin_element* element, char** document)
|
|||
memcpy((void*)(element->text), (void*)(cursor + 1), sizeof(char) * length);
|
||||
element->text[length] = '\0';
|
||||
|
||||
if(cursor[length] == '\n')
|
||||
if(cursor[length + 1] == '\n')
|
||||
skin_line++;
|
||||
|
||||
*document += (length + 1); /* Move cursor up past # and all text */
|
||||
*document += (length + 2); /* Move cursor up past # and all text */
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue