From 95bee61f917bb8f052fe3c025f8fab6a6bb5f815 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Sat, 17 Oct 2026 09:21:00 +0200 Subject: [PATCH] Replace tree item tags attribute with virtual PdmUiObjectHandle::treeItemTags() --- .../CellFilters/RimEclipsePropertyFilter.cpp | 3 --- .../CellFilters/RimEclipsePropertyFilter.h | 2 +- .../GridCrossPlots/RimGridCrossPlotCurve.cpp | 12 +++++++++--- .../GridCrossPlots/RimGridCrossPlotCurve.h | 11 ++++++----- .../RimGridCrossPlotRegressionCurve.cpp | 12 +++++++++--- .../RimGridCrossPlotRegressionCurve.h | 13 +++++++------ .../ProjectDataModel/Jobs/RimEnsembleJob.cpp | 3 --- .../ProjectDataModel/Jobs/RimEnsembleJob.h | 2 +- .../ProjectDataModel/Jobs/RimSingleJob.cpp | 3 --- .../ProjectDataModel/Jobs/RimSingleJob.h | 2 +- .../Polygons/Cloud/RimPolygonCloudAddress.cpp | 3 --- .../Polygons/Cloud/RimPolygonCloudAddress.h | 2 +- .../ProjectDataModel/Polygons/RimPolygon.cpp | 3 --- .../ProjectDataModel/Polygons/RimPolygon.h | 2 +- .../ProjectDataModel/Polygons/RimPolygonFile.cpp | 3 --- .../ProjectDataModel/Polygons/RimPolygonFile.h | 2 +- .../ProjectDataModel/Polygons/RimPolygonInView.cpp | 3 --- .../ProjectDataModel/Polygons/RimPolygonInView.h | 2 +- ApplicationLibCode/ProjectDataModel/Rim3dView.cpp | 3 --- ApplicationLibCode/ProjectDataModel/Rim3dView.h | 2 +- .../ProjectDataModel/RimGridTimeHistoryCurve.cpp | 3 --- .../ProjectDataModel/RimGridTimeHistoryCurve.h | 2 +- .../ProjectDataModel/RimPlotAxisProperties.cpp | 3 --- .../ProjectDataModel/RimPlotAxisProperties.h | 2 +- .../ProjectDataModel/RimPlotCurve.cpp | 3 --- ApplicationLibCode/ProjectDataModel/RimPlotCurve.h | 2 +- .../ProjectDataModel/RimReservoirGridEnsemble.cpp | 3 --- .../ProjectDataModel/RimReservoirGridEnsemble.h | 2 +- .../RimReservoirGridEnsembleSumo.cpp | 3 --- .../ProjectDataModel/RimReservoirGridEnsembleSumo.h | 2 +- .../ProjectDataModel/RimViewWindow.cpp | 3 --- ApplicationLibCode/ProjectDataModel/RimViewWindow.h | 2 +- .../Summary/RimEnsembleCurveSet.cpp | 3 --- .../ProjectDataModel/Summary/RimEnsembleCurveSet.h | 2 +- .../ProjectDataModel/Summary/RimSummaryCase.cpp | 3 --- .../ProjectDataModel/Summary/RimSummaryCase.h | 2 +- .../ProjectDataModel/Summary/RimSummaryEnsemble.cpp | 3 --- .../ProjectDataModel/Summary/RimSummaryEnsemble.h | 2 +- .../Summary/RimSummaryTimeAxisProperties.cpp | 3 --- .../Summary/RimSummaryTimeAxisProperties.h | 2 +- .../cafProjectDataModel/cafPdmUiCore/CMakeLists.txt | 2 ++ .../cafPdmUiCore/cafPdmUiObjectHandle.h | 6 ++++++ .../cafPdmUiCore}/cafPdmUiTreeAttributes.cpp | 0 .../cafPdmUiCore}/cafPdmUiTreeAttributes.h | 3 +-- Fwk/AppFwk/cafUserInterface/CMakeLists.txt | 2 -- .../cafUserInterface/cafPdmUiTreeViewEditor.cpp | 10 +++------- .../cafUserInterface/cafPdmUiTreeViewEditor.h | 5 ----- 47 files changed, 61 insertions(+), 105 deletions(-) rename Fwk/AppFwk/{cafUserInterface => cafProjectDataModel/cafPdmUiCore}/cafPdmUiTreeAttributes.cpp (100%) rename Fwk/AppFwk/{cafUserInterface => cafProjectDataModel/cafPdmUiCore}/cafPdmUiTreeAttributes.h (94%) diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp index 9978eec48e..dd7b9d603e 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp @@ -67,9 +67,6 @@ CAF_PDM_SOURCE_INIT( RimEclipsePropertyFilter, "CellPropertyFilter" ); //-------------------------------------------------------------------------------------------------- RimEclipsePropertyFilter::RimEclipsePropertyFilter() { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObject( "Cell Property Filter", ":/CellFilter_Values.png" ); CAF_PDM_InitFieldNoDefault( &m_resultDefinition, "ResultDefinition", "Result Definition" ); diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h index 74a26619d8..57e333467a 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h @@ -72,7 +72,7 @@ public: private: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; int upperBound() const; void setUpperBound( const int& upperBound ); diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp index 873e8779f6..e5e53caa80 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp @@ -37,9 +37,6 @@ RimGridCrossPlotCurve::RimGridCrossPlotCurve() { CAF_PDM_InitObject( "Cross Plot Points", ":/WellLogCurve16x16.png" ); - // The color tag from RimPlotCurve is not used for Grid Cross Plot Curves - uiCapability()->removeAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS ); - setLineStyle( RiuQwtPlotCurveDefines::LineStyleEnum::STYLE_NONE ); setSymbol( RiuPlotCurveSymbol::SYMBOL_NONE ); setSymbolSize( 4 ); @@ -164,3 +161,12 @@ void RimGridCrossPlotCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOr nameGroup->add( &m_showLegend ); uiOrdering.skipRemainingFields( true ); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +// The color tag from RimPlotCurve is not used for Grid Cross Plot Curves +std::vector RimGridCrossPlotCurve::treeItemTags() +{ + return {}; +} diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h index bfc7ce940c..cf565b8257 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h @@ -40,11 +40,12 @@ public: void setBlackAndWhiteLegendIcons( bool blackAndWhite ); protected: - void determineSymbol(); - void updateZoomInParentPlot() override; - QString createCurveAutoName() override; - void onLoadDataAndUpdate( bool updateParentPlot ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + std::vector treeItemTags() override; + void determineSymbol(); + void updateZoomInParentPlot() override; + QString createCurveAutoName() override; + void onLoadDataAndUpdate( bool updateParentPlot ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; private: int m_dataSetIndex; diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp index 583f95ba9d..4e85ed4ec0 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp @@ -66,9 +66,6 @@ RimGridCrossPlotRegressionCurve::RimGridCrossPlotRegressionCurve() { CAF_PDM_InitObject( "Cross Plot Regression Curve", ":/WellLogCurve16x16.png" ); - // The color tag from RimPlotCurve is not used for Grid Cross Plot Curves - uiCapability()->removeAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS ); - CAF_PDM_InitFieldNoDefault( &m_regressionType, "RegressionType", "Type" ); CAF_PDM_InitFieldNoDefault( &m_minExtrapolationRangeX, "MinExtrapolationRangeX", "Min" ); @@ -513,3 +510,12 @@ void RimGridCrossPlotRegressionCurve::updateRectAnnotation() } } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +// The color tag from RimPlotCurve is not used for Grid Cross Plot Curves +std::vector RimGridCrossPlotRegressionCurve::treeItemTags() +{ + return {}; +} diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h index 54760acca1..a4f3cf55a9 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h @@ -57,12 +57,13 @@ public: void swapAxis(); protected: - void updateZoomInParentPlot() override; - QString createCurveAutoName() override; - void onLoadDataAndUpdate( bool updateParentPlot ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void updateRectAnnotation(); + std::vector treeItemTags() override; + void updateZoomInParentPlot() override; + QString createCurveAutoName() override; + void onLoadDataAndUpdate( bool updateParentPlot ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; + void updateRectAnnotation(); std::tuple, std::vector, QString> calculateRegression( RimGridCrossPlotRegressionCurve::RegressionType regressionType, diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp index b75e88e6c2..a3aa18613e 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp @@ -64,9 +64,6 @@ RimEnsembleJob::RimEnsembleJob() : m_subJobsCompleted( 0 ) , m_subJobsStarted( 0 ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Ensemble Job", ":/opm.png" ); CAF_PDM_InitFieldNoDefault( &m_inputEnsemble, "Ensemble", "Input Ensemble" ); diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h index 89c1e8cb25..0fc617044b 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h @@ -73,7 +73,7 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; std::vector setUpSelectedRealizations() const; std::string outputIteration() const; diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp index 2f415f6dd5..00057a7a09 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp @@ -46,9 +46,6 @@ RimSingleJob::RimSingleJob() , m_warningsDetected( 0 ) , m_process( nullptr ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Generic Single Job" ); } diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h index 29c57d81c3..50c6eddefe 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h @@ -52,7 +52,7 @@ public: void setStarted() override; protected: - std::vector treeItemTags(); + std::vector treeItemTags() override; virtual QStringList command() = 0; virtual std::map environment() = 0; diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp index e61d260348..e01cb709b2 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp @@ -45,9 +45,6 @@ CAF_PDM_SOURCE_INIT( RimPolygonCloudAddress, "RimPolygonCloudAddress" ); RimPolygonCloudAddress::RimPolygonCloudAddress() : objectChanged( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Sumo Polygon Address", ":/CloudBlobs.svg" ); // Inherited fields, redeclared here so this subclass gets its own ui/xml keyword. diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h index d5486a1d44..23188db1f0 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h @@ -89,7 +89,7 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; - std::vector treeItemTags(); + std::vector treeItemTags() override; private: RiaSumoConnector* sumoConnector(); diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp index c2b2032ad4..0f227aec04 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp @@ -49,9 +49,6 @@ RimPolygon::RimPolygon() : objectChanged( this ) , coordinatesChanged( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObject( "Polygon", ":/PolylinesFromFile16x16.png" ); CAF_PDM_InitField( &m_isReadOnly, "IsReadOnly", false, "Read Only" ); diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h index 8a74cba46c..9ef861faaf 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h @@ -77,7 +77,7 @@ public: private: void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp index 7a1bde8a3f..7e3f748706 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp @@ -39,9 +39,6 @@ CAF_PDM_SOURCE_INIT( RimPolygonFile, "RimPolygonFileFile" ); RimPolygonFile::RimPolygonFile() : objectChanged( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "PolygonFile", ":/Folder.png" ); // Inherited fields. The polygon items keep the original "Polygons" keyword so diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h index 3619ad9baf..fa69c2289c 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h @@ -49,7 +49,7 @@ protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; - std::vector treeItemTags(); + std::vector treeItemTags() override; private: static std::vector importDataFromFile( const QString& fileName ); diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp index 6368816743..16e8fe946b 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp @@ -54,9 +54,6 @@ CAF_PDM_SOURCE_INIT( RimPolygonInView, "RimPolygonInView" ); RimPolygonInView::RimPolygonInView() : m_pickTargetsEventHandler( new RicPolylineTargetsPickEventHandler( this ) ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Polygon", ":/PolylinesFromFile16x16.png" ); CAF_PDM_InitFieldNoDefault( &m_polygon, "Polygon", "Polygon" ); diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h index bab4544630..a73c1731ef 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h @@ -75,7 +75,7 @@ public: void onChildrenUpdated( caf::PdmChildArrayFieldHandle* childArray, std::vector& updatedObjects ) override; void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void uiOrderingForLocalPolygon( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ); diff --git a/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp b/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp index c608a69ef6..c199ca4929 100644 --- a/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp +++ b/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp @@ -102,9 +102,6 @@ Rim3dView::Rim3dView() , m_animationIntervalMillisec( 50 ) , m_animationTimerUsers( 0 ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - RiaPreferences* preferences = RiaPreferences::current(); CAF_ASSERT( preferences ); diff --git a/ApplicationLibCode/ProjectDataModel/Rim3dView.h b/ApplicationLibCode/ProjectDataModel/Rim3dView.h index 787248879b..39998a3e3b 100644 --- a/ApplicationLibCode/ProjectDataModel/Rim3dView.h +++ b/ApplicationLibCode/ProjectDataModel/Rim3dView.h @@ -291,7 +291,7 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void setupBeforeSave() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp index cd11c3d8d2..e19ba70529 100644 --- a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp @@ -55,9 +55,6 @@ CAF_PDM_SOURCE_INIT( RimGridTimeHistoryCurve, "GridTimeHistoryCurve" ); //-------------------------------------------------------------------------------------------------- RimGridTimeHistoryCurve::RimGridTimeHistoryCurve() { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Grid Time History Curve", ":/SummaryCurve16x16.png" ); CAF_PDM_InitFieldNoDefault( &m_geometrySelectionText, "GeometrySelectionText", "Cell Reference" ); diff --git a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h index ac5ad51598..7180401ddf 100644 --- a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h +++ b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h @@ -83,7 +83,7 @@ protected: void initAfterRead() override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; private: RigMainGrid* mainGrid(); diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp index e5e7d978b0..fe7cc912f4 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp @@ -60,9 +60,6 @@ RimPlotAxisProperties::RimPlotAxisProperties() , m_isRangeSettingsEnabled( true ) , m_isAlwaysRequired( false ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Axis Properties", ":/LeftAxis16x16.png" ); CAF_PDM_InitField( &m_isActive, "Active", true, "Active" ); diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h index 12063d8e62..5df5c1b4c6 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h +++ b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h @@ -160,7 +160,7 @@ protected: private: void updateOptionSensitivity(); caf::FontTools::FontSize plotFontSize() const; - std::vector treeItemTags(); + std::vector treeItemTags() override; void onPinnedTagClicked( const caf::SignalEmitter* emitter, size_t index ); private: diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp index 6ebe6ebdaa..b48ad9eaa7 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp @@ -50,9 +50,6 @@ RimPlotCurve::RimPlotCurve() , dataChanged( this ) , nameChanged( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Curve", ":/WellLogCurve16x16.png" ); CAF_PDM_InitField( &m_showCurve, "Show", true, "Show curve" ); diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h index 58d4c051cf..06f6975cda 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h +++ b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h @@ -193,7 +193,7 @@ protected: void updateYAxisInPlot( RiuPlotAxis plotAxis ); void updateXAxisInPlot( RiuPlotAxis plotAxis ); - std::vector treeItemTags(); + std::vector treeItemTags() override; void onColorTagClicked( const SignalEmitter* emitter, size_t index ); diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp index 3866a0f1d5..4ca0a5cbd3 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp @@ -81,9 +81,6 @@ void caf::AppEnum::setUp() //-------------------------------------------------------------------------------------------------- RimReservoirGridEnsemble::RimReservoirGridEnsemble() { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObjectWithNameAndComment( "Reservoir Grid Ensemble", ":/GridCaseGroup16x16.png", "", diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h index 82732cb14b..401004db3d 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h @@ -136,7 +136,7 @@ protected: void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void createDerivedObjects() override; void initAfterRead() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.cpp b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.cpp index 94c2af65e6..1bbf6d2d84 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.cpp @@ -45,9 +45,6 @@ CAF_PDM_SOURCE_INIT( RimReservoirGridEnsembleSumo, "RimReservoirGridEnsembleSumo //-------------------------------------------------------------------------------------------------- RimReservoirGridEnsembleSumo::RimReservoirGridEnsembleSumo() { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Sumo Reservoir Grid Ensemble", ":/GridCaseGroup16x16.png" ); CAF_PDM_InitFieldNoDefault( &m_sumoDataSource, "SumoDataSource", "Sumo Data Source" ); diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h index 26c1051610..d7f98347b8 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h @@ -79,7 +79,7 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void createCaseObjects() override; bool detectGridDimensionEquality() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp b/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp index 9824d703c6..626f32e6df 100644 --- a/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp @@ -51,9 +51,6 @@ RimViewWindow::RimViewWindow() : m_dockWidget( nullptr ) , m_isActiveViewer( false ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObjectWithNameAndComment( "View window", "", "", "", "ViewWindow", "The Base Class for all Views and Plots in ResInsight" ); CAF_PDM_InitFieldNoDefault( &m_windowController, "WindowController", "" ); diff --git a/ApplicationLibCode/ProjectDataModel/RimViewWindow.h b/ApplicationLibCode/ProjectDataModel/RimViewWindow.h index 2c6c563c1a..5a9e0799e7 100644 --- a/ApplicationLibCode/ProjectDataModel/RimViewWindow.h +++ b/ApplicationLibCode/ProjectDataModel/RimViewWindow.h @@ -107,7 +107,7 @@ protected: caf::PdmFieldHandle* objectToggleField() final; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; static QImage internalCaptureSnapshot( ads::CDockWidget* dockWidget, QWidget* widget, int width, int height ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.cpp index 883d21b032..8b13986841 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.cpp @@ -109,9 +109,6 @@ RimEnsembleCurveSet::RimEnsembleCurveSet() , m_realizationHash( 0 ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObjectWithNameAndComment( "Ensemble Curve Set", ":/EnsembleCurveSet16x16.png", "", diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.h b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.h index 2be791294b..1c1a53fafd 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimEnsembleCurveSet.h @@ -223,7 +223,7 @@ private: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override; void updatePlotAxis(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.cpp index 62a3a07679..17d094bc61 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.cpp @@ -42,9 +42,6 @@ CAF_PDM_ABSTRACT_SOURCE_INIT( RimSummaryCase, "SummaryCase" ); RimSummaryCase::RimSummaryCase() : nameChanged( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObject( "Summary Case", ":/SummaryCase.svg", "", "The Base Class for all Summary Cases" ); CAF_PDM_InitScriptableFieldNoDefault( &m_displayName, "ShortName", "Display Name" ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.h index f8374df17b..d64e50d795 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCase.h @@ -99,7 +99,7 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; caf::PdmFieldHandle* userDescriptionField() override; - std::vector treeItemTags(); + std::vector treeItemTags() override; void updateTreeItemName(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.cpp index 745ace7b94..af8482dd77 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.cpp @@ -65,9 +65,6 @@ RimSummaryEnsemble::RimSummaryEnsemble() : caseNameChanged( this ) , caseRemoved( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitScriptableObjectWithNameAndComment( "Summary Case Group", ":/SummaryGroup16x16.png", "", diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.h index 4830d063a6..02f305eab4 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryEnsemble.h @@ -157,7 +157,7 @@ protected: private: caf::PdmFieldHandle* userDescriptionField() override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; - std::vector treeItemTags(); + std::vector treeItemTags() override; QString nameAndItemCount() const; void updateIcon(); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp index c2a14ad16f..b20ded16f7 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.cpp @@ -92,9 +92,6 @@ CAF_PDM_SOURCE_INIT( RimSummaryTimeAxisProperties, "SummaryTimeAxisProperties" ) RimSummaryTimeAxisProperties::RimSummaryTimeAxisProperties() : requestLoadDataAndUpdate( this ) { - uiCapability()->setAttribute( caf::PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS, - [this]() { return treeItemTags(); } ); - CAF_PDM_InitObject( "Time Axis", ":/BottomAxis16x16.png" ); CAF_PDM_InitField( &m_isActive, "Active", true, "Active" ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h index ffcce09516..6c6af3806c 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTimeAxisProperties.h @@ -172,7 +172,7 @@ protected: caf::FontTools::FontSize plotFontSize() const; private: - std::vector treeItemTags(); + std::vector treeItemTags() override; void onPinnedTagClicked( const caf::SignalEmitter* emitter, size_t index ); private: diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/CMakeLists.txt b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/CMakeLists.txt index 241960dfd9..a579af0ce2 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/CMakeLists.txt +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/CMakeLists.txt @@ -68,6 +68,8 @@ set(PROJECT_FILES cafQShortenedLabel.h cafIconProvider.cpp cafIconProvider.h + cafPdmUiTreeAttributes.h + cafPdmUiTreeAttributes.cpp cafFontTools.cpp cafFontTools.h caf.h diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiObjectHandle.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiObjectHandle.h index 6e8e0ebe75..4fbc07dcc6 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiObjectHandle.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiObjectHandle.h @@ -3,6 +3,9 @@ #include "cafPdmObjectCapability.h" #include "cafPdmOptionItemInfo.h" #include "cafPdmUiItem.h" +#include "cafPdmUiTreeAttributes.h" + +#include class QMenu; @@ -56,6 +59,9 @@ public: // Virtual /// Field used to toggle object on/off in UI-related uses of the object (ie checkbox in treeview) virtual caf::PdmFieldHandle* objectToggleField() { return nullptr; } + /// Tags shown next to the item in the tree view. Evaluated each time the tags are updated + virtual std::vector treeItemTags() { return {}; } + /// Method to reimplement to catch when the field has changed due to setUiValue() virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeAttributes.cpp b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiTreeAttributes.cpp similarity index 100% rename from Fwk/AppFwk/cafUserInterface/cafPdmUiTreeAttributes.cpp rename to Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiTreeAttributes.cpp diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeAttributes.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiTreeAttributes.h similarity index 94% rename from Fwk/AppFwk/cafUserInterface/cafPdmUiTreeAttributes.h rename to Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiTreeAttributes.h index 2d8f1c4f83..5f702ef8b2 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeAttributes.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafPdmUiTreeAttributes.h @@ -46,8 +46,7 @@ namespace caf { -// A tag shown next to an item in the tree view. Provide tags by setting a -// std::function()> on an object using PdmUiTreeViewEditor::Keys::TREE_ITEM_TAGS +// A tag shown next to an item in the tree view. Provide tags by overriding PdmUiObjectHandle::treeItemTags() struct PdmUiTreeViewItemTag { enum class Position diff --git a/Fwk/AppFwk/cafUserInterface/CMakeLists.txt b/Fwk/AppFwk/cafUserInterface/CMakeLists.txt index 853c498a3c..656890fb4a 100644 --- a/Fwk/AppFwk/cafUserInterface/CMakeLists.txt +++ b/Fwk/AppFwk/cafUserInterface/CMakeLists.txt @@ -129,8 +129,6 @@ set(PROJECT_FILES cafPdmUiTabbedPropertyViewDialog.cpp cafPdmUiTreeViewItemDelegate.h cafPdmUiTreeViewItemDelegate.cpp - cafPdmUiTreeAttributes.h - cafPdmUiTreeAttributes.cpp cafUiAppearanceSettings.cpp cafUiIconFactory.cpp cafPdmUiSliderTools.h diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.cpp index 205eb06848..e2d4e9c214 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.cpp @@ -673,15 +673,11 @@ void PdmUiTreeViewEditor::updateItemDelegateForSubTree( const QModelIndex& subRo } } - if ( auto tagsFunction = uiObjectHandle->attribute( Keys::TREE_ITEM_TAGS ); - tagsFunction && tagsFunction.value() ) + for ( const auto& tag : uiObjectHandle->treeItemTags() ) { - for ( const auto& tag : tagsFunction.value()() ) + if ( !tag.text.isEmpty() || tag.icon.valid() ) { - if ( !tag.text.isEmpty() || tag.icon.valid() ) - { - m_delegate->addTag( filterIndex, guardedTag( tag, uiObjectHandle->objectHandle() ) ); - } + m_delegate->addTag( filterIndex, guardedTag( tag, uiObjectHandle->objectHandle() ) ); } } } diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.h b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.h index 3055871f0a..cd7ee3caf5 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.h +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeViewEditor.h @@ -115,8 +115,6 @@ public: PdmUiTreeViewEditor(); ~PdmUiTreeViewEditor() override; - using TreeItemTagsFunction = std::function()>; - // Attribute keys set on the root object of the tree, or on an object whose subtree is updated struct Keys { @@ -124,9 +122,6 @@ public: static inline const QString CURRENT_OBJECT = QStringLiteral( "currentObject" ); // std::function. The returned object is updated in the tree instead of the object itself static inline const QString OBJECT_FOR_UPDATE_OF_UI_TREE = QStringLiteral( "objectForUpdateOfUiTree" ); - // std::function()>. Tags shown next to the item in the tree. Evaluated each - // time the tags are updated - static inline const QString TREE_ITEM_TAGS = QStringLiteral( "treeItemTags" ); }; void enableDefaultContextMenu( bool enable );