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);
        }
    }
Beispiel #2
0
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));
}
Beispiel #3
0
void ContextPrivate::onNodeActivationChanged( QSharedPointer<fugio::NodeInterface> pNode )
{
	emit nodeActivated( pNode->uuid() );
}