diff options
Diffstat (limited to 'utils/themeeditor/parsetreemodel.cpp')
-rw-r--r-- | utils/themeeditor/parsetreemodel.cpp | 73 |
1 files changed, 45 insertions, 28 deletions
diff --git a/utils/themeeditor/parsetreemodel.cpp b/utils/themeeditor/parsetreemodel.cpp index a0e3abb03b..24eebac8d6 100644 --- a/utils/themeeditor/parsetreemodel.cpp +++ b/utils/themeeditor/parsetreemodel.cpp | |||
@@ -142,8 +142,14 @@ Qt::ItemFlags ParseTreeModel::flags(const QModelIndex &index) const | |||
142 | 142 | ||
143 | ParseTreeNode* element = static_cast<ParseTreeNode*> | 143 | ParseTreeNode* element = static_cast<ParseTreeNode*> |
144 | (index.internalPointer()); | 144 | (index.internalPointer()); |
145 | if(element->isParam() && index.column() == valueColumn) | 145 | |
146 | if((element->isParam() | ||
147 | || element->getElement()->type == TEXT | ||
148 | || element->getElement()->type == COMMENT) | ||
149 | && index.column() == valueColumn) | ||
150 | { | ||
146 | retval |= Qt::ItemIsEditable; | 151 | retval |= Qt::ItemIsEditable; |
152 | } | ||
147 | 153 | ||
148 | return retval; | 154 | return retval; |
149 | } | 155 | } |
@@ -157,43 +163,54 @@ bool ParseTreeModel::setData(const QModelIndex &index, const QVariant &value, | |||
157 | if(index.column() != valueColumn) | 163 | if(index.column() != valueColumn) |
158 | return false; | 164 | return false; |
159 | 165 | ||
160 | ParseTreeNode* element = static_cast<ParseTreeNode*> | 166 | ParseTreeNode* node = static_cast<ParseTreeNode*> |
161 | (index.internalPointer()); | 167 | (index.internalPointer()); |
162 | 168 | ||
163 | if(!element->isParam()) | 169 | if(node->isParam()) |
164 | return false; | ||
165 | |||
166 | struct skin_tag_parameter* param = element->getParam(); | ||
167 | |||
168 | /* Now that we've established that we do, in fact, have a parameter, we'll | ||
169 | * set it to its new value if an acceptable one has been entered | ||
170 | */ | ||
171 | if(value.toString().trimmed() == QString(QChar(DEFAULTSYM))) | ||
172 | { | 170 | { |
173 | if(islower(param->type_code)) | 171 | struct skin_tag_parameter* param = node->getParam(); |
174 | param->type = skin_tag_parameter::DEFAULT; | 172 | |
173 | /* Now that we've established that we do, in fact, have a parameter, | ||
174 | * set it to its new value if an acceptable one has been entered | ||
175 | */ | ||
176 | if(value.toString().trimmed() == QString(QChar(DEFAULTSYM))) | ||
177 | { | ||
178 | if(islower(param->type_code)) | ||
179 | param->type = skin_tag_parameter::DEFAULT; | ||
180 | else | ||
181 | return false; | ||
182 | } | ||
183 | else if(tolower(param->type_code) == 's' | ||
184 | || tolower(param->type_code) == 'f') | ||
185 | { | ||
186 | if(param->type == skin_tag_parameter::STRING) | ||
187 | free(param->data.text); | ||
188 | |||
189 | param->type = skin_tag_parameter::STRING; | ||
190 | param->data.text = strdup(value.toString().trimmed().toAscii()); | ||
191 | } | ||
192 | else if(tolower(param->type_code) == 'i') | ||
193 | { | ||
194 | if(!value.canConvert(QVariant::Int)) | ||
195 | return false; | ||
196 | |||
197 | param->type = skin_tag_parameter::NUMERIC; | ||
198 | param->data.numeric = value.toInt(); | ||
199 | } | ||
175 | else | 200 | else |
201 | { | ||
176 | return false; | 202 | return false; |
203 | } | ||
177 | } | 204 | } |
178 | else if(tolower(param->type_code) == 's' || tolower(param->type_code) == 'f') | 205 | else |
179 | { | 206 | { |
180 | if(param->type == skin_tag_parameter::STRING) | 207 | struct skin_element* element = node->getElement(); |
181 | free(param->data.text); | ||
182 | 208 | ||
183 | param->type = skin_tag_parameter::STRING; | 209 | if(element->type != COMMENT && element->type != TEXT) |
184 | param->data.text = strdup(value.toString().trimmed().toAscii()); | ||
185 | } | ||
186 | else if(tolower(param->type_code) == 'i') | ||
187 | { | ||
188 | if(!value.canConvert(QVariant::Int)) | ||
189 | return false; | 210 | return false; |
190 | 211 | ||
191 | param->type = skin_tag_parameter::NUMERIC; | 212 | free(element->text); |
192 | param->data.numeric = value.toInt(); | 213 | element->text = strdup(value.toString().trimmed().toAscii()); |
193 | } | ||
194 | else | ||
195 | { | ||
196 | return false; | ||
197 | } | 214 | } |
198 | 215 | ||
199 | emit dataChanged(index, index); | 216 | emit dataChanged(index, index); |