void KisLayerBox::setCanvas(KoCanvasBase *canvas) { if (m_canvas) { m_canvas->disconnectCanvasObserver(this); m_nodeModel->setDummiesFacade(0, 0); disconnect(m_image, 0, this, 0); disconnect(m_nodeManager, 0, this, 0); disconnect(m_nodeModel, 0, m_nodeManager, 0); disconnect(m_nodeModel, SIGNAL(nodeActivated(KisNodeSP)), this, SLOT(updateUI())); } m_canvas = dynamic_cast<KisCanvas2*>(canvas); if (m_canvas) { m_image = m_canvas->view()->image(); m_nodeManager = m_canvas->view()->nodeManager(); KisDummiesFacadeBase *kritaDummiesFacade = dynamic_cast<KisDummiesFacadeBase*>(m_canvas->view()->document()->shapeController()); m_nodeModel->setDummiesFacade(kritaDummiesFacade, m_image); connect(m_image, SIGNAL(sigAboutToBeDeleted()), SLOT(notifyImageDeleted())); // cold start setCurrentNode(m_nodeManager->activeNode()); // Connection KisNodeManager -> KisLayerBox connect(m_nodeManager, SIGNAL(sigUiNeedChangeActiveNode(KisNodeSP)), this, SLOT(setCurrentNode(KisNodeSP))); // Connection KisLayerBox -> KisNodeManager // The order of these connections is important! See comment in the ctor connect(m_nodeModel, SIGNAL(nodeActivated(KisNodeSP)), m_nodeManager, SLOT(slotUiActivatedNode(KisNodeSP))); connect(m_nodeModel, SIGNAL(nodeActivated(KisNodeSP)), SLOT(updateUI())); // Node manipulation methods are forwarded to the node manager connect(m_nodeModel, SIGNAL(requestAddNode(KisNodeSP, KisNodeSP, KisNodeSP)), m_nodeManager, SLOT(addNodeDirect(KisNodeSP, KisNodeSP, KisNodeSP))); connect(m_nodeModel, SIGNAL(requestMoveNode(KisNodeSP, KisNodeSP, KisNodeSP)), m_nodeManager, SLOT(moveNodeDirect(KisNodeSP, KisNodeSP, KisNodeSP))); m_wdgLayerBox->listLayers->expandAll(); expandNodesRecursively(m_image->rootLayer(), m_nodeModel, m_wdgLayerBox->listLayers); m_wdgLayerBox->listLayers->scrollToBottom(); foreach(KisAction *action, m_actions) { m_canvas->view()->actionManager()->addAction(action); } }
AnnotationWidget::AnnotationWidget(QWidget *parent) : QDialog(parent) { setWindowIcon(QIcon(":/images/icons/graph.png")); setWindowTitle("Annotation"); tabs = new QTabWidget(this); treeviewTab = new ToolsTreeviewTab(this); commandsTab = new ToolsCommandsTab(this); tabs->addTab(treeviewTab, "Tree View"); tabs->addTab(commandsTab, "Commands"); treeCountLabel = new QLabel("Total Tree Count: 0"); nodeCountLabel = new QLabel("Total Node Count: 0"); nodeCountLabel->setToolTip("Total number of nodes in the skeleton."); listedNodesLabel = new QLabel("Currently Listed Nodes: 0"); listedNodesLabel->setToolTip("Number of nodes currently listed in the table."); QHBoxLayout *hLayout = new QHBoxLayout(); QHBoxLayout *subHLayout = new QHBoxLayout(); subHLayout->addWidget(listedNodesLabel, 0, Qt::AlignLeft); subHLayout->addWidget(nodeCountLabel, 0, Qt::AlignRight); hLayout->addWidget(treeCountLabel); hLayout->addLayout(subHLayout); mainLayout = new QVBoxLayout(this); mainLayout->addWidget(tabs); mainLayout->addLayout(hLayout); setLayout(mainLayout); connect(treeviewTab, &ToolsTreeviewTab::updateAnnotationLabelsSignal, this, &AnnotationWidget::updateLabels); connect(commandsTab, SIGNAL(treeActivatedSignal()), treeviewTab, SLOT(treeActivated())); connect(commandsTab, SIGNAL(treeAddedSignal(treeListElement*)), treeviewTab, SLOT(treeAdded(treeListElement*))); connect(commandsTab, SIGNAL(nodeActivatedSignal()), treeviewTab, SLOT(nodeActivated())); connect(commandsTab, SIGNAL(branchPushedSignal()), treeviewTab, SLOT(branchPushed())); connect(commandsTab, SIGNAL(branchPoppedSignal()), treeviewTab, SLOT(branchPopped())); this->setWindowFlags(this->windowFlags() & (~Qt::WindowContextHelpButtonHint)); }
void ContextPrivate::onNodeActivationChanged( QSharedPointer<fugio::NodeInterface> pNode ) { emit nodeActivated( pNode->uuid() ); }