void TabViewDesignerAction::addNewTab() { QString tabName = AddTabToTabViewDialog::create(QLatin1String("Tab"), Core::ICore::mainWindow()); if (!tabName.isEmpty()) { QString directoryPath = QFileInfo(selectionContext().view()->model()->fileUrl().toLocalFile()).absolutePath(); QString newFilePath = directoryPath +QLatin1String("/") + tabName + QLatin1String(".qml"); if (QFileInfo(newFilePath).exists()) { QMessageBox::warning(Core::ICore::mainWindow(), tr("Naming Error"), tr("Component already exists.")); } else { bool fileCreated = createFile(newFilePath); if (fileCreated) { addNewFileToVersionControl(directoryPath, newFilePath); ModelNode tabViewModelNode = findTabViewModelNode(selectionContext().currentSingleSelectedNode()); PropertyListType propertyList; propertyList.append(QPair<PropertyName, QVariant>("source", QString(tabName + QLatin1String(".qml")))); propertyList.append(QPair<PropertyName, QVariant>("title", tabName)); ModelNode newTabModelNode = selectionContext().view()->createModelNode("QtQuick.Controls.Tab", tabViewModelNode.majorVersion(), tabViewModelNode.minorVersion(), propertyList); newTabModelNode.setId(newTabModelNode.view()->generateNewId(tabName)); tabViewModelNode.defaultNodeAbstractProperty().reparentHere(newTabModelNode); } } } }
void TestPropertyEditor::createSubNode() { std::auto_ptr<QWidget> widget(new QWidget()); QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView); QVERIFY(view.data()); model->attachView(view.data()); setupPropertyEditor(widget.get(), model.data()); QVERIFY(view->rootModelNode().isValid()); selectThrough(view->rootModelNode()); ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6); view->rootModelNode().nodeListProperty("data").reparentHere(childNode); QVERIFY(childNode.isValid()); QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode)); QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode()); QCOMPARE(childNode.type(), QString("Qt/Rectangle")); selectThrough(childNode); QVERIFY(childNode.id().isEmpty()); childNode.setId("Blah"); QCOMPARE(childNode.id(), QString("Blah")); QCOMPARE(childNode.id(), QString("Blah")); }
void TestPropertyEditor::createRect() { try { std::auto_ptr<QWidget> widget(new QWidget()); QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}")); QVERIFY(model.data()); QScopedPointer<TestView> view(new TestView); QVERIFY(view.data()); model->attachView(view.data()); setupPropertyEditor(widget.get(), model.data()); QVERIFY(view->rootModelNode().isValid()); //selectThrough(view->rootModelNode()); ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6); view->rootModelNode().nodeListProperty("data").reparentHere(childNode); QVERIFY(childNode.isValid()); QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode)); QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode()); QCOMPARE(childNode.type(), QString("Qt/Rectangle")); QVERIFY(childNode.id().isEmpty()); childNode.setId("Rect01"); QCOMPARE(childNode.id(), QString("Rect01")); childNode.variantProperty("x") = 100; QCOMPARE(QmlObjectNode(childNode).instanceValue("x").toInt(), 100); childNode.variantProperty("y") = 100; QCOMPARE(QmlObjectNode(childNode).instanceValue("y").toInt(), 100); childNode.variantProperty("width") = 100; QCOMPARE(QmlObjectNode(childNode).instanceValue("width").toInt(), 100); childNode.variantProperty("height") = 100; QCOMPARE(QmlObjectNode(childNode).instanceValue("height").toInt(), 100); selectThrough(childNode); QCOMPARE(childNode.propertyNames().count(), 4); QCOMPARE(childNode.variantProperty("scale").value(), QVariant()); } catch (Exception &) { QFAIL("Exception thrown"); } }
void NavigatorTreeModel::handleChangedItem(QStandardItem *item) { if (m_blockItemChangedSignal) return; uint nodeHash = item->data(Qt::UserRole).toUInt(); Q_ASSERT(nodeHash && containsNodeHash(nodeHash)); ModelNode node = nodeForHash(nodeHash); ItemRow itemRow = itemRowForNode(node); if (item == itemRow.idItem) { try { node.setId(item->text()); } catch (InvalidIdException &e) { QMessageBox::warning(0, tr("Invalid Id"), e.description()); item->setText(node.id()); } } else if (item == itemRow.visibilityItem) { bool invisible = (item->checkState() == Qt::Unchecked); node.setAuxiliaryData("invisible", invisible); propagateInvisible(node,isNodeInvisible(node)); } }
static void syncId(ModelNode &outputNode, const ModelNode &inputNode, const QHash<QString, QString> &idRenamingHash) { if (!inputNode.id().isEmpty()) { outputNode.setId(idRenamingHash.value(inputNode.id())); } }