#include <QmitkExtFileOpenAction.h>

Public Member Functions | |
| QmitkExtFileOpenAction (berry::IWorkbenchWindow::Pointer window) | |
| QmitkExtFileOpenAction (const QIcon &icon, berry::IWorkbenchWindow::Pointer window) | |
Protected Slots | |
| void | Run () |
Definition at line 36 of file QmitkExtFileOpenAction.h.
| QmitkExtFileOpenAction::QmitkExtFileOpenAction | ( | berry::IWorkbenchWindow::Pointer | window ) |
Definition at line 43 of file QmitkExtFileOpenAction.cpp.
: QAction(0)
{
this->init(window);
}
| QmitkExtFileOpenAction::QmitkExtFileOpenAction | ( | const QIcon & | icon, |
| berry::IWorkbenchWindow::Pointer | window | ||
| ) |
Definition at line 49 of file QmitkExtFileOpenAction.cpp.
: QAction(0)
{
this->setIcon(icon);
this->init(window);
}
| void QmitkExtFileOpenAction::Run | ( | ) | [protected, slot] |
stores the last path of last opened file
Definition at line 73 of file QmitkExtFileOpenAction.cpp.
References berry::SmartPointer< TObjectType >::Cast(), QmitkStdMultiWidgetEditor::EDITOR_ID, mitk::RenderingManager::GetInstance(), mitk::ProgressBar::GetInstance(), mitk::CoreObjectFactory::GetInstance(), berry::SmartPointer< TObjectType >::IsNull(), mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), mitk::NodePredicateNot::New(), mitk::DataNodeFactory::New(), and mitk::SceneIO::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);
std::stringstream ss;
ss << mitk::CoreObjectFactory::GetInstance()->GetFileExtensions();
std::string fileExtensions = ss.str();
fileExtensions.append(";;MITK Scene Files (*.mitk)");
fileExtensions.insert( fileExtensions.find("all (") + 5, "*.mitk " );
QStringList fileNames = QFileDialog::getOpenFileNames(NULL, "Open", m_LastPath, fileExtensions.c_str() );
//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)
{
if ( fileName->right(5) == ".mitk" )
{
mitk::SceneIO::Pointer sceneIO = mitk::SceneIO::New();
bool clearDataStorageFirst(false);
mitk::ProgressBar::GetInstance()->AddStepsToDo(2);
dataStorage = sceneIO->LoadScene( fileName->toLocal8Bit().constData(), dataStorage, clearDataStorageFirst );
dsmodified = true;
mitk::ProgressBar::GetInstance()->Progress(2);
}
else
{
mitk::DataNodeFactory::Pointer nodeReader = mitk::DataNodeFactory::New();
try
{
nodeReader->SetFileName(fileName->toLocal8Bit().data());
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);
}
}
1.7.2