connect(linkPanel,SIGNAL(addLink(QString,QString)),this,SLOT(AddLink(QString,QString)));
connect(linkPanel,SIGNAL(removeLink(QString,QString)),this,SLOT(RemoveLink(QString,QString)));
- connect(overlayPanel,SIGNAL(VFPropertyUpdated(int,int,int)),this,SLOT(SetVFProperty(int,int,int)));
+ connect(overlayPanel,SIGNAL(VFPropertyUpdated(int,int,int,int)),this,SLOT(SetVFProperty(int,int,int,int)));
connect(overlayPanel,SIGNAL(OverlayPropertyUpdated(int)),this,SLOT(SetOverlayProperty(int)));
connect(overlayPanel,SIGNAL(FusionPropertyUpdated(int,int,double,double)),
this,SLOT(SetFusionProperty(int,int,double,double)));
{
if (mSlicerManagers.size() > 0)
{
- QString Extensions = "Images ( *.vtk; *.obj)";
+ QString Extensions = "Images ( *.vtk *.obj)";
Extensions += ";;All Files (*)";
QString file = QFileDialog::getOpenFileName(this,tr("Open vtkPolyData"),mInputPathName,Extensions);
if (file.isNull())
msgBox.addButton(tr("Cancel"), QMessageBox::RejectRole);
if (msgBox.exec() == QMessageBox::AcceptRole)
{
- this->close();
+ this->close();
}
}
else
mSlicerManagers[index]->ReloadFusion();
else
mSlicerManagers[index]->Reload();
+
+ // Update view and info
+ ImageInfoChanged();
+ mSlicerManagers[index]->Render();
QApplication::restoreOverrideCursor();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvMainWindow::AddOverlayImage(int index, QString file) {
+
mInputPathName = itksys::SystemTools::GetFilenamePath(file.toStdString()).c_str();
itk::ImageIOBase::Pointer reader = itk::ImageIOFactory::CreateImageIO(
file.toStdString().c_str(), itk::ImageIOFactory::ReadMode);
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
vvProgressDialog progress("Opening " + file.toStdString());
qApp->processEvents();
-
+
std::string filename = itksys::SystemTools::GetFilenameWithoutExtension(file.toStdString()).c_str();
if (mSlicerManagers[index]->SetOverlay(file.toStdString(),dimension, component))
{
{
item->setData(j,Qt::CheckStateRole,DataTree->topLevelItem(index)->data(j,Qt::CheckStateRole));
mSlicerManagers[index]->GetSlicer(j-1)->SetActorVisibility("overlay",0,
- DataTree->topLevelItem(index)->data(j,Qt::CheckStateRole).toInt());
+ DataTree->topLevelItem(index)->data(j,Qt::CheckStateRole).toInt());
}
//Create the buttons for reload and close
//------------------------------------------------------------------------------
-void vvMainWindow::SetVFProperty(int subsampling, int scale, int log) {
+void vvMainWindow::SetVFProperty(int subsampling, int scale, int log, int width) {
int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
if (mSlicerManagers[index]->GetSlicer(0)->GetVF())
{
{
mSlicerManagers[index]->GetSlicer(i)->SetVFSubSampling(subsampling);
mSlicerManagers[index]->GetSlicer(i)->SetVFScale(scale);
+ mSlicerManagers[index]->GetSlicer(i)->SetVFWidth(width);
if (log > 0)
mSlicerManagers[index]->GetSlicer(i)->SetVFLog(1);
else
}
//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::AddLink(QString image1,QString image2) {
for (unsigned int i = 0; i < mSlicerManagers.size();i++)
}
//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::RemoveLink(QString image1,QString image2) {
+ // DD("vvMainWindow:RemoveLink");
for (unsigned int i = 0; i < mSlicerManagers.size();i++)
{
if (image1.toStdString() == mSlicerManagers[i]->GetId())
//------------------------------------------------------------------------------
void vvMainWindow::NOVerticalSliderChanged() {
- int value = NOVerticalSlider->value();
+ static int value=-1;
+ if (value == NOVerticalSlider->value()) return;
+ else value = NOVerticalSlider->value();
+ // int value = NOVerticalSlider->value();
for (unsigned int i = 0; i < mSlicerManagers.size(); i++)
{
if (DataTree->topLevelItem(i)->data(COLUMN_UL_VIEW,Qt::CheckStateRole).toInt() > 1)
{
- mSlicerManagers[i]->GetSlicer(0)->SetSlice(value);
- mSlicerManagers[i]->VerticalSliderHasChanged(0, value);
- // mSlicerManagers[i]->UpdateSlice(0);
- // <-- DS add this. Not too much update ? YES.
+ if (mSlicerManagers[i]->GetSlicer(0)->GetSlice() != value) {
+ mSlicerManagers[i]->GetSlicer(0)->SetSlice(value);
+ mSlicerManagers[i]->VerticalSliderHasChanged(0, value);
+ mSlicerManagers[i]->UpdateSlice(0); // <-- DS add this. Not too much update ? YES. but needed for ImageContour ...
+ //mSlicerManagers[i]->GetSlicer(0)->Render(); // <-- DS add this, needed for contour, seems ok ? not too slow ?
+ }
break;
}
}
//------------------------------------------------------------------------------
void vvMainWindow::NEVerticalSliderChanged() {
- int value = NEVerticalSlider->value();
+ static int value=-1;
+ if (value == NEVerticalSlider->value()) return;
+ else value = NEVerticalSlider->value();
+ // int value = NEVerticalSlider->value();
for (unsigned int i = 0; i < mSlicerManagers.size(); i++)
{
if (DataTree->topLevelItem(i)->data(COLUMN_UR_VIEW,Qt::CheckStateRole).toInt() > 1)
{
- mSlicerManagers[i]->GetSlicer(1)->SetSlice(value);
+ if (mSlicerManagers[i]->GetSlicer(1)->GetSlice() != value) {
+ mSlicerManagers[i]->GetSlicer(1)->SetSlice(value);
+ mSlicerManagers[i]->VerticalSliderHasChanged(1, value);
+ mSlicerManagers[i]->UpdateSlice(1);
+ //mSlicerManagers[i]->GetSlicer(1)->Render(); // <-- DS add this, needed for contour, seems ok ? not too slow ?
+ }
break;
}
}
//------------------------------------------------------------------------------
void vvMainWindow::SOVerticalSliderChanged() {
- int value = SOVerticalSlider->value();
+ // DD("SOVerticalSliderChanged");
+ static int value=-1;
+ // DD(value);
+// DD(SOVerticalSlider->value());
+ if (value == SOVerticalSlider->value()) return;
+ else value = SOVerticalSlider->value();
+ //int value = SOVerticalSlider->value();
for (unsigned int i = 0; i < mSlicerManagers.size(); i++)
{
if (DataTree->topLevelItem(i)->data(COLUMN_DL_VIEW,Qt::CheckStateRole).toInt() > 1)
{
- mSlicerManagers[i]->GetSlicer(2)->SetSlice(value);
+ if (mSlicerManagers[i]->GetSlicer(2)->GetSlice() != value) {
+ mSlicerManagers[i]->GetSlicer(2)->SetSlice(value);
+ mSlicerManagers[i]->VerticalSliderHasChanged(2, value);
+ mSlicerManagers[i]->UpdateSlice(2);
+ //mSlicerManagers[i]->GetSlicer(2)->Render(); // <-- DS add this, needed for contour, seems ok ? not too slow ?
+ }
+ // else { DD("avoid SOVerticalSlider slicer update"); }
break;
}
}
//------------------------------------------------------------------------------
void vvMainWindow::SEVerticalSliderChanged() {
- int value = SEVerticalSlider->value();
+ static int value=-1;
+ if (value == SEVerticalSlider->value()) return;
+ else value = SEVerticalSlider->value();
+ // int value = SEVerticalSlider->value();
for (unsigned int i = 0; i < mSlicerManagers.size(); i++)
{
if (DataTree->topLevelItem(i)->data(COLUMN_DR_VIEW,Qt::CheckStateRole).toInt() > 1)
{
- mSlicerManagers[i]->GetSlicer(3)->SetSlice(value);
+ if (mSlicerManagers[i]->GetSlicer(3)->GetSlice() != value) {
+ mSlicerManagers[i]->GetSlicer(3)->SetSlice(value);
+ mSlicerManagers[i]->VerticalSliderHasChanged(3, value);
+ mSlicerManagers[i]->UpdateSlice(3);
+ //mSlicerManagers[i]->GetSlicer(3)->Render(); // <-- DS add this, needed for contour, seems ok ? not too slow ?
+ }
break;
}
}
//------------------------------------------------------------------------------
void vvMainWindow::UpdateSlice(int slicer, int slice) {
+ // DD("vvMainWindow::UpdateSlice");
+// DD(slicer);
+// DD(slice);
if (slicer == 0) {
- if (slice != NOVerticalSlider->value())
- NOVerticalSlider->setValue(slice);
+ // if (slice != NOVerticalSlider->value())
+ NOVerticalSlider->setValue(slice);
}
- else if (slicer == 1)
+ else {
+ if (slicer == 1)
NEVerticalSlider->setValue(slice);
- else if (slicer == 2)
- SOVerticalSlider->setValue(slice);
- else if (slicer == 3)
- SEVerticalSlider->setValue(slice);
+ else {
+ if (slicer == 2)
+ SOVerticalSlider->setValue(slice);
+ else {
+ if (slicer == 3)
+ SEVerticalSlider->setValue(slice);
+ }
+ }
+ }
+ // DD("vvMainWindow:UpdateSlice END");
}
//------------------------------------------------------------------------------