void PropertyEditorView::removeAliasExport(const QString &name) { if (name.isNull()) return; if (locked()) return; if (!m_selectedNode.isValid()) return; RewriterTransaction transaction = beginRewriterTransaction(QByteArrayLiteral("PropertyEditorView::exportPopertyAsAlias")); try { const QString id = m_selectedNode.validId(); for (const BindingProperty &property : rootModelNode().bindingProperties()) if (property.expression() == (id + "." + name)) { rootModelNode().removeProperty(property.name()); break; } transaction.commit(); //committing in the try block } catch (const RewritingException &e) { e.showException(); } }
void PropertyEditorView::exportPopertyAsAlias(const QString &name) { if (name.isNull()) return; if (locked()) return; if (!m_selectedNode.isValid()) return; RewriterTransaction transaction = beginRewriterTransaction(QByteArrayLiteral("PropertyEditorView::exportPopertyAsAlias")); try { const QString id = m_selectedNode.validId(); QString upperCasePropertyName = name; upperCasePropertyName.replace(0, 1, upperCasePropertyName.at(0).toUpper()); QString aliasName = id + upperCasePropertyName; aliasName.replace(".", ""); //remove all dots PropertyName propertyName = aliasName.toUtf8(); if (rootModelNode().hasProperty(propertyName)) { Core::AsynchronousMessageBox::warning(tr("Cannot Export Property as Alias"), tr("Property %1 does already exist for root item.").arg(aliasName)); return; } rootModelNode().bindingProperty(propertyName).setDynamicTypeNameAndExpression("alias", id + "." + name); transaction.commit(); //committing in the try block } catch (const RewritingException &e) { e.showException(); } }
void FormEditorView::rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) { QmlItemNode oldItemNode(rootModelNode()); if (oldItemNode.isValid() && m_scene->hasItemForQmlItemNode(oldItemNode)) { FormEditorItem *item = m_scene->itemForQmlItemNode(oldItemNode); QList<QmlItemNode> nodeList; nodeList.append(oldItemNode.allSubModelNodes()); nodeList.append(oldItemNode); QList<FormEditorItem*> removedItemList; removedItemList.append(scene()->itemsForQmlItemNodes(nodeList)); m_currentTool->itemsAboutToRemoved(removedItemList); delete item; } QmlModelView::rootNodeTypeChanged(type, majorVersion, minorVersion); QmlItemNode newItemNode(rootModelNode()); if (newItemNode.isValid()) //only setup QmlItems setupFormEditorItemTree(newItemNode); m_currentTool->setItems(scene()->itemsForQmlItemNodes(selectedQmlItemNodes())); }
QString DesignDocument::simplfiedDisplayName() const { if (rootModelNode().id().isEmpty()) return rootModelNode().id(); else return rootModelNode().simplifiedTypeName(); QStringList list = displayName().split(QLatin1Char('/')); return list.last(); }
void FormEditorView::modelAttached(Model *model) { Q_ASSERT(model); AbstractView::modelAttached(model); Q_ASSERT(m_scene->formLayerItem()); if (QmlItemNode::isValidQmlItemNode(rootModelNode())) setupFormEditorItemTree(rootModelNode()); m_formEditorWidget->updateActions(); }
QString DesignDocumentView::toText() const { QScopedPointer<Model> outputModel(Model::create("QtQuick.Rectangle", 1, 0, model())); outputModel->setFileUrl(model()->fileUrl()); QPlainTextEdit textEdit; QString imports; foreach (const Import &import, model()->imports()) { if (import.isFileImport()) imports += QStringLiteral("import ") + QStringLiteral("\"") + import.file() + QStringLiteral("\"")+ QStringLiteral(";\n"); else imports += QStringLiteral("import ") + import.url() + QStringLiteral(" ") + import.version() + QStringLiteral(";\n"); } textEdit.setPlainText(imports + QStringLiteral("Item {\n}\n")); NotIndentingTextEditModifier modifier(&textEdit); QScopedPointer<RewriterView> rewriterView(new RewriterView(RewriterView::Amend, nullptr)); rewriterView->setCheckSemanticErrors(false); rewriterView->setTextModifier(&modifier); outputModel->setRewriterView(rewriterView.data()); ModelMerger merger(rewriterView.data()); merger.replaceModel(rootModelNode()); ModelNode rewriterNode(rewriterView->rootModelNode()); rewriterView->writeAuxiliaryData(); return rewriterView->extractText({rewriterNode}).value(rewriterNode) + rewriterView->getRawAuxiliaryData(); //get the text of the root item without imports }
void ComponentView::appendWholeDocumentAsComponent() { QStandardItem *item = new QStandardItem(tr("whole document")); item->setData(QVariant::fromValue(rootModelNode()), ModelNodeRole); item->setEditable(false); m_standardItemModel->appendRow(item); }
void StatesEditorView::addState() { // can happen when root node is e.g. a ListModel if (!QmlItemNode::isValidQmlItemNode(rootModelNode())) return; QStringList modelStateNames = rootStateGroup().names(); QString newStateName; int index = 1; while (true) { newStateName = QString("State%1").arg(index++); if (!modelStateNames.contains(newStateName)) break; } try { if ((rootStateGroup().allStates().count() < 1) && //QtQuick import might be missing (!model()->hasImport(Import::createLibraryImport("QtQuick", "1.0"), true, true))) model()->changeImports(QList<Import>() << Import::createLibraryImport("QtQuick", "1.0"), QList<Import>()); ModelNode newState = rootStateGroup().addState(newStateName); setCurrentState(newState); } catch (RewritingException &e) { QMessageBox::warning(0, "Error", e.description()); } }
int AbstractView::majorQtQuickVersion() const { int majorVersionFromImport = getMajorVersionFromImport(model()); if (majorVersionFromImport >= 0) return majorVersionFromImport; return getMajorVersionFromNode(rootModelNode()); }
void ComponentView::modelAttached(Model *model) { if (AbstractView::model() == model) return; AbstractView::modelAttached(model); Q_ASSERT(model->masterModel()); appendWholeDocumentAsComponent(); searchForComponentAndAddToList(rootModelNode()); }
void DesignDocument::changeToMaster() { if (QmlDesignerPlugin::instance()->currentDesignDocument() != this) return; if (m_inFileComponentModel) changeToDocumentModel(); QmlDesignerPlugin::instance()->viewManager().pushFileOnCrumbleBar(fileName()); QmlDesignerPlugin::instance()->viewManager().setComponentNode(rootModelNode()); }
void ComponentView::modelAttached(Model *model) { if (AbstractView::model() == model) return; bool block = m_componentAction->blockSignals(true); m_standardItemModel->clear(); AbstractView::modelAttached(model); searchForComponentAndAddToList(rootModelNode()); m_componentAction->blockSignals(block); }
void NodeInstanceView::modelAttached(Model *model) { AbstractView::modelAttached(model); m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus, m_currentKit); m_lastCrashTime.start(); connect(m_nodeInstanceServer.data(), SIGNAL(processCrashed()), this, SLOT(handleChrash())); if (!isSkippedRootNode(rootModelNode())) nodeInstanceServer()->createScene(createCreateSceneCommand()); ModelNode stateNode = currentStateNode(); if (stateNode.isValid() && stateNode.metaInfo().isSubclassOf("QtQuick.State", 1, 0)) { NodeInstance newStateInstance = instanceForModelNode(stateNode); activateState(newStateInstance); } }
void NodeInstanceView::restartProcess() { if (m_restartProcessTimerId) killTimer(m_restartProcessTimerId); if (model()) { delete nodeInstanceServer(); m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus, m_currentKit); connect(m_nodeInstanceServer.data(), SIGNAL(processCrashed()), this, SLOT(handleChrash())); if (!isSkippedRootNode(rootModelNode())) nodeInstanceServer()->createScene(createCreateSceneCommand()); ModelNode stateNode = currentStateNode(); if (stateNode.isValid() && stateNode.metaInfo().isSubclassOf("QtQuick.State", 1, 0)) { NodeInstance newStateInstance = instanceForModelNode(stateNode); activateState(newStateInstance); } } m_restartProcessTimerId = 0; }
QmlObjectNode QmlModelView::rootQmlObjectNode() const { return QmlObjectNode(rootModelNode()); }
QmlModelStateGroup QmlModelView::rootStateGroup() const { return QmlModelStateGroup(rootModelNode()); }
void ViewLogger::rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) { m_output << time() << indent("rootNodeTypeChanged:") << rootModelNode() << type << majorVersion << minorVersion << endl; }
void NavigatorView::modelAboutToBeDetached(Model *model) { m_treeModel->removeSubTree(rootModelNode()); m_treeModel->clearView(); AbstractView::modelAboutToBeDetached(model); }
QmlModelStateGroup StatesEditorView::rootStateGroup() const { return QmlModelStateGroup(rootModelNode()); }
void StatesEditorView::checkForApplicationWindow() { if (m_statesEditorWidget) m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Controls.ApplicationWindow", -1, -1)); }
void TestView::rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) { QmlDesigner::QmlModelView::rootNodeTypeChanged(type, majorVersion, minorVersion); m_methodCalls += MethodCall("rootNodeTypeChanged", QStringList() << rootModelNode().id() << type << QString::number(majorVersion) << QString::number(minorVersion)); }