diff --git a/Modules/QtWidgets/files.cmake b/Modules/QtWidgets/files.cmake index 35d8f96e42..67c6335c3e 100644 --- a/Modules/QtWidgets/files.cmake +++ b/Modules/QtWidgets/files.cmake @@ -1,185 +1,186 @@ file(GLOB_RECURSE H_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/include/*") set(CPP_FILES QmitkAbstractDataStorageModel.cpp QmitkAbstractMultiWidget.cpp QmitkAbstractNodeSelectionWidget.cpp QmitkApplicationCursor.cpp QmitkDataStorageComboBox.cpp QmitkDataStorageDefaultListModel.cpp QmitkDataStorageHistoryModel.cpp QmitkDataStorageListModel.cpp QmitkDataStorageTableModel.cpp QmitkDataStorageSimpleTreeModel.cpp QmitkDataStorageTreeModel.cpp QmitkDataStorageTreeModelInternalItem.cpp QmitkDnDDataNodeWidget.cpp QmitkFileReaderOptionsDialog.cpp QmitkFileReaderWriterOptionsWidget.cpp QmitkFileWriterOptionsDialog.cpp QmitkInteractionSchemeToolBar.cpp QmitkIOUtil.cpp QmitkLevelWindowPresetDefinitionDialog.cpp QmitkLevelWindowRangeChangeDialog.cpp QmitkLevelWindowWidgetContextMenu.cpp QmitkLevelWindowWidget.cpp QmitkLineEditLevelWindowWidget.cpp QmitkMemoryUsageIndicatorView.cpp QmitkMimeTypes.cpp QmitkMultiNodeSelectionWidget.cpp QmitkMultiWidgetConfigurationToolBar.cpp QmitkMultiWidgetLayoutManager.cpp QmitkMultiWidgetLayoutSelectionWidget.cpp QmitkNodeDescriptor.cpp QmitkNodeSelectionButton.cpp QmitkNodeSelectionConstants.cpp QmitkNodeSelectionDialog.cpp QmitkNodeSelectionListItemWidget.cpp QmitkNodeSelectionPreferenceHelper.cpp QmitkNodeDescriptor.cpp QmitkColoredNodeDescriptor.cpp QmitkNodeDescriptorManager.cpp QmitkProgressBar.cpp QmitkPropertiesTableEditor.cpp QmitkPropertiesTableModel.cpp QmitkPropertyDelegate.cpp QmitkRegisterClasses.cpp QmitkRenderingManager.cpp QmitkRenderWindowDataStorageTreeModel.cpp QmitkRenderingManagerFactory.cpp QmitkRenderWindow.cpp QmitkRenderWindowMenu.cpp QmitkRenderWindowUtilityWidget.cpp QmitkRenderWindowWidget.cpp QmitkRenderWindowContextDataStorageInspector.cpp mitkRenderWindowLayerController.cpp mitkRenderWindowLayerUtilities.cpp mitkRenderWindowViewDirectionController.cpp QmitkServiceListWidget.cpp QmitkSingleNodeSelectionWidget.cpp QmitkSliceNavigationWidget.cpp QmitkSliderLevelWindowWidget.cpp QmitkStdMultiWidget.cpp QmitkStepperAdapter.cpp QmitkMxNMultiWidget.cpp QmitkDataStorageComboBoxWithSelectNone.cpp QmitkDataStorageFilterProxyModel.cpp QmitkPropertyItem.cpp QmitkPropertyItemDelegate.cpp QmitkPropertyItemModel.cpp QmitkStyleManager.cpp QmitkAbstractDataStorageInspector.cpp QmitkDataStorageFavoriteNodesInspector.cpp QmitkDataStorageListInspector.cpp QmitkDataStorageTreeInspector.cpp QmitkDataStorageSelectionHistoryInspector.cpp QmitkModelViewSelectionConnector.cpp mitkIDataStorageInspectorProvider.cpp mitkQtWidgetsActivator.cpp mitkDataStorageInspectorGenerator.cpp QmitkOverlayWidget.cpp QmitkSimpleTextOverlayWidget.cpp QmitkButtonOverlayWidget.cpp QmitkNodeDetailsDialog.cpp QmitkRenderWindowDataNodeTableModel.cpp QmitkSynchronizedNodeSelectionWidget.cpp QmitkSynchronizedWidgetConnector.cpp ) set(MOC_H_FILES include/QmitkAbstractDataStorageModel.h include/QmitkAbstractMultiWidget.h include/QmitkAbstractNodeSelectionWidget.h include/QmitkDataStorageComboBox.h include/QmitkDataStorageTableModel.h include/QmitkDataStorageTreeModel.h include/QmitkDataStorageSimpleTreeModel.h include/QmitkDataStorageDefaultListModel.h include/QmitkDnDDataNodeWidget.h include/QmitkFileReaderOptionsDialog.h include/QmitkFileReaderWriterOptionsWidget.h include/QmitkFileWriterOptionsDialog.h include/QmitkInteractionSchemeToolBar.h include/QmitkLevelWindowPresetDefinitionDialog.h include/QmitkLevelWindowRangeChangeDialog.h include/QmitkLevelWindowWidgetContextMenu.h include/QmitkLevelWindowWidget.h include/QmitkLineEditLevelWindowWidget.h include/QmitkMemoryUsageIndicatorView.h include/QmitkMultiNodeSelectionWidget.h include/QmitkMultiWidgetConfigurationToolBar.h include/QmitkMultiWidgetLayoutManager.h include/QmitkMultiWidgetLayoutSelectionWidget.h include/QmitkNodeDescriptor.h include/QmitkNodeSelectionButton.h include/QmitkNodeSelectionDialog.h include/QmitkNodeSelectionListItemWidget.h include/QmitkColoredNodeDescriptor.h include/QmitkNodeDescriptorManager.h include/QmitkProgressBar.h include/QmitkPropertiesTableEditor.h include/QmitkPropertyDelegate.h include/QmitkRenderingManager.h include/QmitkRenderWindow.h include/QmitkRenderWindowDataStorageTreeModel.h include/QmitkRenderWindowMenu.h include/QmitkRenderWindowUtilityWidget.h include/QmitkRenderWindowWidget.h include/QmitkRenderWindowContextDataStorageInspector.h include/mitkRenderWindowLayerController.h include/mitkRenderWindowLayerUtilities.h include/mitkRenderWindowViewDirectionController.h include/QmitkServiceListWidget.h include/QmitkSingleNodeSelectionWidget.h include/QmitkSliceNavigationWidget.h include/QmitkSliderLevelWindowWidget.h include/QmitkStdMultiWidget.h include/QmitkMxNMultiWidget.h include/QmitkStepperAdapter.h include/QmitkDataStorageComboBoxWithSelectNone.h include/QmitkPropertyItemDelegate.h include/QmitkPropertyItemModel.h include/QmitkAbstractDataStorageInspector.h include/QmitkDataStorageFavoriteNodesInspector.h include/QmitkDataStorageListInspector.h include/QmitkDataStorageTreeInspector.h include/QmitkDataStorageHistoryModel.h include/QmitkDataStorageSelectionHistoryInspector.h include/QmitkModelViewSelectionConnector.h include/QmitkOverlayWidget.h include/QmitkSimpleTextOverlayWidget.h include/QmitkButtonOverlayWidget.h include/QmitkNodeDetailsDialog.h include/QmitkRenderWindowDataNodeTableModel.h include/QmitkSynchronizedNodeSelectionWidget.h include/QmitkSynchronizedWidgetConnector.h ) set(UI_FILES src/QmitkFileReaderOptionsDialog.ui src/QmitkFileWriterOptionsDialog.ui src/QmitkLevelWindowPresetDefinition.ui src/QmitkLevelWindowWidget.ui src/QmitkLevelWindowRangeChange.ui src/QmitkMemoryUsageIndicator.ui src/QmitkMultiNodeSelectionWidget.ui src/QmitkMultiWidgetLayoutSelectionWidget.ui src/QmitkNodeSelectionDialog.ui src/QmitkNodeSelectionListItemWidget.ui src/QmitkRenderWindowContextDataStorageInspector.ui src/QmitkServiceListWidgetControls.ui src/QmitkSingleNodeSelectionWidget.ui src/QmitkSliceNavigationWidget.ui src/QmitkDataStorageListInspector.ui src/QmitkDataStorageTreeInspector.ui src/QmitkDataStorageSelectionHistoryInspector.ui src/QmitkSynchronizedNodeSelectionWidget.ui + src/QmitkNodeDetailsDialog.ui ) set(RESOURCE_FILES mxnLayout_twoRowsEachDirection.json ) set(QRC_FILES resource/Qmitk.qrc ) diff --git a/Modules/QtWidgets/include/QmitkNodeDetailsDialog.h b/Modules/QtWidgets/include/QmitkNodeDetailsDialog.h index 15dea093b2..5ae61d48ff 100644 --- a/Modules/QtWidgets/include/QmitkNodeDetailsDialog.h +++ b/Modules/QtWidgets/include/QmitkNodeDetailsDialog.h @@ -1,56 +1,46 @@ /*============================================================================ 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. ============================================================================*/ #ifndef QmitkNodeDetailsDialog_h #define QmitkNodeDetailsDialog_h #include +#include #include -#include - -class QLineEdit; -class QTextBrowser; +namespace Ui +{ + class QmitkNodeDetailsDialog; +} class MITKQTWIDGETS_EXPORT QmitkNodeDetailsDialog : public QDialog { Q_OBJECT public: - QmitkNodeDetailsDialog(const QList& nodes, QWidget* parent = nullptr, Qt::WindowFlags flags = {}); QmitkNodeDetailsDialog(const QList& nodes, QWidget* parent = nullptr, Qt::WindowFlags flags = {}); - -public Q_SLOTS: + ~QmitkNodeDetailsDialog() override; void OnSelectionChanged(const mitk::DataNode*); - void OnSearchButtonClicked(bool checked = false); - void OnCancelButtonClicked(bool checked = false); - void KeyWordTextChanged(const QString& text); - -protected: - - bool eventFilter(QObject* obj, QEvent* event) override; - -protected: - - QLineEdit* m_KeyWord; - QPushButton* m_SearchButton; - QTextBrowser* m_TextBrowser; + void OnSearchButtonClicked(); + void KeywordTextChanged(const QString& text); private: + bool eventFilter(QObject* obj, QEvent* event) override; void InitWidgets(const QList& nodes); + Ui::QmitkNodeDetailsDialog* m_Ui; }; #endif diff --git a/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp b/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp index 5cee3a7fb2..b14cbc0d3b 100644 --- a/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp +++ b/Modules/QtWidgets/src/QmitkNodeDetailsDialog.cpp @@ -1,141 +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 "QmitkNodeDetailsDialog.h" +#include -#include "QmitkDataStorageComboBox.h" +#include #include -#include -#include -#include -#include -#include -#include +#include -QmitkNodeDetailsDialog::QmitkNodeDetailsDialog(const QList& nodes, QWidget* parent /*= nullptr*/, Qt::WindowFlags flags /*= nullptr */) - : QDialog(parent, flags) +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()); - } - InitWidgets(constNodes); + 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(const QList& nodes, QWidget* parent /*= nullptr*/, Qt::WindowFlags flags /*= nullptr */) - : QDialog(parent, flags) +QmitkNodeDetailsDialog::~QmitkNodeDetailsDialog() { - InitWidgets(nodes); + disconnect(m_Ui->dataStorageComboBox, &QmitkDataStorageComboBox::OnSelectionChanged, this, &QmitkNodeDetailsDialog::OnSelectionChanged); + delete m_Ui; } void QmitkNodeDetailsDialog::InitWidgets(const QList& nodes) { - auto parentLayout = new QGridLayout; - auto dataStorageComboBox = new QmitkDataStorageComboBox(this, true); - m_KeyWord = new QLineEdit; - m_KeyWord->installEventFilter(this); - m_SearchButton = new QPushButton("Search (F3)", this); - m_SearchButton->installEventFilter(this); - m_TextBrowser = new QTextBrowser(this); - QPushButton* cancelButton = new QPushButton("Cancel", this); - - setMinimumSize(512, 512); - setLayout(parentLayout); - setSizeGripEnabled(true); - setModal(true); - - parentLayout->addWidget(dataStorageComboBox, 0, 0, 1, 2); - parentLayout->addWidget(m_KeyWord, 1, 0); - parentLayout->addWidget(m_SearchButton, 1, 1); - parentLayout->addWidget(m_TextBrowser, 2, 0, 1, 2); - parentLayout->addWidget(cancelButton, 3, 0, 1, 2); - - connect(dataStorageComboBox, &QmitkDataStorageComboBox::OnSelectionChanged, this, &QmitkNodeDetailsDialog::OnSelectionChanged); + m_Ui->setupUi(this); - for (auto& node : nodes) - { - dataStorageComboBox->AddNode(node); - } + m_Ui->dataStorageComboBox->SetAutoSelectNewItems(true); - connect(m_KeyWord, &QLineEdit::textChanged, this, &QmitkNodeDetailsDialog::KeyWordTextChanged); - connect(m_SearchButton, &QPushButton::clicked, this, &QmitkNodeDetailsDialog::OnSearchButtonClicked); - connect(cancelButton, &QPushButton::clicked, this, &QmitkNodeDetailsDialog::OnCancelButtonClicked); + 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); - cancelButton->setDefault(true); + 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 s; - itk::Indent i(2); - mitk::BaseData* baseData = node->GetData(); + std::ostringstream stream; + auto baseData = node->GetData(); + if (nullptr != baseData) - { - baseData->Print(s, i); - } + baseData->Print(stream, 2); - m_TextBrowser->setPlainText(QString::fromStdString(s.str())); + m_Ui->textBrowser->setPlainText(QString::fromStdString(stream.str())); } -void QmitkNodeDetailsDialog::OnSearchButtonClicked(bool /*checked*/ /*= false */) +void QmitkNodeDetailsDialog::OnSearchButtonClicked() { - QString keyWord = m_KeyWord->text(); - QString text = m_TextBrowser->toPlainText(); + auto keyword = m_Ui->keywordLineEdit->text(); + auto text = m_Ui->textBrowser->toPlainText(); - if (keyWord.isEmpty() || text.isEmpty()) - { + if (keyword.isEmpty() || text.isEmpty()) return; - } - - m_TextBrowser->find(keyWord); - m_SearchButton->setText("Search Next(F3)"); -} -void QmitkNodeDetailsDialog::OnCancelButtonClicked(bool /*checked*/ /*= false */) -{ - done(0); + m_Ui->textBrowser->find(keyword); } bool QmitkNodeDetailsDialog::eventFilter(QObject* obj, QEvent* event) { if (event->type() == QEvent::KeyPress) { - QKeyEvent *keyEvent = static_cast(event); + auto keyEvent = static_cast(event); + if (keyEvent->key() == Qt::Key_F3 || keyEvent->key() == Qt::Key_Return) { - // trigger deletion of selected node(s) - OnSearchButtonClicked(true); - // return true: this means the delete key event is not send to the table + this->OnSearchButtonClicked(); return true; } } - // standard event processing + return QObject::eventFilter(obj, event); } -void QmitkNodeDetailsDialog::KeyWordTextChanged(const QString& /*text*/) +void QmitkNodeDetailsDialog::KeywordTextChanged(const QString&) { - QTextCursor textCursor = m_TextBrowser->textCursor(); - textCursor.setPosition(0); - m_TextBrowser->setTextCursor(textCursor); - m_SearchButton->setText("Search (F3)"); + auto cursor = m_Ui->textBrowser->textCursor(); + cursor.setPosition(0); + m_Ui->textBrowser->setTextCursor(cursor); } diff --git a/Modules/QtWidgets/src/QmitkNodeDetailsDialog.ui b/Modules/QtWidgets/src/QmitkNodeDetailsDialog.ui new file mode 100644 index 0000000000..56461c7e9b --- /dev/null +++ b/Modules/QtWidgets/src/QmitkNodeDetailsDialog.ui @@ -0,0 +1,99 @@ + + + QmitkNodeDetailsDialog + + + + 0 + 0 + 512 + 512 + + + + + 512 + 512 + + + + Details + + + true + + + true + + + + + + + + + + + + Search (F3) + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel + + + + + + + + QmitkDataStorageComboBox + QComboBox +
QmitkDataStorageComboBox.h
+
+
+ + + + buttonBox + accepted() + QmitkNodeDetailsDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + QmitkNodeDetailsDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +