void NodeInstanceView::removeInstanceNodeRelationship(const ModelNode &node) { Q_ASSERT(m_nodeInstanceHash.contains(node)); NodeInstance instance = instanceForModelNode(node); m_nodeInstanceHash.remove(node); instance.makeInvalid(); }
void NodeInstanceView::insertInstanceRelationships(const NodeInstance &instance) { Q_ASSERT(instance.instanceId() >=0); if (m_nodeInstanceHash.contains(instance.modelNode())) return; m_nodeInstanceHash.insert(instance.modelNode(), instance); }
void NodeInstanceView::nodeSourceChanged(const ModelNode &node, const QString & newNodeSource) { if (hasInstanceForModelNode(node)) { NodeInstance instance = instanceForModelNode(node); ChangeNodeSourceCommand changeNodeSourceCommand(instance.instanceId(), newNodeSource); nodeInstanceServer()->changeNodeSource(changeNodeSourceCommand); } }
void NodeInstanceView::currentStateChanged(const ModelNode &node) { NodeInstance newStateInstance = instanceForModelNode(node); if (newStateInstance.isValid() && node.metaInfo().isSubclassOf("QtQuick.State", 1, 0)) nodeInstanceView()->activateState(newStateInstance); else nodeInstanceView()->activateBaseState(); }
void NodeInstanceView::updateChildren(const NodeAbstractProperty &newPropertyParent) { QVector<ModelNode> childNodeVector = newPropertyParent.directSubNodes().toVector(); qint32 parentInstanceId = newPropertyParent.parentModelNode().internalId(); foreach (const ModelNode &childNode, childNodeVector) { qint32 instanceId = childNode.internalId(); if (hasInstanceForId(instanceId)) { NodeInstance instance = instanceForId(instanceId); if (instance.directUpdates()) instance.setParentId(parentInstanceId); } }
void NodeInstanceManager::Save(QSettings& settings) { int regIdx = 0; for (int i = 0; i < mInstances.count(); ++i) { NodeInstance* nodeInstance = mInstances[i]; // Check that the instance is valid if ( !nodeInstance->IsValid() ) continue; NodeInstanceSettings instanceSettings; instanceSettings.scriptPath = nodeInstance->GetScriptPath(); instanceSettings.port = nodeInstance->GetPort(); instanceSettings.vars = nodeInstance->GetVars(); instanceSettings.debug = nodeInstance->IsDebugEnabled(); QString instanceKey = QString("instance%1").arg(regIdx); QVariant varInstanceSettings = QVariant::fromValue(instanceSettings); settings.setValue( instanceKey, varInstanceSettings ); regIdx++; } // Clear the next instance registry setting to make sure not to load invalid data. QString instanceKeyToRemove = QString("instance%1").arg(regIdx); settings.remove( instanceKeyToRemove ); }
void NodeInstanceView::auxiliaryDataChanged(const ModelNode &node, const PropertyName &name, const QVariant &data) { if ((node.isRootNode() && (name == "width" || name == "height")) || name.endsWith(PropertyName("@NodeInstance"))) { if (hasInstanceForModelNode(node)) { NodeInstance instance = instanceForModelNode(node); QVariant value = data; if (value.isValid()) { PropertyValueContainer container(instance.instanceId(), name, value, TypeName()); ChangeAuxiliaryCommand changeAuxiliaryCommand(QVector<PropertyValueContainer>() << container); nodeInstanceServer()->changeAuxiliaryValues(changeAuxiliaryCommand); } else { if (node.hasVariantProperty(name)) { PropertyValueContainer container(instance.instanceId(), name, node.variantProperty(name).value(), TypeName()); ChangeValuesCommand changeValueCommand(QVector<PropertyValueContainer>() << container); nodeInstanceServer()->changePropertyValues(changeValueCommand); } else if (node.hasBindingProperty(name)) { PropertyBindingContainer container(instance.instanceId(), name, node.bindingProperty(name).expression(), TypeName()); ChangeBindingsCommand changeValueCommand(QVector<PropertyBindingContainer>() << container); nodeInstanceServer()->changePropertyBindings(changeValueCommand); } } } } }
void NodeInstanceManager::HostAlreadyRunningNodes() { QList<ProcessInfo> nodeProcesses = GetProcessInfoList("SELECT * FROM Win32_Process WHERE Name = 'node.exe'"); ProcessInfo pi; foreach( pi, nodeProcesses ) { // Get script name // We suppose the script is the last argument QString scriptName = pi.args.last(); // Check if we have everything needed if ( scriptName.isEmpty() || pi.workingDir.isEmpty() ) continue; QFileInfo scriptPath( QDir(pi.workingDir), scriptName ); if ( !scriptPath.exists() ) continue; // Check if the process matches any available slots bool hasSlot = false; for (int i = 0; i < mInstances.count(); ++i) { NodeInstance* nodeInstance = mInstances[i]; if ( QFileInfo(nodeInstance->GetScriptPath()).canonicalFilePath() == scriptPath.canonicalFilePath() ) { // TODO: Reuse slot hasSlot = true; nodeInstance->EnableExternalProcess( pi.pid ); break; } } if ( !hasSlot ) { // Create new slot NodeInstance* newInstance = CreateInstance(); newInstance->SetScriptPath( scriptPath.absoluteFilePath() ); newInstance->EnableExternalProcess( pi.pid ); // get port newInstance->SetPort( pi.env["PORT"].toInt() ); } }
void ObjectNodeInstance::reparent(const NodeInstance &oldParentInstance, const QString &oldParentProperty, const NodeInstance &newParentInstance, const QString &newParentProperty) { if (oldParentInstance.isValid()) { if (oldParentInstance.isQmlGraphicsItem() && isChildrenProperty(oldParentProperty)) specialRemoveParentForQmlGraphicsItemChildren(object()); else removeFromOldProperty(object(), oldParentInstance.internalObject(), oldParentProperty); } if (newParentInstance.isValid()) { if (newParentInstance.isQmlGraphicsItem() && isChildrenProperty(newParentProperty)) specialSetParentForQmlGraphicsItemChildren(object(), qobject_cast<QDeclarativeItem*>(newParentInstance.internalObject())); else addToNewProperty(object(), newParentInstance.internalObject(), newParentProperty); } refreshBindings(context()->engine()->rootContext()); }
bool operator ==(const NodeInstance &first, const NodeInstance &second) { return first.instanceId() >= 0 && first.instanceId() == second.instanceId(); }
QRectF contentRect(const NodeInstance &nodeInstance) { QRectF contentRect(nodeInstance.position(), nodeInstance.size()); return nodeInstance.contentTransform().mapRect(contentRect); }