23 m_NodePredicate(nullptr), m_SelectOnlyVisibleNodes(false), m_SelectedNodes(
NodeList()), m_SelectionMode(QAbstractItemView::SingleSelection)
33 if (visibleProviders.empty())
35 MITK_DEBUG <<
"No presets for visible node selection inspectors available. Use fallback (show all available inspectors)";
36 unsigned int order = 0;
37 for (
auto proIter : providers)
39 visibleProviders.insert(std::make_pair(order, proIter.first));
44 int preferredIndex = 0;
45 bool preferredFound =
false;
46 for (
auto proIter : visibleProviders)
48 auto finding = providers.find(proIter.second);
49 if (finding != providers.end())
53 auto provider = finding->second;
54 this->
AddPanel(provider, preferredID, preferredFound, preferredIndex);
59 MITK_DEBUG <<
"No provider registered for inspector that is defined as visible in the preferences. Illegal inspector ID: " << proIter.second;
66 if (favoritesPorvider !=
nullptr)
68 this->
AddPanel(favoritesPorvider, preferredID, preferredFound, preferredIndex);
75 if (historyPorvider !=
nullptr)
77 this->
AddPanel(historyPorvider, preferredID, preferredFound, preferredIndex);
81 m_Controls.tabWidget->setCurrentIndex(preferredIndex);
82 this->setWindowTitle(title);
83 this->setToolTip(hint);
89 m_Controls.layoutHint->setContentsMargins(0, 0, 0, 0);
93 m_Controls.layoutHint->setContentsMargins(6, 6, 6, 6);
115 panel->SetDataStorage(dataStorage);
151 m_Controls.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(checkResponse.empty());
156 m_Controls.error->setText(QString::fromStdString(checkResponse));
157 m_Controls.error->setVisible(!checkResponse.empty());
158 if (checkResponse.empty())
160 m_Controls.layoutError->setContentsMargins(0, 0, 0, 0);
164 m_Controls.layoutError->setContentsMargins(6, 6, 6, 6);
178 panel->SetSelectionMode(mode);
207 m_Controls.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(checkResponse.empty());
211 panel->SetCurrentSelection(selectedNodes);
225 node->SetBoolProperty(
"org.mitk.selection.favorite",
true);
250 inspector->setParent(
this);
253 auto tabPanel =
new QWidget();
254 tabPanel->setObjectName(QString(
"tab_") + name);
255 tabPanel->setToolTip(desc);
257 auto verticalLayout =
new QVBoxLayout(tabPanel);
258 verticalLayout->setSpacing(0);
259 verticalLayout->setContentsMargins(0, 0, 0, 0);
260 verticalLayout->addWidget(inspector);
267 m_Controls.tabWidget->setTabIcon(panelPos, icon);
273 preferredFound = preferredFound || provider->
GetInspectorID() == preferredID;
QmitkNodeSelectionDialog(QWidget *parent=nullptr, QString caption="", QString hint="")
QList< mitk::DataNode::Pointer > NodeList
Data management class that handles 'was created by' relations.
mitk::NodePredicateBase::ConstPointer m_NodePredicate
static constexpr const char * INSPECTOR_ID()
const mitk::NodePredicateBase * GetNodePredicate() const
QAbstractItemView::SelectionMode SelectionMode
bool GetShowFavoritesInspector()
static QIcon ThemeIcon(const QByteArray &originalSVG)
static constexpr const char * INSPECTOR_ID()
void SetSelectionCheckFunction(const SelectionCheckFunctionType &checkFunction)
A selection check function can be set. If set the dialog uses this function to check the made/set sel...
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
virtual QmitkAbstractDataStorageInspector * CreateInspector() const =0
returns an inspector instance represented by the provider.
void SetSelectOnlyVisibleNodes(bool selectOnlyVisibleNodes)
bool GetShowHistoryInspector()
static mitk::IDataStorageInspectorProvider * GetProvider(const IDType &id)
void OnFavoriteNodesButtonClicked()
void AddPanel(const mitk::IDataStorageInspectorProvider *provider, const mitk::IDataStorageInspectorProvider::InspectorIDType &preferredID, bool &preferredFound, int &preferredIndex)
bool m_SelectOnlyVisibleNodes
virtual QIcon GetInspectorIcon() const =0
The common interface for all DataStorage inspector providers.
void CurrentSelectionChanged(NodeList nodes)
A signal that will be emitted if the selected node has changed.
void SetSelectionMode(SelectionMode mode)
virtual std::string GetInspectorDisplayName() const =0
NodeList GetSelectedNodes() const
VisibleDataStorageInspectorMapType GetVisibleDataStorageInspectors()
DataStorageInspectorIDType GetPreferredDataStorageInspector()
bool IsExpired() const noexcept
static ProviderMapType GetProviders()
bool GetSelectOnlyVisibleNodes() const
SelectionCheckFunctionType m_CheckFunction
void SetDataStorage(mitk::DataStorage *dataStorage)
Sets the data storage that will be used /monitored by widget.
Ui_QmitkNodeSelectionDialog m_Controls
SelectionMode m_SelectionMode
void OnSelectionChanged(NodeList selectedNodes)
void SetErrorText(const std::string &checkResponse)
virtual std::string GetInspectorDescription() const =0
virtual void SetSelectionMode(SelectionMode mode)=0
std::string InspectorIDType
virtual InspectorIDType GetInspectorID() const =0
static void AddNodeToHistory(mitk::DataNode *node)
Interface for evaluation conditions used in the DataStorage class GetSubset() method.
virtual void SetNodePredicate(const mitk::NodePredicateBase *nodePredicate)
Sets the node predicate and updates the widget, according to the node predicate.
void SetCurrentSelection(NodeList selectedNodes)
SelectionMode GetSelectionMode() const
std::function< std::string(const NodeList &)> SelectionCheckFunctionType
Helper function that is used to check the given selection for consistency. Returning an empty string ...
void CurrentSelectionChanged(NodeList nodes)