Public Types | Public Member Functions | Static Public Attributes | Protected Slots | Protected Member Functions | Protected Attributes

QmitkDiffusionDicomImport Class Reference
[Functionalities]

QmitkDiffusionDicomImport. More...

#include <QmitkDiffusionDicomImportView.h>

Inheritance diagram for QmitkDiffusionDicomImport:
Inheritance graph
[legend]
Collaboration diagram for QmitkDiffusionDicomImport:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
mitk::DataStorage::SetOfObjects 
ConstVector
typedef ConstVector::ConstPointer ConstVectorPointer
typedef ConstVector::ConstIterator ConstVectorIterator

Public Member Functions

 QmitkDiffusionDicomImport (QObject *parent=0, const char *name=0)
 default constructor
virtual ~QmitkDiffusionDicomImport ()
 default destructor
virtual void CreateQtPartControl (QWidget *parent)
 method for creating the widget containing the application controls, like sliders, buttons etc.
virtual void CreateConnections ()
 method for creating the connections of main and control widget
virtual void Activated ()
void SetDwiNodeProperties (mitk::DataNode::Pointer node, std::string name)

Static Public Attributes

static const std::string VIEW_ID = "org.mitk.views.diffusiondicomimport"

Protected Slots

void DicomLoadAddFolderNames ()
void DicomLoadDeleteFolderNames ()
void DicomLoadStartLoad ()
void AverageClicked ()
void OutputSet ()
void OutputClear ()

Protected Member Functions

void Status (QString status)
void Status (std::string status)
void Status (const char *status)
void Error (QString status)
void Error (std::string status)
void Error (const char *status)
void PrintMemoryUsage ()
std::string FormatMemorySize (vcl_size_t size)
std::string FormatPercentage (double val)
std::string GetMemoryDescription (vcl_size_t processSize, float percentage)

Protected Attributes

Ui::QmitkDiffusionDicomImportControlsm_Controls
QmitkStdMultiWidgetm_MultiWidget
QWidget * m_Parent
QString m_OutputFolderName
bool m_OutputFolderNameSet

Detailed Description

QmitkDiffusionDicomImport.

See also:
QmitkFunctionality

Definition at line 32 of file QmitkDiffusionDicomImportView.h.


Member Typedef Documentation

\ Convenient typedefs

Definition at line 43 of file QmitkDiffusionDicomImportView.h.

typedef ConstVector::ConstIterator QmitkDiffusionDicomImport::ConstVectorIterator

Definition at line 45 of file QmitkDiffusionDicomImportView.h.

typedef ConstVector::ConstPointer QmitkDiffusionDicomImport::ConstVectorPointer

Definition at line 44 of file QmitkDiffusionDicomImportView.h.


Constructor & Destructor Documentation

QmitkDiffusionDicomImport::QmitkDiffusionDicomImport ( QObject *  parent = 0,
const char *  name = 0 
)

default constructor

Definition at line 52 of file QmitkDiffusionDicomImportView.cpp.

QmitkDiffusionDicomImport::~QmitkDiffusionDicomImport (  ) [virtual]

default destructor

Definition at line 58 of file QmitkDiffusionDicomImportView.cpp.

{}

Member Function Documentation

void QmitkDiffusionDicomImport::Activated (  ) [virtual]

Only called when IsExclusiveFunctionality() returns true.

See also:
IsExclusiveFunctionality()

Reimplemented from QmitkFunctionality.

Definition at line 130 of file QmitkDiffusionDicomImportView.cpp.

void QmitkDiffusionDicomImport::AverageClicked (  ) [protected, slot]
void QmitkDiffusionDicomImport::CreateConnections (  ) [virtual]
void QmitkDiffusionDicomImport::CreateQtPartControl ( QWidget *  parent ) [virtual]
void QmitkDiffusionDicomImport::DicomLoadAddFolderNames (  ) [protected, slot]

Definition at line 140 of file QmitkDiffusionDicomImportView.cpp.

References Ui_QmitkDiffusionDicomImportControls::listWidget, m_Controls, and m_Parent.

Referenced by CreateConnections().

{
  // SELECT FOLDER DIALOG
  QFileDialog* w = new QFileDialog( m_Parent, QString("Select folders containing DWI data") );
  w->setFileMode( QFileDialog::Directory );

  // RETRIEVE SELECTION
  if ( w->exec() != QDialog::Accepted )
    return;

  m_Controls->listWidget->addItems(w->selectedFiles());
}
void QmitkDiffusionDicomImport::DicomLoadDeleteFolderNames (  ) [protected, slot]
void QmitkDiffusionDicomImport::DicomLoadStartLoad (  ) [protected, slot]

Definition at line 268 of file QmitkDiffusionDicomImportView.cpp.

References Error(), QmitkFunctionality::GetDefaultDataStorage(), mitk::RenderingManager::GetInstance(), mitk::ProgressBar::GetInstance(), int(), Ui_QmitkDiffusionDicomImportControls::listWidget, Ui_QmitkDiffusionDicomImportControls::m_Blur, m_Controls, Ui_QmitkDiffusionDicomImportControls::m_DicomLoadAverageDuplicatesCheckbox, Ui_QmitkDiffusionDicomImportControls::m_DicomLoadRecursiveCheckbox, m_OutputFolderName, m_OutputFolderNameSet, mitk::DataNode::New(), mitk::DicomDiffusionImageHeaderReader::New(), PrintMemoryUsage(), mitk::RenderingManager::REQUEST_UPDATE_ALL, SetDwiNodeProperties(), QuadProgPP::sqrt(), and Status().

Referenced by CreateConnections().

{
  itk::TimeProbesCollectorBase clock;

  try
  {

    int nrFolders = m_Controls->listWidget->count();

    if(!nrFolders)
    {
      Error(QString("No input folders were selected. ABORTING."));
      return;
    }

#ifndef DGDCM2
    Status(QString("GDCM 1.x used for DICOM parsing and sorting!"));
#else
    Status(QString("GDCM %1 used for DICOM parsing and sorting!").arg(gdcm::Version::GetVersion()));
#endif

    PrintMemoryUsage();
    QString status;
    mitk::DataNode::Pointer node;
    mitk::ProgressBar::GetInstance()->AddStepsToDo(3*nrFolders);

    while(m_Controls->listWidget->count())
    {

      // RETREIVE FOLDERNAME
      QListWidgetItem * item  = m_Controls->listWidget->takeItem(0);
      QString folderName = item->text();

      // PARSING DIRECTORY
      PrintMemoryUsage();
      clock.Start(folderName.toAscii());
      std::vector<std::string> seriesUIDs(0);
      std::vector<std::vector<std::string> > seriesFilenames(0);
#ifndef DGDCM2
      Status(QString("Parsing directory %1").arg(folderName));
      typedef itk::GDCMSeriesFileNames InputNamesType;
      InputNamesType::Pointer inputNames = InputNamesType::New();


      inputNames->SetRecursive(m_Controls->m_DicomLoadRecursiveCheckbox->isChecked());
      inputNames->SetUseSeriesDetails(true);
      inputNames->AddSeriesRestriction( "0020|0012" );
      inputNames->SetInputDirectory( folderName.toAscii() );
      mitk::ProgressBar::GetInstance()->Progress();
      seriesUIDs = inputNames->GetSeriesUIDs();
      unsigned int size = seriesUIDs.size();
      for ( unsigned int i = 0 ; i < size ; ++i )
      {
        seriesFilenames.push_back(inputNames->GetFileNames(seriesUIDs[i]));
      }
#else

      Status("== Initial Directory Scan ==");
      gdcm::Directory d;
      d.Load( folderName.toStdString().c_str(), true ); // recursive !
      const gdcm::Directory::FilenamesType &l1 = d.GetFilenames();
      const unsigned int ntotalfiles = l1.size();
      Status(QString(" ... found %1 different files").arg(ntotalfiles));

      Status("Scanning Headers");
      gdcm::Scanner s;
      const gdcm::Tag t1(0x0020,0x000d); // Study Instance UID
      const gdcm::Tag t2(0x0020,0x000e); // Series Instance UID
      const gdcm::Tag t5(0x0028, 0x0010); // number rows
      const gdcm::Tag t6(0x0028, 0x0011); // number cols
      s.AddTag( t1 );
      s.AddTag( t2 );
      s.AddTag( t5 );
      s.AddTag( t6 );

      bool b = s.Scan( d.GetFilenames() );
      if( !b )
      {
        Error("Scanner failed");
        continue;
      }

      // Only get the DICOM files:
      gdcm::Directory::FilenamesType l2 = s.GetKeys();
      const int nfiles = l2.size();
      if(nfiles < 1)
      {
        Error("No DICOM files found");
        continue;
      }
      Status(QString(" ... successfully scanned %1 headers.").arg(nfiles));

      Status("Sorting");

      const gdcm::Scanner::ValuesType &values1 = s.GetValues(t1);
      int nvalues = values1.size();
      if(nvalues>1)
      {
        Error("Multiple studies found. Please limit to 1 study per folder");
        continue;
      }

      const gdcm::Scanner::ValuesType &values5 = s.GetValues(t5);
      const gdcm::Scanner::ValuesType &values6 = s.GetValues(t6);
      if(values5.size()>1 || values6.size()>1)
      {
        Error("Folder contains images of unequal dimensions that cannot be combined in one 3d volume. ABORTING.");
        continue;
      }

      const gdcm::Scanner::ValuesType &values2 = s.GetValues(t2);
      int nSeries = values2.size();

      gdcm::Directory::FilenamesType files;
      if(nSeries > 1)
      {
        gdcm::Sorter sorter;
        sorter.SetSortFunction( SortBySeriesUID );
        sorter.StableSort( l2 );
        files = sorter.GetFilenames();
      }
      else
      {
        files = l2;
      }

      unsigned int nTotalAcquis = 0;

      if(nfiles % nSeries != 0)
      {
        Error("Number of files in series not equal, ABORTING");
        continue;
      }

      int filesPerSeries = nfiles / nSeries;

      gdcm::Scanner::ValuesType::const_iterator it2 = values2.begin();
      for(int i=0; i<nSeries; i++)
      {

        gdcm::Directory::FilenamesType sub( files.begin() + i*filesPerSeries, files.begin() + (i+1)*filesPerSeries);

        gdcm::Scanner s;
        const gdcm::Tag t3(0x0020,0x0012);  // Acquisition ID
        const gdcm::Tag t4(0x0018, 0x0024); // Sequence Name (in case acquisitions are equal for all)
        //        const gdcm::Tag t5(0x20,0x32) );    // Image Position (Patient)
        s.AddTag(t3);
        s.AddTag(t4);
        //        s.AddTag(t5);

        bool b = s.Scan( sub );
        if( !b )
        {
          Error("Scanner failed");
          continue;
        }

        gdcm::Sorter subsorter;
        gdcm::Scanner::ValuesType::const_iterator it;

        const gdcm::Scanner::ValuesType &values3 = s.GetValues(t3);
        const gdcm::Scanner::ValuesType &values4 = s.GetValues(t4);;
        unsigned int nAcquis = values3.size();

        if(nAcquis != 1)
        {
          subsorter.SetSortFunction( SortByAcquisitionNumber );
          it = values3.begin();
        }
        else
        {
          nAcquis = values4.size();
          subsorter.SetSortFunction( SortBySeqName );
          it = values4.begin();
        }
        nTotalAcquis += nAcquis;
        subsorter.Sort( sub );

        if(filesPerSeries % nAcquis != 0)
        {
          Error("Number of files per acquisition not equal, ABORTING");
          continue;
        }

        int filesPerAcqu = filesPerSeries / nAcquis;

        gdcm::Directory::FilenamesType subfiles = subsorter.GetFilenames();
        for ( unsigned int j = 0 ; j < nAcquis ; ++j )
        {
          std::string identifier = "serie_" + *it2 + "_acquis_" + *it++;

          gdcm::IPPSorter ippsorter;
          gdcm::Directory::FilenamesType ipplist((j)*filesPerAcqu+subfiles.begin(),(j+1)*filesPerAcqu+subfiles.begin());
          ippsorter.SetComputeZSpacing( false );
          if( !ippsorter.Sort( ipplist ) )
          {
            Error(QString("Failed to sort acquisition %1, ABORTING").arg(identifier.c_str()));
            continue;
          }
          const std::vector<std::string> & list = ippsorter.GetFilenames();
          seriesFilenames.push_back(list);
          seriesUIDs.push_back(identifier.c_str());
        }
        ++it2;
      }

      if(nfiles % nTotalAcquis != 0)
      {
        Error("Number of files per acquisition differs between series, ABORTING");
        continue;
      }

      int slices = nfiles/nTotalAcquis;
      Status(QString("Series is composed of %1 different 3D volumes with %2 slices.").arg(nTotalAcquis).arg(slices));

#endif

      // READING HEADER-INFOS
      PrintMemoryUsage();
      Status(QString("Reading Headers %1").arg(folderName));

      mitk::DicomDiffusionImageHeaderReader::Pointer headerReader;
      mitk::GroupDiffusionHeadersFilter::InputType inHeaders;
      unsigned int size2 = seriesUIDs.size();
      for ( unsigned int i = 0 ; i < size2 ; ++i )
      {
        Status(QString("Reading header image #%1/%2").arg(i+1).arg(size2));
        headerReader = mitk::DicomDiffusionImageHeaderReader::New();
        headerReader->SetSeriesDicomFilenames(seriesFilenames[i]);
        headerReader->Update();
        inHeaders.push_back(headerReader->GetOutput());
        //Status(std::endl;
      }
      mitk::ProgressBar::GetInstance()->Progress();

      //        // GROUP HEADERS
      //        mitk::GroupDiffusionHeadersFilter::Pointer grouper
      //            = mitk::GroupDiffusionHeadersFilter::New();
      //        mitk::GroupDiffusionHeadersFilter::OutputType outHeaders;
      //        grouper->SetInput(inHeaders);
      //        grouper->Update();
      //        outHeaders = grouper->GetOutput();

      // READ VOLUMES
      PrintMemoryUsage();
      Status(QString("Loading Volumes %1").arg(folderName));
      typedef short PixelValueType;
      typedef mitk::DicomDiffusionImageReader< PixelValueType, 3 > VolumesReader;
      VolumesReader::Pointer vReader = VolumesReader::New();
      VolumesReader::HeaderContainer hc = inHeaders;

      //        hc.insert(hc.end(), outHeaders[1].begin(), outHeaders[1].end() );
      //        hc.insert(hc.end(), outHeaders[2].begin(), outHeaders[2].end() );
      if(hc.size()>1)
      {
        vReader->SetHeaders(hc);
        vReader->Update();
        VolumesReader::OutputImageType::Pointer vecImage;
        vecImage = vReader->GetOutput();
        Status(QString("Volumes Loaded (%1)").arg(folderName));

        // CONSTRUCT CONTAINER WITH DIRECTIONS
        typedef vnl_vector_fixed< double, 3 >            GradientDirectionType;
        typedef itk::VectorContainer< unsigned int,
        GradientDirectionType >                  GradientDirectionContainerType;
        GradientDirectionContainerType::Pointer directions =
            GradientDirectionContainerType::New();
        std::vector<double> b_vals;
        double maxb = 0;
        for(unsigned int i=0; i<hc.size(); i++)
        {
          double bv = hc[i]->bValue;
          if(maxb<bv)
          {
            maxb = bv;
          }
          b_vals.push_back(bv);
        }

        for(unsigned int i=0; i<hc.size(); i++)
        {
          vnl_vector_fixed<double, 3> vect = hc[i]->DiffusionVector;
          vect.normalize();
          vect *= sqrt(b_vals[i]/maxb);
          directions->push_back(vect);
        }

        // DWI TO DATATREE
        PrintMemoryUsage();
        Status(QString("Initializing Diffusion Image"));
        typedef mitk::DiffusionImage<PixelValueType> DiffVolumesType;
        DiffVolumesType::Pointer diffImage = DiffVolumesType::New();
        diffImage->SetDirections(directions);
        diffImage->CorrectDKFZBrokenGradientScheme(m_Controls->m_Blur->value());
        diffImage->SetVectorImage(vecImage);
        diffImage->SetB_Value(maxb);
        diffImage->InitializeFromVectorImage();
        Status(QString("Diffusion Image initialized"));

        if(m_Controls->m_DicomLoadAverageDuplicatesCheckbox->isChecked())
        {
          PrintMemoryUsage();
          Status(QString("Averaging gradient directions"));
          diffImage->AverageRedundantGradients(m_Controls->m_Blur->value());
        }

        //if(m_Controls->m_DicomLoadDuplicateIfSingleSliceCheckbox->isChecked())
        //  diffVolumes->DuplicateIfSingleSlice();

        QString descr = QString("%1_%2_%3")
                        .arg(((inHeaders)[0])->seriesDescription.c_str())
                        .arg(((inHeaders)[0])->seriesNumber)
                        .arg(((inHeaders)[0])->patientName.c_str());
        descr = descr.trimmed();
        descr = descr.replace(" ", "_");

        if(!m_OutputFolderNameSet)
        {
          node=mitk::DataNode::New();
          node->SetData( diffImage );
          GetDefaultDataStorage()->Add(node);
          SetDwiNodeProperties(node, descr.toStdString().c_str());
          Status(QString("Image %1 added to datastorage").arg(descr));
        }
        else
        {
          typedef mitk::NrrdDiffusionImageWriter<PixelValueType> WriterType;
          WriterType::Pointer writer = WriterType::New();
          QString fullpath = QString("%1/%2.dwi")
                             .arg(m_OutputFolderName)
                             .arg(descr);
          std::string pathstring = itksys::SystemTools::ConvertToOutputPath(fullpath.toStdString().c_str());
          writer->SetFileName(pathstring);
          writer->SetInput(diffImage);
          try
          {
            writer->Update();
          }
          catch (itk::ExceptionObject &ex)
          {
            Error(QString("%1\n%2\n%3\n%4\n%5\n%6").arg(ex.GetNameOfClass()).arg(ex.GetFile()).arg(ex.GetLine()).arg(ex.GetLocation()).arg(ex.what()).arg(ex.GetDescription()));
            continue ;
          }
          Status(QString("Image %1 written to disc (%1)").arg(fullpath.toStdString().c_str()));
        }
      }
      else
      {
        Status(QString("No diffusion information found (%1)").arg(folderName));
      }

      Status(QString("Finished processing %1 with memory:").arg(folderName));
      PrintMemoryUsage();
      clock.Stop(folderName.toAscii());
      mitk::ProgressBar::GetInstance()->Progress();
    }

    Status("Timing information");
    clock.Report();
    
    if(!m_OutputFolderNameSet && node.IsNotNull())
    {
      mitk::BaseData::Pointer basedata = node->GetData();
      if (basedata.IsNotNull())
      {
        mitk::RenderingManager::GetInstance()->InitializeViews(
            basedata->GetTimeSlicedGeometry(), mitk::RenderingManager::REQUEST_UPDATE_ALL, true );
      }
    }

    mitk::RenderingManager::GetInstance()->RequestUpdateAll();

  }
  catch (itk::ExceptionObject &ex)
  {
    Error(QString("%1\n%2\n%3\n%4\n%5\n%6").arg(ex.GetNameOfClass()).arg(ex.GetFile()).arg(ex.GetLine()).arg(ex.GetLocation()).arg(ex.what()).arg(ex.GetDescription()));
    return ;
  }

  Status(QString("Finished import with memory:"));
  PrintMemoryUsage();
}
void QmitkDiffusionDicomImport::Error ( const char *  status ) [protected]

Definition at line 216 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StatusBar::GetInstance(), and MITK_ERROR.

{
  mitk::StatusBar::GetInstance()->DisplayErrorText(status);
  MITK_ERROR << status;
}
void QmitkDiffusionDicomImport::Error ( std::string  status ) [protected]

Definition at line 210 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StatusBar::GetInstance(), and MITK_ERROR.

{
  mitk::StatusBar::GetInstance()->DisplayErrorText(status.c_str());
  MITK_ERROR << status.c_str();
}
void QmitkDiffusionDicomImport::Error ( QString  status ) [protected]

Definition at line 204 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StatusBar::GetInstance(), and MITK_ERROR.

Referenced by DicomLoadStartLoad().

{
  mitk::StatusBar::GetInstance()->DisplayErrorText(status.toAscii());
  MITK_ERROR << status.toStdString().c_str();
}
std::string QmitkDiffusionDicomImport::FormatMemorySize ( vcl_size_t  size ) [protected]

Definition at line 230 of file QmitkDiffusionDicomImportView.cpp.

Referenced by GetMemoryDescription().

{
  double val = size;
  std::string descriptor("B");
  if ( val >= 1000.0 )
  {
    val /= 1024.0;
    descriptor = "KB";
  }
  if ( val >= 1000.0 )
  {
    val /= 1024.0;
    descriptor = "MB";
  }
  if ( val >= 1000.0 )
  {
    val /= 1024.0;
    descriptor = "GB";
  }
  std::ostringstream str;
  str << std::fixed << std::setprecision(2) << val << " " << descriptor;
  return str.str();
}
std::string QmitkDiffusionDicomImport::FormatPercentage ( double  val ) [protected]

Definition at line 254 of file QmitkDiffusionDicomImportView.cpp.

Referenced by GetMemoryDescription().

{
  std::ostringstream str;
  str << std::fixed << std::setprecision(2) << val << " " << "%";
  return str.str();
}
std::string QmitkDiffusionDicomImport::GetMemoryDescription ( vcl_size_t  processSize,
float  percentage 
) [protected]

Definition at line 261 of file QmitkDiffusionDicomImportView.cpp.

References FormatMemorySize(), and FormatPercentage().

Referenced by PrintMemoryUsage().

{
  std::ostringstream str;
  str << FormatMemorySize(processSize) << " (" << FormatPercentage( percentage ) <<")" ;
  return str.str();
}
void QmitkDiffusionDicomImport::OutputClear (  ) [protected, slot]
void QmitkDiffusionDicomImport::OutputSet (  ) [protected, slot]

Definition at line 103 of file QmitkDiffusionDicomImportView.cpp.

References m_Controls, m_OutputFolderName, m_OutputFolderNameSet, Ui_QmitkDiffusionDicomImportControls::m_OutputLabel, and m_Parent.

Referenced by CreateConnections().

{
  // SELECT FOLDER DIALOG
  QFileDialog* w = new QFileDialog( m_Parent, QString("Select folders containing DWI data") );
  w->setFileMode( QFileDialog::Directory );

  // RETRIEVE SELECTION
  if ( w->exec() != QDialog::Accepted )
    return;

  m_OutputFolderName = w->selectedFiles()[0];
  m_OutputFolderNameSet = true;
  m_Controls->m_OutputLabel->setText(m_OutputFolderName);
}
void QmitkDiffusionDicomImport::PrintMemoryUsage (  ) [protected]

Definition at line 222 of file QmitkDiffusionDicomImportView.cpp.

References GetMemoryDescription(), mitk::MemoryUtilities::GetProcessMemoryUsage(), mitk::MemoryUtilities::GetTotalSizeOfPhysicalRam(), and MITK_INFO.

Referenced by DicomLoadStartLoad().

{
  size_t processSize = mitk::MemoryUtilities::GetProcessMemoryUsage();
  size_t totalSize =  mitk::MemoryUtilities::GetTotalSizeOfPhysicalRam();
  float percentage = ( (float) processSize / (float) totalSize ) * 100.0;
  MITK_INFO << "Current memory usage: " << GetMemoryDescription( processSize, percentage );
}
void QmitkDiffusionDicomImport::SetDwiNodeProperties ( mitk::DataNode::Pointer  node,
std::string  name 
)

Definition at line 660 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StringProperty::New(), and mitk::BoolProperty::New().

Referenced by DicomLoadStartLoad().

{

  node->SetProperty( "IsDWIRawVolume", mitk::BoolProperty::New( true ) );

  // set foldername as string property
  mitk::StringProperty::Pointer nameProp = mitk::StringProperty::New( name );
  node->SetProperty( "name", nameProp );
}
void QmitkDiffusionDicomImport::Status ( const char *  status ) [protected]

Definition at line 198 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StatusBar::GetInstance(), and MITK_INFO.

{
  mitk::StatusBar::GetInstance()->DisplayText(status);
  MITK_INFO << status;
}
void QmitkDiffusionDicomImport::Status ( QString  status ) [protected]

Definition at line 186 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StatusBar::GetInstance(), and MITK_INFO.

Referenced by DicomLoadStartLoad().

{
  mitk::StatusBar::GetInstance()->DisplayText(status.toAscii());
  MITK_INFO << status.toStdString().c_str();
}
void QmitkDiffusionDicomImport::Status ( std::string  status ) [protected]

Definition at line 192 of file QmitkDiffusionDicomImportView.cpp.

References mitk::StatusBar::GetInstance(), and MITK_INFO.

{
  mitk::StatusBar::GetInstance()->DisplayText(status.c_str());
  MITK_INFO << status.c_str();
}

Member Data Documentation

controls containing sliders for scrolling through the slices

Definition at line 101 of file QmitkDiffusionDicomImportView.h.

Referenced by AverageClicked(), CreateConnections(), CreateQtPartControl(), DicomLoadAddFolderNames(), DicomLoadDeleteFolderNames(), DicomLoadStartLoad(), OutputClear(), and OutputSet().

Definition at line 103 of file QmitkDiffusionDicomImportView.h.

Definition at line 107 of file QmitkDiffusionDicomImportView.h.

Referenced by DicomLoadStartLoad(), OutputClear(), and OutputSet().

Definition at line 108 of file QmitkDiffusionDicomImportView.h.

Referenced by DicomLoadStartLoad(), OutputClear(), and OutputSet().

Saves the parent of this view (this is the scrollarea created in CreatePartControl(void*)

See also:
CreatePartControl(void*)

Reimplemented from QmitkFunctionality.

Definition at line 105 of file QmitkDiffusionDicomImportView.h.

Referenced by CreateQtPartControl(), DicomLoadAddFolderNames(), and OutputSet().

const std::string QmitkDiffusionDicomImport::VIEW_ID = "org.mitk.views.diffusiondicomimport" [static]

Definition at line 38 of file QmitkDiffusionDicomImportView.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines