#include <QmitkExtFileSaveProjectAction.h>

Public Member Functions | |
| QmitkExtFileSaveProjectAction (berry::IWorkbenchWindow::Pointer window) | |
Protected Slots | |
| void | Run () |
Definition at line 34 of file QmitkExtFileSaveProjectAction.h.
| QmitkExtFileSaveProjectAction::QmitkExtFileSaveProjectAction | ( | berry::IWorkbenchWindow::Pointer | window ) |
Definition at line 36 of file QmitkExtFileSaveProjectAction.cpp.
References Run().
: QAction(0)
{
m_Window = window;
this->setParent(static_cast<QWidget*>(m_Window->GetShell()->GetControl()));
this->setText("&Save Project...");
this->setToolTip("Save content of Data Manager as a .mitk project file");
m_Window = window;
this->connect(this, SIGNAL(triggered(bool)), this, SLOT(Run()));
}
| void QmitkExtFileSaveProjectAction::Run | ( | ) | [protected, slot] |
Definition at line 48 of file QmitkExtFileSaveProjectAction.cpp.
References berry::SmartPointer< TObjectType >::Cast(), mitk::ProgressBar::GetInstance(), MITK_ERROR, MITK_WARN, mitk::BoolProperty::New(), mitk::NodePredicateProperty::New(), mitk::NodePredicateNot::New(), and mitk::SceneIO::New().
Referenced by QmitkExtFileSaveProjectAction().
{
try
{
QString fileName = QFileDialog::getSaveFileName(NULL, "Save MITK scene", QString::null, "MITK scene files (*.mitk)", NULL );
if (fileName.isEmpty() )
return;
if ( fileName.right(5) != ".mitk" )
fileName += ".mitk";
mitk::SceneIO::Pointer sceneIO = mitk::SceneIO::New();
mitk::DataStorageEditorInput::Pointer editorInput;
mitk::DataStorage::Pointer storage;
QmitkStdMultiWidgetEditor::Pointer multiWidgetEditor;
berry::IEditorPart::Pointer editor = m_Window->GetActivePage()->GetActiveEditor();
if (editor.Cast<QmitkStdMultiWidgetEditor>().IsNull())
{
editorInput = new mitk::DataStorageEditorInput();
storage = editorInput->GetDataStorageReference()->GetDataStorage();
}
else
{
multiWidgetEditor = editor.Cast<QmitkStdMultiWidgetEditor>();
storage = multiWidgetEditor->GetEditorInput().Cast<mitk::DataStorageEditorInput>()->GetDataStorageReference()->GetDataStorage();
}
mitk::ProgressBar::GetInstance()->AddStepsToDo(2);
/* Build list of nodes that should be saved */
mitk::NodePredicateNot::Pointer isNotHelperObject = mitk::NodePredicateNot::New(mitk::NodePredicateProperty::New("helper object", mitk::BoolProperty::New(true)));
mitk::DataStorage::SetOfObjects::ConstPointer nodesToBeSaved = storage->GetSubset(isNotHelperObject);
if ( !sceneIO->SaveScene( nodesToBeSaved, storage, fileName.toLocal8Bit().constData() ) )
{
QMessageBox::information(NULL,
"Scene saving",
"Scene could not be written completely. Please check the log.",
QMessageBox::Ok);
}
mitk::ProgressBar::GetInstance()->Progress(2);
mitk::SceneIO::FailedBaseDataListType::ConstPointer failedNodes = sceneIO->GetFailedNodes();
if (!failedNodes->empty())
{
std::stringstream ss;
ss << "The following nodes could not be serialized:" << std::endl;
for ( mitk::SceneIO::FailedBaseDataListType::const_iterator iter = failedNodes->begin();
iter != failedNodes->end();
++iter )
{
ss << " - ";
if ( mitk::BaseData* data =(*iter)->GetData() )
{
ss << data->GetNameOfClass();
}
else
{
ss << "(NULL)";
}
ss << " contained in node '" << (*iter)->GetName() << "'" << std::endl;
}
MITK_WARN << ss.str();
}
mitk::PropertyList::ConstPointer failedProperties = sceneIO->GetFailedProperties();
if (!failedProperties->GetMap()->empty())
{
std::stringstream ss;
ss << "The following properties could not be serialized:" << std::endl;
const mitk::PropertyList::PropertyMap* propmap = failedProperties->GetMap();
for ( mitk::PropertyList::PropertyMap::const_iterator iter = propmap->begin();
iter != propmap->end();
++iter )
{
ss << " - " << iter->second.first->GetNameOfClass() << " associated to key '" << iter->first << "'" << std::endl;
}
MITK_WARN << ss.str();
}
}
catch (std::exception& e)
{
MITK_ERROR << "Exception caught during scene saving: " << e.what();
}
}
1.7.2