Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F388
SceneIOCopiedActionsPatch.patch
Public
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
•
wald
Feb 3 2010, 4:53 PM
2010-02-03 16:53:48 (UTC+1)
Size
32 KB
Referenced Files
None
Subscribers
None
SceneIOCopiedActionsPatch.patch
View Options
Index: mitk/Core/Code/Algorithms/mitkCoreObjectFactory.cpp
===================================================================
--- mitk/Core/Code/Algorithms/mitkCoreObjectFactory.cpp (revision 21196)
+++ mitk/Core/Code/Algorithms/mitkCoreObjectFactory.cpp (working copy)
@@ -299,8 +299,7 @@
#define INTERNAL_FILE_EXTENSIONS \
"all (*.seq *.mps *.nii *.pic *.pic.gz *.seq.gz *.pvtk *.stl *.vtk *.vtp *.vtu *.obj *.vti *.ves *.nrrd *.nhdr " \
- "*.uvg *.dvg *.par *.dcm *.dc3 *.gdcm *.ima *.mhd *.hdr hpsonos.db HPSONOS.DB *.ssm *msm *.bmp *.png *.jpg *.tiff *.mitk);;" \
- "Project files(*.mitk);;" \
+ "*.uvg *.dvg *.par *.dcm *.dc3 *.gdcm *.ima *.mhd *.hdr hpsonos.db HPSONOS.DB *.ssm *msm *.bmp *.png *.jpg *.tiff);;" \
"DKFZ Pic (*.seq *.pic *.pic.gz *.seq.gz);;" \
"NRRD Vector Images (*.nrrd *.nhdr);;" \
"Point sets (*.mps);;" \
Index: mitk/CoreUI/Bundles/org.mitk.gui.qt.common/CMakeLists.txt
===================================================================
--- mitk/CoreUI/Bundles/org.mitk.gui.qt.common/CMakeLists.txt (revision 21196)
+++ mitk/CoreUI/Bundles/org.mitk.gui.qt.common/CMakeLists.txt (working copy)
@@ -1 +1 @@
-MACRO_CREATE_MITK_PLUGIN(Qmitk SceneSerialization)
+MACRO_CREATE_MITK_PLUGIN(Qmitk)
Index: mitk/CoreUI/Bundles/org.mitk.gui.qt.common/files.cmake
===================================================================
--- mitk/CoreUI/Bundles/org.mitk.gui.qt.common/files.cmake (revision 21196)
+++ mitk/CoreUI/Bundles/org.mitk.gui.qt.common/files.cmake (working copy)
@@ -3,7 +3,6 @@
QmitkDnDFrameWidget.cpp
QmitkDataTreeNodeSelectionProvider.cpp
QmitkFileOpenAction.cpp
- QmitkFileSaveProjectAction.cpp
QmitkFileExitAction.cpp
QmitkFunctionality.cpp
QmitkProgressBar.cpp
@@ -21,7 +20,6 @@
SET(MOC_H_FILES
src/QmitkCloseProjectAction.h
src/QmitkFileOpenAction.h
- src/QmitkFileSaveProjectAction.h
src/QmitkFileExitAction.h
src/QmitkProgressBar.h
src/QmitkPreferencesDialog.h
Index: mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkDnDFrameWidget.cpp
===================================================================
--- mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkDnDFrameWidget.cpp (revision 21196)
+++ mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkDnDFrameWidget.cpp (working copy)
@@ -16,8 +16,6 @@
#include "mitkNodePredicateNOT.h"
#include "mitkNodePredicateProperty.h"
-
-#include "mitkSceneIO.h"
#include "mitkProgressBar.h"
QmitkDnDFrameWidget::QmitkDnDFrameWidget(QWidget *parent)
@@ -48,39 +46,28 @@
for (QList<QUrl>::Iterator fileName = fileNames.begin();
fileName != fileNames.end(); ++fileName)
{
- if ( fileName->toLocalFile().right(5) == ".mitk" )
- {
- mitk::SceneIO::Pointer sceneIO = mitk::SceneIO::New();
- bool clearDataStorageFirst(false);
- mitk::ProgressBar::GetInstance()->AddStepsToDo(2);
- ds = sceneIO->LoadScene( fileName->toLocalFile().toLocal8Bit().constData(), ds, clearDataStorageFirst );
- dsmodified = true;
- mitk::ProgressBar::GetInstance()->Progress(2);
- }
- else
+ mitk::DataTreeNodeFactory::Pointer nodeReader = mitk::DataTreeNodeFactory::New();
+ try
{
- mitk::DataTreeNodeFactory::Pointer nodeReader = mitk::DataTreeNodeFactory::New();
- try
+ nodeReader->SetFileName(fileName->toLocalFile().toLatin1().data());
+ nodeReader->Update();
+ for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
{
- nodeReader->SetFileName(fileName->toLocalFile().toLatin1().data());
- nodeReader->Update();
- for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
- {
- mitk::DataTreeNode::Pointer node;
- node = nodeReader->GetOutput(i);
- if ( node->GetData() != NULL )
- {
- ds->Add(node);
- dsmodified = true;
- }
+ mitk::DataTreeNode::Pointer node;
+ node = nodeReader->GetOutput(i);
+ if ( node->GetData() != NULL )
+ {
+ ds->Add(node);
+ dsmodified = true;
}
}
- catch(...)
- {
+ }
+ catch(...)
+ {
- }
}
+
}
if(dsmodified)
Index: mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileOpenAction.cpp
===================================================================
--- mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileOpenAction.cpp (revision 21196)
+++ mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileOpenAction.cpp (working copy)
@@ -21,7 +21,6 @@
#include <QFileInfo>
#include <mitkDataTreeNodeFactory.h>
-#include "mitkSceneIO.h"
#include "mitkProgressBar.h"
#include <mitkCoreObjectFactory.h>
@@ -125,39 +124,28 @@
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::DataTreeNodeFactory::Pointer nodeReader = mitk::DataTreeNodeFactory::New();
+ try
{
- mitk::DataTreeNodeFactory::Pointer nodeReader = mitk::DataTreeNodeFactory::New();
- try
+ nodeReader->SetFileName(fileName->toStdString());
+ nodeReader->Update();
+ for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
{
- nodeReader->SetFileName(fileName->toStdString());
- nodeReader->Update();
- for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
- {
- mitk::DataTreeNode::Pointer node;
- node = nodeReader->GetOutput(i);
- if ( node->GetData() != NULL )
- {
- dataStorage->Add(node);
- dsmodified = true;
- }
+ mitk::DataTreeNode::Pointer node;
+ node = nodeReader->GetOutput(i);
+ if ( node->GetData() != NULL )
+ {
+ dataStorage->Add(node);
+ dsmodified = true;
}
}
- catch(...)
- {
+ }
+ catch(...)
+ {
- }
}
+
}
if (multiWidgetEditor.IsNull())
Index: mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileSaveProjectAction.cpp
===================================================================
--- mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileSaveProjectAction.cpp (revision 21196)
+++ mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileSaveProjectAction.cpp (working copy)
@@ -1,139 +0,0 @@
-/*=========================================================================
-
-Program: Medical Imaging & Interaction Toolkit
-Language: C++
-Date: $Date: 2009-10-07 16:14:59 +0200 (Mi, 07 Okt 2009) $
-Version: $Revision: 19343 $
-
-Copyright (c) German Cancer Research Center, Division of Medical and
-Biological Informatics. All rights reserved.
-See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
-
-This software is distributed WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. See the above copyright notices for more information.
-
-=========================================================================*/
-
-#include "QmitkFileSaveProjectAction.h"
-
-#include <QFileDialog>
-#include <QMessageBox>
-
-#include "mitkSceneIO.h"
-#include "mitkProgressBar.h"
-#include <mitkNodePredicateNOT.h>
-#include <mitkNodePredicateProperty.h>
-#include <mitkProperties.h>
-
-#include <mitkCoreObjectFactory.h>
-#include <mitkDataStorageEditorInput.h>
-#include <berryIEditorPart.h>
-#include <berryIWorkbenchPage.h>
-
-#include "QmitkStdMultiWidgetEditor.h"
-
-QmitkFileSaveProjectAction::QmitkFileSaveProjectAction(berry::IWorkbenchWindow::Pointer window)
-: 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 QmitkFileSaveProjectAction::Run()
-{
- 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.IsNotNull())
- {
- 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.IsNotNull())
- {
- 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();
- }
-}
Index: mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileSaveProjectAction.h
===================================================================
--- mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileSaveProjectAction.h (revision 21196)
+++ mitk/CoreUI/Bundles/org.mitk.gui.qt.common/src/QmitkFileSaveProjectAction.h (working copy)
@@ -1,52 +0,0 @@
-/*=========================================================================
-
-Program: Medical Imaging & Interaction Toolkit
-Language: C++
-Date: $Date: 2009-10-09 16:36:23 +0200 (Fr, 09 Okt 2009) $
-Version: $Revision: 19414 $
-
-Copyright (c) German Cancer Research Center, Division of Medical and
-Biological Informatics. All rights reserved.
-See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
-
-This software is distributed WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE. See the above copyright notices for more information.
-
-=========================================================================*/
-
-#ifndef QmitkFileSaveProjectAction_H_
-#define QmitkFileSaveProjectAction_H_
-
-#ifdef __MINGW32__
-// We need to inlclude winbase.h here in order to declare
-// atomic intrinsics like InterlockedIncrement correctly.
-// Otherwhise, they would be declared wrong within qatomic_windows.h .
-#include <windows.h>
-#endif
-
-#include <QAction>
-
-#include "mitkQtCommonDll.h"
-
-#include <berryIWorkbenchWindow.h>
-
-class MITK_QT_COMMON QmitkFileSaveProjectAction : public QAction
-{
- Q_OBJECT
-
-public:
-
- QmitkFileSaveProjectAction(berry::IWorkbenchWindow::Pointer window);
-
-protected slots:
-
- void Run();
-
-private:
-
- berry::IWorkbenchWindow::Pointer m_Window;
-};
-
-
-#endif /*QmitkFileSaveProjectAction_H_*/
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/CMakeLists.txt
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/CMakeLists.txt (revision 21196)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/CMakeLists.txt (working copy)
@@ -1,2 +1,2 @@
-MACRO_CREATE_MITK_PLUGIN(QmitkExt)
+MACRO_CREATE_MITK_PLUGIN(QmitkExt SceneSerialization)
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/files.cmake
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/files.cmake (revision 21196)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/files.cmake (working copy)
@@ -1,6 +1,9 @@
SET(SRC_CPP_FILES
QmitkExtActionBarAdvisor.cpp
QmitkExtWorkbenchWindowAdvisor.cpp
+ QmitkExtFileOpenAction.cpp
+ QmitkExtDnDFrameWidget.cpp
+ QmitkExtFileSaveProjectAction.cpp
)
SET(INTERNAL_CPP_FILES
@@ -13,6 +16,10 @@
SET(MOC_H_FILES
src/internal/QmitkExtWorkbenchWindowAdvisorHack.h
+ src/QmitkExtFileOpenAction.h
+ src/QmitkExtFileSaveProjectAction.h
+ src/QmitkExtDnDFrameWidget.h
+
)
SET(RESOURCE_FILES
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtDnDFrameWidget.cpp
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtDnDFrameWidget.cpp (revision 0)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtDnDFrameWidget.cpp (revision 0)
@@ -0,0 +1,99 @@
+
+#include <QmitkExtDnDFrameWidget.h>
+#include <QtGui>
+
+
+// berry Includes
+#include <berryPlatform.h>
+
+#include <mitkDataTreeNodeFactory.h>
+#include "mitkIDataStorageService.h"
+#include "mitkDataStorageEditorInput.h"
+#include "mitkRenderingManager.h"
+
+#include "mitkProperties.h"
+#include "mitkNodePredicateData.h"
+#include "mitkNodePredicateNOT.h"
+#include "mitkNodePredicateProperty.h"
+
+
+#include "mitkSceneIO.h"
+#include "mitkProgressBar.h"
+
+QmitkExtDnDFrameWidget::QmitkExtDnDFrameWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ setAcceptDrops(true);
+}
+
+void QmitkExtDnDFrameWidget::dragEnterEvent( QDragEnterEvent *event )
+{ // accept drags
+ event->accept();
+}
+void QmitkExtDnDFrameWidget::dropEvent( QDropEvent * event )
+{ //open dragged files
+
+ mitk::IDataStorageService::Pointer service =
+ berry::Platform::GetServiceRegistry().GetServiceById<mitk::IDataStorageService>(mitk::IDataStorageService::ID);
+
+ mitk::DataStorage::Pointer ds;
+ if (service.IsNotNull())
+ ds = service->GetActiveDataStorage()->GetDataStorage();
+ else
+ return;
+
+ QList<QUrl> fileNames = event->mimeData()->urls();
+
+ bool dsmodified = false;
+ for (QList<QUrl>::Iterator fileName = fileNames.begin();
+ fileName != fileNames.end(); ++fileName)
+ {
+ if ( fileName->toLocalFile().right(5) == ".mitk" )
+ {
+ mitk::SceneIO::Pointer sceneIO = mitk::SceneIO::New();
+
+ bool clearDataStorageFirst(false);
+ mitk::ProgressBar::GetInstance()->AddStepsToDo(2);
+ ds = sceneIO->LoadScene( fileName->toLocalFile().toLocal8Bit().constData(), ds, clearDataStorageFirst );
+ dsmodified = true;
+ mitk::ProgressBar::GetInstance()->Progress(2);
+ }
+ else
+ {
+ mitk::DataTreeNodeFactory::Pointer nodeReader = mitk::DataTreeNodeFactory::New();
+ try
+ {
+ nodeReader->SetFileName(fileName->toLocalFile().toLatin1().data());
+ nodeReader->Update();
+ for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
+ {
+ mitk::DataTreeNode::Pointer node;
+ node = nodeReader->GetOutput(i);
+ if ( node->GetData() != NULL )
+ {
+ ds->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 = ds->GetSubset(pred);
+ // calculate bounding geometry of these nodes
+ mitk::TimeSlicedGeometry::Pointer bounds = ds->ComputeBoundingGeometry3D(rs);
+ // initialize the views to the bounding geometry
+ mitk::RenderingManager::GetInstance()->InitializeViews(bounds);
+ }
+}
\ No newline at end of file
Property changes on: mitk\Modules\Bundles\org.mitk.gui.qt.ext\src\QmitkExtDnDFrameWidget.cpp
___________________________________________________________________
Added: svn:eol-style
+ native
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtDnDFrameWidget.h
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtDnDFrameWidget.h (revision 0)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtDnDFrameWidget.h (revision 0)
@@ -0,0 +1,51 @@
+/*=========================================================================
+
+Program: Medical Imaging & Interaction Toolkit
+Language: C++
+Date: $Date: 2009-02-10 14:14:32 +0100 (Di, 10 Feb 2009) $
+Version: $Revision: 16224 $
+
+Copyright (c) German Cancer Research Center, Division of Medical and
+Biological Informatics. All rights reserved.
+See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
+
+This software is distributed WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+#ifndef QmitkExtDndFrameWidget_h
+#define QmitkExtDndFrameWidget_h
+
+#ifdef __MINGW32__
+// We need to inlclude winbase.h here in order to declare
+// atomic intrinsics like InterlockedIncrement correctly.
+// Otherwhise, they would be declared wrong within qatomic_windows.h .
+#include <windows.h>
+#endif
+
+#include <QWidget>
+#include "mitkQtCommonExtDll.h"
+//drag&drop
+class QDragEnterEvent;
+class QDropEvent;
+class QMouseEvent;
+
+class MITK_QT_COMMON_EXT_EXPORT QmitkExtDnDFrameWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ QmitkExtDnDFrameWidget(QWidget *parent);
+
+
+private:
+ void dragEnterEvent( QDragEnterEvent *event );
+ void dropEvent( QDropEvent * event );
+
+
+};
+
+
+#endif
Property changes on: mitk\Modules\Bundles\org.mitk.gui.qt.ext\src\QmitkExtDnDFrameWidget.h
___________________________________________________________________
Added: svn:eol-style
+ native
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileOpenAction.cpp
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileOpenAction.cpp (revision 0)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileOpenAction.cpp (revision 0)
@@ -0,0 +1,197 @@
+/*=========================================================================
+
+Program: Medical Imaging & Interaction Toolkit
+Language: C++
+Date: $Date: 2010-01-16 19:57:43 +0100 (Sa, 16 Jan 2010) $
+Version: $Revision: 21070 $
+
+Copyright (c) German Cancer Research Center, Division of Medical and
+Biological Informatics. All rights reserved.
+See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
+
+This software is distributed WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+#include "QmitkExtFileOpenAction.h"
+
+#include <QFileDialog>
+#include <QFileInfo>
+#include <mitkDataTreeNodeFactory.h>
+
+#include "mitkSceneIO.h"
+#include "mitkProgressBar.h"
+
+#include <mitkCoreExtObjectFactory.h>
+#include <mitkDataStorageEditorInput.h>
+#include <berryIEditorPart.h>
+#include <berryIWorkbenchPage.h>
+#include <berryIPreferencesService.h>
+#include <berryPlatform.h>
+
+#include "mitkProperties.h"
+#include "mitkNodePredicateData.h"
+#include "mitkNodePredicateNOT.h"
+#include "mitkNodePredicateProperty.h"
+
+
+#include "QmitkStdMultiWidgetEditor.h"
+
+QmitkExtFileOpenAction::QmitkExtFileOpenAction(berry::IWorkbenchWindow::Pointer window)
+: QAction(0)
+{
+ this->init(window);
+}
+
+QmitkExtFileOpenAction::QmitkExtFileOpenAction(const QIcon & icon, berry::IWorkbenchWindow::Pointer window)
+: QAction(0)
+{
+ this->setIcon(icon);
+
+ this->init(window);
+}
+
+void QmitkExtFileOpenAction::init(berry::IWorkbenchWindow::Pointer window)
+{
+ m_Window = window;
+ this->setParent(static_cast<QWidget*>(m_Window->GetShell()->GetControl()));
+ this->setText("&Open...");
+ this->setToolTip("Open data files (images, surfaces,...) and project files (.mitk)");
+
+ berry::IPreferencesService::Pointer prefService
+ = berry::Platform::GetServiceRegistry()
+ .GetServiceById<berry::IPreferencesService>(berry::IPreferencesService::ID);
+ m_GeneralPreferencesNode = prefService->GetSystemPreferences()->Node("/General");
+
+ this->connect(this, SIGNAL(triggered(bool)), this, SLOT(Run()));
+}
+
+void QmitkExtFileOpenAction::Run()
+{
+ /**
+ * @brief stores the last path of last opened file
+ */
+ 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::CoreExtObjectFactory::GetInstance()->GetFileExtensions();
+ std::string fileExtensions = ss.str();
+ fileExtensions.append(";; MITK Scene Files (*.mitk)");
+
+ fileExtensions.insert( fileExtensions.find("formats(") + 8, "*.mitk " );
+
+ MITK_INFO << fileExtensions;
+
+ 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();
+ }
+
+ 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::DataTreeNodeFactory::Pointer nodeReader = mitk::DataTreeNodeFactory::New();
+ try
+ {
+ nodeReader->SetFileName(fileName->toStdString());
+ nodeReader->Update();
+ for ( unsigned int i = 0 ; i < nodeReader->GetNumberOfOutputs( ); ++i )
+ {
+ mitk::DataTreeNode::Pointer node;
+ node = nodeReader->GetOutput(i);
+ if ( node->GetData() != NULL )
+ {
+ dataStorage->Add(node);
+ dsmodified = true;
+ }
+ }
+ }
+ catch(...)
+ {
+
+ }
+ }
+ }
+
+ if (multiWidgetEditor.IsNull())
+ {
+ berry::IEditorPart::Pointer editor = m_Window->GetActivePage()->OpenEditor(editorInput, QmitkStdMultiWidgetEditor::EDITOR_ID);
+ multiWidgetEditor = editor.Cast<QmitkStdMultiWidgetEditor>();
+ }
+ else
+ {
+ multiWidgetEditor->GetStdMultiWidget()->RequestUpdate();
+ }
+
+ 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);
+ }
+
+
+}
Property changes on: mitk\Modules\Bundles\org.mitk.gui.qt.ext\src\QmitkExtFileOpenAction.cpp
___________________________________________________________________
Added: svn:eol-style
+ native
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileOpenAction.h
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileOpenAction.h (revision 0)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileOpenAction.h (revision 0)
@@ -0,0 +1,55 @@
+/*=========================================================================
+
+Program: Medical Imaging & Interaction Toolkit
+Language: C++
+Date: $Date: 2010-01-16 19:57:43 +0100 (Sa, 16 Jan 2010) $
+Version: $Revision: 21070 $
+
+Copyright (c) German Cancer Research Center, Division of Medical and
+Biological Informatics. All rights reserved.
+See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
+
+This software is distributed WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+#ifndef QMITKEXTFILEOPENACTION_H_
+#define QMITKEXTFILEOPENACTION_H_
+
+#ifdef __MINGW32__
+// We need to inlclude winbase.h here in order to declare
+// atomic intrinsics like InterlockedIncrement correctly.
+// Otherwhise, they would be declared wrong within qatomic_windows.h .
+#include <windows.h>
+#endif
+
+#include <QAction>
+#include <QIcon>
+
+#include "mitkQtCommonExtDll.h"
+
+#include <berryIWorkbenchWindow.h>
+#include <berryIPreferences.h>
+
+class MITK_QT_COMMON_EXT_EXPORT QmitkExtFileOpenAction : public QAction
+{
+ Q_OBJECT
+
+public:
+ QmitkExtFileOpenAction(berry::IWorkbenchWindow::Pointer window);
+ QmitkExtFileOpenAction(const QIcon & icon, berry::IWorkbenchWindow::Pointer window);
+
+protected slots:
+
+ void Run();
+
+private:
+ void init ( berry::IWorkbenchWindow::Pointer window );
+ berry::IWorkbenchWindow::Pointer m_Window;
+ berry::IPreferences::WeakPtr m_GeneralPreferencesNode;
+};
+
+
+#endif /*QMITKEXTFILEOPENACTION_H_*/
Property changes on: mitk\Modules\Bundles\org.mitk.gui.qt.ext\src\QmitkExtFileOpenAction.h
___________________________________________________________________
Added: svn:eol-style
+ native
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileSaveProjectAction.cpp
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileSaveProjectAction.cpp (revision 21196)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileSaveProjectAction.cpp (working copy)
@@ -15,7 +15,7 @@
=========================================================================*/
-#include "QmitkFileSaveProjectAction.h"
+#include "QmitkExtFileSaveProjectAction.h"
#include <QFileDialog>
#include <QMessageBox>
@@ -33,7 +33,7 @@
#include "QmitkStdMultiWidgetEditor.h"
-QmitkFileSaveProjectAction::QmitkFileSaveProjectAction(berry::IWorkbenchWindow::Pointer window)
+QmitkExtFileSaveProjectAction::QmitkExtFileSaveProjectAction(berry::IWorkbenchWindow::Pointer window)
: QAction(0)
{
m_Window = window;
@@ -45,7 +45,7 @@
this->connect(this, SIGNAL(triggered(bool)), this, SLOT(Run()));
}
-void QmitkFileSaveProjectAction::Run()
+void QmitkExtFileSaveProjectAction::Run()
{
try
{
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileSaveProjectAction.h
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileSaveProjectAction.h (revision 21196)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtFileSaveProjectAction.h (working copy)
@@ -15,8 +15,8 @@
=========================================================================*/
-#ifndef QmitkFileSaveProjectAction_H_
-#define QmitkFileSaveProjectAction_H_
+#ifndef QmitkExtFileSaveProjectAction_H_
+#define QmitkExtFileSaveProjectAction_H_
#ifdef __MINGW32__
// We need to inlclude winbase.h here in order to declare
@@ -27,17 +27,17 @@
#include <QAction>
-#include "mitkQtCommonDll.h"
+#include "mitkQtCommonExtDll.h"
#include <berryIWorkbenchWindow.h>
-class MITK_QT_COMMON QmitkFileSaveProjectAction : public QAction
+class MITK_QT_COMMON_EXT_EXPORT QmitkExtFileSaveProjectAction : public QAction
{
Q_OBJECT
public:
- QmitkFileSaveProjectAction(berry::IWorkbenchWindow::Pointer window);
+ QmitkExtFileSaveProjectAction(berry::IWorkbenchWindow::Pointer window);
protected slots:
@@ -49,4 +49,4 @@
};
-#endif /*QmitkFileSaveProjectAction_H_*/
+#endif /*QmitkExtFileSaveProjectAction_H_*/
Index: mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp
===================================================================
--- mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp (revision 21196)
+++ mitk/Modules/Bundles/org.mitk.gui.qt.ext/src/QmitkExtWorkbenchWindowAdvisor.cpp (working copy)
@@ -36,8 +36,8 @@
#include <internal/berryQtShowViewAction.h>
#include <internal/berryQtOpenPerspectiveAction.h>
-#include <QmitkFileOpenAction.h>
-#include <QmitkFileSaveProjectAction.h>
+#include <QmitkExtFileOpenAction.h>
+#include <QmitkExtFileSaveProjectAction.h>
#include <QmitkFileExitAction.h>
#include <QmitkCloseProjectAction.h>
#include <QmitkStatusBar.h>
@@ -223,9 +223,9 @@
QMenu* fileMenu = menuBar->addMenu("&File");
- QAction* fileOpenAction = new QmitkFileOpenAction(QIcon(":/org.mitk.gui.qt.ext/Load_48.png"), window);
+ QAction* fileOpenAction = new QmitkExtFileOpenAction(QIcon(":/org.mitk.gui.qt.ext/Load_48.png"), window);
fileMenu->addAction(fileOpenAction);
- QAction* fileSaveProjectAction = new QmitkFileSaveProjectAction(window);
+ QAction* fileSaveProjectAction = new QmitkExtFileSaveProjectAction(window);
fileSaveProjectAction->setIcon(QIcon(":/org.mitk.gui.qt.ext/Save_48.png"));
fileMenu->addAction(fileSaveProjectAction);
QAction* closeProjectAction = new QmitkCloseProjectAction(window);
File Metadata
Details
Attached
Mime Type
application/octet-stream
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
372
Default Alt Text
SceneIOCopiedActionsPatch.patch (32 KB)
Attached To
Mode
T3041: Core dependency to scene serialization
Attached
Detach File
Event Timeline
•
wald
added a comment.
Feb 3 2010, 4:53 PM
2010-02-03 16:53:48 (UTC+1)
Comment Actions
Copied Actions to Ext
Log In to Comment