#include <QmitkFileOpenAction.h>
Public Member Functions | |
QmitkFileOpenAction (berry::IWorkbenchWindow::Pointer window) | |
QmitkFileOpenAction (const QIcon &icon, berry::IWorkbenchWindow::Pointer window) | |
Protected Slots | |
void | Run () |
Definition at line 36 of file QmitkFileOpenAction.h.
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); }
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); } }