diff options
author | Michael Brasser <michael.brasser@nokia.com> | 2009-05-06 00:37:20 (GMT) |
---|---|---|
committer | Michael Brasser <michael.brasser@nokia.com> | 2009-05-06 00:37:20 (GMT) |
commit | dd21756ec0b9c6d4f2c9f00df131603a1daf3147 (patch) | |
tree | ecc90c266ba426b7cf54033841a1fe9819029b30 | |
parent | 6df1cbd3890ecbe8d487d15e367eabace43f255d (diff) | |
parent | b291ab1f5ebb496d7eb7aae04c3f06d57a4f547d (diff) | |
download | Qt-dd21756ec0b9c6d4f2c9f00df131603a1daf3147.zip Qt-dd21756ec0b9c6d4f2c9f00df131603a1daf3147.tar.gz Qt-dd21756ec0b9c6d4f2c9f00df131603a1daf3147.tar.bz2 |
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
-rw-r--r-- | src/declarative/qml/qmlcompiler.cpp | 4 | ||||
-rw-r--r-- | src/declarative/qml/qmlscriptparser.cpp | 100 |
2 files changed, 49 insertions, 55 deletions
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp index d4003ab..f0cf4cc 100644 --- a/src/declarative/qml/qmlcompiler.cpp +++ b/src/declarative/qml/qmlcompiler.cpp @@ -1256,7 +1256,7 @@ bool QmlCompiler::compileDynamicMeta(QmlParser::Object *obj) break; } - builder.addSignal("qml__" + QByteArray::number(ii) + "()"); + builder.addSignal(p.name + "Changed()"); builder.addProperty(p.name, type, ii); } @@ -1300,7 +1300,7 @@ bool QmlCompiler::compileDynamicMeta(QmlParser::Object *obj) assign.type = QmlInstruction::AssignSignal; assign.line = obj->line; assign.assignSignal.signal = - output->indexForByteArray("onQml__" + QByteArray::number(ii)); + output->indexForByteArray(p.name + "Changed()"); assign.assignSignal.value = output->indexForString(p.onValueChanged); output->bytecode << assign; diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp index 22ff4a5..aed17d6 100644 --- a/src/declarative/qml/qmlscriptparser.cpp +++ b/src/declarative/qml/qmlscriptparser.cpp @@ -200,72 +200,73 @@ Object *ProcessAST::defineObjectBinding_helper(int line, { bool isType = !objectType.isEmpty() && objectType.at(0).isUpper() && !objectType.contains(QLatin1Char('.')); - if (!isType) { - QmlError error; - error.setDescription("Expected type name"); - error.setLine(typeLocation.startLine); - error.setColumn(typeLocation.startColumn); - _parser->_errors << error; - return false; - } - int propertyCount = 0; for (; propertyName; propertyName = propertyName->next){ ++propertyCount; _stateStack.pushProperty(propertyName->name->asString(), propertyName->identifierToken.startLine); } - // Class - const int typeId = _parser->findOrCreateTypeId(objectType); + if (!isType) { - Object *obj = new Object; - obj->type = typeId; - _scope.append(objectType); - obj->typeName = qualifiedNameId().toLatin1(); - _scope.removeLast(); - obj->line = line; + if(propertyCount || !currentObject()) { + QmlError error; + error.setDescription("Expected type name"); + error.setLine(typeLocation.startLine); + error.setColumn(typeLocation.startColumn); + _parser->_errors << error; + return 0; + } - if (propertyCount) { - Property *prop = currentProperty(); - Value *v = new Value; - v->object = obj; - v->line = line; - prop->addValue(v); + _stateStack.pushProperty(objectType, line); + accept(initializer); + _stateStack.pop(); - while (propertyCount--) - _stateStack.pop(); + return 0; } else { - if (! _parser->tree()) { - _parser->setTree(obj); + // Class + const int typeId = _parser->findOrCreateTypeId(objectType); - if (!_parser->scriptFile().isEmpty()) { - _stateStack.pushObject(obj); - Object *scriptObject= defineObjectBinding(line, 0, QLatin1String("Script"), AST::SourceLocation()); - _stateStack.pushObject(scriptObject); - defineProperty(QLatin1String("src"), line, _parser->scriptFile()); - _stateStack.pop(); // scriptObject - _stateStack.pop(); // object - } + Object *obj = new Object; + obj->type = typeId; + _scope.append(objectType); + obj->typeName = qualifiedNameId().toLatin1(); + _scope.removeLast(); + obj->line = line; - } else { - const State state = _stateStack.top(); + if (propertyCount) { + Property *prop = currentProperty(); Value *v = new Value; v->object = obj; v->line = line; - if (state.property) - state.property->addValue(v); - else - state.object->getDefaultProperty()->addValue(v); + prop->addValue(v); + + while (propertyCount--) + _stateStack.pop(); + + } else { + + if (! _parser->tree()) { + _parser->setTree(obj); + } else { + const State state = _stateStack.top(); + Value *v = new Value; + v->object = obj; + v->line = line; + if (state.property) + state.property->addValue(v); + else + state.object->getDefaultProperty()->addValue(v); + } } - } - _stateStack.pushObject(obj); - accept(initializer); - _stateStack.pop(); + _stateStack.pushObject(obj); + accept(initializer); + _stateStack.pop(); - return obj; + return obj; + } } Object *ProcessAST::defineObjectBinding(int line, @@ -334,12 +335,6 @@ bool ProcessAST::visit(AST::UiImport *node) return false; } -// UiObjectMember: T_PUBLIC T_DEFAULT UiMemberType T_IDENTIFIER T_COLON Expression -// UiObjectMember: T_PUBLIC T_DEFAULT UiMemberType T_IDENTIFIER -// UiObjectMember: T_PUBLIC UiMemberType T_IDENTIFIER T_COLON Expression -// UiObjectMember: T_PUBLIC UiMemberType T_IDENTIFIER -// -// UiMemberType: "property" | "signal" bool ProcessAST::visit(AST::UiPublicMember *node) { if(node->type == AST::UiPublicMember::Signal) { @@ -662,7 +657,6 @@ void QmlScriptParser::clear() _nameSpacePaths.clear(); _typeNames.clear(); _errors.clear(); - _scriptFile.clear(); } int QmlScriptParser::findOrCreateTypeId(const QString &name) |