The model now supports dynamic node properties. e.g.:
Item {
property Item item: Item {
}
}
In this case Property::dynamicpropertyType() is Item and
Property::isDynamic() is true.
To create such a property I added:
NodeProperty::setDynamicTypeNameAndsetModelNode().
It is not supported to reparent nodes in an out of
dynamic node properties. The model throws an exception in this case.
This is currently not required on the application level and not
supported by the rewriter.
Change-Id: Ie05325663c481d8583dc45bee38b559c190fbb30
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
... and remove all instances that became redundant now.
this excludes everything that comes from outside qtc, or looks like it
could "leave" it.
Change-Id: Idc8baad17cd1ffdc5e160ec48ea3292d633a2562
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Implicit components like delegates have to be marked by the rewriter.
Change-Id: I5b9c3e14f26c817e058f2db1e955333d43208719
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
- it does not change anything nor behavior nor speed
Change-Id: I9c2cc58eb07a9a432c3fe4fe45daca78e6f29cc0
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
The order of nodes from directSubModelNodes() was not defined,
since we collect the nodes from different properties ("default/data"
and "gradient").
If we use the interface of NodeListProperty and explicitly
use the default property, then the order is defined.
Change-Id: I7982fa7749d1795ad39a7b76792ad794e49fa9ea
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
File seems to be useless and is not used at all.
Change-Id: I7b6d7f8804cdf07c6027abb9822d99bdf5ad9dbf
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Added test cases and modified the test suite in order to make it
data-driven. Each sample file can now declare the number of
expected messages. If there is no declaration, zero is assumed.
Change-Id: Ife3daa10a258f51ea8f896156f6f6af783406b84
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
This test is covering the standard issues we had with the
code model regarding QtQuick Controls (2).
We check if ApplicationWindow is derived from QtQuick.Window
and if Button is derived from QtQuick.Item.
Change-Id: I1a2ed894daeb06743fb950bf629a8dcf2b9a78e6
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
105 passing, 1 failing, one test seems flaky
I skip many nodeinstance/puppet related tests,
because the tests/test framework cannot deal with the qml2puppet/emulation
layer being out of process.
Change-Id: I5b254c7e6e944b8fbd8ba490c1e8bb43d0eb38c3
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
Let's not reformat readonly qualifiers away. They are likely there for a
reason.
Task-number: QTCREATORBUG-15745
Change-Id: Iaab7a8edb47fccd0cf36759750500a93be45bbc2
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
The test accesses indirectly the static instance of the
QmlJS::ModelManagerInterface which is not instantiated at all and
leads to a crash of the test.
Change-Id: I2b047e1ee8d679dd3764ca5c36709b599161a60c
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
There is no reason to undefine QT_RESTRICTED_CAST_FROM_ASCII (anymore).
Change-Id: Iabeacc8a89d662e78986e2dc275c2096a9c9e519
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
It now use the 'qml' feature instead of the deprecated 'script'
Change-Id: Ie2e4148e586503be11d233b7f544cf4f3c040bdb
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
This patch allows a plugin to insert custom imports. These imports are
used by QtC for syntax highlighting and code completion. This way a
plugin can register types and objects that are available only at
runtime.
This is an example of an imports function implementation:
QList<Import> MyPlugin::imports(ValueOwner *valueOwner, const Document
*context) const
{
// context is needed to know from which project is the opened document
// in this example we don't care about multiple projects
Import import;
import.object = new QmlJS::ObjectValue(valueOwner, "<defaults>");
import.valid = true;
const ComponentVersion version(1, 0);
import.info = ImportInfo::moduleImport("MyPlugin", version,
QString());
auto myType = valueOwner->newObject(nullptr)
myType->setMember("myProperty", valueOwner->valueOwner->intValue());
// add more properties & methods/signals to myType
import.object->setMember("MyType", myType);
// in this example we return only one, but you care return more than
one
return QList<Import>(import);
}
Change-Id: I395c273c7b15a9e4ed5a89a81d70ff92db2b7c0c
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Seems it wasn't actually required at all
Change-Id: I4c622057b7fd85a64f99368eb07b502aee524955
Task-number: QTCREATORBUG-14217
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Mostly done using the following ruby script:
Dir.glob('**/*.cpp').each { |file|
next if file =~ %r{src/shared/qbs|/qmljs/}
s = File.read(file)
s.scan(/^using namespace (.*);$/) {
ns = $1
t = s.gsub(/^(.*)\b#{ns}::((?!Const)[A-Z])/) { |m|
before = $1
char = $2
if before =~ /"|\/\/|\\|using|SIGNAL|SLOT|Q_/
m
else
before + char
end
}
if t != s
puts file
File.open(file, 'w').write(t)
end
}
}
Change-Id: I492792bb9e5655c55795e938031efc557c9a462f
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>