diff --git a/Modules/QmitkExt/QmitkModuleTableModel.cpp b/Modules/QmitkExt/QmitkModuleTableModel.cpp new file mode 100644 index 0000000000..7694eb64df --- /dev/null +++ b/Modules/QmitkExt/QmitkModuleTableModel.cpp @@ -0,0 +1,182 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date: 2009-07-14 19:11:20 +0200 (Tue, 14 Jul 2009) $ +Version: $Revision: 18127 $ + +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 "QmitkModuleTableModel.h" + +#include +#include +#include + +#include + + +class QmitkModuleTableModelPrivate +{ + +public: + + QmitkModuleTableModelPrivate(QmitkModuleTableModel* q, mitk::ModuleContext* mc) + : q(q), context(mc) + { + std::vector m; + context->GetModules(m); + for (std::vector::const_iterator it = m.begin(); + it != m.end(); ++it) + { + modules[(*it)->GetModuleId()] = *it; + } + + context->AddModuleListener(this, &QmitkModuleTableModelPrivate::ModuleChanged); + } + + ~QmitkModuleTableModelPrivate() + { + context->RemoveModuleListener(this, &QmitkModuleTableModelPrivate::ModuleChanged); + } + + void ModuleChanged(const mitk::ModuleEvent& event) + { + q->insertModule(event.GetModule()); + } + + QmitkModuleTableModel* q; + mitk::ModuleContext* context; + QMap modules; +}; + +QmitkModuleTableModel::QmitkModuleTableModel(QObject* parent, mitk::ModuleContext* mc) + : QAbstractTableModel(parent), + d(new QmitkModuleTableModelPrivate(this, mc ? mc : mitk::GetModuleContext())) +{ +} + +QmitkModuleTableModel::~QmitkModuleTableModel() +{ + delete d; +} + +int QmitkModuleTableModel::rowCount(const QModelIndex& parent) const +{ + if (parent.isValid()) return 0; + return d->modules.size(); +} + +int QmitkModuleTableModel::columnCount(const QModelIndex& parent) const +{ + if (parent.isValid()) return 0; + return 7; +} + +QVariant QmitkModuleTableModel::data(const QModelIndex& index, int role) const +{ + if (!index.isValid()) return QVariant(); + + if (role == Qt::DisplayRole) + { + mitk::Module* module = d->modules[index.row()+1]; + switch(index.column()) + { + case 0: return QVariant::fromValue(static_cast(module->GetModuleId())); + case 1: return QString::fromStdString(module->GetName()); + case 2: return QString::fromStdString(module->GetVersion().ToString()); + case 3: + { + QString deps = QString::fromStdString(module->GetProperty(mitk::Module::PROP_MODULE_DEPENDS())); + QString libDeps = QString::fromStdString(module->GetProperty(mitk::Module::PROP_LIB_DEPENDS())); + if (!libDeps.isEmpty()) + { + if (!deps.isEmpty()) deps.append(", "); + deps.append(libDeps); + } + return deps; + } + case 4: return QString::fromStdString(module->GetProperty(mitk::Module::PROP_PACKAGE_DEPENDS())); + case 6: return QString::fromStdString(module->GetLocation()); + } + } + else if (role == Qt::CheckStateRole) + { + if (index.column() == 5) + { + mitk::Module* module = d->modules[index.row()+1]; + return module->GetProperty(mitk::Module::PROP_QT()) == "true" ? Qt::Checked : Qt::Unchecked; + } + } + else if (role == Qt::ForegroundRole) + { + mitk::Module* module = d->modules[index.row()+1]; + if (!module->IsLoaded()) + { + return QBrush(Qt::gray); + } + } + else if (role == Qt::ToolTipRole) + { + mitk::Module* module = d->modules[index.row()+1]; + QString id = QString::number(module->GetModuleId()); + QString name = QString::fromStdString(module->GetName()); + QString version = QString::fromStdString(module->GetVersion().ToString()); + QString moduleDepends = QString::fromStdString(module->GetProperty(mitk::Module::PROP_MODULE_DEPENDS())); + QString packageDepends = QString::fromStdString(module->GetProperty(mitk::Module::PROP_PACKAGE_DEPENDS())); + QString libDepends = QString::fromStdString(module->GetProperty(mitk::Module::PROP_LIB_DEPENDS())); + QString location = QString::fromStdString(module->GetLocation()); + QString isQt = module->GetProperty(mitk::Module::PROP_QT()) == "true" ? "Yes" : "No"; + QString state = module->IsLoaded() ? "Loaded" : "Unloaded"; + + QString tooltip = "Id: %1\nName: %2\nVersion: %3\nModule Dependencies: %4\nPackage Dependencies: %5\nLibrary Dependencies: %6\nLocation: %7\nQt Module: %8\nState: %9"; + + return tooltip.arg(id, name, version, moduleDepends, packageDepends, libDepends, location, isQt, state); + } + return QVariant(); +} + +QVariant QmitkModuleTableModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation != Qt::Horizontal || role != Qt::DisplayRole) + return QVariant(); + + switch (section) + { + case 0: return "Id"; + case 1: return "Name"; + case 2: return "Version"; + case 3: return "Depends"; + case 4: return "Packages"; + case 5: return "Qt"; + case 6: return "Location"; + } + return QVariant(); +} + +void QmitkModuleTableModel::insertModule(mitk::Module* module) +{ + long id = module->GetModuleId(); + if (d->modules.contains(id)) + { + d->modules[id] = module; + emit dataChanged(createIndex(id-1, 0), createIndex(id-1, columnCount())); + return; + } + else + { + beginInsertRows(QModelIndex(), id-1, id-1); + d->modules[id] = module; + endInsertRows(); + } +} + diff --git a/Modules/QmitkExt/QmitkModuleTableModel.h b/Modules/QmitkExt/QmitkModuleTableModel.h new file mode 100644 index 0000000000..4fb2b87758 --- /dev/null +++ b/Modules/QmitkExt/QmitkModuleTableModel.h @@ -0,0 +1,60 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date: 2009-07-14 19:11:20 +0200 (Tue, 14 Jul 2009) $ +Version: $Revision: 18127 $ + +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 QMITKMODULETABLEMODEL_H +#define QMITKMODULETABLEMODEL_H + +#include +#include + +#include + +namespace mitk { +class ModuleContext; +class Module; +} + +class QmitkModuleTableModelPrivate; + +class QmitkExt_EXPORT QmitkModuleTableModel : public QAbstractTableModel +{ +public: + + QmitkModuleTableModel(QObject* parent = 0, mitk::ModuleContext* mc = 0); + ~QmitkModuleTableModel(); + +protected: + + int rowCount(const QModelIndex& parent = QModelIndex()) const; + + int columnCount(const QModelIndex& parent = QModelIndex()) const; + + QVariant data(const QModelIndex& index, int role) const; + + QVariant headerData(int section, Qt::Orientation orientation, int role) const; + +private: + + friend class QmitkModuleTableModelPrivate; + + void insertModule(mitk::Module* module); + + QmitkModuleTableModelPrivate* const d; +}; + +#endif // QMITKMODULETABLEMODEL_H diff --git a/Modules/QmitkExt/files.cmake b/Modules/QmitkExt/files.cmake index b5aaea16f6..f60ce8433b 100644 --- a/Modules/QmitkExt/files.cmake +++ b/Modules/QmitkExt/files.cmake @@ -1,255 +1,257 @@ SET(CPP_FILES QmitkApplicationBase/QmitkCommonFunctionality.cpp #QmitkModels/QmitkDataStorageListModel.cpp #QmitkModels/QmitkPropertiesTableModel.cpp #QmitkModels/QmitkDataStorageTreeModel.cpp #QmitkModels/QmitkDataStorageTableModel.cpp #QmitkModels/QmitkPropertyDelegate.cpp #QmitkModels/QmitkPointListModel.cpp #QmitkAlgorithmFunctionalityComponent.cpp #QmitkBaseAlgorithmComponent.cpp QmitkAboutDialog/QmitkAboutDialog.cpp #QmitkFunctionalityComponents/QmitkSurfaceCreatorComponent.cpp #QmitkFunctionalityComponents/QmitkPixelGreyValueManipulatorComponent.cpp #QmitkFunctionalityComponents/QmitkConnectivityFilterComponent.cpp #QmitkFunctionalityComponents/QmitkImageCropperComponent.cpp #QmitkFunctionalityComponents/QmitkSeedPointSetComponent.cpp #QmitkFunctionalityComponents/QmitkSurfaceTransformerComponent.cpp QmitkPropertyObservers/QmitkBasePropertyView.cpp QmitkPropertyObservers/QmitkBoolPropertyWidget.cpp QmitkPropertyObservers/QmitkColorPropertyEditor.cpp QmitkPropertyObservers/QmitkColorPropertyView.cpp QmitkPropertyObservers/QmitkEnumerationPropertyWidget.cpp QmitkPropertyObservers/QmitkNumberPropertyEditor.cpp QmitkPropertyObservers/QmitkNumberPropertyView.cpp QmitkPropertyObservers/QmitkPropertyViewFactory.cpp QmitkPropertyObservers/QmitkStringPropertyEditor.cpp QmitkPropertyObservers/QmitkStringPropertyOnDemandEdit.cpp QmitkPropertyObservers/QmitkStringPropertyView.cpp QmitkPropertyObservers/QmitkNumberPropertySlider.cpp QmitkPropertyObservers/QmitkUGCombinedRepresentationPropertyWidget.cpp qclickablelabel.cpp #QmitkAbortEventFilter.cpp # QmitkApplicationCursor.cpp QmitkCallbackFromGUIThread.cpp QmitkEditPointDialog.cpp QmitkExtRegisterClasses.cpp QmitkFileChooser.cpp # QmitkRenderingManager.cpp # QmitkRenderingManagerFactory.cpp # QmitkRenderWindow.cpp # QmitkEventAdapter.cpp QmitkFloatingPointSpanSlider.cpp QmitkColorTransferFunctionCanvas.cpp QmitkSlicesInterpolator.cpp QmitkStandardViews.cpp QmitkStepperAdapter.cpp # QmitkLineEditLevelWindowWidget.cpp # mitkSliderLevelWindowWidget.cpp # QmitkLevelWindowWidget.cpp # QmitkPointListWidget.cpp # QmitkPointListView.cpp QmitkPiecewiseFunctionCanvas.cpp QmitkSliderNavigatorWidget.cpp QmitkTransferFunctionCanvas.cpp QmitkCrossWidget.cpp #QmitkLevelWindowRangeChangeDialog.cpp #QmitkLevelWindowPresetDefinitionDialog.cpp # QmitkLevelWindowWidgetContextMenu.cpp QmitkSliceWidget.cpp # QmitkStdMultiWidget.cpp QmitkTransferFunctionWidget.cpp QmitkTransferFunctionGeneratorWidget.cpp QmitkSelectableGLWidget.cpp QmitkToolReferenceDataSelectionBox.cpp QmitkToolWorkingDataSelectionBox.cpp QmitkToolGUIArea.cpp QmitkToolSelectionBox.cpp # QmitkPropertyListPopup.cpp QmitkToolGUI.cpp QmitkNewSegmentationDialog.cpp QmitkPaintbrushToolGUI.cpp QmitkDrawPaintbrushToolGUI.cpp QmitkErasePaintbrushToolGUI.cpp QmitkBinaryThresholdToolGUI.cpp QmitkCalculateGrayValueStatisticsToolGUI.cpp QmitkCopyToClipBoardDialog.cpp # QmitkMaterialEditor.cpp # QmitkMaterialShowcase.cpp # QmitkPropertiesTableEditor.cpp QmitkPrimitiveMovieNavigatorWidget.cpp # QmitkDataStorageComboBox.cpp QmitkHistogram.cpp QmitkHistogramWidget.cpp QmitkPlotWidget.cpp QmitkPlotDialog.cpp QmitkPointListModel.cpp QmitkPointListView.cpp QmitkPointListWidget.cpp QmitkPointListViewWidget.cpp QmitkCorrespondingPointSetsView.cpp QmitkCorrespondingPointSetsModel.cpp QmitkCorrespondingPointSetsWidget.cpp QmitkVideoBackground.cpp QmitkHotkeyLineEdit.cpp QmitkErodeToolGUI.cpp QmitkDilateToolGUI.cpp QmitkMorphologicToolGUI.cpp QmitkOpeningToolGUI.cpp QmitkClosingToolGUI.cpp QmitkBinaryThresholdULToolGUI.cpp QmitkPixelManipulationToolGUI.cpp QmitkRegionGrow3DToolGUI.cpp QmitkToolRoiDataSelectionBox.cpp QmitkBoundingObjectWidget.cpp + + QmitkModuleTableModel.cpp ) IF ( NOT ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION} VERSION_LESS 5.4.0 ) SET(CPP_FILES ${CPP_FILES} QmitkVtkHistogramWidget.cpp QmitkVtkLineProfileWidget.cpp ) ENDIF() IF (NOT APPLE) SET(CPP_FILES ${CPP_FILES} QmitkBaseComponent.cpp QmitkBaseFunctionalityComponent.cpp QmitkFunctionalityComponentContainer.cpp QmitkFunctionalityComponents/QmitkThresholdComponent.cpp ) ENDIF() QT4_ADD_RESOURCES(CPP_FILES resources/QmitkResources.qrc) SET(MOC_H_FILES QmitkPropertyObservers/QmitkBasePropertyView.h QmitkPropertyObservers/QmitkBoolPropertyWidget.h QmitkPropertyObservers/QmitkColorPropertyEditor.h QmitkPropertyObservers/QmitkColorPropertyView.h QmitkPropertyObservers/QmitkEnumerationPropertyWidget.h QmitkPropertyObservers/QmitkNumberPropertyEditor.h QmitkPropertyObservers/QmitkNumberPropertyView.h QmitkPropertyObservers/QmitkStringPropertyEditor.h QmitkPropertyObservers/QmitkStringPropertyOnDemandEdit.h QmitkPropertyObservers/QmitkStringPropertyView.h QmitkPropertyObservers/QmitkNumberPropertySlider.h QmitkPropertyObservers/QmitkUGCombinedRepresentationPropertyWidget.h # QmitkFunctionalityComponents/QmitkSurfaceCreatorComponent.h #QmitkFunctionalityComponents/QmitkPixelGreyValueManipulatorComponent.h # QmitkFunctionalityComponents/QmitkConnectivityFilterComponent.h # QmitkFunctionalityComponents/QmitkImageCropperComponent.h # QmitkFunctionalityComponents/QmitkSeedPointSetComponent.h # QmitkFunctionalityComponents/QmitkSurfaceTransformerComponent.h qclickablelabel.h QmitkCallbackFromGUIThread.h QmitkEditPointDialog.h #QmitkAlgorithmFunctionalityComponent.h #QmitkBaseAlgorithmComponent.h QmitkStandardViews.h QmitkStepperAdapter.h QmitkSliderNavigatorWidget.h QmitkSliceWidget.h QmitkSlicesInterpolator.h QmitkColorTransferFunctionCanvas.h QmitkPiecewiseFunctionCanvas.h QmitkTransferFunctionCanvas.h QmitkFloatingPointSpanSlider.h QmitkCrossWidget.h QmitkTransferFunctionWidget.h QmitkTransferFunctionGeneratorWidget.h QmitkToolGUIArea.h QmitkToolGUI.h QmitkToolReferenceDataSelectionBox.h QmitkToolWorkingDataSelectionBox.h QmitkToolSelectionBox.h # QmitkPropertyListPopup.h #QmitkSelectableGLWidget.h QmitkNewSegmentationDialog.h QmitkPaintbrushToolGUI.h QmitkDrawPaintbrushToolGUI.h QmitkErasePaintbrushToolGUI.h QmitkBinaryThresholdToolGUI.h QmitkCalculateGrayValueStatisticsToolGUI.h QmitkCopyToClipBoardDialog.h QmitkPrimitiveMovieNavigatorWidget.h QmitkPlotWidget.h QmitkPointListModel.h QmitkPointListView.h QmitkPointListWidget.h QmitkPointListViewWidget.h QmitkCorrespondingPointSetsView.h QmitkCorrespondingPointSetsModel.h QmitkCorrespondingPointSetsWidget.h QmitkHistogramWidget.h QmitkVideoBackground.h QmitkFileChooser.h QmitkHotkeyLineEdit.h QmitkAboutDialog/QmitkAboutDialog.h QmitkErodeToolGUI.h QmitkDilateToolGUI.h QmitkMorphologicToolGUI.h QmitkOpeningToolGUI.h QmitkClosingToolGUI.h QmitkBinaryThresholdULToolGUI.h QmitkPixelManipulationToolGUI.h QmitkRegionGrow3DToolGUI.h QmitkToolRoiDataSelectionBox.h QmitkBoundingObjectWidget.h QmitkPlotWidget.h ) IF ( NOT ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION} VERSION_LESS 5.4.0 ) SET(MOC_H_FILES ${MOC_H_FILES} QmitkVtkHistogramWidget.h QmitkVtkLineProfileWidget.h ) ENDIF() IF (NOT APPLE) SET(MOC_H_FILES ${MOC_H_FILES} QmitkBaseComponent.h QmitkBaseFunctionalityComponent.h QmitkFunctionalityComponentContainer.h QmitkFunctionalityComponents/QmitkThresholdComponent.h ) ENDIF() SET(UI_FILES QmitkSliderNavigator.ui # QmitkLevelWindowRangeChange.ui # QmitkLevelWindowPresetDefinition.ui # QmitkLevelWindowWidget.ui QmitkSliceWidget.ui QmitkTransferFunctionWidget.ui QmitkTransferFunctionGeneratorWidget.ui QmitkSelectableGLWidget.ui QmitkPrimitiveMovieNavigatorWidget.ui QmitkFunctionalityComponentContainerControls.ui QmitkFunctionalityComponents/QmitkThresholdComponentControls.ui QmitkAboutDialog/QmitkAboutDialogGUI.ui ) SET(QRC_FILES QmitkExt.qrc )