X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolStructureSetManager.cxx;h=ea24ca6c06d3b8ecc924423b85d68170a1ddbc59;hb=959d91564af1b0e33303f3c15d803d2dafcaa54d;hp=ac53fb53c3060f7be98ee27c4b2b3e9437d3d29f;hpb=fe61abeb6e452e5f54bef60a287aa104e4e02d70;p=clitk.git diff --git a/vv/vvToolStructureSetManager.cxx b/vv/vvToolStructureSetManager.cxx index ac53fb5..ea24ca6 100644 --- a/vv/vvToolStructureSetManager.cxx +++ b/vv/vvToolStructureSetManager.cxx @@ -21,8 +21,11 @@ #include "vvStructureSetActor.h" #include "vvSlicer.h" #include "vvROIActor.h" + #include #include +#include + #include #include @@ -41,6 +44,9 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, Ui_vvToolStructureSetManager::setupUi(mToolWidget); mTree->clear(); mCurrentStructureSet = NULL; + mCurrentStructureSetIndex = -1; + mGroupBoxROI->setEnabled(false); + mCurrentROIActor = NULL; mDefaultLUTColor = vtkLookupTable::New(); for(unsigned int i=0; iGetNumberOfTableValues(); i++) { @@ -94,28 +100,9 @@ void vvToolStructureSetManager::InputIsSelected(vvSlicerManager *m) { // connect(m, SIGNAL(LeftButtonReleaseSignal(int)), SLOT(LeftButtonReleaseEvent(int))); connect(mTree, SIGNAL(itemSelectionChanged()), this, SLOT(selectedItemChangedInTree())); -} -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -void vvToolStructureSetManager::selectedItemChangedInTree() { - DD("selectedItemChangedInTree"); - QList l = mTree->selectedItems(); - DD(l.size()); - QTreeWidgetItem * w = l[0]; - if (mMapTreeWidgetToROI.find(w) == mMapTreeWidgetToROI.end()) return; // Search for SS (first) - clitk::DicomRT_ROI * roi = mMapTreeWidgetToROI[w]; - DD(roi->GetName()); - setCurrentSelectedROI(roi); -} -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -void vvToolStructureSetManager::setCurrentSelectedROI(clitk::DicomRT_ROI * roi) { - // mCheckBoxShow = // get roi actor .../ - + connect(mCheckBoxShow, SIGNAL(toggled(bool)), this, SLOT(visibleROIToggled(bool))); + connect(mOpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(opacityChanged(int))); + connect(mChangeColorButton, SIGNAL(clicked()), this, SLOT(changeColor())); } //------------------------------------------------------------------------------ @@ -235,6 +222,7 @@ void vvToolStructureSetManager::openBinaryImage() { mCurrentStructureSet = mStructureSetsList[index]; mCurrentStructureSetActor = mStructureSetActorsList[index]; mCurrentStructureSetIndex = index; + DD(mCurrentStructureSetIndex); DD(mCurrentStructureSet->GetName()); // Open images @@ -323,3 +311,109 @@ void vvToolStructureSetManager::apply() { close(); } //------------------------------------------------------------------------------ + + + +//------------------------------------------------------------------------------ +// CURRENT ROI INTERACTION +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolStructureSetManager::selectedItemChangedInTree() { + DD("selectedItemChangedInTree"); + + // Search which roi is selected + QList l = mTree->selectedItems(); + DD(l.size()); + QTreeWidgetItem * w = l[0]; + if (mMapTreeWidgetToROI.find(w) == mMapTreeWidgetToROI.end()) { + mCurrentROIActor = NULL; + mCurrentROI = NULL; + mGroupBoxROI->setEnabled(false); + return; // Search for SS (first) + } + clitk::DicomRT_ROI * roi = mMapTreeWidgetToROI[w]; + // DD(roi->GetName()); + + // Get selected roi actor + if (mCurrentROIActor != NULL) { + mCurrentROIActor->SetSelected(false); + mCurrentROIActor->Update(); + } + + vvROIActor * actor = mStructureSetActorsList[mCurrentStructureSetIndex]->GetROIActor(roi->GetROINumber()); + mCurrentROI = roi; + mCurrentROIActor = actor; + + // Update GUI + mGroupBoxROI->setEnabled(true); + mROInameLabel->setText(roi->GetName().c_str()); + mCheckBoxShow->setChecked(actor->IsVisible()); + + // Warning -> avoir unuseful Render here by disconnect slider + // + disconnect(mOpacitySlider, SIGNAL(valueChanged(int)), + this, SLOT(opacityChanged(int))); + mOpacitySlider->setValue((int)lrint(actor->GetOpacity()*100)); + mOpacitySpinBox->setValue((int)lrint(actor->GetOpacity()*100)); + connect(mOpacitySlider, SIGNAL(valueChanged(int)), + this, SLOT(opacityChanged(int))); + + actor->SetSelected(true); // remove old selection + // The following must not render !! + DD("before update"); + actor->Update(); // To change in UpdateSelecte + DD("after update"); + + mCurrentSlicerManager->Render(); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolStructureSetManager::visibleROIToggled(bool b) { + mCurrentROIActor->SetVisible(b); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolStructureSetManager::opacityChanged(int v) { + mCurrentROIActor->SetOpacity((double)v/100.0); + mCurrentROIActor->UpdateColor(); + mCurrentSlicerManager->Render(); +} +//------------------------------------------------------------------------------ + + +//------------------------------------------------------------------------------ +void vvToolStructureSetManager::changeColor() { + QColor color; + color.setRgbF(mCurrentROIActor->GetROI()->GetDisplayColor()[0], + mCurrentROIActor->GetROI()->GetDisplayColor()[1], + mCurrentROIActor->GetROI()->GetDisplayColor()[2]); + QColor c = QColorDialog::getColor(color, this, "Choose the ROI color"); + mCurrentROIActor->GetROI()->SetDisplayColor(c.redF(), c.greenF(), c.blueF()); + mCurrentROIActor->UpdateColor(); + + QTreeWidgetItem * w = mMapROIToTreeWidget[mCurrentROI]; + QBrush brush(QColor(mCurrentROI->GetDisplayColor()[0]*255, + mCurrentROI->GetDisplayColor()[1]*255, + mCurrentROI->GetDisplayColor()[2]*255)); + brush.setStyle(Qt::SolidPattern); + for(int i=0; icolumnCount (); i++) { + w->setBackground(i, brush); + } +} +//------------------------------------------------------------------------------ + + + +//------------------------------------------------------------------------------ +//void vvToolStructureSetManager::getActorFromROI() { +// mStructureSetActorsList[mCurrentStructureSetIndex]->GetROIActor(n); +//} +//------------------------------------------------------------------------------ + +