void PipelineTreeView::showRenderTarget(const QModelIndex& index) { if (index.isValid()) { QXmlTreeNode* renderTarget = static_cast<QXmlTreeNode*>(index.internalPointer()); if (renderTarget->property("Type").toInt() == QPipelineNode::PIPELINERENDERTARGETNODE) { RenderTargetView* view = new RenderTargetView(this, Qt::Window); view->setRenderTarget(renderTarget->xmlNode(), m_pipelineID); view->setVisible(true); connect(view, SIGNAL(closed(RenderTargetView*)), this, SLOT(removeView(RenderTargetView*))); m_renderTargetViews.push_back(view); }
void QXmlTreeNode::removeChild(int i) { // Is index valid? if (child(i)) { QXmlTreeNode* item = m_childItems.takeAt(i); m_xmlNode.removeChild(item->xmlNode()); delete item; // Ensure valid row index of items for (int j=i; j<m_childItems.size(); ++j) m_childItems.at(j)->m_row = j; } }
QVariant ExtraTreeModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); QXmlTreeNode *item = static_cast<QXmlTreeNode*>(index.internalPointer()); switch(role) { case Qt::ToolTipRole: return item->property("__ToolTip"); case Qt::StatusTipRole: return item->property("__StatusTip"); case Qt::DisplayRole: case Qt::EditRole: { QGameEntityNode* node = qobject_cast<QGameEntityNode*>(item); if( node ) { switch( index.column() ) { case 0: return node->name(); case 1: return item->xmlNode().tagName(); case 2: return node->ID(); } } else return item->xmlNode().tagName(); } case Qt::CheckStateRole: if( index.column() == 0 && item->property("Enabled").isValid() ) return item->property("Enabled").toBool() ? Qt::Checked : Qt::Unchecked; default: return QVariant(); }; }
void QXmlTreeView::pasteNode() { QXmlTreeModel* treeModel = static_cast<QXmlTreeModel*>(model()); if( !treeModel ) return; QXmlTreeNode* xmlNode = treeModel->rootNode(); if (currentIndex().isValid()) xmlNode = static_cast<QXmlTreeNode*>(currentIndex().internalPointer()); const QMimeData* mime = QApplication::clipboard()->mimeData();; if (mime->hasFormat("text/plain")) { QDomDocument dom("Paste"); if (dom.setContent(mime->data("text/plain"))) treeModel->undoStack()->push(createAddUndoCommand(dom.documentElement(), xmlNode->xmlNode(), treeModel, tr("Paste nodes"))); } }
void QXmlTreeView::copyCurrentNode() { QXmlTreeModel* treeModel = static_cast<QXmlTreeModel*>(model()); if (!treeModel) return; QString data; QTextStream stream(&data); QDomDocument document("Paste"); QXmlTreeNode* xmlNode = treeModel->rootNode(); if (currentIndex().isValid()) xmlNode = static_cast<QXmlTreeNode*>(currentIndex().internalPointer()); document.appendChild(xmlNode->xmlNode().cloneNode()); document.save(stream,4); QClipboard* clipboard = QApplication::clipboard(); QMimeData* mime = new QMimeData(); mime->setData("text/plain", data.toUtf8()); clipboard->setMimeData(mime); }
AddNodeUndoCommand(const QDomElement& node, const QDomElement& parent, AttachmentTreeModel* model, const QString& text) : QAddXmlNodeUndoCommand(node, parent, model, text) { QXmlTreeNode* sceneNode = model->sceneNodeParent(); m_sceneXmlNode = sceneNode->xmlNode(); m_model = static_cast<QXmlTreeModel*>(sceneNode->model()); }
RemoveNodeUndoCommand(QXmlTreeNode* node, const QString& text) : QRemoveXmlNodeUndoCommand(node, text) { QXmlTreeNode* sceneNode = qobject_cast<AttachmentTreeModel*>(node->model())->sceneNodeParent(); m_sceneXmlNode = sceneNode->xmlNode(); m_model = static_cast<QXmlTreeModel*>(sceneNode->model()); }