diff --git a/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp b/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp index 22141eddff..b14cbc0d3b 100644 --- a/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp +++ b/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp @@ -1,109 +1,110 @@ /*============================================================================ The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center (DKFZ) All rights reserved. Use of this source code is governed by a 3-clause BSD license that can be found in the LICENSE file. ============================================================================*/ #include #include #include #include QmitkNodeDetailsDialog::QmitkNodeDetailsDialog(const QList& nodes, QWidget* parent, Qt::WindowFlags flags) : QDialog(parent, flags), m_Ui(new Ui::QmitkNodeDetailsDialog) { QList constNodes; for (auto& node : nodes) constNodes.append(node.GetPointer()); this->InitWidgets(constNodes); } QmitkNodeDetailsDialog::QmitkNodeDetailsDialog(const QList& nodes, QWidget* parent, Qt::WindowFlags flags) : QDialog(parent, flags), m_Ui(new Ui::QmitkNodeDetailsDialog) { this->InitWidgets(nodes); } QmitkNodeDetailsDialog::~QmitkNodeDetailsDialog() { + disconnect(m_Ui->dataStorageComboBox, &QmitkDataStorageComboBox::OnSelectionChanged, this, &QmitkNodeDetailsDialog::OnSelectionChanged); delete m_Ui; } void QmitkNodeDetailsDialog::InitWidgets(const QList& nodes) { m_Ui->setupUi(this); m_Ui->dataStorageComboBox->SetAutoSelectNewItems(true); m_Ui->keywordLineEdit->installEventFilter(this); m_Ui->searchButton->installEventFilter(this); connect(m_Ui->dataStorageComboBox, &QmitkDataStorageComboBox::OnSelectionChanged, this, &QmitkNodeDetailsDialog::OnSelectionChanged); for (auto& node : nodes) m_Ui->dataStorageComboBox->AddNode(node); connect(m_Ui->keywordLineEdit, &QLineEdit::textChanged, this, &QmitkNodeDetailsDialog::KeywordTextChanged); connect(m_Ui->searchButton, &QPushButton::clicked, this, &QmitkNodeDetailsDialog::OnSearchButtonClicked); }; void QmitkNodeDetailsDialog::OnSelectionChanged(const mitk::DataNode* node) { if (nullptr == node) return; std::ostringstream stream; auto baseData = node->GetData(); if (nullptr != baseData) baseData->Print(stream, 2); m_Ui->textBrowser->setPlainText(QString::fromStdString(stream.str())); } void QmitkNodeDetailsDialog::OnSearchButtonClicked() { auto keyword = m_Ui->keywordLineEdit->text(); auto text = m_Ui->textBrowser->toPlainText(); if (keyword.isEmpty() || text.isEmpty()) return; m_Ui->textBrowser->find(keyword); } bool QmitkNodeDetailsDialog::eventFilter(QObject* obj, QEvent* event) { if (event->type() == QEvent::KeyPress) { auto keyEvent = static_cast(event); if (keyEvent->key() == Qt::Key_F3 || keyEvent->key() == Qt::Key_Return) { this->OnSearchButtonClicked(); return true; } } return QObject::eventFilter(obj, event); } void QmitkNodeDetailsDialog::KeywordTextChanged(const QString&) { auto cursor = m_Ui->textBrowser->textCursor(); cursor.setPosition(0); m_Ui->textBrowser->setTextCursor(cursor); }