Public Member Functions | Protected Slots

QmitkFileOpenAction Class Reference

#include <QmitkFileOpenAction.h>

Collaboration diagram for QmitkFileOpenAction:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 QmitkFileOpenAction (berry::IWorkbenchWindow::Pointer window)
 QmitkFileOpenAction (const QIcon &icon, berry::IWorkbenchWindow::Pointer window)

Protected Slots

void Run ()

Detailed Description

Definition at line 36 of file QmitkFileOpenAction.h.


Constructor & Destructor Documentation

QmitkFileOpenAction::QmitkFileOpenAction ( berry::IWorkbenchWindow::Pointer  window )

Definition at line 41 of file QmitkFileOpenAction.cpp.

: QAction(0)
{
  this->init(window);
}
QmitkFileOpenAction::QmitkFileOpenAction ( const QIcon &  icon,
berry::IWorkbenchWindow::Pointer  window 
)

Definition at line 47 of file QmitkFileOpenAction.cpp.

: QAction(0)
{
  this->setIcon(icon);

  this->init(window);
}

Member Function Documentation

void QmitkFileOpenAction::Run (  ) [protected, slot]

stores the last path of last opened file

Definition at line 70 of file QmitkFileOpenAction.cpp.

References berry::SmartPointer< TObjectType >::Cast(), QmitkStdMultiWidgetEditor::EDITOR_ID, berry::IWorkbenchWindow::GetActivePage(), mitk::RenderingManager::GetInstance(), mitk::CoreObjectFactory::GetInstance(), berry::SmartPointer< TObjectType >::IsNull(), mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), mitk::NodePredicateNot::New(), and mitk::DataNodeFactory::New().

{
  static QString m_LastPath;

  if(m_GeneralPreferencesNode.Lock().IsNotNull())
  {
    if(m_LastPath.isEmpty())
      m_LastPath = QString::fromStdString(m_GeneralPreferencesNode.Lock()->Get("LastFileOpenPath", ""));
  }


  //QFileDialog dialog(static_cast<QWidget*>(m_Window->GetShell()->GetControl()));
  //dialog.setFileMode(QFileDialog::ExistingFiles);
  //QStringList filters;
  //filters << "Images (*.pic *.pic.gz *.vti *.dcm *.nhdr *.nrrd *.mhd)" 
  //  << "Surfaces (*.stl *.vtk *.vtp)"
  //  << "MITK Pointset (*.mps)"
  //  << "All Files (*.*)";
  //dialog.setFilters(filters);
  QStringList fileNames = QFileDialog::getOpenFileNames(NULL,"Open",m_LastPath,mitk::CoreObjectFactory::GetInstance()->GetFileExtensions());

  //if (dialog.exec())
  //  fileNames = dialog.selectedFiles();

  if (fileNames.empty()) 
    return;

  QFileInfo info(fileNames.at(0));
  m_LastPath = info.filePath();
  if(m_GeneralPreferencesNode.Lock().IsNotNull())
  {
    m_GeneralPreferencesNode.Lock()->Put("LastFileOpenPath", m_LastPath.toStdString());
    m_GeneralPreferencesNode.Lock()->Flush();
  }

  mitk::DataStorageEditorInput::Pointer editorInput;
  mitk::DataStorage::Pointer dataStorage;
  QmitkStdMultiWidgetEditor::Pointer multiWidgetEditor;
  berry::IEditorPart::Pointer editor = m_Window->GetActivePage()->GetActiveEditor();
  if (editor.Cast<QmitkStdMultiWidgetEditor>().IsNull())
  {
    editorInput = new mitk::DataStorageEditorInput();
    dataStorage = editorInput->GetDataStorageReference()->GetDataStorage();
  }
  else
  {
    multiWidgetEditor = editor.Cast<QmitkStdMultiWidgetEditor>();
    dataStorage = multiWidgetEditor->GetEditorInput().Cast<mitk::DataStorageEditorInput>()->GetDataStorageReference()->GetDataStorage();
  }

  if (multiWidgetEditor.IsNull())
  {
    berry::IEditorPart::Pointer editor = m_Window->GetActivePage()->OpenEditor(editorInput, QmitkStdMultiWidgetEditor::EDITOR_ID);
    multiWidgetEditor = editor.Cast<QmitkStdMultiWidgetEditor>();
  }
  else
  {
    multiWidgetEditor->GetStdMultiWidget()->RequestUpdate();
  }

  bool dsmodified = false;
  for (QStringList::Iterator fileName = fileNames.begin();
    fileName != fileNames.end(); ++fileName)
  {

    mitk::DataNodeFactory::Pointer nodeReader = mitk::DataNodeFactory::New();
    try
    {
      nodeReader->SetFileName(fileName->toStdString());
      nodeReader->Update();
      for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
      {
        mitk::DataNode::Pointer node;
        node = nodeReader->GetOutput(i);
        if ( node->GetData() != NULL )
        {  
          dataStorage->Add(node);
          dsmodified = true;
        }
      }
    }
    catch(...)
    {

    }

  }
  

  if(dsmodified)
  {
    // get all nodes that have not set "includeInBoundingBox" to false
    mitk::NodePredicateNot::Pointer pred 
      = mitk::NodePredicateNot::New(mitk::NodePredicateProperty::New("includeInBoundingBox"
      , mitk::BoolProperty::New(false)));

    mitk::DataStorage::SetOfObjects::ConstPointer rs = dataStorage->GetSubset(pred);
    // calculate bounding geometry of these nodes
    mitk::TimeSlicedGeometry::Pointer bounds = dataStorage->ComputeBoundingGeometry3D(rs);
    // initialize the views to the bounding geometry
    mitk::RenderingManager::GetInstance()->InitializeViews(bounds);
  }

 
}

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