Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkDataNodeRemoveAction.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
15 
16 // qt
17 #include <QMessageBox>
18 
19 // berry
20 #include <berryIPreferences.h>
22 #include <berryPlatform.h>
23 
24 namespace RemoveAction
25 {
26  void Run(berry::IWorkbenchPartSite::Pointer workbenchPartSite, mitk::DataStorage::Pointer dataStorage, const QList<mitk::DataNode::Pointer>& selectedNodes, QWidget* parent /* = nullptr*/)
27  {
28  if (selectedNodes.empty())
29  {
30  return;
31  }
32 
33  QString question("Do you really want to remove ");
34  for (auto& dataNode : selectedNodes)
35  {
36  if (nullptr == dataNode)
37  {
38  continue;
39  }
40 
41  question.append(QString::fromStdString(dataNode->GetName()));
42  question.append(", ");
43  }
44 
45  // remove the last two characters = ", "
46  question = question.remove(question.size() - 2, 2);
47  question.append(" from data storage?");
48 
49  QMessageBox::StandardButton answerButton =
50  QMessageBox::question(parent, "DataManager", question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
51 
52  if (answerButton == QMessageBox::Yes)
53  {
54  for (auto& dataNode : selectedNodes)
55  {
56  if (nullptr == dataNode)
57  {
58  continue;
59  }
60 
61  dataStorage->Remove(dataNode);
62  }
63 
65  berry::IPreferences::Pointer preferencesNode =
67 
68  bool globalReinit = preferencesNode->GetBool("Call global reinit if node is deleted", true);
69  if (globalReinit)
70  {
71  GlobalReinitAction::Run(workbenchPartSite, dataStorage);
72  }
73  }
74  }
75 }
76 
78  : QAction(parent)
79  , QmitkAbstractDataNodeAction(workbenchpartSite)
80 {
81  setText(tr("Remove"));
82  m_Parent = parent;
84 }
85 
87  : QAction(parent)
88  , QmitkAbstractDataNodeAction(berry::IWorkbenchPartSite::Pointer(workbenchpartSite))
89 {
90  setText(tr("Remove"));
91  m_Parent = parent;
93 }
94 
96 {
97  connect(this, &QmitkDataNodeRemoveAction::triggered, this, &QmitkDataNodeRemoveAction::OnActionTriggered);
98 }
99 
100 void QmitkDataNodeRemoveAction::OnActionTriggered(bool /*checked*/)
101 {
103  {
104  return;
105  }
106 
107  if (m_DataStorage.IsExpired())
108  {
109  return;
110  }
111 
112  auto selectedNodes = GetSelectedNodes();
113  RemoveAction::Run(m_WorkbenchPartSite.Lock(), m_DataStorage.Lock(), selectedNodes, m_Parent);
114 }
itk::SmartPointer< T > Lock() const
QList< mitk::DataNode::Pointer > GetSelectedNodes() const
void Run(berry::IWorkbenchPartSite::Pointer workbenchPartSite, mitk::DataStorage::Pointer dataStorage, const QList< mitk::DataNode::Pointer > &selectedNodes, QWidget *parent)
virtual SmartPointer< IPreferences > GetSystemPreferences()=0
SmartPointer< ObjectType > Lock() const
bool IsExpired() const noexcept
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
berry::IWorkbenchPartSite::WeakPtr m_WorkbenchPartSite
void Run(berry::IWorkbenchPartSite::Pointer workbenchPartSite, mitk::DataStorage::Pointer dataStorage)
static IPreferencesService * GetPreferencesService()
QmitkDataNodeRemoveAction(QWidget *parent, berry::IWorkbenchPartSite::Pointer workbenchPartSite)