#include "vvROIActor.h"
#include "vvSlicer.h"
#include "vvROIActor.h"
+#include "vvMeshReader.h"
+#include "vvStructSelector.h"
// Qt
#include <QFileDialog>
setAttribute(Qt::WA_DeleteOnClose);
mTree->clear();
mTree->header()->resizeSection(0, 30);
+ mGroupBoxROI->setEnabled(false);
+
+ // Temporary disable "Load dicom" button
+ frame_4->hide();
// Set default LUT
mDefaultLUTColor = vtkSmartPointer<vtkLookupTable>::New();
connect(parent, SIGNAL(SelectedImageHasChanged(vvSlicerManager *)),
this, SLOT(SelectedImageHasChanged(vvSlicerManager *)));
connect(mOpenBinaryButton, SIGNAL(clicked()), this, SLOT(OpenBinaryImage()));
+ connect(mOpenDicomButton, SIGNAL(clicked()), this, SLOT(OpenDicomImage()));
connect(mTree, SIGNAL(itemSelectionChanged()), this, SLOT(SelectedItemChangedInTree()));
connect(mCheckBoxShow, SIGNAL(toggled(bool)), this, SLOT(VisibleROIToggled(bool)));
connect(mOpacitySlider, SIGNAL(valueChanged(int)), this, SLOT(OpacityChanged(int)));
//------------------------------------------------------------------------------
vvToolROIManager::~vvToolROIManager()
{
- std::cout << "vvToolROIManager::~vvToolROIManager()" << std::endl;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolROIManager::AnImageIsBeingClosed(vvSlicerManager * m)
{
- DD("AnImageIsBeingClosed");
if (m == mSlicerManager) {
close();
return;
//------------------------------------------------------------------------------
void vvToolROIManager::close()
{
- DD("close");
+ // Update to delete actors
+ UpdateAllContours();
QWidget::close();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvToolROIManager::SelectedImageHasChanged(vvSlicerManager * m) {
- DD("SelectedImageHasChanged");
if (m != mSlicerManager) hide();
else {
show();
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvToolROIManager::OpenDicomImage()
+{
+ DD("OpenDicomImage");
+ QString Extensions = "Dicom Files ( *.dcm RS*)";
+ Extensions += ";;All Files (*)";
+ QString file = QFileDialog::getOpenFileName(this,tr("Merge Images"),
+ mMainWindow->GetInputPathName(),
+ Extensions);
+ if (file.isNull()) return;
+
+ // AddDCStructContour(index, file);
+ vvMeshReader reader;
+ reader.SetFilename(file.toStdString());
+ vvStructSelector selector;
+ selector.SetStructures(reader.GetROINames());
+ // selector.EnablePropagationCheckBox(); FIXME Disable
+
+ // FIXME : change text -> allow to save binary image
+
+ if (selector.exec()) {
+ QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+ reader.SetSelectedItems(selector.getSelectedItems());
+ reader.SetImage(mSlicerManager->GetImage());
+ reader.Update();
+
+ // std::vector<vvMesh::Pointer> contours=reader.GetOutput();
+ // for (std::vector<vvMesh::Pointer>::iterator i=contours.begin();
+ // i!=contours.end(); i++)
+ // AddContour(index,*i,selector.PropagationEnabled());
+ QApplication::restoreOverrideCursor();
+ }
+
+
+
+}
+//------------------------------------------------------------------------------
+
+
//------------------------------------------------------------------------------
void vvToolROIManager::AddImage(vvImage * binaryImage, std::string filename,
double BG, bool modeBG)
//------------------------------------------------------------------------------
void vvToolROIManager::SelectedItemChangedInTree() {
-
// Search which roi is selected
QList<QTreeWidgetItem *> l = mTree->selectedItems();
if (l.size() == 0) {
mGroupBoxROI->setEnabled(false);
return;
}
+ if (w == NULL) return;
clitk::DicomRT_ROI * roi = mMapTreeWidgetToROI[w];
+ if (roi == NULL) return; // sometimes it is called while there is no roi anymore
// Get selected roi actor
- QSharedPointer<vvROIActor> actor = mROIActorsList[roi->GetROINumber()];
+ int n = roi->GetROINumber();
+ QSharedPointer<vvROIActor> actor = mROIActorsList[n];
mCurrentROI = roi;
mCurrentROIActor = actor;
QString values = QString("%1, %2, %3").arg(color.red()).arg(color.green()).arg(color.blue());
mROInameLabel->setStyleSheet("QLabel { background-color: rgb("+values+"); }");
+
+ mGroupBoxROI->setEnabled(true);
// is this needed ?
// actor->Update();
// Final rendering
//------------------------------------------------------------------------------
void vvToolROIManager::ChangeColor() {
+ if (mCurrentROIActor == NULL) return;
QColor color;
color.setRgbF(mCurrentROIActor->GetROI()->GetDisplayColor()[0],
mCurrentROIActor->GetROI()->GetDisplayColor()[1],
//------------------------------------------------------------------------------
void vvToolROIManager::ChangeContourColor() {
+ if (mCurrentROIActor == NULL) return;
QColor color;
color.setRgbF(mCurrentROIActor->GetContourColor()[0],
mCurrentROIActor->GetContourColor()[1],
//------------------------------------------------------------------------------
void vvToolROIManager::ChangeContourWidth(int n) {
+ if (mCurrentROIActor == NULL) return;
mCurrentROIActor->SetContourWidth(n);
mCurrentROIActor->UpdateColor();
mSlicerManager->Render();
//------------------------------------------------------------------------------
void vvToolROIManager::ChangeDepth(int n) {
+ if (mCurrentROIActor == NULL) return;
mCurrentROIActor->SetDepth(n);
mCurrentROIActor->UpdateImage();
mSlicerManager->Render();
//------------------------------------------------------------------------------
void vvToolROIManager::ReloadCurrentROI() {
+
+ // Remove all contours/overlay first
+ bool visible = mCurrentROIActor->IsVisible();
+ bool cvisible = mCurrentROIActor->IsContourVisible();
+ mCurrentROIActor->SetVisible(false);
+ mCurrentROIActor->SetContourVisible(false);
+ mSlicerManager->Render();
+
// Reload image
vvImageReader::Pointer reader = vvImageReader::New();
reader->SetInputFilename(mCurrentROI->GetFilename());
reader->GetLastError().c_str());
return;
}
- mCurrentROI->GetImage()->GetFirstVTKImageData()->ReleaseData();
+
+ mCurrentROI->GetImage()->Reset();//GetFirstVTKImageData()->ReleaseData();
mCurrentROI->SetImage(reader->GetOutput());
- // Update visu"
+ // Update visu
mCurrentROIActor->UpdateImage();
+ mCurrentROIActor->SetVisible(visible);
+ mCurrentROIActor->SetContourVisible(cvisible);
mSlicerManager->Render();
}
//------------------------------------------------------------------------------