void medFilteringWorkspace::setupViewContainerStack() { if ( !this->stackedViewContainers()->count() ) { d->inputContainer = this->stackedViewContainers()->addContainerInTab("Filtering"); QLabel *inputLabel = new QLabel("INPUT"); inputLabel->setAlignment(Qt::AlignCenter); d->inputContainer->setDefaultWidget(inputLabel); d->inputContainer->setUserClosable(false); d->inputContainer->setUserSplittable(false); d->inputContainer->setMultiLayered(false); d->outputContainer = d->inputContainer->splitVertically(); QLabel *outputLabel = new QLabel("OUTPUT"); outputLabel->setAlignment(Qt::AlignCenter); d->outputContainer->setDefaultWidget(outputLabel); d->outputContainer->setUserClosable(false); d->outputContainer->setUserSplittable(false); d->outputContainer->setMultiLayered(false); d->outputContainer->setAcceptDrops(false); connect(d->inputContainer, SIGNAL(viewContentChanged()), this, SLOT(changeToolBoxInput())); connect(d->inputContainer, SIGNAL(viewRemoved()), this, SLOT(changeToolBoxInput())); this->stackedViewContainers()->lockTabs(); this->stackedViewContainers()->hideTabBar(); } }
void medRegistrationWorkspace::setupTabbedViewContainer() { //the stack has been instantiated in constructor if (!this->tabbedViewContainers()->count()) { d->fixedContainer = this->tabbedViewContainers()->addContainerInTab(tr("Compare")); QLabel *fixedLabel = new QLabel(tr("FIXED")); fixedLabel->setAlignment(Qt::AlignCenter); d->fixedContainer->setDefaultWidget(fixedLabel); d->fixedContainer->setMultiLayered(false); d->fixedContainer->setUserSplittable(false); d->fixedContainer->setClosingMode(medViewContainer::CLOSE_VIEW); d->movingContainer = d->fixedContainer->splitVertically(); QLabel *movingLabel = new QLabel(tr("MOVING")); movingLabel->setAlignment(Qt::AlignCenter); d->movingContainer->setDefaultWidget(movingLabel); d->movingContainer->setUserSplittable(false); d->movingContainer->setMultiLayered(false); d->movingContainer->setClosingMode(medViewContainer::CLOSE_VIEW); d->fuseContainer = this->tabbedViewContainers()->addContainerInTab(tr("Fuse")); QLabel *fuseLabel = new QLabel(tr("FUSE")); fuseLabel->setAlignment(Qt::AlignCenter); d->fuseContainer->setDefaultWidget(fuseLabel); d->fuseContainer->setClosingMode(medViewContainer::CLOSE_BUTTON_HIDDEN); d->fuseContainer->setUserSplittable(false); d->fuseContainer->setAcceptDrops(false); connect(d->fixedContainer, SIGNAL(viewContentChanged()), this, SLOT(updateFromFixedContainer())); connect(d->movingContainer,SIGNAL(viewContentChanged()), this, SLOT(updateFromMovingContainer())); connect(d->fixedContainer,SIGNAL(viewRemoved()), this, SLOT(updateFromFixedContainer())); connect(d->movingContainer,SIGNAL(viewRemoved()), this, SLOT(updateFromMovingContainer())); this->tabbedViewContainers()->lockTabs(); this->tabbedViewContainers()->setCurrentIndex(0); d->fixedContainer->setSelected(true); d->movingContainer->setSelected(false); } }
void medViewContainer::setView(medAbstractView *view) { if(d->view) { d->view->viewWidget()->hide(); this->removeInternView(); } if(view) { d->view = view; connect(d->view, SIGNAL(destroyed()), this, SLOT(removeInternView())); connect(d->view, SIGNAL(selectedRequest(bool)), this, SLOT(setSelected(bool))); if(medAbstractLayeredView* layeredView = dynamic_cast<medAbstractLayeredView*>(view)) { connect(layeredView, SIGNAL(currentLayerChanged()), this, SIGNAL(currentLayerChanged())); connect(layeredView, SIGNAL(currentLayerChanged()), this, SLOT(updateToolBar())); connect(layeredView, SIGNAL(layerAdded(uint)), this, SIGNAL(viewContentChanged())); connect(layeredView, SIGNAL(layerRemoved(uint)), this, SIGNAL(viewContentChanged())); } if (medAbstractImageView* imageView = dynamic_cast <medAbstractImageView*> (view)) { if (!d->userSplittable) imageView->fourViewsParameter()->hide(); } d->maximizedAction->setEnabled(true); d->defaultWidget->hide(); d->mainLayout->addWidget(d->view->viewWidget(), 2, 0, 1, 1); d->view->viewWidget()->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::MinimumExpanding); d->view->viewWidget()->show(); emit viewChanged(); } }
void medRegistrationWorkspace::updateFromRegistrationSuccess(medAbstractData *output) { if(!d->registrationToolBox) return; //TODO disconnect because we dont want to change input of the undo redo process. // find a better way to do it ? - RDE d->movingContainer->disconnect(this); d->movingContainer->removeView(); d->movingContainer->addData(output); d->fuseContainer->removeView(); d->fuseContainer->addData(d->registrationToolBox->fixedData()); d->fuseContainer->addData(output); // Relink the views... medAbstractLayeredView* movingView = dynamic_cast<medAbstractLayeredView*>(d->movingContainer->view()); if(!movingView) { dtkWarn() << "Non layered view are not suported yet in registration workspace."; return; } medAbstractLayeredView* fuseView = dynamic_cast<medAbstractLayeredView*>(d->fuseContainer->view()); if(!fuseView) { dtkWarn() << "Non layered view are not suported yet in registration workspace."; return; } d->viewGroup->addImpactedView(movingView); d->viewGroup->addImpactedView(fuseView); d->viewGroup->removeParameter("DataList"); d->movingLayerGroup->addImpactedlayer(movingView, output); d->movingLayerGroup->addImpactedlayer(fuseView, output); connect(d->movingContainer,SIGNAL(viewContentChanged()), this, SLOT(updateFromMovingContainer())); connect(d->movingContainer,SIGNAL(viewRemoved()), this, SLOT(updateFromMovingContainer())); }