diff --git a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp index 29bec7d032..984aa60a99 100644 --- a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.cpp @@ -106,6 +106,7 @@ RimAnalysisPlot::RimAnalysisPlot() CAF_PDM_InitFieldNoDefault( &m_selectedTimeSteps, "TimeSteps", "Select Time Steps" ); m_selectedTimeSteps.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); m_selectedTimeSteps.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); + m_selectedTimeSteps.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::HEIGHT_HINT, 150 ); // Options @@ -692,20 +693,6 @@ QList RimAnalysisPlot::calculateValueOptions( const caf: return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimAnalysisPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_selectedTimeSteps ) - { - if ( auto* attrib = dynamic_cast( attribute ) ) - { - attrib->heightHint = 150; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h index 81263d9f99..e9e037a4ff 100644 --- a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h +++ b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimAnalysisPlot.h @@ -105,7 +105,6 @@ private: caf::PdmFieldHandle* userDescriptionField() override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; std::set allAvailableTimeSteps() const; diff --git a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.cpp b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.cpp index 9ae9aa36b1..f80d934fc3 100644 --- a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.cpp +++ b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.cpp @@ -329,6 +329,13 @@ void RimPlotDataFilterItem::defineUiOrdering( QString uiConfigName, caf::PdmUiOr updateMaxMinAndDefaultValues( false ); + for ( auto* field : { &m_min, &m_max } ) + { + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, static_cast( m_lowerLimit ) ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, static_cast( m_upperLimit ) ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DELAY_SLIDER_UPDATE_UNTIL_RELEASE, true ); + } + uiOrdering.add( &m_filterTarget, { .leftLabelColumnSpan = 1 } ); if ( m_filterTarget() == ENSEMBLE_CASE ) { @@ -369,6 +376,8 @@ void RimPlotDataFilterItem::defineUiOrdering( QString uiConfigName, caf::PdmUiOr } else if ( m_filterOperation == TOP_N || m_filterOperation == BOTTOM_N ) { + QFontMetrics fm = QFontMetrics( QFont() ); + m_topBottomN.uiCapability()->setAttribute( caf::PdmUiLineEditor::Keys::MAXIMUM_WIDTH, fm.boundingRect( "XXXX" ).width() ); uiOrdering.appendToRow( &m_topBottomN ); } } @@ -376,35 +385,6 @@ void RimPlotDataFilterItem::defineUiOrdering( QString uiConfigName, caf::PdmUiOr uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPlotDataFilterItem::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_min || field == &m_max ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( !myAttr ) - { - return; - } - - myAttr->m_minimum = m_lowerLimit; - myAttr->m_maximum = m_upperLimit; - myAttr->m_delaySliderUpdateUntilRelease = true; - } - else if ( field == &m_topBottomN ) - { - caf::PdmUiLineEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( !myAttr ) return; - - QFontMetrics fm = QFontMetrics( QFont() ); - - myAttr->maximumWidth = fm.boundingRect( "XXXX" ).width(); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.h b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.h index f55d74fd67..b022b38b3f 100644 --- a/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.h +++ b/ApplicationLibCode/ProjectDataModel/AnalysisPlots/RimPlotDataFilterItem.h @@ -105,7 +105,6 @@ public: private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* objectToggleField() override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.cpp index de882803b5..3d55aa6d45 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.cpp @@ -196,7 +196,27 @@ void RimAnnotationInViewCollection::defineUiOrdering( QString uiConfigName, caf: { uiOrdering.add( &m_snapAnnotations ); uiOrdering.add( &m_annotationFontSize ); - if ( m_snapAnnotations() ) uiOrdering.add( &m_annotationPlaneDepth ); + if ( m_snapAnnotations() ) + { + if ( auto view = firstAncestorOrThisOfType() ) + { + if ( auto rimCase = view->ownerCase() ) + { + auto bb = rimCase->allCellsBoundingBox(); + m_annotationPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, + static_cast( -bb.max().z() ) ); + m_annotationPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, + static_cast( -bb.min().z() ) ); + } + else + { + m_annotationPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_annotationPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 10000.0 ); + } + } + + uiOrdering.add( &m_annotationPlaneDepth ); + } uiOrdering.skipRemainingFields( true ); } @@ -213,37 +233,6 @@ void RimAnnotationInViewCollection::fieldChangedByUi( const caf::PdmFieldHandle* scheduleRedrawOfRelevantViews(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimAnnotationInViewCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_annotationPlaneDepth ) - { - auto* attr = dynamic_cast( attribute ); - - if ( attr ) - { - if ( auto view = firstAncestorOrThisOfType() ) - { - if ( auto rimCase = view->ownerCase() ) - { - auto bb = rimCase->allCellsBoundingBox(); - attr->m_minimum = -bb.max().z(); - attr->m_maximum = -bb.min().z(); - } - else - { - attr->m_minimum = 0; - attr->m_maximum = 10000; - } - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.h b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.h index 1fb057f5f0..6b748af737 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationInViewCollection.h @@ -62,7 +62,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: std::vector allGlobalPdmAnnotations() const; diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp index 0fa9162acf..a909dafeb8 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp @@ -19,30 +19,6 @@ #include "RimAnnotationLineAppearance.h" #include "RimAnnotationCollection.h" -#include "RiaStdStringTools.h" - -#include - -#include "cafPdmUiLineEditor.h" - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -class ThicknessValidator : public QValidator -{ -public: - State validate( QString& input, int& pos ) const override - { - if ( input.isEmpty() ) return State::Intermediate; - - int val = RiaStdStringTools::toInt( input.toStdString() ); - if ( val > 0 && val < 8 ) - return State::Acceptable; - else - return State::Invalid; - } -}; - namespace caf { template <> @@ -68,6 +44,7 @@ RimAnnotationLineAppearance::RimAnnotationLineAppearance() CAF_PDM_InitField( &m_lineFieldsHidden, "LineFieldsHidden", false, "Line Fields Hidden" ); CAF_PDM_InitField( &m_color, "Color", cvf::Color3f( cvf::Color3f::DARK_GRAY ), "Line Color" ); CAF_PDM_InitField( &m_thickness, "Thickness", 2, "Line Thickness" ); + m_thickness.setRange( 1, 7 ); // Stippling not yet supported. Needs new stuff in VizFwk CAF_PDM_InitField( &m_style, "Style", LineStyle(), "Style" ); @@ -165,23 +142,6 @@ void RimAnnotationLineAppearance::fieldChangedByUi( const caf::PdmFieldHandle* c objectChanged.send(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimAnnotationLineAppearance::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_thickness ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->validator = new ThicknessValidator(); - } - } -} - CAF_PDM_SOURCE_INIT( RimPolylineAppearance, "RimPolylineAppearance" ); //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h index 16bfb18051..040833f402 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h @@ -59,7 +59,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: caf::PdmField m_lineFieldsHidden; diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp index 2d237fe372..36de193ca7 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.cpp @@ -49,7 +49,8 @@ RimReachCircleAnnotation::RimReachCircleAnnotation() CAF_PDM_InitField( &m_centerPointXyd, "CenterPointXyd", Vec3d::ZERO, "Center Point" ); m_centerPointXyd.uiCapability()->setUiEditorTypeName( caf::PdmUiPickableLineEditor::uiEditorTypeName() ); CAF_PDM_InitField( &m_centerPointPickEnabled, "AnchorPointPick", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_centerPointPickEnabled ); + m_centerPointPickEnabled.xmlCapability()->disableIO(); + m_centerPointPickEnabled.uiCapability()->setUiHidden( true ); CAF_PDM_InitField( &m_radius, "Radius", 100.0, "Radius" ); @@ -122,7 +123,16 @@ void RimReachCircleAnnotation::defineUiOrdering( QString uiConfigName, caf::PdmU { uiOrdering.add( nameField() ); uiOrdering.add( &m_centerPointXyd ); - uiOrdering.appendToRow( &m_centerPointPickEnabled ); + m_centerPointXyd.uiCapability()->setAttribute( caf::PdmUiPickableLineEditor::Keys::PICK_EVENT_HANDLER, m_centerPointEventHandler ); + m_centerPointXyd.uiCapability()->setAttribute( caf::PdmUiPickableLineEditor::Keys::ENABLE_PICKING, + m_centerPointPickEnabled() || m_centerPointXyd().isZero() ); + uiOrdering.addNewButton( m_centerPointPickEnabled ? "Stop" : "Pick", + [this]() + { + m_centerPointPickEnabled = !m_centerPointPickEnabled; + updateConnectedEditors(); + }, + { .newRow = false, .totalColumnSpan = 1 } ); uiOrdering.add( &m_radius ); auto appearanceGroup = uiOrdering.addNewGroup( "Appearance" ); @@ -141,47 +151,7 @@ void RimReachCircleAnnotation::fieldChangedByUi( const caf::PdmFieldHandle* chan m_centerPointPickEnabled = false; updateConnectedEditors(); } - if ( changedField == &m_centerPointPickEnabled ) - { - updateConnectedEditors(); - } auto annColl = firstAncestorOrThisOfTypeAsserted(); annColl->scheduleRedrawOfRelevantViews(); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimReachCircleAnnotation::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_centerPointXyd ) - { - auto* attr = dynamic_cast( attribute ); - if ( attr ) - { - attr->pickEventHandler = m_centerPointEventHandler; - attr->enablePicking = m_centerPointPickEnabled; - if ( m_centerPointXyd().isZero() ) - { - attr->enablePicking = true; - } - } - } - - if ( field == &m_centerPointPickEnabled ) - { - auto* attr = dynamic_cast( attribute ); - if ( attr ) - { - if ( m_centerPointPickEnabled ) - { - attr->m_buttonText = "Stop"; - } - else - { - attr->m_buttonText = "Pick"; - } - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h b/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h index 08a811da4c..0ee59287d9 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimReachCircleAnnotation.h @@ -63,7 +63,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: caf::PdmField m_centerPointXyd; diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp index 602980ebf4..247fedcb33 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.cpp @@ -52,12 +52,14 @@ RimTextAnnotation::RimTextAnnotation() CAF_PDM_InitField( &m_anchorPointXyd, "AnchorPointXyd", Vec3d::ZERO, "Anchor Point" ); m_anchorPointXyd.uiCapability()->setUiEditorTypeName( caf::PdmUiPickableLineEditor::uiEditorTypeName() ); CAF_PDM_InitField( &m_anchorPointPickEnabledButtonField, "AnchorPointPick", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_anchorPointPickEnabledButtonField ); + m_anchorPointPickEnabledButtonField.xmlCapability()->disableIO(); + m_anchorPointPickEnabledButtonField.uiCapability()->setUiHidden( true ); CAF_PDM_InitField( &m_labelPointXyd, "LabelPointXyd", Vec3d::ZERO, "Label Point" ); m_labelPointXyd.uiCapability()->setUiEditorTypeName( caf::PdmUiPickableLineEditor::uiEditorTypeName() ); CAF_PDM_InitField( &m_labelPointPickEnabledButtonField, "LabelPointPick", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_labelPointPickEnabledButtonField ); + m_labelPointPickEnabledButtonField.xmlCapability()->disableIO(); + m_labelPointPickEnabledButtonField.uiCapability()->setUiHidden( true ); CAF_PDM_InitField( &m_text, "Text", QString( "(New text)" ), "Text" ); m_text.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); @@ -146,9 +148,26 @@ const QString& RimTextAnnotation::text() const void RimTextAnnotation::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { uiOrdering.add( &m_anchorPointXyd ); - uiOrdering.appendToRow( &m_anchorPointPickEnabledButtonField ); + m_anchorPointXyd.uiCapability()->setAttribute( caf::PdmUiPickableLineEditor::Keys::PICK_EVENT_HANDLER, m_anchorPointPickEventHandler ); + m_anchorPointXyd.uiCapability()->setAttribute( caf::PdmUiPickableLineEditor::Keys::ENABLE_PICKING, + (bool)m_anchorPointPickEnabledButtonField ); + uiOrdering.addNewButton( m_anchorPointPickEnabledButtonField ? "Stop" : "Pick", + [this]() + { + m_anchorPointPickEnabledButtonField = !m_anchorPointPickEnabledButtonField; + updateConnectedEditors(); + }, + { .newRow = false, .totalColumnSpan = 1 } ); uiOrdering.add( &m_labelPointXyd ); - uiOrdering.appendToRow( &m_labelPointPickEnabledButtonField ); + m_labelPointXyd.uiCapability()->setAttribute( caf::PdmUiPickableLineEditor::Keys::PICK_EVENT_HANDLER, m_labelPointPickEventHandler ); + m_labelPointXyd.uiCapability()->setAttribute( caf::PdmUiPickableLineEditor::Keys::ENABLE_PICKING, (bool)m_labelPointPickEnabledButtonField ); + uiOrdering.addNewButton( m_labelPointPickEnabledButtonField ? "Stop" : "Pick", + [this]() + { + m_labelPointPickEnabledButtonField = !m_labelPointPickEnabledButtonField; + updateConnectedEditors(); + }, + { .newRow = false, .totalColumnSpan = 1 } ); uiOrdering.add( &m_text ); @@ -177,10 +196,6 @@ void RimTextAnnotation::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel m_labelPointPickEnabledButtonField = false; updateConnectedEditors(); } - if ( changedField == &m_anchorPointPickEnabledButtonField || changedField == &m_labelPointPickEnabledButtonField ) - { - updateConnectedEditors(); - } auto annColl = firstAncestorOrThisOfTypeAsserted(); if ( annColl ) annColl->scheduleRedrawOfRelevantViews(); @@ -232,42 +247,6 @@ RimAnnotationTextAppearance* RimTextAnnotation::appearance() const return m_textAppearance(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimTextAnnotation::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiPickableLineEditorAttribute* attr = dynamic_cast( attribute ); - - if ( attr && field == &m_anchorPointXyd ) - { - attr->pickEventHandler = m_anchorPointPickEventHandler; - attr->enablePicking = m_anchorPointPickEnabledButtonField; - } - else if ( attr && field == &m_labelPointXyd ) - { - attr->pickEventHandler = m_labelPointPickEventHandler; - attr->enablePicking = m_labelPointPickEnabledButtonField; - } - - if ( field == &m_anchorPointPickEnabledButtonField || field == &m_labelPointPickEnabledButtonField ) - { - auto* pbAttribute = dynamic_cast( attribute ); - if ( pbAttribute ) - { - auto boolField = static_cast*>( field ); - if ( boolField->v() ) - { - pbAttribute->m_buttonText = "Stop"; - } - else - { - pbAttribute->m_buttonText = "Pick"; - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.h b/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.h index 03be72e9a0..c93e678c4e 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.h +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimTextAnnotation.h @@ -69,7 +69,6 @@ protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; caf::PdmFieldHandle* userDescriptionField() override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: friend class RicTextAnnotation3dEditor; diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.cpp b/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.cpp index 96ee2aaea6..b06c3a77e8 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.cpp +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.cpp @@ -200,6 +200,10 @@ void RimUserDefinedPolylinesAnnotation::defineUiOrdering( QString uiConfigName, uiOrdering.add( &m_name ); uiOrdering.add( &m_targets ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FIT_CONTENT ) ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, (bool)m_enablePicking ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::BASE_COLOR, m_enablePicking ? QColor( 255, 220, 255 ) : QColor() ); uiOrdering.addNewButton( m_enablePicking ? "Stop Picking Points" : "Start Picking Points", [this]() { @@ -273,29 +277,6 @@ void RimUserDefinedPolylinesAnnotation::defineCustomContextMenu( const caf::PdmF menuBuilder.appendToMenu( menu ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimUserDefinedPolylinesAnnotation::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_targets ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FIT_CONTENT; - - if ( m_enablePicking ) - { - tvAttribute->baseColor.setRgb( 255, 220, 255 ); - tvAttribute->alwaysEnforceResizePolicy = true; - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.h b/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.h index 070009d7e2..e23040d365 100644 --- a/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.h +++ b/ApplicationLibCode/ProjectDataModel/Annotations/RimUserDefinedPolylinesAnnotation.h @@ -70,7 +70,6 @@ protected: private: void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* userDescriptionField() override; private: diff --git a/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.cpp b/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.cpp index b5f509de2b..89479f039b 100644 --- a/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.cpp +++ b/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.cpp @@ -83,6 +83,9 @@ RimCurveSetAppearance::RimCurveSetAppearance() CAF_PDM_InitField( &m_colorOpacity, "ColorOpacity", 0.7, "Opacity" ); m_colorOpacity.registerKeywordAlias( "ColorTransparency" ); m_colorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_colorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.001 ); + m_colorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_colorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 2 ); CAF_PDM_InitField( &m_ensembleParameter, "EnsembleParameter", QString( "" ), "Parameter" ); m_ensembleParameter.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); @@ -364,19 +367,3 @@ QList RimCurveSetAppearance::calculateValueOptions( cons return options; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCurveSetAppearance::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_colorOpacity ) - { - if ( auto* myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_minimum = 0.001; - myAttr->m_maximum = 1.0; - myAttr->m_decimals = 2; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.h b/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.h index eb802ee8a1..bd38f70817 100644 --- a/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.h +++ b/ApplicationLibCode/ProjectDataModel/Appearance/RimCurveSetAppearance.h @@ -70,7 +70,6 @@ private: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void updateRealizationColor(); void updateEnsembleParameterLegend( RimRegularLegendConfig* legendConfig ) const; diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.cpp b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.cpp index d036cca491..ff9132523e 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.cpp @@ -72,6 +72,7 @@ RimCellFilterCollection::RimCellFilterCollection() CAF_PDM_InitField( &m_combineModeLabel, "CombineModeLabel", QString( "" ), "Combine Polygon and Range Filters Using Operation" ); m_combineModeLabel.uiCapability()->setUiEditorTypeName( caf::PdmUiLabelEditor::uiEditorTypeName() ); + m_combineModeLabel.uiCapability()->setAttribute( caf::PdmUiLabelEditor::Keys::USE_SINGLE_WIDGET_INSTEAD_OF_LABEL_AND_EDITOR_WIDGET, true ); m_combineModeLabel.xmlCapability()->disableIO(); CAF_PDM_InitFieldNoDefault( &m_cellFilters, "CellFilters", "Filters" ); @@ -272,18 +273,6 @@ void RimCellFilterCollection::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTr updateIconState(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCellFilterCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiLabelEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_useSingleWidgetInsteadOfLabelAndEditorWidget = true; - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.h b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.h index 143c5ad0cb..08fed875c4 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.h +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellFilterCollection.h @@ -99,7 +99,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* objectToggleField() override; void initAfterRead() override; diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.cpp b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.cpp index 994ba6cb59..d02e8ff2dd 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.cpp +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.cpp @@ -334,37 +334,6 @@ void RimCellRangeFilter::setDefaultValues( int sliceDirection, int defaultSlice } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCellRangeFilter::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( !myAttr ) - { - return; - } - - auto counts = filterCellCounts(); - if ( !counts ) return; - - if ( field == &startIndexI || field == &cellCountI ) - { - myAttr->m_minimum = 1; - myAttr->m_maximum = static_cast( counts->x() ); - } - else if ( field == &startIndexJ || field == &cellCountJ ) - { - myAttr->m_minimum = 1; - myAttr->m_maximum = static_cast( counts->y() ); - } - else if ( field == &startIndexK || field == &cellCountK ) - { - myAttr->m_minimum = 1; - myAttr->m_maximum = static_cast( counts->z() ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -435,6 +404,26 @@ void RimCellRangeFilter::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder group->add( &startIndexK ); group->add( &cellCountK ); + if ( auto counts = filterCellCounts() ) + { + auto setRange = []( caf::PdmFieldHandle& field, size_t maximum ) + { caf::PdmUiSliderEditor::setRange( field.uiCapability(), 1, static_cast( maximum ) ); }; + + setRange( startIndexI, counts->x() ); + setRange( cellCountI, counts->x() ); + setRange( startIndexJ, counts->y() ); + setRange( cellCountJ, counts->y() ); + setRange( startIndexK, counts->z() ); + setRange( cellCountK, counts->z() ); + } + else + { + for ( auto* field : { &startIndexI, &cellCountI, &startIndexJ, &cellCountJ, &startIndexK, &cellCountK } ) + { + caf::PdmUiSliderEditor::clearRange( field->uiCapability() ); + } + } + uiOrdering.skipRemainingFields( true ); } diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.h b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.h index 433219d585..f86af1a7a5 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.h +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimCellRangeFilter.h @@ -69,7 +69,6 @@ public: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp index 41bfae0cc4..9978eec48e 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.cpp @@ -53,6 +53,7 @@ #include "cafPdmUiLineEditor.h" #include "cafPdmUiSliderEditor.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include "cafAssert.h" @@ -66,6 +67,9 @@ 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" ); @@ -294,11 +298,29 @@ void RimEclipsePropertyFilter::defineUiOrdering( QString uiConfigName, caf::PdmU { group2.add( &m_integerLowerBound ); group2.add( &m_integerUpperBound ); + + for ( auto* field : { &m_integerLowerBound, &m_integerUpperBound } ) + { + if ( m_minimumResultValue != cvf::UNDEFINED_DOUBLE && m_maximumResultValue != cvf::UNDEFINED_DOUBLE ) + caf::PdmUiSliderEditor::setRange( field->uiCapability(), + static_cast( m_minimumResultValue ), + static_cast( m_maximumResultValue ) ); + else + caf::PdmUiSliderEditor::clearRange( field->uiCapability() ); + } } else { group2.add( &m_lowerBound ); group2.add( &m_upperBound ); + + for ( auto* field : { &m_lowerBound, &m_upperBound } ) + { + if ( m_minimumResultValue != cvf::UNDEFINED_DOUBLE && m_maximumResultValue != cvf::UNDEFINED_DOUBLE ) + caf::PdmUiDoubleSliderEditor::setRange( field->uiCapability(), m_minimumResultValue, m_maximumResultValue ); + else + caf::PdmUiDoubleSliderEditor::clearRange( field->uiCapability() ); + } } } @@ -454,55 +476,25 @@ void RimEclipsePropertyFilter::updateActiveState() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimEclipsePropertyFilter::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimEclipsePropertyFilter::treeItemTags() { - if ( m_minimumResultValue == cvf::UNDEFINED_DOUBLE || m_maximumResultValue == cvf::UNDEFINED_DOUBLE ) - { - return; - } + std::vector tags; - if ( field == &m_lowerBound || field == &m_upperBound ) - { - if ( auto doubleAttributes = dynamic_cast( attribute ) ) - { - doubleAttributes->m_minimum = m_minimumResultValue; - doubleAttributes->m_maximum = m_maximumResultValue; - } - } - - if ( field == &m_integerLowerBound || field == &m_integerUpperBound ) - { - if ( auto integerAttributes = dynamic_cast( attribute ) ) - { - integerAttributes->m_minimum = m_minimumResultValue; - integerAttributes->m_maximum = m_maximumResultValue; - } - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipsePropertyFilter::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( !m_isDuplicatedFromLinkedView ) return; + if ( !m_isDuplicatedFromLinkedView ) return tags; auto rimView = firstAncestorOrThisOfType(); - if ( !rimView ) return; + if ( !rimView ) return tags; RimViewController* vc = rimView->viewController(); if ( vc && vc->isPropertyFilterDuplicationActive() ) { - auto* treeItemAttribute = dynamic_cast( attribute ); - if ( treeItemAttribute ) - { - treeItemAttribute->tags.clear(); - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->icon = caf::IconProvider( ":/chain.png" ); + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.icon = caf::IconProvider( ":/chain.png" ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + tags.push_back( tag ); } + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h index da76391705..74a26619d8 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimEclipsePropertyFilter.h @@ -22,6 +22,7 @@ #include "QuickAccess/RimFieldQuickAccessInterface.h" #include "RimPropertyFilter.h" +#include "cafPdmUiTreeAttributes.h" #include "cafPdmChildField.h" @@ -69,10 +70,9 @@ public: std::map> quickAccessFields() override; private: - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; + std::vector treeItemTags(); int upperBound() const; void setUpperBound( const int& upperBound ); diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.cpp b/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.cpp index 023f060128..9114b41c65 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.cpp +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.cpp @@ -196,6 +196,14 @@ void RimGeoMechPropertyFilter::defineUiOrdering( QString uiConfigName, caf::PdmU { group2.add( &m_lowerBound ); group2.add( &m_upperBound ); + + for ( auto* field : { &m_lowerBound, &m_upperBound } ) + { + if ( m_minimumResultValue != cvf::UNDEFINED_DOUBLE && m_maximumResultValue != cvf::UNDEFINED_DOUBLE ) + caf::PdmUiDoubleSliderEditor::setRange( field->uiCapability(), m_minimumResultValue, m_maximumResultValue ); + else + caf::PdmUiDoubleSliderEditor::clearRange( field->uiCapability() ); + } } updateReadOnlyStateOfAllFields(); @@ -269,29 +277,6 @@ bool RimGeoMechPropertyFilter::isActiveAndHasResult() return isActive() && m_resultDefinition->hasResult(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGeoMechPropertyFilter::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( m_minimumResultValue == cvf::UNDEFINED_DOUBLE || m_maximumResultValue == cvf::UNDEFINED_DOUBLE ) - { - return; - } - - if ( field == &m_lowerBound || field == &m_upperBound ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( !myAttr ) - { - return; - } - - myAttr->m_minimum = m_minimumResultValue; - myAttr->m_maximum = m_maximumResultValue; - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.h b/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.h index 71af1e1da1..e73c93499d 100644 --- a/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.h +++ b/ApplicationLibCode/ProjectDataModel/CellFilters/RimGeoMechPropertyFilter.h @@ -59,7 +59,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: void updateReadOnlyStateOfAllFields(); diff --git a/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp b/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp index 2029a33367..cce2a859f2 100644 --- a/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp @@ -33,6 +33,7 @@ #include "RiuPlotMainWindowTools.h" +#include "cafPdmUiButton.h" #include "cafPdmUiPropertyViewDialog.h" #include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTreeSelectionEditor.h" @@ -49,9 +50,6 @@ RimCloudDataSourceCollection::RimCloudDataSourceCollection() { CAF_PDM_InitObject( "Cloud Data" + RiaDefines::betaFeaturePostfix(), ":/Cloud.svg" ); - CAF_PDM_InitFieldNoDefault( &m_authenticate, "Authenticate", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_authenticate ); - CAF_PDM_InitFieldNoDefault( &m_sumoFieldName, "SumoFieldId", "Field Id" ); CAF_PDM_InitFieldNoDefault( &m_sumoCaseId, "SumoCaseId", "Case Id" ); m_sumoCaseId.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); @@ -59,23 +57,8 @@ RimCloudDataSourceCollection::RimCloudDataSourceCollection() CAF_PDM_InitFieldNoDefault( &m_sumoEnsembleNames, "SumoEnsembleNames", "Ensembles" ); m_sumoEnsembleNames.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); - CAF_PDM_InitFieldNoDefault( &m_addDataSources, "AddDataSources", "", "", "Add Data Sources without Ensembles" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_addDataSources ); - - CAF_PDM_InitFieldNoDefault( &m_addEnsembles, "AddEnsembles", "", "", "Add Data Sources and Create Summary Ensemble Plots" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_addEnsembles ); - CAF_PDM_InitFieldNoDefault( &m_sumoDataSources, "SumoDataSources", "Sumo Data Sources" ); - CAF_PDM_InitFieldNoDefault( &m_startServer, "StartCloudApiServer", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_startServer ); - - CAF_PDM_InitFieldNoDefault( &m_stopServer, "StopCloudApiServer", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_stopServer ); - - CAF_PDM_InitFieldNoDefault( &m_restartServer, "RestartCloudApiServer", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_restartServer ); - m_sumoConnector = RiaApplication::instance()->makeSumoConnector(); } @@ -190,50 +173,8 @@ void RimCloudDataSourceCollection::createEnsemblesFromSelectedDataSources( const //-------------------------------------------------------------------------------------------------- void RimCloudDataSourceCollection::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) { - // The Cloud API server controls are handled before the Sumo connector guard below, so the server can - // be started, stopped and restarted also when no connector is present or authentication failed. - if ( changedField == &m_startServer ) - { - // Authenticate up front, as the server is of little use without a token. The server is started - // regardless of the outcome, so it can still be force-started if authentication is cancelled. - if ( m_sumoConnector && !m_sumoConnector->isGranted() ) - { - m_sumoConnector->requestTokenWithCancelButton(); - } - - RiaApplication::instance()->cloudApiService()->start(); - - m_startServer = false; - updateConnectedEditors(); - return; - } - else if ( changedField == &m_stopServer ) - { - RiaApplication::instance()->cloudApiService()->stop(); - - m_stopServer = false; - updateConnectedEditors(); - return; - } - else if ( changedField == &m_restartServer ) - { - RiaApplication::instance()->cloudApiService()->restart(); - - m_restartServer = false; - updateConnectedEditors(); - return; - } - if ( !m_sumoConnector ) return; - if ( changedField == &m_authenticate ) - { - // Authentication only, the server is started from its own button. - m_sumoConnector->requestTokenWithCancelButton(); - - m_authenticate = false; - } - if ( changedField == &m_sumoFieldName ) { // What was picked below belonged to the asset that was just left, both the selection and the options @@ -252,18 +193,6 @@ void RimCloudDataSourceCollection::fieldChangedByUi( const caf::PdmFieldHandle* clearCachedEnsembleNames(); } - if ( changedField == &m_addEnsembles ) - { - addEnsembles(); - - m_addEnsembles = false; - } - if ( changedField == &m_addDataSources ) - { - addDataSources(); - - m_addDataSources = false; - } } //-------------------------------------------------------------------------------------------------- @@ -385,15 +314,23 @@ void RimCloudDataSourceCollection::defineUiOrdering( QString uiConfigName, caf:: { // Authentication group auto authGroup = uiOrdering.addNewGroup( "Authentication" ); - authGroup->add( &m_authenticate ); bool isGranted = m_sumoConnector && m_sumoConnector->isGranted(); QString text = " Authentication Status: "; text += isGranted ? "✔ Granted" : "❌ Not Granted"; - m_authenticate.uiCapability()->setUiName( text ); - m_authenticate.uiCapability()->setUiReadOnly( isGranted ); + authGroup->addNewLabel( text, { .newRow = true, .totalColumnSpan = 1 } ); + auto* authButton = authGroup->addNewButton( "Authenticate", + [this]() + { + if ( !m_sumoConnector ) return; + // Authentication only, the server is started from its own button. + m_sumoConnector->requestTokenWithCancelButton(); + updateConnectedEditors(); + }, + { .newRow = false, .totalColumnSpan = 1 } ); + authButton->setUiReadOnly( isGranted ); // Cloud server group auto serverGroup = uiOrdering.addNewGroup( QString( "Cloud API Server %1" ).arg( RiaDefines::betaFeaturePostfix() ) ); @@ -417,15 +354,43 @@ void RimCloudDataSourceCollection::defineUiOrdering( QString uiConfigName, caf:: serverStatus += "❌ Stopped"; } - // The status text is shown as the left label of the Start button, mirroring the Authentication status above. - m_startServer.uiCapability()->setUiName( serverStatus ); - m_startServer.uiCapability()->setUiReadOnly( isServerRunning ); - m_stopServer.uiCapability()->setUiReadOnly( !isServerRunning ); - m_restartServer.uiCapability()->setUiReadOnly( !isServerRunning ); + // The status text is shown as a label ahead of the server buttons, mirroring the Authentication status above. + serverGroup->addNewLabel( serverStatus ); - serverGroup->add( &m_startServer ); - serverGroup->add( &m_stopServer ); - serverGroup->add( &m_restartServer ); + auto* startButton = serverGroup->addNewButton( "Start", + [this]() + { + // Authenticate up front, as the server is of little use without a token. The server + // is started regardless of the outcome, so it can still be force-started if + // authentication is cancelled. + if ( m_sumoConnector && !m_sumoConnector->isGranted() ) + { + m_sumoConnector->requestTokenWithCancelButton(); + } + + RiaApplication::instance()->cloudApiService()->start(); + updateConnectedEditors(); + }, + { .newRow = true, .totalColumnSpan = 1 } ); + startButton->setUiReadOnly( isServerRunning ); + + auto* stopButton = serverGroup->addNewButton( "Stop", + [this]() + { + RiaApplication::instance()->cloudApiService()->stop(); + updateConnectedEditors(); + }, + { .newRow = false, .totalColumnSpan = 1 } ); + stopButton->setUiReadOnly( !isServerRunning ); + + auto* restartButton = serverGroup->addNewButton( "Restart", + [this]() + { + RiaApplication::instance()->cloudApiService()->restart(); + updateConnectedEditors(); + }, + { .newRow = false, .totalColumnSpan = 1 } ); + restartButton->setUiReadOnly( !isServerRunning ); // Cloud selector. Both a token and a running service are required to browse the Sumo content. if ( isGranted && isCloudApiServerAvailable() ) @@ -435,64 +400,16 @@ void RimCloudDataSourceCollection::defineUiOrdering( QString uiConfigName, caf:: uiOrdering.add( &m_sumoCaseId, layout ); uiOrdering.add( &m_sumoEnsembleNames, layout ); - uiOrdering.add( &m_addDataSources, layout ); - uiOrdering.add( &m_addEnsembles, layout ); + auto* addDataSourcesButton = uiOrdering.addNewButton( "Add Data Sources(s)", [this]() { addDataSources(); } ); + addDataSourcesButton->setUiToolTip( "Add Data Sources without Ensembles" ); + + auto* addEnsemblesButton = uiOrdering.addNewButton( "Add Ensemble(s)", [this]() { addEnsembles(); } ); + addEnsemblesButton->setUiToolTip( "Add Data Sources and Create Summary Ensemble Plots" ); } uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCloudDataSourceCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_authenticate ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Authenticate"; - } - } - else if ( field == &m_addDataSources ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Add Data Sources(s)"; - } - } - else if ( field == &m_addEnsembles ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Add Ensemble(s)"; - } - } - else if ( field == &m_startServer ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Start"; - } - } - else if ( field == &m_stopServer ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Stop"; - } - } - else if ( field == &m_restartServer ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Restart"; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.h b/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.h index 806c1b3a78..41ed91f474 100644 --- a/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.h @@ -57,7 +57,6 @@ private: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; std::vector addDataSources(); void addEnsembles(); @@ -75,19 +74,12 @@ private: void clearCachedEnsembleNames(); private: - caf::PdmField m_authenticate; caf::PdmField m_sumoFieldName; caf::PdmField m_sumoCaseId; caf::PdmField> m_sumoEnsembleNames; - caf::PdmField m_addDataSources; - caf::PdmField m_addEnsembles; caf::PdmChildArrayField m_sumoDataSources; - caf::PdmField m_startServer; - caf::PdmField m_stopServer; - caf::PdmField m_restartServer; - QPointer m_sumoConnector; std::vector m_assets; diff --git a/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.cpp b/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.cpp index e4bcb57d00..1b53ad67d2 100644 --- a/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.cpp +++ b/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.cpp @@ -64,8 +64,10 @@ RimSumoDataSource::RimSumoDataSource() "Realization Filter", "", "Specify realization numbers. Example: 1-5, 8, 11-20, !4 will include 1, 2, 3, 5, 8, 11-20" ); + m_realizationFilter.uiCapability()->setAttribute( caf::PdmUiLineEditor::Keys::PLACEHOLDER_TEXT, "E.g. 0,1,4-10,!6. Use '*' for all." ); CAF_PDM_InitFieldNoDefault( &m_realizationFilterInfo, "RealizationFilterInfo", "Info" ); + m_realizationFilterInfo.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::HEIGHT_HINT, -1 ); m_realizationFilterInfo.registerGetMethod( this, &RimSumoDataSource::realizationFilterInfoText ); m_realizationFilterInfo.uiCapability()->setUiReadOnly( true ); m_realizationFilterInfo.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); @@ -298,27 +300,6 @@ void RimSumoDataSource::appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder menuBuilder.addCmdFeature( "RicCreateSumoReservoirGridEnsembleFeature" ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSumoDataSource::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_realizationFilter ) - { - if ( auto lineEdAttr = dynamic_cast( attribute ) ) - { - lineEdAttr->placeholderText = "E.g. 0,1,4-10,!6. Use '*' for all."; - } - } - else if ( field == &m_realizationFilterInfo ) - { - if ( auto* myAttr = dynamic_cast( attribute ) ) - { - myAttr->heightHint = -1; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.h b/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.h index 25f767a050..a5d413662a 100644 --- a/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.h +++ b/ApplicationLibCode/ProjectDataModel/Cloud/RimSumoDataSource.h @@ -84,9 +84,8 @@ public: void updateName(); private: - void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.cpp b/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.cpp index c7564e1c5d..e8720c84a9 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.cpp @@ -39,6 +39,8 @@ Rim3dWellLogCurveCollection::Rim3dWellLogCurveCollection() CAF_PDM_InitField( &m_planeWidthScaling, "PlaneWidthScaling", 1.0f, "Width Scaling" ); m_planeWidthScaling.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_planeWidthScaling.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.25 ); + m_planeWidthScaling.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 2.5 ); CAF_PDM_InitField( &m_showGrid, "Show3dWellLogGrid", true, "Show Grid" ); CAF_PDM_InitField( &m_showBackground, "Show3dWellLogBackground", false, "Show Background" ); CAF_PDM_InitFieldNoDefault( &m_3dWellLogCurves, "ArrayOf3dWellLogCurves", "" ); @@ -195,18 +197,3 @@ void Rim3dWellLogCurveCollection::defineUiOrdering( QString uiConfigName, caf::P settingsGroup->add( &m_showBackground ); settingsGroup->add( &m_planeWidthScaling ); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void Rim3dWellLogCurveCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiDoubleSliderEditorAttribute* widthAttribute = dynamic_cast( attribute ); - if ( widthAttribute ) - { - widthAttribute->m_minimum = 0.25; - widthAttribute->m_maximum = 2.5; - } -} diff --git a/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.h b/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.h index 9c9b8b59a9..1d27d6e084 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/Rim3dWellLogCurveCollection.h @@ -58,7 +58,6 @@ private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; caf::PdmFieldHandle* objectToggleField() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: caf::PdmField m_showPlot; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.cpp index e9a31a5cc3..63c8340d8a 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.cpp @@ -121,6 +121,8 @@ RimEnsembleFractureStatistics::RimEnsembleFractureStatistics() CAF_PDM_InitFieldNoDefault( &m_filePaths, "FilePaths", "" ); CAF_PDM_InitFieldNoDefault( &m_filePathsTable, "FilePathsTable", "File Paths Table" ); + m_filePathsTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_filePathsTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); m_filePathsTable.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); m_filePathsTable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_filePathsTable.uiCapability()->setUiReadOnly( true ); @@ -129,6 +131,8 @@ RimEnsembleFractureStatistics::RimEnsembleFractureStatistics() CAF_PDM_InitField( &m_excludeZeroWidthFractures, "ExcludeZeroWidthFractures", true, "Exclude Zero Width Fractures" ); CAF_PDM_InitFieldNoDefault( &m_statisticsTable, "StatisticsTable", "Statistics Table" ); + m_statisticsTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_statisticsTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); m_statisticsTable.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); m_statisticsTable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_statisticsTable.uiCapability()->setUiReadOnly( true ); @@ -156,6 +160,9 @@ RimEnsembleFractureStatistics::RimEnsembleFractureStatistics() CAF_PDM_InitField( &m_selectedStatisticsType, "SelectedStatisticsType", defaultStatisticsTypes, "Statistics Type" ); m_selectedStatisticsType.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); m_selectedStatisticsType.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); + m_selectedStatisticsType.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); + m_selectedStatisticsType.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TOGGLE_ALL_CHECKBOX, false ); + m_selectedStatisticsType.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SINGLE_SELECTION_MODE, false ); CAF_PDM_InitFieldNoDefault( &m_computeStatistics, "ComputeStatistics", "Compute Templates" ); m_computeStatistics.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonEditor::uiEditorTypeName() ); @@ -214,43 +221,6 @@ QList RimEnsembleFractureStatistics::calculateValueOptio return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEnsembleFractureStatistics::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_filePathsTable ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } - else if ( field == &m_selectedStatisticsType ) - { - caf::PdmUiTreeSelectionEditorAttribute* attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->showTextFilter = false; - attrib->showToggleAllCheckbox = false; - attrib->singleSelectionMode = false; - } - } - else if ( field == &m_statisticsTable ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.h b/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.h index fbc326c6ae..25fb95d4c0 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimEnsembleFractureStatistics.h @@ -108,7 +108,6 @@ public: bool excludeZeroWidthFractures() const; protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.cpp index 75c0dc0834..77b33fa635 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.cpp @@ -117,10 +117,14 @@ RimFracture::RimFracture() CAF_PDM_InitField( &m_azimuth, "Azimuth", 0.0, "Azimuth" ); m_azimuth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_azimuth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_azimuth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 360.0 ); CAF_PDM_InitField( &m_perforationLength, "PerforationLength", 1.0, "Perforation Length" ); CAF_PDM_InitField( &m_perforationEfficiency, "PerforationEfficiency", 1.0, "Perforation Efficiency" ); m_perforationEfficiency.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_perforationEfficiency.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_perforationEfficiency.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); CAF_PDM_InitField( &m_wellDiameter, "WellDiameter", 0.216, "Well Diameter at Fracture" ); CAF_PDM_InitField( &m_dip, "Dip", 0.0, "Dip" ); @@ -727,6 +731,14 @@ void RimFracture::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& ui m_wellPathDepthAtFracture.uiCapability()->setUiName( fractureTemplate()->wellPathDepthAtFractureUiName() ); + { + auto [minimum, maximum] = fractureTemplate()->wellPathDepthAtFractureRange(); + m_wellPathDepthAtFracture.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, + static_cast( minimum ) ); + m_wellPathDepthAtFracture.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, + static_cast( maximum ) ); + } + if ( fractureTemplate()->orientationType() == RimFractureTemplate::ALONG_WELL_PATH || fractureTemplate()->orientationType() == RimFractureTemplate::TRANSVERSE_WELL_PATH ) { @@ -778,46 +790,6 @@ void RimFracture::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& ui } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFracture::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_azimuth ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = 360; - } - } - - if ( field == &m_perforationEfficiency ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = 1.0; - } - } - - if ( field == &m_wellPathDepthAtFracture ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - if ( fractureTemplate() ) - { - auto [minimum, maximum] = fractureTemplate()->wellPathDepthAtFractureRange(); - myAttr->m_minimum = minimum; - myAttr->m_maximum = maximum; - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.h b/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.h index 8c26a3400a..b09b9ad0ec 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFracture.h @@ -147,8 +147,7 @@ public: protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void initAfterRead() override; + void initAfterRead() override; private: cvf::Vec3d fracturePositionForUi() const; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.cpp index 32e1d1b0fc..2d0522f24f 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.cpp @@ -34,6 +34,7 @@ RimFractureExportSettings::RimFractureExportSettings() CAF_PDM_InitFieldNoDefault( &fileName, "Filename", "Export Filename" ); fileName.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); + fileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_SAVE_FILE_NAME, true ); CAF_PDM_InitFieldNoDefault( &caseToApply, "CaseToApply", "Case to Apply" ); } @@ -51,18 +52,3 @@ QList RimFractureExportSettings::calculateValueOptions( } return options; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFractureExportSettings::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &fileName ) - { - caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_selectSaveFileName = true; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.h b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.h index a29c856225..b0e55e7d10 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureExportSettings.h @@ -41,7 +41,4 @@ public: caf::PdmPtrField caseToApply; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - -protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; }; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.cpp index 1bbc15246c..263d2e4f6f 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.cpp @@ -138,6 +138,8 @@ RimFractureTemplate::RimFractureTemplate() CAF_PDM_InitField( &m_perforationEfficiency, "PerforationEfficiency", 1.0, "Perforation Efficiency" ); m_perforationEfficiency.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_perforationEfficiency.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_perforationEfficiency.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); CAF_PDM_InitField( &m_wellDiameter, "WellDiameter", 0.216, "Well Diameter at Fracture" ); CAF_PDM_InitScriptableField( &m_conductivityType, @@ -195,6 +197,9 @@ RimFractureTemplate::RimFractureTemplate() m_dFactorSummaryText.uiCapability()->setUiReadOnly( true ); m_dFactorSummaryText.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); m_dFactorSummaryText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); + m_dFactorSummaryText.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_dFactorSummaryText.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::FONT, QFont( "Monospace", 10 ) ); + m_dFactorSummaryText.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); CAF_PDM_InitScriptableField( &m_heightScaleFactor, "HeightScaleFactor", 1.0, "Height" ); CAF_PDM_InitScriptableField( &m_halfLengthScaleFactor, "WidthScaleFactor", 1.0, "Half Length" ); @@ -349,6 +354,12 @@ void RimFractureTemplate::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde { prepareFieldsForUiDisplay(); + { + auto [minimum, maximum] = wellPathDepthAtFractureRange(); + m_wellPathDepthAtFracture.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, static_cast( minimum ) ); + m_wellPathDepthAtFracture.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, static_cast( maximum ) ); + } + { auto group = uiOrdering.addNewGroup( "Sensitivity Scale Factors" ); group->setCollapsedByDefault(); @@ -408,46 +419,6 @@ void RimFractureTemplate::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFractureTemplate::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_perforationEfficiency ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = 1.0; - } - } - - if ( field == &m_dFactorSummaryText ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - - QFont font( "Monospace", 10 ); - myAttr->font = font; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } - - if ( field == &m_wellPathDepthAtFracture ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - auto [minimum, maximum] = wellPathDepthAtFractureRange(); - myAttr->m_minimum = minimum; - myAttr->m_maximum = maximum; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.h b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.h index ece6ef75b4..1bc24b4ba5 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureTemplate.h @@ -193,7 +193,6 @@ protected: caf::PdmFieldHandle* userDescriptionField() override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; std::vector fracturesUsingThisTemplate() const; virtual void onLoadDataAndUpdateGeometryHasChanged() = 0; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.cpp index c7bd471b85..8fe8ec4421 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.cpp @@ -451,6 +451,7 @@ void RimMeshFractureTemplate::defineUiOrdering( QString uiConfigName, caf::PdmUi { caf::PdmUiGroup* group = uiOrdering.addNewGroup( "Input" ); group->add( &m_stimPlanFileName ); + m_stimPlanFileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::FILE_SELECTION_FILTER, getFileSelectionFilter() ); group->add( &m_activeTimeStepIndex ); group->add( &m_userDefinedWellPathDepthAtFracture ); group->add( &m_wellPathDepthAtFracture ); @@ -489,23 +490,6 @@ void RimMeshFractureTemplate::defineUiOrdering( QString uiConfigName, caf::PdmUi RimFractureTemplate::defineUiOrdering( uiConfigName, uiOrdering ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimMeshFractureTemplate::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - RimFractureTemplate::defineEditorAttribute( field, uiConfigName, attribute ); - - if ( field == &m_stimPlanFileName ) - { - caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_fileSelectionFilter = getFileSelectionFilter(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.h b/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.h index 071f70d4f3..92a056bc82 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimMeshFractureTemplate.h @@ -76,8 +76,7 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void onLoadDataAndUpdateGeometryHasChanged() override; + void onLoadDataAndUpdateGeometryHasChanged() override; virtual std::vector fractureGridResultsForUnitSystem( const QString& resultName, const QString& unitName, diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.cpp index 571f193974..08cba23723 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.cpp @@ -60,9 +60,11 @@ RimPerforationInterval::RimPerforationInterval() CAF_PDM_InitField( &m_useCustomStartDate, "UseCustomStartDate", false, "Custom Start Date" ); CAF_PDM_InitField( &m_startDate, "StartDate", QDateTime::currentDateTime(), "Start Date" ); + m_startDate.uiCapability()->setAttribute( caf::PdmUiDateEditor::Keys::DATE_FORMAT, "dd MMM yyyy" ); CAF_PDM_InitField( &m_useCustomEndDate, "UseCustomEndDate", false, "Custom End Date" ); CAF_PDM_InitField( &m_endDate, "EndDate", QDateTime::currentDateTime(), "End Date" ); + m_endDate.uiCapability()->setAttribute( caf::PdmUiDateEditor::Keys::DATE_FORMAT, "dd MMM yyyy" ); CAF_PDM_InitScriptableFieldNoDefault( &m_valves, "Valves", "Valves" ); @@ -398,6 +400,14 @@ void RimPerforationInterval::defineUiOrdering( QString uiConfigName, caf::PdmUiO m_endMD.uiCapability()->setUiName( "End MD [ft]" ); m_diameter.uiCapability()->setUiName( "Diameter [ft]" ); } + + for ( auto* field : { &m_startMD, &m_endMD } ) + { + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, + static_cast( wellPath->uniqueStartMD() ) ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, + static_cast( wellPath->uniqueEndMD() ) ); + } } } @@ -470,34 +480,6 @@ QList RimPerforationInterval::calculateValueOptions( con return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPerforationInterval::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_startDate || field == &m_endDate ) - { - caf::PdmUiDateEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->dateFormat = "dd MMM yyyy"; - } - } - else if ( field == &m_startMD || field == &m_endMD ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( myAttr ) - { - auto wellPath = firstAncestorOrThisOfType(); - if ( !wellPath ) return; - - myAttr->m_minimum = wellPath->uniqueStartMD(); - myAttr->m_maximum = wellPath->uniqueEndMD(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.h b/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.h index e4b02c286f..088f968059 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimPerforationInterval.h @@ -87,7 +87,6 @@ protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp index 644fd1b30a..185c0ce4b3 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp @@ -78,6 +78,8 @@ RimStimPlanFractureTemplate::RimStimPlanFractureTemplate() m_propertiesTable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_propertiesTable.uiCapability()->setUiReadOnly( true ); m_propertiesTable.xmlCapability()->disableIO(); + m_propertiesTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_propertiesTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); CAF_PDM_InitField( &m_showStimPlanMesh_OBSOLETE, "ShowStimPlanMesh", true, "" ); m_showStimPlanMesh_OBSOLETE.uiCapability()->setUiHidden( true ); @@ -691,26 +693,6 @@ QString RimStimPlanFractureTemplate::getFileSelectionFilter() const return "StimPlan Xml Files(*.xml);;All Files (*.*)"; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimStimPlanFractureTemplate::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - RimMeshFractureTemplate::defineEditorAttribute( field, uiConfigName, attribute ); - - if ( field == &m_propertiesTable ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h b/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h index 220b930281..15d4a0635c 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.h @@ -116,7 +116,6 @@ protected: void initAfterRead() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; QString getFileSelectionFilter() const override; QStringList conductivityResultNames() const override; diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.cpp index d7b2b4c77f..d4ff14ac12 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.cpp @@ -21,7 +21,6 @@ #include "RimWellPath.h" #include "RimWellPathValve.h" -#include "cafPdmDoubleStringValidator.h" #include "cafPdmFieldScriptingCapability.h" #include "cafPdmObjectScriptingCapability.h" #include "cafPdmUiDoubleValueEditor.h" @@ -176,26 +175,6 @@ void RimWellPathAicdParameters::defineUiOrdering( QString uiConfigName, caf::Pdm additionalGroup->setCollapsedByDefault(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathAicdParameters::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - const caf::PdmField>* optionalField = dynamic_cast>*>( field ); - caf::PdmUiLineEditorAttribute* lineEditorAttr = dynamic_cast( attribute ); - if ( optionalField && lineEditorAttr ) - { - if ( optionalFieldsWithNoValidDefault().count( optionalField ) ) - { - lineEditorAttr->validator = new caf::PdmDoubleStringValidator( "" ); - } - else - { - lineEditorAttr->validator = new caf::PdmDoubleStringValidator( "1*" ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.h b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.h index c89b55e0f5..c617ac906e 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathAicdParameters.h @@ -60,7 +60,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void migrateFieldContent( QString& fieldContent, caf::PdmFieldHandle* fieldHandle ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.cpp index 6854f70201..865950a4ec 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.cpp @@ -274,6 +274,13 @@ void RimWellPathFracture::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde } caf::PdmUiGroup* locationGroup = uiOrdering.addNewGroup( "Location / Orientation" ); + if ( auto wellPath = firstAncestorOrThisOfType() ) + { + m_measuredDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, + static_cast( wellPath->uniqueStartMD() ) ); + m_measuredDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, + static_cast( wellPath->uniqueEndMD() ) ); + } locationGroup->add( &m_measuredDepth ); locationGroup->add( &m_azimuth ); locationGroup->add( &m_uiWellPathAzimuth ); @@ -299,28 +306,6 @@ void RimWellPathFracture::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathFracture::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - RimFracture::defineEditorAttribute( field, uiConfigName, attribute ); - - if ( field == &m_measuredDepth ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( myAttr ) - { - auto wellPath = firstAncestorOrThisOfType(); - if ( !wellPath ) return; - - myAttr->m_minimum = wellPath->uniqueStartMD(); - myAttr->m_maximum = wellPath->uniqueEndMD(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.h b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.h index 2bedaab954..60b3eeec6f 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathFracture.h @@ -24,7 +24,6 @@ namespace caf { class PdmFieldHandle; -class PdmUiEditorAttribute; } // namespace caf //================================================================================================== @@ -64,7 +63,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: void updatePositionFromMeasuredDepth(); diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.cpp index ed8d6b3a74..b9533bcfce 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.cpp @@ -641,6 +641,27 @@ void RimWellPathValve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin m_measuredDepth.uiCapability()->setUiName( "Measured Depth [ft]" ); } } + + { + double minimumValue = 0.0, maximumValue = 0.0; + + auto perforationInterval = firstAncestorOrThisOfType(); + if ( perforationInterval ) + { + minimumValue = perforationInterval->startMD(); + maximumValue = perforationInterval->endMD(); + } + else + { + auto parentWellPath = firstAncestorOrThisOfTypeAsserted(); + + minimumValue = parentWellPath->startMD(); + maximumValue = parentWellPath->endMD(); + } + m_measuredDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, minimumValue ); + m_measuredDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, maximumValue ); + } + uiOrdering.add( &m_measuredDepth, { .totalColumnSpan = 3, .leftLabelColumnSpan = 1 } ); } } @@ -663,38 +684,6 @@ void RimWellPathValve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathValve::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_measuredDepth ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( myAttr ) - { - double minimumValue = 0.0, maximumValue = 0.0; - - auto perforationInterval = firstAncestorOrThisOfType(); - if ( perforationInterval ) - { - minimumValue = perforationInterval->startMD(); - maximumValue = perforationInterval->endMD(); - } - else - { - auto wellPath = firstAncestorOrThisOfTypeAsserted(); - - minimumValue = wellPath->startMD(); - maximumValue = wellPath->endMD(); - } - myAttr->m_minimum = minimumValue; - myAttr->m_maximum = maximumValue; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.h b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.h index 75c024f6d8..f507e9b20d 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.h +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimWellPathValve.h @@ -94,7 +94,6 @@ private: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.cpp b/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.cpp index a92a44498e..c8b197439e 100644 --- a/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.cpp +++ b/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.cpp @@ -98,6 +98,9 @@ RimContourMapProjection::RimContourMapProjection() m_oilFloodingType.setValue( RigFloodingSettings::FloodingType::WATER_FLOODING ); CAF_PDM_InitField( &m_userDefinedFloodingOil, "UserDefinedFloodingOil", 0.0, "" ); m_userDefinedFloodingOil.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); CAF_PDM_InitField( &m_gasFloodingType, "GasFloodingType", RigFloodingSettings::FloodingType::GAS_FLOODING, "Residual Oil-in-Gas Given By" ); caf::AppEnum::setEnumSubset( &m_gasFloodingType, @@ -106,6 +109,9 @@ RimContourMapProjection::RimContourMapProjection() CAF_PDM_InitField( &m_userDefinedFloodingGas, "UserDefinedFloodingGas", 0.0, "" ); m_userDefinedFloodingGas.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); CAF_PDM_InitField( &m_showContourLines, "ContourLines", true, "Show Contour Lines" ); CAF_PDM_InitField( &m_showContourLabels, "ContourLabels", true, "Show Contour Labels" ); @@ -584,31 +590,6 @@ void RimContourMapProjection::fieldChangedByUi( const caf::PdmFieldHandle* chang baseView()->scheduleCreateDisplayModelAndRedraw(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimContourMapProjection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( &m_lowerThreshold == field || &m_upperThreshold == field ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_minimum = m_minResultAllTimeSteps; - myAttr->m_maximum = m_maxResultAllTimeSteps; - myAttr->m_sliderTickCount = 20; - } - } - else if ( ( &m_userDefinedFloodingOil == field ) || ( &m_userDefinedFloodingGas == field ) ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_minimum = 0.0; - myAttr->m_maximum = 1.0; - myAttr->m_sliderTickCount = 20; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -670,6 +651,12 @@ void RimContourMapProjection::appendValueFilterGroup( caf::PdmUiOrdering& uiOrde auto valueFilterGroup = uiOrdering.addNewGroup( "Value Filter" ); valueFilterGroup->add( &m_valueFilterType ); + for ( auto* field : { &m_lowerThreshold, &m_upperThreshold } ) + { + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, m_minResultAllTimeSteps ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, m_maxResultAllTimeSteps ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); + } switch ( m_valueFilterType() ) { case RimIntersectionFilterEnum::INTERSECT_FILTER_BELOW: diff --git a/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.h b/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.h index 0db6857361..493e69fbf7 100644 --- a/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.h +++ b/ApplicationLibCode/ProjectDataModel/ContourMap/RimContourMapProjection.h @@ -128,7 +128,6 @@ protected: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; diff --git a/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.cpp b/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.cpp index c110fd459c..248df5ff12 100644 --- a/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.cpp +++ b/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.cpp @@ -198,6 +198,10 @@ RimStatisticsContourMap::RimStatisticsContourMap() m_oilFloodingType.setValue( RigFloodingSettings::FloodingType::WATER_FLOODING ); CAF_PDM_InitField( &m_userDefinedFloodingOil, "UserDefinedFloodingOil", 0.0, "" ); m_userDefinedFloodingOil.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DELAY_SLIDER_UPDATE_UNTIL_RELEASE, true ); CAF_PDM_InitField( &m_gasFloodingType, "GasFloodingType", RigFloodingSettings::FloodingType::GAS_FLOODING, "Residual Gas Given By" ); caf::AppEnum::setEnumSubset( &m_gasFloodingType, @@ -206,6 +210,10 @@ RimStatisticsContourMap::RimStatisticsContourMap() CAF_PDM_InitField( &m_userDefinedFloodingGas, "UserDefinedFloodingGas", 0.0, "" ); m_userDefinedFloodingGas.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DELAY_SLIDER_UPDATE_UNTIL_RELEASE, true ); CAF_PDM_InitFieldNoDefault( &m_selectedTimeSteps, "SelectedTimeSteps", "Time Step Selection" ); m_selectedTimeSteps.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); @@ -526,23 +534,6 @@ QList RimStatisticsContourMap::calculateValueOptions( co return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimStatisticsContourMap::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( ( &m_userDefinedFloodingOil == field ) || ( &m_userDefinedFloodingGas == field ) ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_minimum = 0.0; - myAttr->m_maximum = 1.0; - myAttr->m_sliderTickCount = 20; - myAttr->m_delaySliderUpdateUntilRelease = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.h b/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.h index 5efebe6d9a..3c5cd17333 100644 --- a/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.h +++ b/ApplicationLibCode/ProjectDataModel/ContourMap/RimStatisticsContourMap.h @@ -107,7 +107,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; void setupBeforeSave() override; void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; diff --git a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp index f74913d7db..8e0160422b 100644 --- a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.cpp @@ -198,13 +198,6 @@ void RimAbstractCorrelationPlot::fieldChangedByUi( const caf::PdmFieldHandle* ch } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimAbstractCorrelationPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h index d1003f20db..28cb6356de 100644 --- a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h +++ b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimAbstractCorrelationPlot.h @@ -87,7 +87,6 @@ protected: // Overridden PDM methods void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* userDescriptionField() override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.cpp b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.cpp index f08134d96d..54aac87af4 100644 --- a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.cpp @@ -41,6 +41,7 @@ #include "cafPdmPointer.h" #include "cafPdmUiComboBoxEditor.h" +#include "cafPdmUiDoubleSliderEditor.h" #include "cafPdmUiTextEditor.h" #include "cafPdmUiValueRangeEditor.h" @@ -76,7 +77,11 @@ RimParameterResultCrossPlot::RimParameterResultCrossPlot() CAF_PDM_InitField( &m_useParameterFilter, "UseParameterFilter", false, "Use Parameter Filter" ); CAF_PDM_InitField( &m_summaryFilterRange, "SummaryFilterRange", std::make_pair( 0.0, 0.0 ), "Summary Value Range", "", "", "" ); + m_summaryFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 4 ); + m_summaryFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); CAF_PDM_InitField( &m_parameterFilterRange, "ParameterFilterRange", std::make_pair( 0.0, 0.0 ), "Parameter Value Range", "", "", "" ); + m_parameterFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 4 ); + m_parameterFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); CAF_PDM_InitFieldNoDefault( &m_excludedCasesText, "ExcludedCasesText", "Excluded Cases" ); m_excludedCasesText.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); @@ -154,6 +159,11 @@ void RimParameterResultCrossPlot::appendFilterFields( caf::PdmUiOrdering& uiOrde uiOrdering.add( &m_useParameterFilter ); if ( m_useParameterFilter ) { + m_summaryFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, m_yValueRange.first ); + m_summaryFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, m_yValueRange.second ); + m_parameterFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, m_xValueRange.first ); + m_parameterFilterRange.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, m_xValueRange.second ); + uiOrdering.add( &m_summaryFilterRange ); uiOrdering.add( &m_parameterFilterRange ); uiOrdering.add( &m_excludedCasesText ); @@ -224,37 +234,6 @@ QList RimParameterResultCrossPlot::calculateValueOptions return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimParameterResultCrossPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_summaryFilterRange ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_decimals = 4; - attr->m_sliderTickCount = 20; - - attr->m_minimum = m_yValueRange.first; - attr->m_maximum = m_yValueRange.second; - } - } - else if ( field == &m_parameterFilterRange ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_decimals = 4; - attr->m_sliderTickCount = 20; - - attr->m_minimum = m_xValueRange.first; - attr->m_maximum = m_xValueRange.second; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.h b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.h index c87f7fcd00..e065f6651d 100644 --- a/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.h +++ b/ApplicationLibCode/ProjectDataModel/CorrelationPlots/RimParameterResultCrossPlot.h @@ -57,7 +57,6 @@ private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; RiuPlotWidget* doCreatePlotViewWidget( QWidget* mainWindowParent = nullptr ) override; diff --git a/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.cpp b/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.cpp index e2bd6e4f30..6d6b1a9e28 100644 --- a/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.cpp +++ b/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.cpp @@ -61,14 +61,16 @@ RimEnsembleFileSet::RimEnsembleFileSet() CAF_PDM_InitObject( "Ensemble", ":/SummaryEnsemble.svg", "", "" ); CAF_PDM_InitField( &m_pathPattern, "PathPattern", QString(), "Path Pattern", "", "", "" ); + m_pathPattern.uiCapability()->setAttribute( caf::PdmUiLineEditor::Keys::PLACEHOLDER_TEXT, "Enter path pattern..." ); CAF_PDM_InitField( &m_realizationSubSet, "RealizationSubSet", QString(), "Realization Filter", "", "Specify realization numbers. Example: 1-5, 8, 11-20, !4 will include 1, 2, 3, 5, 8, 11-20" ); - + m_realizationSubSet.uiCapability()->setAttribute( caf::PdmUiLineEditor::Keys::PLACEHOLDER_TEXT, "E.g. 0,1,4-10,!6. Use '*' for all." ); CAF_PDM_InitFieldNoDefault( &m_ensembleInfo, "EnsembleInfo", "Info" ); + m_ensembleInfo.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::HEIGHT_HINT, -1 ); m_ensembleInfo.registerGetMethod( this, &RimEnsembleFileSet::ensembleInfo ); m_ensembleInfo.uiCapability()->setUiReadOnly( true ); m_ensembleInfo.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); @@ -265,34 +267,6 @@ void RimEnsembleFileSet::setAutoName( bool autoName ) m_autoName = autoName; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEnsembleFileSet::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_pathPattern ) - { - if ( auto lineEdAttr = dynamic_cast( attribute ) ) - { - lineEdAttr->placeholderText = "Enter path pattern..."; - } - } - else if ( field == &m_realizationSubSet ) - { - if ( auto lineEdAttr = dynamic_cast( attribute ) ) - { - lineEdAttr->placeholderText = "E.g. 0,1,4-10,!6. Use '*' for all."; - } - } - else if ( field == &m_ensembleInfo ) - { - if ( auto* myAttr = dynamic_cast( attribute ) ) - { - myAttr->heightHint = -1; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.h b/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.h index 3e3e3b4604..c34be00cf3 100644 --- a/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.h +++ b/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSet.h @@ -64,7 +64,6 @@ public: void reload(); private: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; 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; diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.cpp b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.cpp index 52b0f67763..5f48fb4c9e 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.cpp +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.cpp @@ -57,9 +57,6 @@ RimFaultDistance::RimFaultDistance() CAF_PDM_InitScriptableFieldNoDefault( &m_faults, "SelectedFaults", "Faults" ); m_faults.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); - CAF_PDM_InitFieldNoDefault( &m_generateButton, "Generate", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_generateButton ); - setDeletable( true ); } @@ -155,11 +152,6 @@ void RimFaultDistance::fieldChangedByUi( const caf::PdmFieldHandle* changedField removeGeneratedResult( previousName ); } } - else if ( changedField == &m_generateButton ) - { - m_generateButton = false; - compute(); - } } //-------------------------------------------------------------------------------------------------- @@ -201,24 +193,10 @@ void RimFaultDistance::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin { uiOrdering.add( &m_resultName ); uiOrdering.add( &m_faults ); - uiOrdering.add( &m_generateButton ); + uiOrdering.addNewButton( "Generate", [this]() { compute(); } ); uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFaultDistance::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_generateButton ) - { - if ( auto* attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Generate"; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.h b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.h index dcbfa8acf8..4d2c6866c9 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.h +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistance.h @@ -58,13 +58,11 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; caf::PdmFieldHandle* userDescriptionField() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; + void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; private: void removeGeneratedResult( const QString& name ); caf::PdmPtrArrayField m_faults; caf::PdmField m_resultName; - caf::PdmField m_generateButton; }; diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp index 40373f8048..df3d1fe6e6 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.cpp @@ -81,6 +81,7 @@ RimFaultReactivationModel::RimFaultReactivationModel() CAF_PDM_InitField( &m_userDescription, "UserDescription", QString( "Model" ), "Name" ); CAF_PDM_InitFieldNoDefault( &m_geomechCase, "GeoMechCase", "Global GeoMech Model" ); CAF_PDM_InitFieldNoDefault( &m_baseDir, "BaseDirectory", "Working Folder" ); + m_baseDir.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true ); CAF_PDM_InitField( &m_modelThickness, "ModelThickness", 100.0, "Model Cell Thickness" ); CAF_PDM_InitField( &m_modelExtentFromAnchor, "ModelExtentFromAnchor", 1000.0, "Horz. Extent from Anchor" ); @@ -137,6 +138,8 @@ RimFaultReactivationModel::RimFaultReactivationModel() CAF_PDM_InitFieldNoDefault( &m_targets, "Targets", "Targets" ); m_targets.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FIT_CONTENT ) ); m_targets.uiCapability()->setUiTreeChildrenHidden( true ); m_targets.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); m_targets.uiCapability()->setCustomContextMenuEnabled( false ); @@ -460,6 +463,20 @@ void RimFaultReactivationModel::defineUiOrdering( QString uiConfigName, caf::Pdm } auto faultGrp = modelGrp->addNewGroup( "Fault Extension" ); + { + double maxExtension = 1000.0; + if ( auto eclCase = eclipseCase() ) + { + auto bb = eclCase->allCellsBoundingBox(); + maxExtension = bb.max().z() - bb.min().z(); + } + + for ( auto* field : { &m_faultExtendUpwards, &m_faultExtendDownwards } ) + { + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, maxExtension ); + } + } faultGrp->add( &m_faultExtendUpwards ); faultGrp->add( &m_faultExtendDownwards ); @@ -554,46 +571,6 @@ void RimFaultReactivationModel::fieldChangedByUi( const caf::PdmFieldHandle* cha } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFaultReactivationModel::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_targets ) - { - if ( auto tvAttribute = dynamic_cast( attribute ) ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FIT_CONTENT; - } - } - else if ( field == &m_baseDir ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_selectDirectory = true; - } - } - else if ( ( field == &m_faultExtendUpwards ) || ( field == &m_faultExtendDownwards ) ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - auto eclCase = eclipseCase(); - if ( eclCase ) - { - auto bb = eclCase->allCellsBoundingBox(); - double diff = bb.max().z() - bb.min().z(); - attr->m_minimum = 0; - attr->m_maximum = diff; - } - else - { - attr->m_minimum = 0; - attr->m_maximum = 1000; - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h index 00de04def1..1b9ade8444 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultReactivationModel.h @@ -142,7 +142,6 @@ protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; std::string baseFilename() const; diff --git a/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.cpp b/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.cpp index 93ec40c1f0..9cbe4aa083 100644 --- a/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.cpp +++ b/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.cpp @@ -141,14 +141,17 @@ RimWellConnectivityTable::RimWellConnectivityTable() CAF_PDM_InitFieldNoDefault( &m_timeSampleValueType, "TimeSampleValueType", "Value Type" ); m_timeSampleValueType.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_selectedTimeStep, "TimeStep", "Time Step" ); + RiuTools::enableUpDownArrowsForComboBox( &m_selectedTimeStep ); m_selectedTimeStep.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); // Time step range configuration CAF_PDM_InitFieldNoDefault( &m_timeRangeValueType, "TimeRangeValueType", "Value Type" ); m_timeRangeValueType.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_selectedFromTimeStep, "FromTimeStep", "From Time Step" ); + RiuTools::enableUpDownArrowsForComboBox( &m_selectedFromTimeStep ); m_selectedFromTimeStep.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_selectedToTimeStep, "ToTimeStep", "To Time Step" ); + RiuTools::enableUpDownArrowsForComboBox( &m_selectedToTimeStep ); m_selectedToTimeStep.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_timeStepFilterMode, "TimeStepRangeFilterMode", "Filter" ); m_timeStepFilterMode.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); @@ -513,17 +516,6 @@ void RimWellConnectivityTable::defineUiOrdering( QString uiConfigName, caf::PdmU uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellConnectivityTable::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_selectedTimeStep || field == &m_selectedFromTimeStep || field == &m_selectedToTimeStep ) - { - RiuTools::enableUpDownArrowsForComboBox( attribute ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.h b/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.h index 7367595d86..a317af5a20 100644 --- a/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.h +++ b/ApplicationLibCode/ProjectDataModel/Flow/RimWellConnectivityTable.h @@ -100,7 +100,6 @@ private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.cpp b/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.cpp index 9a38ef99b8..178993a3c0 100644 --- a/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.cpp @@ -133,6 +133,8 @@ RimWellPltPlot::RimWellPltPlot() RimWellPlotTools::FlowPhase::FLOW_PHASE_GAS, RimWellPlotTools::FlowPhase::FLOW_PHASE_WATER } ); m_phases.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); + m_phases.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); + m_phases.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TOGGLE_ALL_CHECKBOX, false ); m_nameConfig->setCustomName( "PLT Plot" ); setNamingMethod( RiaDefines::ObjectNamingMethod::CUSTOM ); @@ -947,19 +949,6 @@ void RimWellPltPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPltPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_phases ) - { - caf::PdmUiTreeSelectionEditorAttribute* attrib = dynamic_cast( attribute ); - attrib->showTextFilter = false; - attrib->showToggleAllCheckbox = false; - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.h b/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.h index b96ec708f7..73b0764936 100644 --- a/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.h +++ b/ApplicationLibCode/ProjectDataModel/Flow/RimWellPltPlot.h @@ -81,7 +81,6 @@ protected: void calculateValueOptionsForWells( QList& options ); void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void onLoadDataAndUpdate() override; void initAfterRead() override; diff --git a/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.cpp b/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.cpp index 202aa44b8f..75aa59e0c3 100644 --- a/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.cpp +++ b/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.cpp @@ -223,17 +223,6 @@ void RimWellFormationsFile::defineUiOrdering( QString uiConfigName, caf::PdmUiOr uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellFormationsFile::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_contentTable ) - { - RimCsvPreviewTools::setPreviewEditorAttribute( attribute ); - } -} - //-------------------------------------------------------------------------------------------------- /// Parses the file right after the project is loaded, so the data is available without requiring a /// manual reload. diff --git a/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.h b/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.h index e861af9d46..9a9fa852fc 100644 --- a/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.h +++ b/ApplicationLibCode/ProjectDataModel/Formations/RimWellFormationsFile.h @@ -57,7 +57,6 @@ public: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void initAfterRead() override; diff --git a/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.cpp b/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.cpp index 98d51690ab..d869f6932d 100644 --- a/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.cpp +++ b/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.cpp @@ -55,6 +55,11 @@ RimGeoMechContourMapProjection::RimGeoMechContourMapProjection() CAF_PDM_InitField( &m_applyPPRegionLimitVertically, "VerticalLimit", false, "Apply Limit Vertically" ); CAF_PDM_InitField( &m_paddingAroundPorePressureRegion, "PaddingAroundPorRegion", 0.0, "Horizontal Padding around PP regions" ); m_paddingAroundPorePressureRegion.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_paddingAroundPorePressureRegion.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_paddingAroundPorePressureRegion.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 2.0 ); + m_paddingAroundPorePressureRegion.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 4 ); + m_paddingAroundPorePressureRegion.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DELAY_SLIDER_UPDATE_UNTIL_RELEASE, + true ); setName( "Map Projection" ); nameField()->uiCapability()->setUiReadOnly( true ); } @@ -398,27 +403,6 @@ void RimGeoMechContourMapProjection::defineUiOrdering( QString uiConfigName, caf m_paddingAroundPorePressureRegion.uiCapability()->setUiReadOnly( !m_limitToPorePressureRegions() ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGeoMechContourMapProjection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - RimContourMapProjection::defineEditorAttribute( field, uiConfigName, attribute ); - if ( field == &m_paddingAroundPorePressureRegion ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0.0; - myAttr->m_maximum = 2.0; - myAttr->m_sliderTickCount = 4; - myAttr->m_delaySliderUpdateUntilRelease = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.h b/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.h index f9fb384072..a6f2fc8dc1 100644 --- a/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.h +++ b/ApplicationLibCode/ProjectDataModel/GeoMech/RimGeoMechContourMapProjection.h @@ -78,7 +78,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; protected: caf::PdmField m_limitToPorePressureRegions; diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.cpp index 137eaf91ec..708a767b90 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.cpp @@ -224,22 +224,15 @@ void RimPlotCellPropertyFilter::updateCellVisibilityFromFilter( size_t timeStepI //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPlotCellPropertyFilter::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +void RimPlotCellPropertyFilter::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { - if ( field == &m_lowerBound || field == &m_upperBound ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( !myAttr ) - { - return; - } + double minimumValue = 0.0; + double maximumValue = 0.0; - double minimumValue = 0.0; - double maximumValue = 0.0; + findOrComputeMinMaxResultValues( minimumValue, maximumValue ); - findOrComputeMinMaxResultValues( minimumValue, maximumValue ); - - myAttr->m_minimum = minimumValue; - myAttr->m_maximum = maximumValue; - } + m_lowerBound.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, minimumValue ); + m_lowerBound.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, maximumValue ); + m_upperBound.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, minimumValue ); + m_upperBound.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, maximumValue ); } diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.h b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.h index 8d777aebe2..fdf873eaa9 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.h +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/CellFilters/RimPlotCellPropertyFilter.h @@ -47,7 +47,7 @@ public: protected: void updateCellVisibilityFromFilter( size_t timeStepIndex, cvf::UByteArray* visibleCells ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; private: RimEclipseResultDefinition* eclipseResultDefinition(); diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp index 88aeca907b..873e8779f6 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.cpp @@ -24,6 +24,7 @@ #include "RiuPlotWidget.h" #include "cafAssert.h" +#include "cafPdmUiTreeViewEditor.h" CAF_PDM_SOURCE_INIT( RimGridCrossPlotCurve, "GridCrossPlotCurve" ); @@ -36,6 +37,9 @@ 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 ); @@ -160,12 +164,3 @@ void RimGridCrossPlotCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOr nameGroup->add( &m_showLegend ); uiOrdering.skipRemainingFields( true ); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridCrossPlotCurve::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - // Implement an empty method to avoid the base class implementation in RimPlotCurve - // The color tag is not used for Grid Cross Plot Curves -} diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h index 308aef0f37..bfc7ce940c 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotCurve.h @@ -45,7 +45,6 @@ protected: QString createCurveAutoName() override; void onLoadDataAndUpdate( bool updateParentPlot ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: int m_dataSetIndex; diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.cpp index 07c544de14..98cfdb9851 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.cpp @@ -1568,13 +1568,6 @@ void RimGridCrossPlotDataSet::setDefaults() } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridCrossPlotDataSet::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.h b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.h index 03ab5262be..fbe13db76c 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.h +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotDataSet.h @@ -168,7 +168,6 @@ protected: void updateDataSetName(); void performAutoNameUpdate() override; void setDefaults(); - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp index d3ff59df13..583f95ba9d 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.cpp @@ -39,6 +39,7 @@ #include "cafPdmUiDoubleValueEditor.h" #include "cafPdmUiLineEditor.h" #include "cafPdmUiTextEditor.h" +#include "cafPdmUiTreeViewEditor.h" CAF_PDM_SOURCE_INIT( RimGridCrossPlotRegressionCurve, "GridCrossPlotRegressionCurve" ); @@ -65,6 +66,9 @@ 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" ); @@ -101,6 +105,8 @@ RimGridCrossPlotRegressionCurve::RimGridCrossPlotRegressionCurve() m_expressionText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_expressionText.uiCapability()->setUiReadOnly( true ); m_expressionText.xmlCapability()->disableIO(); + m_expressionText.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_expressionText.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); setLineStyle( RiuQwtPlotCurveDefines::LineStyleEnum::STYLE_SOLID ); setSymbol( RiuPlotCurveSymbol::SYMBOL_RECT ); @@ -334,6 +340,12 @@ void RimGridCrossPlotRegressionCurve::defineUiOrdering( QString uiConfigName, ca regressionCurveGroup->add( &m_expressionText ); + { + QFont font; + font.setPointSize( font.pointSize() + 2 ); + m_expressionText.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::FONT, font ); + } + caf::PdmUiGroup* dataSelectionGroup = uiOrdering.addNewGroup( "Data Selection" ); dataSelectionGroup->add( &m_minRangeX ); dataSelectionGroup->add( &m_maxRangeX ); @@ -341,6 +353,20 @@ void RimGridCrossPlotRegressionCurve::defineUiOrdering( QString uiConfigName, ca dataSelectionGroup->add( &m_maxRangeY ); dataSelectionGroup->add( &m_showDataSelectionInPlot ); + auto setSliderRange = []( auto& field, const std::pair& range ) + { + auto [min, max] = range; + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, + RiaNumericalTools::roundToNumSignificantDigitsFloor( min, 2 ) ); + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, + RiaNumericalTools::roundToNumSignificantDigitsCeil( max, 2 ) ); + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 3 ); + }; + setSliderRange( m_minRangeX, m_dataRangeX ); + setSliderRange( m_maxRangeX, m_dataRangeX ); + setSliderRange( m_minRangeY, m_dataRangeY ); + setSliderRange( m_maxRangeY, m_dataRangeY ); + caf::PdmUiGroup* forecastingGroup = uiOrdering.addNewGroup( "Extrapolation" ); forecastingGroup->add( &m_minExtrapolationRangeX ); forecastingGroup->add( &m_maxExtrapolationRangeX ); @@ -351,58 +377,6 @@ void RimGridCrossPlotRegressionCurve::defineUiOrdering( QString uiConfigName, ca uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridCrossPlotRegressionCurve::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - // Implement an empty method to avoid the base class implementation in RimPlotCurve - // The color tag is not used for Grid Cross Plot Curves -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridCrossPlotRegressionCurve::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_minRangeX || field == &m_maxRangeX ) - { - if ( auto* myAttr = dynamic_cast( attribute ) ) - { - auto [min, max] = m_dataRangeX; - myAttr->m_minimum = RiaNumericalTools::roundToNumSignificantDigitsFloor( min, 2 ); - myAttr->m_maximum = RiaNumericalTools::roundToNumSignificantDigitsCeil( max, 2 ); - myAttr->m_decimals = 3; - } - } - else if ( field == &m_minRangeY || field == &m_maxRangeY ) - { - if ( auto* myAttr = dynamic_cast( attribute ) ) - { - auto [min, max] = m_dataRangeY; - myAttr->m_minimum = RiaNumericalTools::roundToNumSignificantDigitsFloor( min, 2 ); - myAttr->m_maximum = RiaNumericalTools::roundToNumSignificantDigitsCeil( max, 2 ); - myAttr->m_decimals = 3; - } - } - else if ( field == &m_expressionText ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - - QFont font; - auto pointSize = font.pointSize(); - font.setPointSize( pointSize + 2 ); - myAttr->font = font; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h index 78aea95fa9..54760acca1 100644 --- a/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h +++ b/ApplicationLibCode/ProjectDataModel/GridCrossPlots/RimGridCrossPlotRegressionCurve.h @@ -61,8 +61,6 @@ protected: QString createCurveAutoName() override; void onLoadDataAndUpdate( bool updateParentPlot ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void updateRectAnnotation(); diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.cpp b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.cpp index 359137b059..a22603149f 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.cpp @@ -37,6 +37,9 @@ RimHistogramCurveCollection::RimHistogramCurveCollection() : curvesChanged( this ) { CAF_PDM_InitObject( "Histogram Curves", ":/HistogramCurveFilter16x16.png" ); + uiCapability()->setAttribute>( caf::PdmUiTreeViewEditor::Keys::CURRENT_OBJECT, + [this]() -> caf::PdmObjectHandle* + { return m_currentHistogramCurve.p(); } ); CAF_PDM_InitFieldNoDefault( &m_curves, "CollectionCurves", "Curves" ); caf::PdmFieldReorderCapability::addToFieldWithCallback( &m_curves, this, &RimHistogramCurveCollection::onCurvesReordered ); @@ -320,18 +323,6 @@ caf::PdmFieldHandle* RimHistogramCurveCollection::objectToggleField() return &m_showCurves; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimHistogramCurveCollection::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr && m_currentHistogramCurve.notNull() ) - { - myAttr->currentObject = m_currentHistogramCurve.p(); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.h b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.h index 700b839aad..0a209c8e5f 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramCurveCollection.h @@ -71,7 +71,6 @@ private: private: caf::PdmFieldHandle* objectToggleField() override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.cpp b/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.cpp index 4eb47a66c1..a6d0b3fc78 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.cpp @@ -92,9 +92,9 @@ RimBoxIntersection::RimBoxIntersection() CAF_PDM_InitField( &m_xySliderStepSize, "xySliderStepSize", 1.0, "XY Slider Step Size" ); CAF_PDM_InitField( &m_depthSliderStepSize, "DepthSliderStepSize", 0.5, "Depth Slider Step Size" ); - CAF_PDM_InitFieldNoDefault( &m_show3DManipulator, "show3DManipulator", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_show3DManipulator ); - m_show3DManipulator = false; + CAF_PDM_InitField( &m_show3DManipulator, "show3DManipulator", false, "" ); + m_show3DManipulator.xmlCapability()->disableIO(); + m_show3DManipulator.uiCapability()->setUiHidden( true ); setDeletable( true ); } @@ -182,6 +182,42 @@ bool RimBoxIntersection::show3dManipulator() const return m_show3DManipulator; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimBoxIntersection::updateManipulatorState() +{ + if ( m_show3DManipulator ) + { + if ( viewer() ) + { + m_boxManipulator = new RicBoxManipulatorEventHandler( viewer() ); + + auto rimView = firstAncestorOrThisOfType(); + for ( Rim3dView* mainView : rimView->viewsUsingThisAsComparisonView() ) + { + m_boxManipulator->registerInAdditionalViewer( mainView->viewer() ); + } + + connect( m_boxManipulator, SIGNAL( notifyRedraw() ), this, SLOT( slotScheduleRedraw() ) ); + connect( m_boxManipulator, + SIGNAL( notifyUpdate( const cvf::Vec3d&, const cvf::Vec3d& ) ), + this, + SLOT( slotUpdateGeometry( const cvf::Vec3d&, const cvf::Vec3d& ) ) ); + + updateBoxManipulatorGeometry(); + } + } + else + { + if ( m_boxManipulator ) + { + m_boxManipulator->deleteLater(); + m_boxManipulator = nullptr; + } + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -359,39 +395,6 @@ void RimBoxIntersection::fieldChangedByUi( const caf::PdmFieldHandle* changedFie { m_maxDepth = std::max( m_maxDepth, m_minDepth ); } - else if ( changedField == &m_show3DManipulator ) - { - if ( m_show3DManipulator ) - { - if ( viewer() ) - { - m_boxManipulator = new RicBoxManipulatorEventHandler( viewer() ); - - auto rimView = firstAncestorOrThisOfType(); - for ( Rim3dView* mainView : rimView->viewsUsingThisAsComparisonView() ) - { - m_boxManipulator->registerInAdditionalViewer( mainView->viewer() ); - } - - connect( m_boxManipulator, SIGNAL( notifyRedraw() ), this, SLOT( slotScheduleRedraw() ) ); - connect( m_boxManipulator, - SIGNAL( notifyUpdate( const cvf::Vec3d&, const cvf::Vec3d& ) ), - this, - SLOT( slotUpdateGeometry( const cvf::Vec3d&, const cvf::Vec3d& ) ) ); - - updateBoxManipulatorGeometry(); - } - } - else - { - if ( m_boxManipulator ) - { - m_boxManipulator->deleteLater(); - m_boxManipulator = nullptr; - } - } - } - if ( changedField == &m_minXCoord || changedField == &m_minYCoord || changedField == &m_minDepth || changedField == &m_maxXCoord || changedField == &m_maxYCoord || changedField == &m_maxDepth ) { @@ -430,65 +433,6 @@ void RimBoxIntersection::updateBoxManipulatorGeometry() m_boxManipulator->setSize( transForm->scaleToDisplaySize( boxSize() ) ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimBoxIntersection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - cvf::BoundingBox cellsBoundingBox = currentCellBoundingBox(); - if ( field == &m_minXCoord || field == &m_maxXCoord ) - { - myAttr->m_minimum = cellsBoundingBox.min().x(); - myAttr->m_maximum = cellsBoundingBox.max().x(); - - int range = cellsBoundingBox.extent().x(); - int tickCount = range / m_xySliderStepSize; - - myAttr->m_sliderTickCount = cvf::Math::abs( tickCount ); - } - else if ( field == &m_minYCoord || field == &m_maxYCoord ) - { - myAttr->m_minimum = cellsBoundingBox.min().y(); - myAttr->m_maximum = cellsBoundingBox.max().y(); - - int range = cellsBoundingBox.extent().y(); - int tickCount = range / m_xySliderStepSize; - - myAttr->m_sliderTickCount = cvf::Math::abs( tickCount ); - } - else if ( field == &m_minDepth || field == &m_maxDepth ) - { - myAttr->m_minimum = -cellsBoundingBox.max().z(); - myAttr->m_maximum = -cellsBoundingBox.min().z(); - - int range = cellsBoundingBox.extent().z(); - int tickCount = range / m_depthSliderStepSize; - - myAttr->m_sliderTickCount = cvf::Math::abs( tickCount ); - } - } - - if ( field == &m_show3DManipulator ) - { - caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast( attribute ); - - if ( attrib ) - { - if ( m_show3DManipulator ) - { - attrib->m_buttonText = "Hide 3D manipulator"; - } - else - { - attrib->m_buttonText = "Show 3D manipulator"; - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -530,7 +474,37 @@ void RimBoxIntersection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder group->add( &m_depthSliderStepSize ); } - uiOrdering.add( &m_show3DManipulator ); + auto setSliderAttributes = []( auto& field, double minimum, double maximum, int tickCount ) + { + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, minimum ); + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, maximum ); + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, cvf::Math::abs( tickCount ) ); + }; + + const int xTickCount = static_cast( static_cast( cellsBoundingBox.extent().x() ) / m_xySliderStepSize ); + const int yTickCount = static_cast( static_cast( cellsBoundingBox.extent().y() ) / m_xySliderStepSize ); + const int depthTickCount = static_cast( static_cast( cellsBoundingBox.extent().z() ) / m_depthSliderStepSize ); + + for ( auto* field : { &m_minXCoord, &m_maxXCoord } ) + { + setSliderAttributes( *field, cellsBoundingBox.min().x(), cellsBoundingBox.max().x(), xTickCount ); + } + for ( auto* field : { &m_minYCoord, &m_maxYCoord } ) + { + setSliderAttributes( *field, cellsBoundingBox.min().y(), cellsBoundingBox.max().y(), yTickCount ); + } + for ( auto* field : { &m_minDepth, &m_maxDepth } ) + { + setSliderAttributes( *field, -cellsBoundingBox.max().z(), -cellsBoundingBox.min().z(), depthTickCount ); + } + + uiOrdering.addNewButton( m_show3DManipulator ? "Hide 3D manipulator" : "Show 3D manipulator", + [this]() + { + m_show3DManipulator = !m_show3DManipulator; + updateManipulatorState(); + updateConnectedEditors(); + } ); defineSeparateDataSourceUi( uiConfigName, uiOrdering ); } diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.h b/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.h index f2c88fc187..48014b5d32 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.h +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimBoxIntersection.h @@ -90,7 +90,6 @@ public: protected: caf::PdmFieldHandle* userDescriptionField() final; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; @@ -103,6 +102,7 @@ protected slots: private: friend class RimIntersectionCollection; void updateBoxManipulatorGeometry(); + void updateManipulatorState(); void updateVisibility(); void clampSinglePlaneValues(); diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.cpp b/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.cpp index b6ad787a0b..cec2449808 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.cpp @@ -214,8 +214,6 @@ RimExtrudedCurveIntersection::RimExtrudedCurveIntersection() CAF_PDM_InitScriptableFieldNoDefault( &m_simulationWell, "SimulationWell", "Simulation Well" ); CAF_PDM_InitFieldNoDefault( &m_projectPolygon, "ProjectPolygon", "Project Polygon" ); - CAF_PDM_InitField( &m_editPolygonButton, "EditPolygonButton", false, "Edit" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_editPolygonButton ); CAF_PDM_InitScriptableFieldNoDefault( &m_userPolylineXyz, "Points", "Points", "", "Use Ctrl-C for copy and Ctrl-V for paste", "" ); @@ -225,9 +223,15 @@ RimExtrudedCurveIntersection::RimExtrudedCurveIntersection() CAF_PDM_InitField( &m_azimuthAngle, "AzimuthAngle", 0.0, "Azimuth" ); m_azimuthAngle.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_azimuthAngle.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_azimuthAngle.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 360.0 ); + m_azimuthAngle.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 360 ); CAF_PDM_InitField( &m_dipAngle, "DipAngle", 90.0, "Dip" ); m_dipAngle.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_dipAngle.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_dipAngle.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 180.0 ); + m_dipAngle.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 180 ); CAF_PDM_InitFieldNoDefault( &m_customExtrusionPoints, "CustomExtrusionPoints", "" ); CAF_PDM_InitFieldNoDefault( &m_twoAzimuthPoints, @@ -243,15 +247,18 @@ RimExtrudedCurveIntersection::RimExtrudedCurveIntersection() CAF_PDM_InitField( &m_lengthDown, "lengthDown", 1000.0, "Length Down" ); CAF_PDM_InitFieldNoDefault( &m_inputPolylineFromViewerEnabled, "m_activateUiAppendPointsCommand", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_inputPolylineFromViewerEnabled ); + m_inputPolylineFromViewerEnabled.xmlCapability()->disableIO(); + m_inputPolylineFromViewerEnabled.uiCapability()->setUiHidden( true ); m_inputPolylineFromViewerEnabled = false; CAF_PDM_InitFieldNoDefault( &m_inputExtrusionPointsFromViewerEnabled, "inputExtrusionPointsFromViewerEnabled", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_inputExtrusionPointsFromViewerEnabled ); + m_inputExtrusionPointsFromViewerEnabled.xmlCapability()->disableIO(); + m_inputExtrusionPointsFromViewerEnabled.uiCapability()->setUiHidden( true ); m_inputExtrusionPointsFromViewerEnabled = false; CAF_PDM_InitFieldNoDefault( &m_inputTwoAzimuthPointsFromViewerEnabled, "inputTwoAzimuthPointsFromViewerEnabled", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_inputTwoAzimuthPointsFromViewerEnabled ); + m_inputTwoAzimuthPointsFromViewerEnabled.xmlCapability()->disableIO(); + m_inputTwoAzimuthPointsFromViewerEnabled.uiCapability()->setUiHidden( true ); m_inputTwoAzimuthPointsFromViewerEnabled = false; CAF_PDM_InitField( &m_depthUpperThreshold, "UpperThreshold", -300000.0, "Upper Threshold" ); @@ -476,36 +483,9 @@ void RimExtrudedCurveIntersection::fieldChangedByUi( const caf::PdmFieldHandle* } } - if ( changedField == &m_inputPolylineFromViewerEnabled || changedField == &m_userPolylineXyz || changedField == &m_userPolylineXydForUi ) + if ( changedField == &m_userPolylineXyz || changedField == &m_userPolylineXydForUi || changedField == &m_customExtrusionPoints || + changedField == &m_twoAzimuthPoints ) { - if ( m_inputPolylineFromViewerEnabled ) - { - m_inputExtrusionPointsFromViewerEnabled = false; - m_inputTwoAzimuthPointsFromViewerEnabled = false; - } - - rebuildGeometryAndScheduleCreateDisplayModel(); - } - - if ( changedField == &m_inputExtrusionPointsFromViewerEnabled || changedField == &m_customExtrusionPoints ) - { - if ( m_inputExtrusionPointsFromViewerEnabled ) - { - m_inputPolylineFromViewerEnabled = false; - m_inputTwoAzimuthPointsFromViewerEnabled = false; - } - - rebuildGeometryAndScheduleCreateDisplayModel(); - } - - if ( changedField == &m_inputTwoAzimuthPointsFromViewerEnabled || changedField == &m_twoAzimuthPoints ) - { - if ( m_inputTwoAzimuthPointsFromViewerEnabled ) - { - m_inputPolylineFromViewerEnabled = false; - m_inputExtrusionPointsFromViewerEnabled = false; - } - rebuildGeometryAndScheduleCreateDisplayModel(); } @@ -519,15 +499,23 @@ void RimExtrudedCurveIntersection::fieldChangedByUi( const caf::PdmFieldHandle* { rebuildGeometryAndScheduleCreateDisplayModel(); } +} - if ( changedField == &m_editPolygonButton ) - { - RimPolygonTools::activate3dEditOfPolygonInView( m_projectPolygon(), this ); +//-------------------------------------------------------------------------------------------------- +/// Only one of the viewer point inputs can be active at a time +//-------------------------------------------------------------------------------------------------- +void RimExtrudedCurveIntersection::toggleViewerPointInput( caf::PdmField* inputField ) +{ + const bool enable = !inputField->v(); - m_editPolygonButton = false; + m_inputPolylineFromViewerEnabled = false; + m_inputExtrusionPointsFromViewerEnabled = false; + m_inputTwoAzimuthPointsFromViewerEnabled = false; - return; - } + *inputField = enable; + + rebuildGeometryAndScheduleCreateDisplayModel(); + updateConnectedEditors(); } //-------------------------------------------------------------------------------------------------- @@ -559,18 +547,24 @@ void RimExtrudedCurveIntersection::defineUiOrdering( QString uiConfigName, caf:: } else if ( type() == CrossSectionEnum::CS_POLYLINE ) { + setBaseColor( m_userPolylineXydForUi, m_inputPolylineFromViewerEnabled ); geometryGroup->add( &m_userPolylineXydForUi ); - geometryGroup->add( &m_inputPolylineFromViewerEnabled ); + geometryGroup->addNewButton( m_inputPolylineFromViewerEnabled ? "Stop picking points" : "Start picking points", + [this]() { toggleViewerPointInput( &m_inputPolylineFromViewerEnabled ); } ); } else if ( type() == CrossSectionEnum::CS_POLYGON ) { geometryGroup->add( &m_projectPolygon ); - geometryGroup->add( &m_editPolygonButton, { .newRow = false } ); + geometryGroup->addNewButton( "Edit", + [this]() { RimPolygonTools::activate3dEditOfPolygonInView( m_projectPolygon(), this ); }, + { .newRow = false, .totalColumnSpan = 1 } ); } else if ( type() == CrossSectionEnum::CS_AZIMUTHLINE ) { + setBaseColor( m_twoAzimuthPoints, m_inputTwoAzimuthPointsFromViewerEnabled ); geometryGroup->add( &m_twoAzimuthPoints ); - geometryGroup->add( &m_inputTwoAzimuthPointsFromViewerEnabled ); + geometryGroup->addNewButton( m_inputTwoAzimuthPointsFromViewerEnabled ? "Stop picking points" : "Start picking points", + [this]() { toggleViewerPointInput( &m_inputTwoAzimuthPointsFromViewerEnabled ); } ); geometryGroup->add( &m_azimuthAngle ); geometryGroup->add( &m_dipAngle ); } @@ -591,8 +585,10 @@ void RimExtrudedCurveIntersection::defineUiOrdering( QString uiConfigName, caf:: if ( direction() == CrossSectionDirEnum::CS_TWO_POINTS ) { + setBaseColor( m_customExtrusionPoints, m_inputExtrusionPointsFromViewerEnabled ); optionsGroup->add( &m_customExtrusionPoints ); - optionsGroup->add( &m_inputExtrusionPointsFromViewerEnabled ); + optionsGroup->addNewButton( m_inputExtrusionPointsFromViewerEnabled ? "Stop picking points" : "Start picking points", + [this]() { toggleViewerPointInput( &m_inputExtrusionPointsFromViewerEnabled ); } ); } optionsGroup->add( &m_showInactiveCells ); @@ -607,6 +603,30 @@ void RimExtrudedCurveIntersection::defineUiOrdering( QString uiConfigName, caf:: } auto filterGroup = uiOrdering.addNewGroup( "Depth Filter" ); + + { + auto setDepthRange = [this]( const cvf::BoundingBox& bb ) + { + for ( auto* field : { &m_depthUpperThreshold, &m_depthLowerThreshold } ) + { + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, -1.0 * bb.max().z() ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, -1.0 * bb.min().z() ); + } + }; + + RimEclipseView* eclView = eclipseView(); + if ( eclView && eclView->mainGrid() ) + { + setDepthRange( eclView->mainGrid()->boundingBox() ); + } + + RimGeoMechView* geomView = firstAncestorOrThisOfType(); + if ( geomView ) + { + setDepthRange( geomView->domainBoundingBox() ); + } + } + if ( m_depthThresholdOverridden() ) { filterGroup->add( &m_depthThresholdOverridden ); @@ -1034,109 +1054,9 @@ int RimExtrudedCurveIntersection::branchIndex() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimExtrudedCurveIntersection::setPushButtonText( bool buttonEnable, caf::PdmUiPushButtonEditorAttribute* attribute ) +void RimExtrudedCurveIntersection::setBaseColor( caf::PdmFieldHandle& field, bool enable ) { - if ( attribute ) - { - if ( buttonEnable ) - { - attribute->m_buttonText = "Stop picking points"; - } - else - { - attribute->m_buttonText = "Start picking points"; - } - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimExtrudedCurveIntersection::setBaseColor( bool enable, caf::PdmUiListEditorAttribute* attribute ) -{ - if ( attribute ) - { - attribute->qssState = enable ? "ExternalInput" : QString(); - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimExtrudedCurveIntersection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - auto* doubleSliderAttrib = dynamic_cast( attribute ); - if ( doubleSliderAttrib ) - { - if ( field == &m_azimuthAngle ) - { - doubleSliderAttrib->m_minimum = 0; - doubleSliderAttrib->m_maximum = 360; - doubleSliderAttrib->m_sliderTickCount = 360; - } - else if ( field == &m_dipAngle ) - { - doubleSliderAttrib->m_minimum = 0; - doubleSliderAttrib->m_maximum = 180; - doubleSliderAttrib->m_sliderTickCount = 180; - } - else if ( ( field == &m_depthUpperThreshold ) || ( field == &m_depthLowerThreshold ) ) - { - RimEclipseView* eclView = eclipseView(); - - if ( eclView && eclView->mainGrid() ) - { - const cvf::BoundingBox bb = eclView->mainGrid()->boundingBox(); - - doubleSliderAttrib->m_minimum = -1.0 * bb.max().z(); - doubleSliderAttrib->m_maximum = -1.0 * bb.min().z(); - } - - RimGeoMechView* geomView = firstAncestorOrThisOfType(); - - if ( geomView ) - { - const cvf::BoundingBox bb = geomView->domainBoundingBox(); - - doubleSliderAttrib->m_minimum = -1.0 * bb.max().z(); - doubleSliderAttrib->m_maximum = -1.0 * bb.min().z(); - } - } - } - else if ( field == &m_inputPolylineFromViewerEnabled ) - { - setPushButtonText( m_inputPolylineFromViewerEnabled, dynamic_cast( attribute ) ); - } - else if ( field == &m_userPolylineXydForUi ) - { - setBaseColor( m_inputPolylineFromViewerEnabled, dynamic_cast( attribute ) ); - } - else if ( field == &m_inputTwoAzimuthPointsFromViewerEnabled ) - { - setPushButtonText( m_inputTwoAzimuthPointsFromViewerEnabled, dynamic_cast( attribute ) ); - } - else if ( field == &m_twoAzimuthPoints ) - { - setBaseColor( m_inputTwoAzimuthPointsFromViewerEnabled, dynamic_cast( attribute ) ); - } - else if ( field == &m_inputExtrusionPointsFromViewerEnabled ) - { - setPushButtonText( m_inputExtrusionPointsFromViewerEnabled, dynamic_cast( attribute ) ); - } - else if ( field == &m_customExtrusionPoints ) - { - setBaseColor( m_inputExtrusionPointsFromViewerEnabled, dynamic_cast( attribute ) ); - } - - if ( field == &m_editPolygonButton ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Edit"; - } - } + field.uiCapability()->setAttribute( caf::PdmUiListEditor::Keys::QSS_STATE, enable ? QString( "ExternalInput" ) : QString() ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.h b/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.h index f375a16adf..0b82b8391c 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.h +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimExtrudedCurveIntersection.h @@ -43,12 +43,6 @@ class RimSurfaceIntersectionCurve; class RimSurfaceIntersectionBand; class RimPolygon; -namespace caf -{ -class PdmUiListEditorAttribute; -class PdmUiPushButtonEditorAttribute; -} // namespace caf - //================================================================================================== // // @@ -143,13 +137,12 @@ private: caf::PdmFieldHandle* userDescriptionField() final; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; - static void setPushButtonText( bool buttonEnable, caf::PdmUiPushButtonEditorAttribute* attribute ); - static void setBaseColor( bool enable, caf::PdmUiListEditorAttribute* attribute ); + void toggleViewerPointInput( caf::PdmField* inputField ); + static void setBaseColor( caf::PdmFieldHandle& field, bool enable ); RimSimWellInViewCollection* simulationWellCollection() const; void updateAzimuthLine(); @@ -186,7 +179,6 @@ private: caf::PdmPtrField m_simulationWell; caf::PdmPtrField m_projectPolygon; - caf::PdmField m_editPolygonButton; caf::PdmField m_inputPolylineFromViewerEnabled; caf::PdmField m_inputExtrusionPointsFromViewerEnabled; diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.cpp b/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.cpp index 7b851ec390..80c9f940b5 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.cpp @@ -386,43 +386,6 @@ int RimIjkIntersection::axisCellCount() const return 0; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimIjkIntersection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - auto* sliderAttr = dynamic_cast( attribute ); - if ( !sliderAttr ) return; - - RigMainGrid* grid = mainGrid(); - if ( !grid ) return; - - int ni = static_cast( grid->cellCountI() ); - int nj = static_cast( grid->cellCountJ() ); - int nk = static_cast( grid->cellCountK() ); - - if ( field == &m_fixedIndex ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = std::max( 1, axisCellCount() ); - } - else if ( field == &m_iMin || field == &m_iMax ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = std::max( 1, ni ); - } - else if ( field == &m_jMin || field == &m_jMax ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = std::max( 1, nj ); - } - else if ( field == &m_kMin || field == &m_kMax ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = std::max( 1, nk ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -469,6 +432,27 @@ void RimIjkIntersection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder defineSeparateDataSourceUi( uiConfigName, uiOrdering ); + if ( grid ) + { + auto setRange = []( caf::PdmFieldHandle& field, int maximum ) + { caf::PdmUiSliderEditor::setRange( field.uiCapability(), 1, std::max( 1, maximum ) ); }; + + setRange( m_fixedIndex, axisCellCount() ); + setRange( m_iMin, ni ); + setRange( m_iMax, ni ); + setRange( m_jMin, nj ); + setRange( m_jMax, nj ); + setRange( m_kMin, nk ); + setRange( m_kMax, nk ); + } + else + { + for ( auto* field : { &m_fixedIndex, &m_iMin, &m_iMax, &m_jMin, &m_jMax, &m_kMin, &m_kMax } ) + { + caf::PdmUiSliderEditor::clearRange( field->uiCapability() ); + } + } + uiOrdering.skipRemainingFields( true ); } diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.h b/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.h index a026afeed9..8cfa1a109e 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.h +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimIjkIntersection.h @@ -91,7 +91,6 @@ public: protected: caf::PdmFieldHandle* userDescriptionField() final; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.cpp b/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.cpp index 3bfdf88820..95750d7c61 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.cpp @@ -589,6 +589,18 @@ void RimIntersectionCollection::defineUiOrdering( QString uiConfigName, caf::Pdm m_depthUpperThreshold.uiCapability()->setUiReadOnly( !m_depthThresholdOverridden() ); m_depthLowerThreshold.uiCapability()->setUiReadOnly( !m_depthThresholdOverridden() ); + RimEclipseView* eclView = eclipseView(); + if ( eclView && eclView->mainGrid() ) + { + const cvf::BoundingBox bb = eclView->mainGrid()->boundingBox(); + + for ( auto* field : { &m_depthUpperThreshold, &m_depthLowerThreshold } ) + { + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, -1.0 * bb.max().z() ); + field->uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, -1.0 * bb.min().z() ); + } + } + filterGroup->add( &m_depthThresholdOverridden ); filterGroup->add( &m_depthFilterType ); @@ -629,29 +641,6 @@ void RimIntersectionCollection::defineUiOrdering( QString uiConfigName, caf::Pdm uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimIntersectionCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - auto* doubleSliderAttrib = dynamic_cast( attribute ); - if ( doubleSliderAttrib ) - { - if ( ( field == &m_depthUpperThreshold ) || ( field == &m_depthLowerThreshold ) ) - { - RimEclipseView* eclView = eclipseView(); - - if ( eclView && eclView->mainGrid() ) - { - const cvf::BoundingBox bb = eclView->mainGrid()->boundingBox(); - - doubleSliderAttrib->m_minimum = -1.0 * bb.max().z(); - doubleSliderAttrib->m_maximum = -1.0 * bb.min().z(); - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.h b/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.h index ebafa35be2..fdb42abd3b 100644 --- a/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Intersections/RimIntersectionCollection.h @@ -109,7 +109,6 @@ protected: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; private: diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp index f769d45d33..b75e88e6c2 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.cpp @@ -51,6 +51,7 @@ #include "cafPdmUiCheckBoxEditor.h" #include "cafPdmUiTreeAttributes.h" #include "cafPdmUiTreeSelectionEditor.h" +#include "cafPdmUiTreeViewEditor.h" #include @@ -63,6 +64,9 @@ 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" ); @@ -475,35 +479,35 @@ std::vector RimEnsembleJob::dateStrings() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimEnsembleJob::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimEnsembleJob::treeItemTags() { - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) + std::vector tags; + + if ( state() == JobState::Failed ) { - if ( state() == JobState::Failed ) - { - auto txt = "Failed"; - auto tag = - caf::PdmUiTreeViewItemAttribute::createTag( QColor( Qt::red ), RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), txt ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } - else if ( ( state() == JobState::Running ) || ( state() == JobState::Completed ) ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - - if ( state() == JobState::Running ) - { - tag->text = "Running"; - } - else - { - tag->text = "Done"; - } - - cvf::Color3f viewColor = cvf::Color3f( cvf::Color3f::GREEN ); - cvf::Color3f viewTextColor = RiaColorTools::contrastColor( viewColor ); - tag->bgColor = QColor( RiaColorTools::toQColor( viewColor ) ); - tag->fgColor = QColor( RiaColorTools::toQColor( viewTextColor ) ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + auto txt = "Failed"; + auto tag = caf::PdmUiTreeViewItemTag::create( QColor( Qt::red ), RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), txt ); + tags.push_back( tag ); } + else if ( ( state() == JobState::Running ) || ( state() == JobState::Completed ) ) + { + auto tag = caf::PdmUiTreeViewItemTag::create(); + + if ( state() == JobState::Running ) + { + tag.text = "Running"; + } + else + { + tag.text = "Done"; + } + + cvf::Color3f viewColor = cvf::Color3f( cvf::Color3f::GREEN ); + cvf::Color3f viewTextColor = RiaColorTools::contrastColor( viewColor ); + tag.bgColor = QColor( RiaColorTools::toQColor( viewColor ) ); + tag.fgColor = QColor( RiaColorTools::toQColor( viewTextColor ) ); + tags.push_back( tag ); + } + + return tags; } diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h index d30aaa96ec..89c1e8cb25 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimEnsembleJob.h @@ -19,6 +19,7 @@ #pragma once #include "RimGenericJob.h" +#include "cafPdmUiTreeAttributes.h" #include "cafPdmPtrArrayField.h" #include "cafPdmPtrField.h" @@ -71,8 +72,8 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + std::vector treeItemTags(); std::vector setUpSelectedRealizations() const; std::string outputIteration() const; diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.cpp b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.cpp index fc0d6cbd42..51d1705dd0 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.cpp +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.cpp @@ -106,6 +106,7 @@ RimOpmFlowJob::RimOpmFlowJob() m_deckFileName.uiCapability()->setUiReadOnly( true ); CAF_PDM_InitFieldNoDefault( &m_workDir, "WorkDirectory", "Working Folder" ); + m_workDir.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true ); CAF_PDM_InitFieldNoDefault( &m_wellPath, "WellPath", "Well Path for New Well" ); CAF_PDM_InitFieldNoDefault( &m_eclipseCase, "EclipseCase", "Eclipse Case for Well Data", "", "Eclipse Case to use for Well Data" ); CAF_PDM_InitFieldNoDefault( &m_gridEnsemble, "GridEnsemble", "Grid Ensemble" ); @@ -122,6 +123,9 @@ RimOpmFlowJob::RimOpmFlowJob() CAF_PDM_InitFieldNoDefault( &m_wellGroupName, "WellGroupName", "Well Group Name" ); m_wellGroupName.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); + m_wellGroupName.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ENABLE_EDITABLE_CONTENT, true ); + m_wellGroupName.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ENABLE_AUTO_COMPLETE, false ); + m_wellGroupName.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ADJUST_WIDTH_TO_CONTENTS, true ); CAF_PDM_InitField( &m_wellOpenType, "WellOpenType", @@ -251,31 +255,6 @@ bool RimOpmFlowJob::matchesKeyValue( const QString& key, const QString& value ) return false; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimOpmFlowJob::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_workDir ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_selectDirectory = true; - } - } - else if ( field == &m_wellGroupName ) - { - auto attr = dynamic_cast( attribute ); - if ( attr ) - { - attr->enableEditableContent = true; - attr->enableAutoComplete = false; - attr->adjustWidthToContents = true; - attr->notifyWhenTextIsEdited = false; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.h b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.h index 3041de92ba..daa9f29dac 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.h +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJob.h @@ -75,7 +75,6 @@ public: static QString jobInputFileKey(); protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.cpp b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.cpp index e5c10fdd62..287768f8f2 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.cpp @@ -61,6 +61,7 @@ RimOpmFlowJobSettings::RimOpmFlowJobSettings() "", "List of Eclipse keywords which should be ignored." ); m_ignoreKeywords.uiCapability()->setUiEditorTypeName( caf::PdmUiListEditor::uiEditorTypeName() ); + m_ignoreKeywords.uiCapability()->setAttribute( caf::PdmUiListEditor::Keys::HEIGHT_HINT, 40 ); CAF_PDM_InitField( &m_newtonMaxIterations, "newtonMaxIterations", @@ -416,18 +417,3 @@ QStringList RimOpmFlowJobSettings::commandLineOptions( QString resInsightWorkDir return options; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimOpmFlowJobSettings::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_ignoreKeywords ) - { - auto attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->heightHint = 40; - } - } -} \ No newline at end of file diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.h b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.h index 001e2e924f..bbe8cc2f53 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.h +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimOpmFlowJobSettings.h @@ -49,7 +49,6 @@ public: protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: caf::PdmField m_mpiProcesses; diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp index 5c794b44ad..2f415f6dd5 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.cpp @@ -30,6 +30,7 @@ #include "RiuGuiTheme.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include "cafProgressInfo.h" #include @@ -45,6 +46,9 @@ 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" ); } @@ -163,8 +167,10 @@ void RimSingleJob::setStarted() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimSingleJob::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimSingleJob::treeItemTags() { + std::vector tags; + static auto warnColor = QColor( RiaColorTools::toQColor( cvf::Color3f( cvf::Color3f::DARK_YELLOW ) ) ); static auto contrastWarnColor = QColor( RiaColorTools::toQColor( RiaColorTools::contrastColor( cvf::Color3f( cvf::Color3f::DARK_YELLOW ) ) ) ); @@ -173,56 +179,54 @@ void RimSingleJob::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUi static auto contrastWaitColor = QColor( RiaColorTools::toQColor( RiaColorTools::contrastColor( cvf::Color3f( cvf::Color3f::LIGHT_GRAY ) ) ) ); - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) + if ( state() == JobState::Failed ) { - if ( state() == JobState::Failed ) - { - auto txt = m_errorsDetected > 0 ? QString( "[%1]" ).arg( m_errorsDetected ) : "!!!"; - auto tag = - caf::PdmUiTreeViewItemAttribute::createTag( QColor( Qt::red ), RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), txt ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } - else if ( state() == JobState::Queued ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->text = "Waiting..."; - tag->bgColor = waitColor; - tag->fgColor = contrastWaitColor; - treeItemAttribute->tags.push_back( std::move( tag ) ); - } - else if ( ( state() == JobState::Running ) || ( state() == JobState::Completed ) ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - - if ( state() == JobState::Running ) - { - tag->text = QString( "%1 %" ).arg( m_percentageDone, 0, 'f', 1 ); - } - else - { - tag->text = "Done"; - } - - double factor = m_percentageDone / 100.0; - - cvf::Color3f viewColor = cvf::Color3f( cvf::Color3f::GREEN ); - viewColor.set( viewColor.r() * factor, viewColor.g() * factor, viewColor.b() * factor ); - cvf::Color3f viewTextColor = RiaColorTools::contrastColor( viewColor ); - tag->bgColor = QColor( RiaColorTools::toQColor( viewColor ) ); - tag->fgColor = QColor( RiaColorTools::toQColor( viewTextColor ) ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } - if ( m_warningsDetected > 0 ) - { - auto warnTxt = QString( "[%1]" ).arg( m_warningsDetected ); - - auto warnTag = caf::PdmUiTreeViewItemAttribute::createTag( warnColor, contrastWarnColor, warnTxt ); - treeItemAttribute->tags.push_back( std::move( warnTag ) ); - auto iconTag = caf::PdmUiTreeViewItemAttribute::createTag(); - iconTag->icon = caf::IconProvider( ":/warning.png" ); - treeItemAttribute->tags.push_back( std::move( iconTag ) ); - } + auto txt = m_errorsDetected > 0 ? QString( "[%1]" ).arg( m_errorsDetected ) : "!!!"; + auto tag = caf::PdmUiTreeViewItemTag::create( QColor( Qt::red ), RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), txt ); + tags.push_back( tag ); } + else if ( state() == JobState::Queued ) + { + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.text = "Waiting..."; + tag.bgColor = waitColor; + tag.fgColor = contrastWaitColor; + tags.push_back( tag ); + } + else if ( ( state() == JobState::Running ) || ( state() == JobState::Completed ) ) + { + auto tag = caf::PdmUiTreeViewItemTag::create(); + + if ( state() == JobState::Running ) + { + tag.text = QString( "%1 %" ).arg( m_percentageDone, 0, 'f', 1 ); + } + else + { + tag.text = "Done"; + } + + double factor = m_percentageDone / 100.0; + + cvf::Color3f viewColor = cvf::Color3f( cvf::Color3f::GREEN ); + viewColor.set( viewColor.r() * factor, viewColor.g() * factor, viewColor.b() * factor ); + cvf::Color3f viewTextColor = RiaColorTools::contrastColor( viewColor ); + tag.bgColor = QColor( RiaColorTools::toQColor( viewColor ) ); + tag.fgColor = QColor( RiaColorTools::toQColor( viewTextColor ) ); + tags.push_back( tag ); + } + if ( m_warningsDetected > 0 ) + { + auto warnTxt = QString( "[%1]" ).arg( m_warningsDetected ); + + auto warnTag = caf::PdmUiTreeViewItemTag::create( warnColor, contrastWarnColor, warnTxt ); + tags.push_back( warnTag ); + auto iconTag = caf::PdmUiTreeViewItemTag::create(); + iconTag.icon = caf::IconProvider( ":/warning.png" ); + tags.push_back( iconTag ); + } + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h index eac678fda2..29c57d81c3 100644 --- a/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h +++ b/ApplicationLibCode/ProjectDataModel/Jobs/RimSingleJob.h @@ -19,6 +19,7 @@ #pragma once #include "RimGenericJob.h" +#include "cafPdmUiTreeAttributes.h" #include "cafPdmPointer.h" @@ -51,7 +52,7 @@ public: void setStarted() override; protected: - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); virtual QStringList command() = 0; virtual std::map environment() = 0; diff --git a/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.cpp b/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.cpp index 57f427decf..c52ac1d8c7 100644 --- a/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.cpp +++ b/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.cpp @@ -43,6 +43,10 @@ RimParameterGroup::RimParameterGroup() CAF_PDM_InitFieldNoDefault( &m_parameters, "Parameters", "Parameters" ); m_parameters.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_parameters.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_parameters.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + m_parameters.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 300 ); m_parameters.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_parameters.uiCapability()->setCustomContextMenuEnabled( true ); m_parameters.uiCapability()->setUiTreeChildrenHidden( true ); @@ -164,23 +168,6 @@ void RimParameterGroup::appendParametersToList( std::list& } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimParameterGroup::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_parameters ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttribute->alwaysEnforceResizePolicy = true; - tvAttribute->minimumHeight = 300; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.h b/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.h index acab7e45e8..c865deb466 100644 --- a/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.h +++ b/ApplicationLibCode/ProjectDataModel/Parameters/RimParameterGroup.h @@ -72,7 +72,6 @@ public: double parameterDoubleValue( QString name, double defaultValue ) const; private: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; caf::PdmFieldHandle* userDescriptionField() override; diff --git a/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.cpp b/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.cpp index 252b3da043..0885bbff80 100644 --- a/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.cpp +++ b/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.cpp @@ -38,6 +38,7 @@ RimPlotTemplateFolderItem::RimPlotTemplateFolderItem() CAF_PDM_InitObject( "Plot Templates", ":/Folder.png" ); CAF_PDM_InitFieldNoDefault( &m_folderName, "FolderName", "Folder" ); + m_folderName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true ); m_folderName.uiCapability()->setUiReadOnly( true ); CAF_PDM_InitFieldNoDefault( &m_fileNames, "FileNames", "" ); CAF_PDM_InitFieldNoDefault( &m_subFolders, "SubFolders", "" ); @@ -194,21 +195,6 @@ void RimPlotTemplateFolderItem::searchForFileAndFolderNames( int levelsLeft ) } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPlotTemplateFolderItem::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_folderName ) - { - caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_selectDirectory = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.h b/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.h index d2b6b4cefe..8a05bf1311 100644 --- a/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.h +++ b/ApplicationLibCode/ProjectDataModel/PlotTemplates/RimPlotTemplateFolderItem.h @@ -56,7 +56,6 @@ private: void setFolderPath( const QString& path ); void createSubFolderItemsFromFolderPaths( const QStringList& folderPaths, int levelsLeft ); - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; static void appendOptionItemsForPlotTemplatesRecursively( QList& options, diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp index baea0d8f33..e61d260348 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.cpp @@ -31,6 +31,7 @@ #include "cafCmdFeatureMenuBuilder.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include @@ -44,6 +45,9 @@ 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. @@ -319,26 +323,27 @@ void RimPolygonCloudAddress::appendMenuItems( caf::CmdFeatureMenuBuilder& menuBu //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPolygonCloudAddress::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimPolygonCloudAddress::treeItemTags() { - if ( hasBaseData() ) return; + std::vector tags; - auto* treeItemAttribute = dynamic_cast( attribute ); - if ( !treeItemAttribute ) return; + if ( hasBaseData() ) return tags; // Clickable download icon -- fetches base data directly from the tree. - auto downloadTag = caf::PdmUiTreeViewItemAttribute::createTag(); - downloadTag->icon = caf::IconProvider( ":/Download.svg" ); - downloadTag->toolTip = "Fetch polygon data"; - downloadTag->clicked.connect( this, &RimPolygonCloudAddress::onDownloadTagClicked ); - treeItemAttribute->tags.push_back( std::move( downloadTag ) ); + auto downloadTag = caf::PdmUiTreeViewItemTag::create(); + downloadTag.icon = caf::IconProvider( ":/Download.svg" ); + downloadTag.toolTip = "Fetch polygon data"; + downloadTag.clicked = [this]( size_t index ) { this->onDownloadTagClicked( nullptr, index ); }; + tags.push_back( downloadTag ); // Plain "not fetched" marker, no colored pill. - auto textTag = caf::PdmUiTreeViewItemAttribute::createTag(); - textTag->text = "[Not fetched]"; - textTag->bgColor = QColor( Qt::white ); - textTag->fgColor = QColor( Qt::darkGray ); - treeItemAttribute->tags.push_back( std::move( textTag ) ); + auto textTag = caf::PdmUiTreeViewItemTag::create(); + textTag.text = "[Not fetched]"; + textTag.bgColor = QColor( Qt::white ); + textTag.fgColor = QColor( Qt::darkGray ); + tags.push_back( textTag ); + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h index 953d765958..d5486a1d44 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/Cloud/RimPolygonCloudAddress.h @@ -19,6 +19,7 @@ #pragma once #include "Polygons/RimPolygonContainer.h" +#include "cafPdmUiTreeAttributes.h" #include "Cloud/RiaSumoPolygons.h" @@ -86,9 +87,9 @@ public: RimPolygonContainer* addNewSubCollection() override; protected: - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; + std::vector treeItemTags(); private: RiaSumoConnector* sumoConnector(); diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp index c64e8401cc..c2b2032ad4 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.cpp @@ -38,6 +38,7 @@ #include "cafPdmUiButton.h" #include "cafPdmUiColorEditor.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" CAF_PDM_SOURCE_INIT( RimPolygon, "Polygon", "RimPolygon" ); @@ -48,6 +49,9 @@ 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" ); @@ -315,21 +319,22 @@ void RimPolygon::appendPolygonMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPolygon::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimPolygon::treeItemTags() { - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag( RiaColorTools::toQColor( color() ), - RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), - "---" ); + std::vector tags; - tag->clicked.connect( this, &RimPolygon::onColorTagClicked ); + auto tag = caf::PdmUiTreeViewItemTag::create( RiaColorTools::toQColor( color() ), + RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), + "---" ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + tag.clicked = [this]( size_t index ) { this->onColorTagClicked( nullptr, index ); }; + + tags.push_back( tag ); if ( m_isReadOnly ) { - caf::PdmUiTreeViewItemAttribute::appendTagToTreeViewItemAttribute( attribute, ":/padlock.svg" ); + tags.push_back( caf::PdmUiTreeViewItemTag::createWithIcon( ":/padlock.svg" ) ); } + + return tags; } diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h index 6a03b53190..8a74cba46c 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygon.h @@ -18,6 +18,7 @@ #pragma once #include "RimNamedObject.h" +#include "cafPdmUiTreeAttributes.h" #include "RimPolylinesDataInterface.h" @@ -75,9 +76,9 @@ public: static void appendPolygonMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ); private: - void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; + std::vector treeItemTags(); + 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/RimPolygonAppearance.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.cpp index ab5bd33b5b..9b730a1c68 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.cpp @@ -24,55 +24,16 @@ #include "RigPolyLinesData.h" #include "RiaNumericalTools.h" -#include "RiaStdStringTools.h" #include "cafPdmFieldScriptingCapability.h" #include "cafPdmFieldScriptingCapabilityCvfColor3.h" #include "cafPdmObjectScriptingCapability.h" #include "cafPdmUiDoubleSliderEditor.h" -#include "cafPdmUiLineEditor.h" #include "cvfBoundingBox.h" CAF_PDM_SOURCE_INIT( RimPolygonAppearance, "RimPolygonAppearance" ); -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -class ThicknessValidator : public QValidator -{ -public: - State validate( QString& input, int& pos ) const override - { - if ( input.isEmpty() ) return State::Intermediate; - - int val = RiaStdStringTools::toInt( input.toStdString() ); - if ( val > 0 && val < 8 ) - return State::Acceptable; - else - return State::Invalid; - } -}; - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -class RadiusValidator : public QValidator -{ -public: - State validate( QString& input, int& pos ) const override - { - if ( input.isEmpty() ) return State::Intermediate; - - double val = 0.0; - RiaStdStringTools::toDouble( input.toStdString(), val ); - if ( val > 0.001 && val <= 2.0 ) - return State::Acceptable; - else - return State::Invalid; - } -}; - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -87,6 +48,7 @@ RimPolygonAppearance::RimPolygonAppearance() CAF_PDM_InitScriptableField( &m_showSpheres, "ShowSpheres", false, "Show Spheres" ); CAF_PDM_InitScriptableField( &m_lineThickness, "LineThickness", 3, "Line Thickness" ); + m_lineThickness.setRange( 1, 7 ); CAF_PDM_InitScriptableField( &m_sphereRadiusFactor, "SphereRadiusFactor", 0.15, "Sphere Radius Factor" ); CAF_PDM_InitScriptableField( &m_lineColor, "LineColor", cvf::Color3f( cvf::Color3f::ORANGE ), "Line Color" ); @@ -214,6 +176,32 @@ void RimPolygonAppearance::defineUiOrdering( QString uiConfigName, caf::PdmUiOrd if ( m_lockPolygonToPlane ) { uiOrdering.add( &m_polygonPlaneDepth ); + + auto allCases = RimProject::current()->allGridCases(); + if ( allCases.empty() ) + { + m_polygonPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_polygonPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 10000.0 ); + } + else + { + double min = std::numeric_limits::max(); + double max = -std::numeric_limits::max(); + + for ( auto gridCase : allCases ) + { + auto bb = gridCase->allCellsBoundingBox(); + + min = std::min( min, bb.min().z() ); + max = std::max( max, bb.max().z() ); + } + + auto adjustedMin = RiaNumericalTools::roundToNumSignificantDigitsFloor( -min, 2 ); + auto adjustedMax = RiaNumericalTools::roundToNumSignificantDigitsCeil( -max, 2 ); + + m_polygonPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, adjustedMax ); + m_polygonPlaneDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, adjustedMin ); + } } uiOrdering.add( &m_isClosed ); @@ -228,55 +216,3 @@ void RimPolygonAppearance::fieldChangedByUi( const caf::PdmFieldHandle* changedF { objectChanged.send(); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPolygonAppearance::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_lineThickness ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->validator = new ThicknessValidator(); - } - } - else if ( field == &m_lineThickness ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->validator = new RadiusValidator(); - } - } - else if ( field == &m_polygonPlaneDepth ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - auto allCases = RimProject::current()->allGridCases(); - if ( allCases.empty() ) - { - attr->m_minimum = 0; - attr->m_maximum = 10000.0; - } - else - { - double min = std::numeric_limits::max(); - double max = -std::numeric_limits::max(); - - for ( auto gridCase : allCases ) - { - auto bb = gridCase->allCellsBoundingBox(); - - min = std::min( min, bb.min().z() ); - max = std::max( max, bb.max().z() ); - } - - auto adjustedMin = RiaNumericalTools::roundToNumSignificantDigitsFloor( -min, 2 ); - auto adjustedMax = RiaNumericalTools::roundToNumSignificantDigitsCeil( -max, 2 ); - - attr->m_minimum = adjustedMax; - attr->m_maximum = adjustedMin; - } - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.h index a22120db57..1df520f6d0 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonAppearance.h @@ -53,7 +53,6 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: caf::PdmField m_isClosed; diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp index 52abfe0ae8..7a1bde8a3f 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.cpp @@ -27,6 +27,7 @@ #include "cafCmdFeatureMenuBuilder.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include @@ -38,6 +39,9 @@ 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 @@ -244,10 +248,14 @@ void RimPolygonFile::appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPolygonFile::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimPolygonFile::treeItemTags() { + std::vector tags; + if ( m_items.empty() ) { - caf::PdmUiTreeViewItemAttribute::appendTagToTreeViewItemAttribute( attribute, ":/warning.svg" ); + tags.push_back( caf::PdmUiTreeViewItemTag::createWithIcon( ":/warning.svg" ) ); } + + return tags; } diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h index abb3568c05..3619ad9baf 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonFile.h @@ -18,6 +18,7 @@ #pragma once #include "RimPolygonContainer.h" +#include "cafPdmUiTreeAttributes.h" #include "cafFilePath.h" #include "cafSignal.h" @@ -48,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; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); private: static std::vector importDataFromFile( const QString& fileName ); diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp index a07a66cc52..6368816743 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp @@ -42,6 +42,7 @@ #include "cafPdmUiButton.h" #include "cafPdmUiTableViewEditor.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include "cvfModelBasicList.h" @@ -53,6 +54,9 @@ 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" ); @@ -66,6 +70,10 @@ RimPolygonInView::RimPolygonInView() CAF_PDM_InitFieldNoDefault( &m_targets, "Targets", "Targets" ); m_targets.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FIT_CONTENT ) ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::HEIGHT_HINT, 1000 ); m_targets.uiCapability()->setUiTreeChildrenHidden( true ); m_targets.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); m_targets.uiCapability()->setCustomContextMenuEnabled( true ); @@ -327,6 +335,8 @@ void RimPolygonInView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin { uiOrdering.addNewButton( m_enablePicking ? "Stop Picking Points" : "Start Picking Points", [this]() { togglePicking(); } ); uiOrdering.add( &m_targets ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::BASE_COLOR, + m_enablePicking ? RiuGuiTheme::getColorByVariableName( "externalInputColor" ) : QColor() ); uiOrdering.add( &m_handleScalingFactor ); } @@ -374,25 +384,36 @@ void RimPolygonInView::defineObjectEditorAttribute( QString uiConfigName, caf::P attrib->pickEventHandler = m_pickTargetsEventHandler; attrib->enablePicking = m_enablePicking; } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RimPolygonInView::treeItemTags() +{ + std::vector tags; if ( m_polygon() ) { - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) + auto tag = caf::PdmUiTreeViewItemTag::create( RiaColorTools::toQColor( m_polygon->color() ), + RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), + "---" ); + + // The polygon is not owned by this object, so it can be deleted independently + tag.clicked = [target = caf::PdmPointer( m_polygon() )]( size_t index ) { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag( RiaColorTools::toQColor( m_polygon->color() ), - RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), - "---" ); + if ( target ) target->onColorTagClicked( nullptr, index ); + }; - tag->clicked.connect( m_polygon(), &RimPolygon::onColorTagClicked ); - - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + tags.push_back( tag ); if ( m_polygon->isReadOnly() ) { - caf::PdmUiTreeViewItemAttribute::appendTagToTreeViewItemAttribute( attribute, ":/padlock.svg" ); + tags.push_back( caf::PdmUiTreeViewItemTag::createWithIcon( ":/padlock.svg" ) ); } } + + return tags; } //-------------------------------------------------------------------------------------------------- @@ -402,6 +423,8 @@ void RimPolygonInView::uiOrderingForLocalPolygon( QString uiConfigName, caf::Pdm { uiOrdering.addNewButton( m_enablePicking ? "Stop Picking Points" : "Start Picking Points", [this]() { togglePicking(); } ); uiOrdering.add( &m_targets ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::BASE_COLOR, + m_enablePicking ? RiuGuiTheme::getColorByVariableName( "externalInputColor" ) : QColor() ); uiOrdering.add( &m_handleScalingFactor ); } @@ -470,27 +493,6 @@ double RimPolygonInView::scalingFactorForTarget() const return m_handleScalingFactor(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPolygonInView::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_targets ) - { - if ( auto tvAttribute = dynamic_cast( attribute ) ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FIT_CONTENT; - - if ( m_enablePicking ) - { - tvAttribute->baseColor = RiuGuiTheme::getColorByVariableName( "externalInputColor" ); - } - tvAttribute->alwaysEnforceResizePolicy = true; - tvAttribute->heightHint = 1000; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h index ffcfbb14fd..bab4544630 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h @@ -20,6 +20,7 @@ #include "RimCheckableNamedObject.h" #include "RimPolylinePickerInterface.h" #include "RimPolylinesDataInterface.h" +#include "cafPdmUiTreeAttributes.h" #include "RivPolylinePartMgr.h" @@ -74,6 +75,7 @@ public: void onChildrenUpdated( caf::PdmChildArrayFieldHandle* childArray, std::vector& updatedObjects ) override; void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); void uiOrderingForLocalPolygon( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ); @@ -84,7 +86,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override; void onObjectChanged( const caf::SignalEmitter* emitter ); diff --git a/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.cpp b/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.cpp index 57b3f357e7..a6262da49f 100644 --- a/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.cpp +++ b/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.cpp @@ -40,9 +40,13 @@ RimFieldQuickAccess::RimFieldQuickAccess() CAF_PDM_InitFieldNoDefault( &m_selectObjectButton, "SelectObject", "...", ":/Select.svg", "Select Object in Property Editor" ); m_selectObjectButton.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonCallbackEditor::uiEditorTypeName() ); + m_selectObjectButton.uiCapability()->setAttribute>( caf::PdmUiToolButtonCallbackEditor::Keys::CALLBACK, + [this]() { onSelectObjectButton(); } ); CAF_PDM_InitFieldNoDefault( &m_removeItemButton, "RemoveItem", "...", ":/pinned-remove.svg", "Remove Quick Access" ); m_removeItemButton.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonCallbackEditor::uiEditorTypeName() ); + m_removeItemButton.uiCapability()->setAttribute>( caf::PdmUiToolButtonCallbackEditor::Keys::CALLBACK, + [this]() { onRemoveObjectButton(); } ); m_markedForRemoval = false; } @@ -96,27 +100,6 @@ void RimFieldQuickAccess::onRemoveObjectButton() RiaQuickAccessScheduler::instance()->scheduleDisplayModelUpdateAndRedraw(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFieldQuickAccess::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_selectObjectButton ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->setCallback( std::bind( &RimFieldQuickAccess::onSelectObjectButton, this ) ); - } - } - else if ( field == &m_removeItemButton ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->setCallback( std::bind( &RimFieldQuickAccess::onRemoveObjectButton, this ) ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.h b/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.h index 133e93ff1b..28cbcba4a8 100644 --- a/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.h +++ b/ApplicationLibCode/ProjectDataModel/QuickAccess/RimFieldQuickAccess.h @@ -48,7 +48,6 @@ public: private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void onSelectObjectButton(); void onRemoveObjectButton(); diff --git a/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp b/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp index 3da8198b01..c608a69ef6 100644 --- a/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp +++ b/ApplicationLibCode/ProjectDataModel/Rim3dView.cpp @@ -102,6 +102,9 @@ 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 ); @@ -138,6 +141,8 @@ Rim3dView::Rim3dView() double defaultScaleFactor = preferences->defaultScaleFactorZ(); CAF_PDM_InitScriptableField( &m_scaleZ, "GridZScale", defaultScaleFactor, "Z Scale", "", "Scales the scene in the Z direction", "" ); + m_scaleZ.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ENABLE_EDITABLE_CONTENT, true ); + m_scaleZ.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ENABLE_AUTO_COMPLETE, false ); m_scaleZ.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); cvf::Color3f defBackgColor = preferences->defaultViewerBackgroundColor(); @@ -1989,30 +1994,16 @@ void Rim3dView::dockInPlotWindow() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void Rim3dView::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector Rim3dView::treeItemTags() { - RimViewWindow::defineObjectEditorAttribute( uiConfigName, attribute ); + std::vector tags = RimViewWindow::treeItemTags(); - caf::PdmUiTreeViewItemAttribute* treeItemAttribute = dynamic_cast( attribute ); - if ( treeItemAttribute && isDockedInPlotView() ) + if ( isDockedInPlotView() ) { - auto iconTag = caf::PdmUiTreeViewItemAttribute::createTag(); - iconTag->icon = caf::IconProvider( ":/PlotWindow.svg" ); - treeItemAttribute->tags.push_back( std::move( iconTag ) ); + auto iconTag = caf::PdmUiTreeViewItemTag::create(); + iconTag.icon = caf::IconProvider( ":/PlotWindow.svg" ); + tags.push_back( iconTag ); } -} -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void Rim3dView::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_scaleZ ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->enableEditableContent = true; - attr->enableAutoComplete = false; - } - } + return tags; } diff --git a/ApplicationLibCode/ProjectDataModel/Rim3dView.h b/ApplicationLibCode/ProjectDataModel/Rim3dView.h index 65244afd0e..787248879b 100644 --- a/ApplicationLibCode/ProjectDataModel/Rim3dView.h +++ b/ApplicationLibCode/ProjectDataModel/Rim3dView.h @@ -19,6 +19,7 @@ #pragma once #include "RiaDefines.h" +#include "cafPdmUiTreeAttributes.h" #include "RimNameConfig.h" #include "RimViewWindow.h" @@ -290,8 +291,7 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); void setupBeforeSave() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.cpp b/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.cpp index bf191a2d9a..0eb0295234 100644 --- a/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.cpp @@ -33,6 +33,9 @@ RimBinaryExportSettings::RimBinaryExportSettings() CAF_PDM_InitFieldNoDefault( &fileName, "Filename", "Export Filename" ); fileName.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); + fileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_SAVE_FILE_NAME, true ); + fileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::FILE_SELECTION_FILTER, + QString( "GRDECL files (*.grdecl *.GRDECL);;All files (*.*)" ) ); CAF_PDM_InitFieldNoDefault( &eclipseKeyword, "EclipseKeyword", "Eclipse Keyword" ); CAF_PDM_InitField( &undefinedValue, "UndefinedValue", 0.0, "Undefined Value" ); @@ -41,19 +44,3 @@ RimBinaryExportSettings::RimBinaryExportSettings() RiaPreferences::current()->writeEchoInGrdeclFiles(), "Write NOECHO and ECHO" ); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimBinaryExportSettings::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &fileName ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_selectSaveFileName = true; - myAttr->m_fileSelectionFilter = "GRDECL files (*.grdecl *.GRDECL);;All files (*.*)"; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.h b/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.h index fcc2a200b7..9cecb33a2c 100644 --- a/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.h +++ b/ApplicationLibCode/ProjectDataModel/RimBinaryExportSettings.h @@ -37,7 +37,4 @@ public: caf::PdmField eclipseKeyword; caf::PdmField undefinedValue; caf::PdmField writeEchoInGrdeclFiles; - -protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; }; diff --git a/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.cpp b/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.cpp index 13c9bff248..7cbc8b6dce 100644 --- a/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.cpp @@ -43,6 +43,8 @@ RimColorLegendItem::RimColorLegendItem() CAF_PDM_InitScriptableField( &m_categoryValue, "CategoryValue", 0, "Category Number" ); m_categoryValue.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() ); + m_categoryValue.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, 0 ); + m_categoryValue.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, 100 ); CAF_PDM_InitScriptableField( &m_categoryName, "CategoryName", QString( "" ), "Category Name" ); @@ -142,19 +144,6 @@ caf::PdmFieldHandle* RimColorLegendItem::userDescriptionField() return &m_nameProxy; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimColorLegendItem::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = 100; - } -} - //-------------------------------------------------------------------------------------------------- /// "stringify" category value and name; category value with leading zeros presupposing max 2 digits //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.h b/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.h index f7d899f7ef..6b403114fd 100644 --- a/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.h +++ b/ApplicationLibCode/ProjectDataModel/RimColorLegendItem.h @@ -56,7 +56,6 @@ public: private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/ ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* userDescriptionField() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.cpp b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.cpp index 0b33b89300..41e0ec690b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.cpp @@ -277,27 +277,13 @@ void RimCustomObjectiveFunction::defineUiTreeOrdering( caf::PdmUiTreeOrdering& u uiTreeOrdering.skipRemainingChildren( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCustomObjectiveFunction::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_customFunctionTitle ) - { - caf::PdmUiLineEditorAttribute* attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->placeholderText = autoGeneratedTitle(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimCustomObjectiveFunction::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { uiOrdering.add( &m_customFunctionTitle ); + m_customFunctionTitle.uiCapability()->setAttribute( caf::PdmUiLineEditor::Keys::PLACEHOLDER_TEXT, autoGeneratedTitle() ); { auto objFunc1 = objectiveFunction( RimObjectiveFunction::FunctionType::F1 ); diff --git a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.h b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.h index cc3c80667a..112fb395f6 100644 --- a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.h +++ b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunction.h @@ -60,7 +60,6 @@ public: private: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /* = "" */ ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; RimEnsembleCurveSet* parentCurveSet() const; diff --git a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.cpp b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.cpp index 9cd735ccf1..2d6007a70e 100644 --- a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.cpp @@ -52,6 +52,7 @@ RimCustomObjectiveFunctionWeight::RimCustomObjectiveFunctionWeight() m_objectiveValuesSummaryAddresses.uiCapability()->setUiTreeChildrenHidden( true ); CAF_PDM_InitField( &m_weightValue, "WeightValue", 1.0, "Weight" ); + m_weightValue.setRange( 0.0, 9999.0 ); m_weightValue.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_objectiveFunction, "ObjectiveFunction", "Objective Function" ); @@ -161,25 +162,6 @@ void RimCustomObjectiveFunctionWeight::defineUiOrdering( QString uiConfigName, c uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCustomObjectiveFunctionWeight::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_weightValue ) - { - caf::PdmUiLineEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( !myAttr ) - { - return; - } - - myAttr->validator = new QDoubleValidator( 0.0, 9999.0, 2 ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.h b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.h index 72ede85473..74c16e3b8b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.h +++ b/ApplicationLibCode/ProjectDataModel/RimCustomObjectiveFunctionWeight.h @@ -61,7 +61,6 @@ private: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; RimCustomObjectiveFunction* parentObjectiveFunction() const; diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp index 598731499b..81e2457426 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp @@ -86,6 +86,10 @@ RimEclipseResultCase::RimEclipseResultCase() { CAF_PDM_InitScriptableObject( "Eclipse Case", ":/Case48x48.png", "", "The Regular Eclipse Results Case" ); + m_resultAliasList.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_resultAliasList.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + CAF_PDM_InitFieldNoDefault( &m_unitSystem, "UnitSystem", "Unit System" ); m_unitSystem.registerGetMethod( RimProject::current(), &RimProject::commonUnitSystemForAllCases ); m_unitSystem.uiCapability()->setUiReadOnly( true ); @@ -98,6 +102,7 @@ RimEclipseResultCase::RimEclipseResultCase() CAF_PDM_InitFieldNoDefault( &m_sourSimFileName, "SourSimFileName", "SourSim File Name" ); m_sourSimFileName.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); + m_sourSimFileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::FILE_SELECTION_FILTER, QString( "SourSim (*.sourres)" ) ); #ifndef USE_HDF5 m_sourSimFileName.uiCapability()->setUiHidden( true ); #endif @@ -770,6 +775,8 @@ bool RimEclipseResultCase::hasSourSimFile() //-------------------------------------------------------------------------------------------------- void RimEclipseResultCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { + m_sourSimFileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::DEFAULT_PATH, QFileInfo( gridFileName() ).absolutePath() ); + uiOrdering.add( &m_caseUserDescription ); uiOrdering.add( &m_displayNameOption ); uiOrdering.add( &m_caseId ); @@ -818,31 +825,6 @@ void RimEclipseResultCase::fieldChangedByUi( const caf::PdmFieldHandle* changedF return RimEclipseCase::fieldChangedByUi( changedField, oldValue, newValue ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipseResultCase::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_sourSimFileName ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_fileSelectionFilter = "SourSim (*.sourres)"; - myAttr->m_defaultPath = QFileInfo( gridFileName() ).absolutePath(); - } - } - else if ( field == &m_resultAliasList ) - { - auto* tvAttr = dynamic_cast( attribute ); - if ( tvAttr ) - { - tvAttr->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttr->alwaysEnforceResizePolicy = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h index c3a45f1fc5..20157840a0 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h @@ -84,7 +84,6 @@ public: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.cpp index 19db5be787..01563a1a19 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.cpp @@ -162,9 +162,13 @@ RimEclipseResultDefinition::RimEclipseResultDefinition( caf::PdmUiItemInfo::Labe CAF_PDM_InitField( &m_syncInjectorToProducerSelection, "MSyncSelectedInjProd", false, "Add Communicators ->" ); m_syncInjectorToProducerSelection.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonEditor::uiEditorTypeName() ); + m_syncInjectorToProducerSelection.uiCapability()->setAttribute( caf::PdmUiToolButtonEditor::Keys::SIZE_POLICY, + QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ) ); CAF_PDM_InitField( &m_syncProducerToInjectorSelection, "MSyncSelectedProdInj", false, "<- Add Communicators" ); m_syncProducerToInjectorSelection.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonEditor::uiEditorTypeName() ); + m_syncProducerToInjectorSelection.uiCapability()->setAttribute( caf::PdmUiToolButtonEditor::Keys::SIZE_POLICY, + QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ) ); CAF_PDM_InitFieldNoDefault( &m_selectedInjectorTracersUiField, "MSelectedInjectorTracers", "Injector Tracers" ); m_selectedInjectorTracersUiField.xmlCapability()->disableIO(); @@ -1610,24 +1614,6 @@ bool RimEclipseResultDefinition::showDualPorosityLabel() const return m_showDualPorosityLabel; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipseResultDefinition::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( m_resultTypeUiField() == RiaDefines::ResultCatType::FLOW_DIAGNOSTICS ) - { - if ( field == &m_syncInjectorToProducerSelection || field == &m_syncProducerToInjectorSelection ) - { - caf::PdmUiToolButtonEditorAttribute* toolButtonAttr = dynamic_cast( attribute ); - if ( toolButtonAttr ) - { - toolButtonAttr->m_sizePolicy.setHorizontalPolicy( QSizePolicy::MinimumExpanding ); - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.h b/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.h index d3f9dfddd8..24289c39de 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultDefinition.h @@ -155,7 +155,6 @@ protected: void initAfterRead() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; protected: caf::PdmField> m_resultType; diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp index 62966cd34d..42b9665652 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.cpp @@ -81,6 +81,7 @@ RimEclipseStatisticsCase::RimEclipseStatisticsCase() CAF_PDM_InitScriptableObject( "Case Group Statistics", ":/Histogram16x16.png" ); CAF_PDM_InitField( &m_selectionSummary, "SelectionSummary", QString( "" ), "Summary of Calculation Setup" ); + m_selectionSummary.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); m_selectionSummary.xmlCapability()->disableIO(); m_selectionSummary.uiCapability()->setUiReadOnly( true ); m_selectionSummary.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); @@ -882,21 +883,6 @@ void RimEclipseStatisticsCase::updateSelectionSummaryLabel() m_selectionSummary = html; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipseStatisticsCase::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( &m_selectionSummary == field ) - { - caf::PdmUiTextEditorAttribute* textEditAttrib = dynamic_cast( attribute ); - if ( textEditAttrib ) - { - textEditAttrib->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h index 95929d2dfd..1c4826679b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCase.h @@ -104,7 +104,6 @@ private: void loadSimulationWellDataFromSourceCase(); void initAfterRead() override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initializeSelectedTimeSteps(); static QList toOptionList( const QStringList& varList ); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp index fc7bce62c0..f06d04a34d 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp @@ -180,6 +180,7 @@ RimEclipseView::RimEclipseView() CAF_PDM_InitFieldNoDefault( &m_customEclipseCase_OBSOLETE, "CustomEclipseCase", "Custom Case" ); CAF_PDM_InitScriptableFieldNoDefault( &m_eclipseCase, "EclipseCase", "Eclipse Case" ); + RiuTools::enableUpDownArrowsForComboBox( &m_eclipseCase ); CAF_PDM_InitFieldNoDefault( &m_caseChangeBehaviour, "CaseChangeBehaviour", "Zoom Operation When Changing Case" ); CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &m_cellResult, "GridCellResult", "CellResult", "Cell Result", ":/CellResult.png" ); @@ -2268,19 +2269,6 @@ QList RimEclipseView::calculateValueOptions( const caf:: return RimGridView::calculateValueOptions( fieldNeedingOptions ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimEclipseView::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - RimGridView::defineEditorAttribute( field, uiConfigName, attribute ); - - if ( field == &m_eclipseCase ) - { - RiuTools::enableUpDownArrowsForComboBox( attribute ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseView.h b/ApplicationLibCode/ProjectDataModel/RimEclipseView.h index 40b9f3471f..1ac0aa7115 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseView.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseView.h @@ -216,7 +216,6 @@ protected: virtual std::set allVisibleFaultGeometryTypes() const; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: QString createAutoName() const override; diff --git a/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.cpp b/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.cpp index 3b4966dc6a..6c62a8b451 100644 --- a/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.cpp @@ -33,6 +33,9 @@ RimExportInputSettings::RimExportInputSettings() CAF_PDM_InitFieldNoDefault( &fileName, "Filename", "Export Filename" ); fileName.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); + fileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_SAVE_FILE_NAME, true ); + fileName.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::FILE_SELECTION_FILTER, + QString( "Text files (*.txt);;All files (*.*)" ) ); CAF_PDM_InitFieldNoDefault( &eclipseKeyword, "Keyword", "Eclipse Keyword" ); CAF_PDM_InitField( &writeEchoInGrdeclFiles, @@ -40,19 +43,3 @@ RimExportInputSettings::RimExportInputSettings() RiaPreferences::current()->writeEchoInGrdeclFiles(), "Write NOECHO and ECHO" ); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimExportInputSettings::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &fileName ) - { - caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_selectSaveFileName = true; - myAttr->m_fileSelectionFilter = "Text files (*.txt);;All files (*.*)"; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.h b/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.h index b97fd8d1ce..7ccc953553 100644 --- a/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.h +++ b/ApplicationLibCode/ProjectDataModel/RimExportInputPropertySettings.h @@ -36,7 +36,4 @@ public: caf::PdmField fileName; caf::PdmField eclipseKeyword; caf::PdmField writeEchoInGrdeclFiles; - -protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; }; diff --git a/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.cpp b/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.cpp index b74b421bcc..1b83f5d9e8 100644 --- a/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.cpp @@ -63,6 +63,7 @@ RimGridCalculationVariable::RimGridCalculationVariable() CAF_PDM_InitFieldNoDefault( &m_button, "PushButton", "" ); caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_button ); + m_button.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::CellKeys::PUSH_BUTTON_TEXT, "Edit" ); } //-------------------------------------------------------------------------------------------------- @@ -104,18 +105,6 @@ void RimGridCalculationVariable::defineUiOrdering( QString uiConfigName, caf::Pd m_timeStep.uiCapability()->setUiReadOnly( m_resultType == RiaDefines::ResultCatType::STATIC_NATIVE ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimGridCalculationVariable::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - auto attr = dynamic_cast( attribute ); - if ( attr ) - { - attr->registerPushButtonTextForFieldKeyword( m_button.keyword(), "Edit" ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.h b/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.h index a07e6ac9ad..3943d6f30b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.h +++ b/ApplicationLibCode/ProjectDataModel/RimGridCalculationVariable.h @@ -60,7 +60,6 @@ public: private: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp index f220e946b2..cd11c3d8d2 100644 --- a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp @@ -46,6 +46,7 @@ #include "RiuPlotMainWindowTools.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" CAF_PDM_SOURCE_INIT( RimGridTimeHistoryCurve, "GridTimeHistoryCurve" ); @@ -54,6 +55,9 @@ 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" ); @@ -656,8 +660,10 @@ void RimGridTimeHistoryCurve::childFieldChangedByUi( const caf::PdmFieldHandle* //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimGridTimeHistoryCurve::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimGridTimeHistoryCurve::treeItemTags() { + std::vector tags; + bool isUpdatedByAutomation = false; if ( auto parentPlot = RiaSummaryTools::parentSummaryPlot( this ) ) @@ -673,16 +679,15 @@ void RimGridTimeHistoryCurve::defineObjectEditorAttribute( QString uiConfigName, { QString iconResourceString = m_isLocked ? ":/padlock.svg" : ":/padlock-unlocked.svg"; - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->icon = caf::IconProvider( iconResourceString ); + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.icon = caf::IconProvider( iconResourceString ); - tag->clicked.connect( this, &RimGridTimeHistoryCurve::onPadlockClicked ); + tag.clicked = [this]( size_t index ) { this->onPadlockClicked( nullptr, index ); }; - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + tags.push_back( tag ); } + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h index edd7b2e153..ac5ad51598 100644 --- a/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h +++ b/ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.h @@ -18,6 +18,7 @@ #pragma once #include "RimStackablePlotCurve.h" +#include "cafPdmUiTreeAttributes.h" #include "RiaDefines.h" @@ -82,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; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); private: RigMainGrid* mainGrid(); diff --git a/ApplicationLibCode/ProjectDataModel/RimMultiPlot.cpp b/ApplicationLibCode/ProjectDataModel/RimMultiPlot.cpp index 188ad5b9ba..142811de7f 100644 --- a/ApplicationLibCode/ProjectDataModel/RimMultiPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimMultiPlot.cpp @@ -64,7 +64,9 @@ RimMultiPlot::RimMultiPlot() RiaPreferencesSummary* sumPrefs = RiaPreferencesSummary::current(); CAF_PDM_InitScriptableField( &m_columnCount, "NumberOfColumns", ColumnCountEnum( sumPrefs->defaultMultiPlotColumnCount() ), "Number of Columns" ); + m_columnCount.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ICON_SIZE, QSize( 24, 16 ) ); CAF_PDM_InitScriptableField( &m_rowsPerPage, "RowsPerPage", RowCountEnum( sumPrefs->defaultMultiPlotRowCount() ), "Rows per Page" ); + m_rowsPerPage.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::ICON_SIZE, QSize( 24, 16 ) ); CAF_PDM_InitField( &m_showIndividualPlotTitles, "ShowPlotTitles", true, "Show Sub Plot Titles" ); CAF_PDM_InitFieldNoDefault( &m_majorTickmarkCount, "MajorTickmarkCount", "Major Tickmark Count" ); @@ -744,21 +746,6 @@ void RimMultiPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& u uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimMultiPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_rowsPerPage || field == &m_columnCount ) - { - auto myattr = dynamic_cast( attribute ); - if ( myattr ) - { - myattr->iconSize = QSize( 24, 16 ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimMultiPlot.h b/ApplicationLibCode/ProjectDataModel/RimMultiPlot.h index 8c10e015f0..61dbb463bb 100644 --- a/ApplicationLibCode/ProjectDataModel/RimMultiPlot.h +++ b/ApplicationLibCode/ProjectDataModel/RimMultiPlot.h @@ -128,7 +128,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void uiOrderingForMultiPlotLayout( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ); QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.cpp b/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.cpp index 5e77cb8d3d..ad1acb3256 100644 --- a/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.cpp @@ -142,17 +142,6 @@ void RimObservedFmuRftData::defineUiOrdering( QString uiConfigName, caf::PdmUiOr uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimObservedFmuRftData::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_contentTable ) - { - RimCsvPreviewTools::setPreviewEditorAttribute( attribute ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.h b/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.h index 1a5b23942e..7f2d55b247 100644 --- a/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.h +++ b/ApplicationLibCode/ProjectDataModel/RimObservedFmuRftData.h @@ -45,7 +45,6 @@ public: protected: void initAfterRead() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: void updateContentTable(); diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp index befb00931e..e5e7d978b0 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.cpp @@ -30,6 +30,7 @@ #include "cafCmdFeatureMenuBuilder.h" #include "cafPdmUiSliderEditor.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include @@ -59,6 +60,9 @@ 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" ); @@ -776,33 +780,32 @@ void RimPlotAxisProperties::appendMenuItems( caf::CmdFeatureMenuBuilder& menuBui //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPlotAxisProperties::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimPlotAxisProperties::treeItemTags() { - auto* treeItemAttribute = dynamic_cast( attribute ); - if ( !treeItemAttribute ) return; - - treeItemAttribute->tags.clear(); + std::vector tags; auto summaryMultiPlot = firstAncestorOfType(); if ( summaryMultiPlot && summaryMultiPlot->isSubPlotAxesLinked() ) { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->icon = caf::IconProvider( ":/SharedAxis.svg" ); + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.icon = caf::IconProvider( ":/SharedAxis.svg" ); - treeItemAttribute->tags.push_back( std::move( tag ) ); + tags.push_back( tag ); } if ( isRangeUserDefined() ) { // Indicate that the axis range is fixed by the user, and will not be updated by auto-zoom. // Clicking the tag releases the user-defined range, so the axis follows the data again. - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->icon = caf::IconProvider( ":/PinnedAxisRange.svg" ); + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.icon = caf::IconProvider( ":/PinnedAxisRange.svg" ); - tag->clicked.connect( this, &RimPlotAxisProperties::onPinnedTagClicked ); + tag.clicked = [this]( size_t index ) { this->onPinnedTagClicked( nullptr, index ); }; - treeItemAttribute->tags.push_back( std::move( tag ) ); + tags.push_back( tag ); } + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h index e627c8e5e7..12063d8e62 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h +++ b/ApplicationLibCode/ProjectDataModel/RimPlotAxisProperties.h @@ -21,6 +21,7 @@ #include "Appearance/RimFontSizeField.h" #include "RimPlotAxisPropertiesInterface.h" +#include "cafPdmUiTreeAttributes.h" #include "RiuPlotAxis.h" @@ -157,10 +158,10 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; private: - void updateOptionSensitivity(); - caf::FontTools::FontSize plotFontSize() const; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void onPinnedTagClicked( const caf::SignalEmitter* emitter, size_t index ); + void updateOptionSensitivity(); + caf::FontTools::FontSize plotFontSize() const; + std::vector treeItemTags(); + void onPinnedTagClicked( const caf::SignalEmitter* emitter, size_t index ); private: caf::PdmField m_isActive; diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp index f5b235f3a2..6ebe6ebdaa 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.cpp @@ -37,6 +37,7 @@ #include "cafPdmUiColorEditor.h" #include "cafPdmUiTreeAttributes.h" #include "cafPdmUiTreeSelectionEditor.h" +#include "cafPdmUiTreeViewEditor.h" CAF_PDM_SOURCE_INIT( RimPlotCurve, "PlotCurve" ); @@ -49,6 +50,9 @@ 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" ); @@ -1276,20 +1280,19 @@ QString RimPlotCurve::curveExportDescription( const RifEclipseSummaryAddress& ad //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimPlotCurve::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimPlotCurve::treeItemTags() { - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) - { - treeItemAttribute->tags.clear(); + std::vector tags; - auto tag = caf::PdmUiTreeViewItemAttribute::createTag( RiaColorTools::toQColor( m_curveAppearance->color() ), - RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), - "---" ); + auto tag = caf::PdmUiTreeViewItemTag::create( RiaColorTools::toQColor( m_curveAppearance->color() ), + RiuGuiTheme::getColorByVariableName( "backgroundColor1" ), + "---" ); - tag->clicked.connect( this, &RimPlotCurve::onColorTagClicked ); + tag.clicked = [this]( size_t index ) { this->onColorTagClicked( nullptr, index ); }; - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + tags.push_back( tag ); + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h index 8787b160dd..58d4c051cf 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h +++ b/ApplicationLibCode/ProjectDataModel/RimPlotCurve.h @@ -18,6 +18,7 @@ #pragma once #include "RimPlotCurveAppearance.h" +#include "cafPdmUiTreeAttributes.h" #include "RiaCurveDataTools.h" #include "RiaPlotDefines.h" @@ -192,7 +193,7 @@ protected: void updateYAxisInPlot( RiuPlotAxis plotAxis ); void updateXAxisInPlot( RiuPlotAxis plotAxis ); - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); void onColorTagClicked( const SignalEmitter* emitter, size_t index ); diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.cpp b/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.cpp index 7618489114..c6a8dc1fc1 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.cpp @@ -92,12 +92,18 @@ RimPlotCurveAppearance::RimPlotCurveAppearance() CAF_PDM_InitField( &m_curveColorOpacity, "CurveColorOpacity", 1.0f, "Opacity" ); m_curveColorOpacity.registerKeywordAlias( "CurveColorTransparency" ); m_curveColorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_curveColorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_curveColorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_curveColorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 2 ); CAF_PDM_InitField( &m_fillColor, "FillColor", cvf::Color3f( -1.0, -1.0, -1.0 ), "Fill Color" ); CAF_PDM_InitField( &m_fillColorOpacity, "FillColorOpacity", 1.0f, "Fill Color Opacity" ); m_fillColorOpacity.registerKeywordAlias( "FillColorTransparency" ); m_fillColorOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_fillColorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_fillColorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_fillColorOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 2 ); CAF_PDM_InitField( &m_curveThickness, "Thickness", 1, "Line Thickness" ); m_curveThickness.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() ); @@ -153,22 +159,6 @@ void RimPlotCurveAppearance::fieldChangedByUi( const caf::PdmFieldHandle* change appearanceChanged.send(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPlotCurveAppearance ::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_curveColorOpacity || field == &m_fillColorOpacity ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_minimum = 0.0; - myAttr->m_maximum = 1.0; - myAttr->m_decimals = 2; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.h b/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.h index 3bb5de9e30..2316a756c9 100644 --- a/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.h +++ b/ApplicationLibCode/ProjectDataModel/RimPlotCurveAppearance.h @@ -108,7 +108,6 @@ protected: // Overridden PDM methods void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.cpp b/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.cpp index acafa8a94c..6210ff7136 100644 --- a/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.cpp @@ -257,6 +257,26 @@ void RimRefinementRegion::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde rangeGroup->add( &m_startK ); rangeGroup->add( &m_cellCountK ); + if ( auto grid = mainGrid() ) + { + auto setRange = []( caf::PdmFieldHandle& field, size_t maximum ) + { caf::PdmUiSliderEditor::setRange( field.uiCapability(), 1, static_cast( maximum ) ); }; + + setRange( m_startI, grid->cellCountI() ); + setRange( m_cellCountI, grid->cellCountI() ); + setRange( m_startJ, grid->cellCountJ() ); + setRange( m_cellCountJ, grid->cellCountJ() ); + setRange( m_startK, grid->cellCountK() ); + setRange( m_cellCountK, grid->cellCountK() ); + } + else + { + for ( auto* field : { &m_startI, &m_cellCountI, &m_startJ, &m_cellCountJ, &m_startK, &m_cellCountK } ) + { + caf::PdmUiSliderEditor::clearRange( field->uiCapability() ); + } + } + auto* appearanceGroup = uiOrdering.addNewGroup( "Appearance" ); appearanceGroup->add( &m_previewColor ); appearanceGroup->setCollapsedByDefault(); @@ -266,34 +286,6 @@ void RimRefinementRegion::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimRefinementRegion::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - auto* sliderAttr = dynamic_cast( attribute ); - if ( !sliderAttr ) return; - - auto grid = mainGrid(); - if ( !grid ) return; - - if ( field == &m_startI || field == &m_cellCountI ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = static_cast( grid->cellCountI() ); - } - else if ( field == &m_startJ || field == &m_cellCountJ ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = static_cast( grid->cellCountJ() ); - } - else if ( field == &m_startK || field == &m_cellCountK ) - { - sliderAttr->m_minimum = 1; - sliderAttr->m_maximum = static_cast( grid->cellCountK() ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.h b/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.h index 53cc208ac5..eea5d379b4 100644 --- a/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.h +++ b/ApplicationLibCode/ProjectDataModel/RimRefinementRegion.h @@ -83,7 +83,6 @@ public: protected: caf::PdmFieldHandle* userDescriptionField() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.cpp b/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.cpp index 1da3e90931..d27d6742b6 100644 --- a/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.cpp @@ -686,13 +686,6 @@ caf::PdmFieldHandle* RimRegularLegendConfig::objectToggleField() return &m_showLegend; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimRegularLegendConfig::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.h b/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.h index 52381a7e50..2e62a6031f 100644 --- a/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.h +++ b/ApplicationLibCode/ProjectDataModel/RimRegularLegendConfig.h @@ -187,7 +187,6 @@ private: void sendChangedSignal( const caf::PdmFieldHandle* changedField ); void initAfterRead() override; caf::PdmFieldHandle* objectToggleField() override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp index 722b9db97c..3866a0f1d5 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.cpp @@ -58,6 +58,7 @@ #include "cafPdmObjectScriptingCapability.h" #include "cafPdmUiTreeAttributes.h" #include "cafPdmUiTreeOrdering.h" +#include "cafPdmUiTreeViewEditor.h" #include "cafProgressInfo.h" #include "RigCaseCellResultsData.h" @@ -80,6 +81,9 @@ 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", "", @@ -1130,17 +1134,18 @@ void RimReservoirGridEnsemble::updateGridModeToolTip() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimReservoirGridEnsemble::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimReservoirGridEnsemble::treeItemTags() { - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) + std::vector tags; + + if ( gridMode() == GridModeType::INDIVIDUAL_GRIDS ) { - if ( gridMode() == GridModeType::INDIVIDUAL_GRIDS ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->icon = caf::IconProvider( ":/info16x16.png" ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.icon = caf::IconProvider( ":/info16x16.png" ); + tags.push_back( tag ); } + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h index 66f353ee9e..82732cb14b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsemble.h @@ -21,6 +21,7 @@ #include "RiaPorosityModel.h" #include "RimNamedObject.h" #include "RimReservoirGridEnsembleBase.h" +#include "cafPdmUiTreeAttributes.h" #include "cafAppEnum.h" #include "cafPdmChildArrayField.h" @@ -135,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; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); 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 372cee47d4..94c2af65e6 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.cpp @@ -33,6 +33,7 @@ #include "RimRoffCaseSumo.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include #include @@ -44,6 +45,9 @@ 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" ); @@ -155,18 +159,17 @@ void RimReservoirGridEnsembleSumo::defineUiOrdering( QString uiConfigName, caf:: /// Flag an ensemble that does not cover all its realizations, so the missing ones are visible in the /// tree and not only in the property panel. //-------------------------------------------------------------------------------------------------- -void RimReservoirGridEnsembleSumo::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimReservoirGridEnsembleSumo::treeItemTags() { - RimReservoirGridEnsemble::defineObjectEditorAttribute( uiConfigName, attribute ); + std::vector tags = RimReservoirGridEnsemble::treeItemTags(); - if ( realizationsWithoutGridData().empty() ) return; + if ( realizationsWithoutGridData().empty() ) return tags; - if ( auto* treeItemAttribute = dynamic_cast( attribute ) ) - { - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->icon = caf::IconProvider( ":/warning.svg" ); - treeItemAttribute->tags.push_back( std::move( tag ) ); - } + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.icon = caf::IconProvider( ":/warning.svg" ); + tags.push_back( tag ); + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h index 2053e9b7cd..26c1051610 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h +++ b/ApplicationLibCode/ProjectDataModel/RimReservoirGridEnsembleSumo.h @@ -19,6 +19,7 @@ #pragma once #include "RimReservoirGridEnsemble.h" +#include "cafPdmUiTreeAttributes.h" #include "cafPdmField.h" #include "cafPdmProxyValueField.h" @@ -77,8 +78,8 @@ public: void setDoComputeMobileVolumeWeightedMean( bool enable ) override; protected: - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + std::vector treeItemTags(); void createCaseObjects() override; bool detectGridDimensionEquality() override; diff --git a/ApplicationLibCode/ProjectDataModel/RimRoffCase.cpp b/ApplicationLibCode/ProjectDataModel/RimRoffCase.cpp index 8a726bdd00..432f04b61c 100644 --- a/ApplicationLibCode/ProjectDataModel/RimRoffCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimRoffCase.cpp @@ -51,6 +51,10 @@ RimRoffCase::RimRoffCase() : RimEclipseCase() { CAF_PDM_InitScriptableObject( "RimRoffCase", ":/EclipseInput48x48.png" ); + + m_resultAliasList.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_resultAliasList.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); } //-------------------------------------------------------------------------------------------------- @@ -155,19 +159,3 @@ bool RimRoffCase::importAsciiInputProperties( const QStringList& fileNames ) return true; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimRoffCase::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_resultAliasList ) - { - auto* tvAttr = dynamic_cast( attribute ); - if ( tvAttr ) - { - tvAttr->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttr->alwaysEnforceResizePolicy = true; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/RimRoffCase.h b/ApplicationLibCode/ProjectDataModel/RimRoffCase.h index c064c0781e..389fb4466a 100644 --- a/ApplicationLibCode/ProjectDataModel/RimRoffCase.h +++ b/ApplicationLibCode/ProjectDataModel/RimRoffCase.h @@ -45,5 +45,4 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; }; diff --git a/ApplicationLibCode/ProjectDataModel/RimScriptCollection.cpp b/ApplicationLibCode/ProjectDataModel/RimScriptCollection.cpp index a90563fc42..8aee9e3717 100644 --- a/ApplicationLibCode/ProjectDataModel/RimScriptCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimScriptCollection.cpp @@ -40,6 +40,7 @@ RimScriptCollection::RimScriptCollection() CAF_PDM_InitFieldNoDefault( &directory, "ScriptDirectory", "Folder" ); directory.uiCapability()->setUiReadOnly( true ); directory.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); + directory.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, true ); CAF_PDM_InitFieldNoDefault( &calcScripts, "CalcScripts", "" ); CAF_PDM_InitFieldNoDefault( &subDirectories, "SubDirectories", "" ); @@ -116,18 +117,3 @@ void RimScriptCollection::readContentFromDisc( int folderLevelsLeft ) } } } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimScriptCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &directory ) - { - caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_selectDirectory = true; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/RimScriptCollection.h b/ApplicationLibCode/ProjectDataModel/RimScriptCollection.h index 41d1eea132..8e72707126 100644 --- a/ApplicationLibCode/ProjectDataModel/RimScriptCollection.h +++ b/ApplicationLibCode/ProjectDataModel/RimScriptCollection.h @@ -27,11 +27,6 @@ class RimCalcScript; -namespace caf -{ -class PdmUiEditorAttribute; -} - //================================================================================================== /// /// @@ -51,7 +46,4 @@ public: public: void readContentFromDisc( int folderLevelsLeft ); - -protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; }; diff --git a/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.cpp b/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.cpp index c281fd3f8c..19dabdb661 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.cpp @@ -48,6 +48,7 @@ RimSummaryCalculationVariable::RimSummaryCalculationVariable() CAF_PDM_InitFieldNoDefault( &m_button, "PushButton", "" ); caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_button ); + m_button.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::CellKeys::PUSH_BUTTON_TEXT, "Edit" ); CAF_PDM_InitFieldNoDefault( &m_case, "SummaryCase", "Summary Case" ); CAF_PDM_InitFieldNoDefault( &m_summaryAddress, "SummaryAddress", "Summary Address" ); @@ -180,18 +181,6 @@ void RimSummaryCalculationVariable::defineUiOrdering( QString uiConfigName, caf: uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryCalculationVariable::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - caf::PdmUiTableViewPushButtonEditorAttribute* attr = dynamic_cast( attribute ); - if ( attr ) - { - attr->registerPushButtonTextForFieldKeyword( m_button.keyword(), "Edit" ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.h b/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.h index 4a72fe8793..5992be6a6e 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.h +++ b/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationVariable.h @@ -55,7 +55,6 @@ public: private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void readDataFromApplicationStore( RiuSummaryVectorSelectionDialog* selectionDialog ) const; void writeDataToApplicationStore() const; diff --git a/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.cpp b/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.cpp index b4239ce9fb..06cb482418 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.cpp @@ -55,9 +55,13 @@ RimSurfaceIntersectionBand::RimSurfaceIntersectionBand() CAF_PDM_InitField( &m_bandColor, "BandColor", cvf::Color3f( cvf::Color3f::BLACK ), "Band Color" ); CAF_PDM_InitField( &m_bandOpacity, "BandOpacity", 0.8, "Band Opacity" ); m_bandOpacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_bandOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_bandOpacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); CAF_PDM_InitField( &m_bandPolygonOffsetUnit, "BandPolygonOffsetUnit", -5.0, "Depth Offset", "", "Larger Value Closer to Camera", "" ); m_bandPolygonOffsetUnit.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_bandPolygonOffsetUnit.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_bandPolygonOffsetUnit.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); CAF_PDM_InitFieldNoDefault( &m_surfaces, "Surfaces", "Band Surfaces" ); m_surfaces.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); @@ -237,31 +241,6 @@ QList RimSurfaceIntersectionBand::calculateValueOptions( return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSurfaceIntersectionBand::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_bandPolygonOffsetUnit ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = 1.0; - } - } - else if ( field == &m_bandOpacity ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0.0; - myAttr->m_maximum = 1.0; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.h b/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.h index ea19e296d9..efba80e160 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.h +++ b/ApplicationLibCode/ProjectDataModel/RimSurfaceIntersectionBand.h @@ -67,8 +67,6 @@ private: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void initAfterRead() override; void onObjectChanged( const caf::SignalEmitter* emitter ); diff --git a/ApplicationLibCode/ProjectDataModel/RimTensorResults.cpp b/ApplicationLibCode/ProjectDataModel/RimTensorResults.cpp index 0b0f8d9024..ef6f40d773 100644 --- a/ApplicationLibCode/ProjectDataModel/RimTensorResults.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimTensorResults.cpp @@ -93,6 +93,7 @@ RimTensorResults::RimTensorResults() m_resultFieldNameUiField.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); m_resultFieldNameUiField.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); + m_resultFieldNameUiField.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::HEIGHT_HINT, 50 ); } //-------------------------------------------------------------------------------------------------- @@ -346,21 +347,6 @@ void RimTensorResults::initAfterRead() m_resultFieldNameUiField = uiFieldName( m_resultFieldName() ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimTensorResults::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_resultFieldNameUiField ) - { - auto attr = dynamic_cast( attribute ); - if ( attr ) - { - attr->heightHint = 50; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimTensorResults.h b/ApplicationLibCode/ProjectDataModel/RimTensorResults.h index 5c5e68e70a..3856d466e0 100644 --- a/ApplicationLibCode/ProjectDataModel/RimTensorResults.h +++ b/ApplicationLibCode/ProjectDataModel/RimTensorResults.h @@ -88,8 +88,7 @@ private: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void initAfterRead() override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; + void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; static QString fieldNameFromUi( const QString& uiFieldName ); diff --git a/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.cpp b/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.cpp index accca9330b..1fb93ae18d 100644 --- a/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.cpp @@ -285,13 +285,6 @@ void RimTernaryLegendConfig::setTitle( const QString& title ) m_legend->setTitle( cvfqt::Utils::toString( title ) ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimTernaryLegendConfig::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.h b/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.h index aebf204ee6..2c19764248 100644 --- a/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.h +++ b/ApplicationLibCode/ProjectDataModel/RimTernaryLegendConfig.h @@ -66,7 +66,6 @@ public: private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* objectToggleField() override; void updateLegend(); diff --git a/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.cpp b/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.cpp index e2f4a64eea..a4ef84eb32 100644 --- a/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.cpp @@ -73,6 +73,7 @@ RimTimeStepFilter::RimTimeStepFilter() CAF_PDM_InitField( &m_interval, "Interval", 1, "Interval" ); m_interval.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() ); + m_interval.uiCapability()->setAttribute( caf::PdmUiLineEditor::Keys::AVOID_SENDING_ENTER_EVENT, true ); CAF_PDM_InitField( &m_timeStepNamesFromFile, "TimeStepsFromFile", std::vector(), "TimeSteps From File" ); m_timeStepNamesFromFile.xmlCapability()->disableIO(); @@ -325,21 +326,6 @@ QList RimTimeStepFilter::calculateValueOptions( const ca return optionItems; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimTimeStepFilter::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_interval ) - { - caf::PdmUiLineEditorAttribute* attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->avoidSendingEnterEventToParentWidget = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.h b/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.h index 4869881c78..236573cedc 100644 --- a/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.h +++ b/ApplicationLibCode/ProjectDataModel/RimTimeStepFilter.h @@ -87,7 +87,6 @@ private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void onReloadCaseButtonClicked(); diff --git a/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.cpp b/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.cpp index 0bbc1a13ce..2c6f9b6a24 100644 --- a/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.cpp @@ -51,6 +51,7 @@ RimUserDefinedCalculation::RimUserDefinedCalculation() m_description.uiCapability()->setUiReadOnly( true ); CAF_PDM_InitField( &m_expression, "Expression", QString( "" ), "" ); + m_expression.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::HEIGHT_HINT, -1 ); m_expression.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_helpText, @@ -58,6 +59,7 @@ RimUserDefinedCalculation::RimUserDefinedCalculation() "Use the right-click menu inside the text area for quick access to operators and " "functions." ); m_helpText.uiCapability()->setUiEditorTypeName( caf::PdmUiLabelEditor::uiEditorTypeName() ); + m_helpText.uiCapability()->setAttribute( caf::PdmUiLabelEditor::Keys::USE_WORD_WRAP, true ); m_helpText.xmlCapability()->disableIO(); m_helpText = "Use the right-click menu inside the text area for quick access to operators and functions."; @@ -65,6 +67,7 @@ RimUserDefinedCalculation::RimUserDefinedCalculation() m_unit.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() ); CAF_PDM_InitFieldNoDefault( &m_variables, "Variables", "Variables" ); + m_variables.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ENABLE_DROP_TARGET, true ); CAF_PDM_InitField( &m_id, "Id", -1, "Id" ); m_id.uiCapability()->setUiHidden( true ); @@ -365,37 +368,6 @@ QString RimUserDefinedCalculation::buildCalculationName() const return name; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimUserDefinedCalculation::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_expression ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->heightHint = -1; - } - } - else if ( field == &m_variables ) - { - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->enableDropTarget = true; - } - } - else if ( field == &m_helpText ) - { - auto* attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->m_useWordWrap = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.h b/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.h index 35f7698172..c103aaec70 100644 --- a/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.h +++ b/ApplicationLibCode/ProjectDataModel/RimUserDefinedCalculation.h @@ -79,7 +79,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; RimUserDefinedCalculationVariable* findByName( const QString& name ) const; void deleteVariable( RimUserDefinedCalculationVariable* calcVariable ); diff --git a/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp b/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp index fd82104f51..9824d703c6 100644 --- a/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimViewWindow.cpp @@ -31,6 +31,7 @@ #include "RiuDockWidgetTools.h" #include "cafPdmUiTreeAttributes.h" +#include "cafPdmUiTreeViewEditor.h" #include "DockManager.h" #include "DockWidget.h" @@ -50,6 +51,9 @@ 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", "" ); @@ -415,20 +419,22 @@ void RimViewWindow::dockInWindow( int mainWindowID ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimViewWindow::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +std::vector RimViewWindow::treeItemTags() { - caf::PdmUiTreeViewItemAttribute* treeItemAttribute = dynamic_cast( attribute ); - if ( treeItemAttribute && RiaPreferencesSystem::current()->showViewIdInProjectTree() && id() >= 0 ) + std::vector tags; + + if ( RiaPreferencesSystem::current()->showViewIdInProjectTree() && id() >= 0 ) { - treeItemAttribute->tags.clear(); - auto tag = caf::PdmUiTreeViewItemAttribute::createTag(); - tag->text = QString( "%1" ).arg( id() ); + auto tag = caf::PdmUiTreeViewItemTag::create(); + tag.text = QString( "%1" ).arg( id() ); cvf::Color3f viewColor = RiaColorTables::contrastCategoryPaletteColors().cycledColor3f( (size_t)id() ); cvf::Color3f viewTextColor = RiaColorTools::contrastColor( viewColor ); - tag->bgColor = QColor( RiaColorTools::toQColor( viewColor ) ); - tag->fgColor = QColor( RiaColorTools::toQColor( viewTextColor ) ); - treeItemAttribute->tags.push_back( std::move( tag ) ); + tag.bgColor = QColor( RiaColorTools::toQColor( viewColor ) ); + tag.fgColor = QColor( RiaColorTools::toQColor( viewTextColor ) ); + tags.push_back( tag ); } + + return tags; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimViewWindow.h b/ApplicationLibCode/ProjectDataModel/RimViewWindow.h index 04b86b40b1..2c6c563c1a 100644 --- a/ApplicationLibCode/ProjectDataModel/RimViewWindow.h +++ b/ApplicationLibCode/ProjectDataModel/RimViewWindow.h @@ -19,6 +19,7 @@ #pragma once #include "RiaDefines.h" +#include "cafPdmUiTreeAttributes.h" #include "cafFontTools.h" #include "cafPdmChildField.h" @@ -106,7 +107,7 @@ protected: caf::PdmFieldHandle* objectToggleField() final; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + std::vector treeItemTags(); static QImage internalCaptureSnapshot( ads::CDockWidget* dockWidget, QWidget* widget, int width, int height ); diff --git a/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.cpp b/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.cpp index bb612cc9ce..fc245376b8 100644 --- a/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.cpp @@ -107,6 +107,9 @@ RimWellTargetMapping::RimWellTargetMapping() m_oilFloodingType.setValue( RigFloodingSettings::FloodingType::WATER_FLOODING ); CAF_PDM_InitField( &m_userDefinedFloodingOil, "UserDefinedFloodingOil", 0.0, "" ); m_userDefinedFloodingOil.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_userDefinedFloodingOil.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); CAF_PDM_InitField( &m_gasFloodingType, "GasFloodingType", RigFloodingSettings::FloodingType::GAS_FLOODING, "Residual Oil-in-Gas Given By" ); caf::AppEnum::setEnumSubset( &m_gasFloodingType, @@ -115,6 +118,9 @@ RimWellTargetMapping::RimWellTargetMapping() CAF_PDM_InitField( &m_userDefinedFloodingGas, "UserDefinedFloodingGas", 0.0, "" ); m_userDefinedFloodingGas.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); + m_userDefinedFloodingGas.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::SLIDER_TICK_COUNT, 20 ); CAF_PDM_InitField( &m_saturationOil, "SaturationOil", 0.0, "Saturation Oil" ); m_saturationOil.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); @@ -324,73 +330,6 @@ void RimWellTargetMapping::updateAllBoundaries() 0 ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellTargetMapping::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) - -{ - if ( field == &m_saturationOil && m_minimumSaturationOil != cvf::UNDEFINED_DOUBLE && m_maximumSaturationOil != cvf::UNDEFINED_DOUBLE ) - { - if ( auto doubleAttributes = dynamic_cast( attribute ) ) - { - doubleAttributes->m_minimum = m_minimumSaturationOil; - doubleAttributes->m_maximum = m_maximumSaturationOil; - doubleAttributes->m_decimals = 3; - } - } - - if ( field == &m_saturationGas && m_minimumSaturationGas != cvf::UNDEFINED_DOUBLE && m_maximumSaturationGas != cvf::UNDEFINED_DOUBLE ) - { - if ( auto doubleAttributes = dynamic_cast( attribute ) ) - { - doubleAttributes->m_minimum = m_minimumSaturationGas; - doubleAttributes->m_maximum = m_maximumSaturationGas; - doubleAttributes->m_decimals = 3; - } - } - - if ( field == &m_pressure && m_minimumPressure != cvf::UNDEFINED_DOUBLE && m_maximumPressure != cvf::UNDEFINED_DOUBLE ) - { - if ( auto doubleAttributes = dynamic_cast( attribute ) ) - { - doubleAttributes->m_minimum = m_minimumPressure; - doubleAttributes->m_maximum = m_maximumPressure; - doubleAttributes->m_decimals = 3; - } - } - - if ( field == &m_permeability && m_minimumPermeability != cvf::UNDEFINED_DOUBLE && m_maximumPermeability != cvf::UNDEFINED_DOUBLE ) - { - if ( auto doubleAttributes = dynamic_cast( attribute ) ) - { - doubleAttributes->m_minimum = m_minimumPermeability; - doubleAttributes->m_maximum = m_maximumPermeability; - doubleAttributes->m_decimals = 3; - } - } - - if ( field == &m_transmissibility && m_minimumTransmissibility != cvf::UNDEFINED_DOUBLE && m_maximumTransmissibility != cvf::UNDEFINED_DOUBLE ) - { - if ( auto doubleAttributes = dynamic_cast( attribute ) ) - { - doubleAttributes->m_minimum = m_minimumTransmissibility; - doubleAttributes->m_maximum = m_maximumTransmissibility; - doubleAttributes->m_decimals = 3; - } - } - - if ( ( &m_userDefinedFloodingOil == field ) || ( &m_userDefinedFloodingGas == field ) ) - { - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->m_minimum = 0.0; - myAttr->m_maximum = 1.0; - myAttr->m_sliderTickCount = 20; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -520,6 +459,20 @@ void RimWellTargetMapping::defineUiOrdering( QString uiConfigName, caf::PdmUiOrd uiOrdering.add( &m_dataFilter ); uiOrdering.add( &m_avoidFaults ); + auto setSliderRange = []( auto& field, double minimum, double maximum ) + { + if ( minimum == cvf::UNDEFINED_DOUBLE || maximum == cvf::UNDEFINED_DOUBLE ) + caf::PdmUiDoubleSliderEditor::clearRange( field.uiCapability() ); + else + caf::PdmUiDoubleSliderEditor::setRange( field.uiCapability(), minimum, maximum ); + field.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::DECIMALS, 3 ); + }; + setSliderRange( m_saturationOil, m_minimumSaturationOil, m_maximumSaturationOil ); + setSliderRange( m_saturationGas, m_minimumSaturationGas, m_maximumSaturationGas ); + setSliderRange( m_pressure, m_minimumPressure, m_maximumPressure ); + setSliderRange( m_permeability, m_minimumPermeability, m_maximumPermeability ); + setSliderRange( m_transmissibility, m_minimumTransmissibility, m_maximumTransmissibility ); + caf::PdmUiGroup* minimumCellValuesGroup = uiOrdering.addNewGroup( "Minimum Cell Values" ); if ( showOilOptions ) minimumCellValuesGroup->add( &m_saturationOil ); if ( showGasOptions ) minimumCellValuesGroup->add( &m_saturationGas ); diff --git a/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.h b/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.h index 191f986546..b2aa63e88a 100644 --- a/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.h +++ b/ApplicationLibCode/ProjectDataModel/RimWellTargetMapping.h @@ -55,7 +55,6 @@ public: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; void initAfterRead() override; diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.cpp b/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.cpp index 1cd0c6418b..57fb964219 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.cpp +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.cpp @@ -34,6 +34,7 @@ RimSEGYConvertOptions::RimSEGYConvertOptions() CAF_PDM_InitFieldNoDefault( &m_inputFilename, "InputFilename", "Input SEG-Y File" ); CAF_PDM_InitFieldNoDefault( &m_outputFilename, "OutputFilename", "Output VDS File" ); + m_outputFilename.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_SAVE_FILE_NAME, true ); CAF_PDM_InitField( &m_sampleStartOverride, "SampleStartOverride", std::make_pair( false, 0.0 ), "Depth (Z) Offset Override" ); CAF_PDM_InitField( &m_sampleUnit, "SampleUnit", QString( "m" ), "Depth (Z) Unit" ); @@ -72,21 +73,6 @@ void RimSEGYConvertOptions::defineUiOrdering( QString uiConfigName, caf::PdmUiOr uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSEGYConvertOptions::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_outputFilename ) - { - caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_selectSaveFileName = true; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.h b/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.h index 5f06120650..9ff2b4b2ab 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.h +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSEGYConvertOptions.h @@ -51,7 +51,6 @@ public: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: caf::PdmField m_inputFilename; diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.cpp b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.cpp index d942f8e906..5f1870cf3e 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.cpp +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.cpp @@ -43,7 +43,6 @@ #include #include -#include #include #include @@ -71,6 +70,10 @@ RimSeismicData::RimSeismicData() CAF_PDM_InitFieldNoDefault( &m_metadata, "Metadata", "Metadata" ); m_metadata.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_metadata.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_metadata.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + m_metadata.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 400 ); m_metadata.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_metadata.uiCapability()->setUiTreeChildrenHidden( true ); m_metadata.uiCapability()->setUiReadOnly( true ); @@ -303,31 +306,6 @@ void RimSeismicData::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin uiTreeOrdering.skipRemainingChildren(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSeismicData::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_metadata ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttribute->alwaysEnforceResizePolicy = true; - tvAttribute->minimumHeight = 400; - } - } - else if ( field == &m_userClipValue ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->validator = new QDoubleValidator( 0.00001, std::numeric_limits::infinity(), 6 ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.h b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.h index 8a7edfd09d..a2cfb93bc7 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.h +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicData.h @@ -78,7 +78,6 @@ protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.cpp b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.cpp index 08e242b912..ac99350b4a 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.cpp +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.cpp @@ -47,7 +47,6 @@ #include #include -#include #include #include @@ -266,21 +265,6 @@ void RimSeismicDifferenceData::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiT uiTreeOrdering.skipRemainingChildren(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSeismicDifferenceData::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_userClipValue ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->validator = new QDoubleValidator( 0.00001, std::numeric_limits::infinity(), 6 ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.h b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.h index b2986fb9f8..f4e14ad6c2 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.h +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicDifferenceData.h @@ -80,7 +80,6 @@ protected: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; std::shared_ptr difference( ZGYAccess::SeismicSliceData* data1, ZGYAccess::SeismicSliceData* data2 ); diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.cpp b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.cpp index c8ed41979a..6aff2f4b19 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.cpp @@ -84,10 +84,8 @@ RimSeismicSection::RimSeismicSection() CAF_PDM_InitFieldNoDefault( &m_wellPath, "WellPath", "Well Path" ); CAF_PDM_InitField( &m_enablePicking, "EnablePicking", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_enablePicking ); - - CAF_PDM_InitField( &m_showImage, "ShowImage", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_showImage ); + m_enablePicking.xmlCapability()->disableIO(); + m_enablePicking.uiCapability()->setUiHidden( true ); CAF_PDM_InitFieldNoDefault( &m_targets, "Targets", "Targets" ); m_targets.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); @@ -158,6 +156,37 @@ void RimSeismicSection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi { initSliceRanges(); + if ( ( m_seismicData != nullptr ) && m_seismicData->boundingBox()->isValid() ) + { + auto setSliderAttributes = [&]( caf::PdmFieldHandle& field, int minVal, int maxVal, int stepVal ) + { + field.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, minVal ); + field.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, maxVal ); + field.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::STEP, stepVal ); + }; + + for ( auto* field : { &m_inlineIndex, &m_xlineIndex, &m_depthIndex } ) + { + field->uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::SHOW_SPIN_BOX, true ); + } + + setSliderAttributes( m_inlineIndex, m_seismicData->inlineMin(), m_seismicData->inlineMax(), m_seismicData->inlineStep() ); + setSliderAttributes( m_xlineIndex, m_seismicData->xlineMin(), m_seismicData->xlineMax(), m_seismicData->xlineStep() ); + setSliderAttributes( m_depthIndex, + static_cast( m_seismicData->zMin() ), + static_cast( m_seismicData->zMax() ), + static_cast( m_seismicData->zStep() ) ); + + auto bb = m_seismicData->boundingBox(); + for ( auto* field : { &m_zUpperThreshold, &m_zLowerThreshold } ) + { + setSliderAttributes( *field, + static_cast( -1 * bb->max().z() ), + static_cast( -1 * bb->min().z() ), + static_cast( m_seismicData->zStep() ) ); + } + } + auto genGrp = uiOrdering.addNewGroup( "General" ); genGrp->add( &m_userDescription ); @@ -171,7 +200,13 @@ void RimSeismicSection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi { auto polyGrp = uiOrdering.addNewGroup( "Polyline Definition" ); polyGrp->add( &m_targets ); - polyGrp->add( &m_enablePicking ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FIT_CONTENT ) ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, (bool)m_enablePicking ); + m_targets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::BASE_COLOR, + m_enablePicking ? QColor( 255, 220, 255 ) : QColor() ); + polyGrp->addNewButton( m_enablePicking ? "Stop Picking Points" : "Start Picking Points", + [this]() { enablePicking( !m_enablePicking ); } ); } else if ( m_type() == RiaDefines::SeismicSectionType::SS_INLINE ) { @@ -235,7 +270,7 @@ void RimSeismicSection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi if ( ( m_type() != RiaDefines::SeismicSectionType::SS_POLYLINE ) && ( m_type() != RiaDefines::SeismicSectionType::SS_WELLPATH ) ) { - uiOrdering.add( &m_showImage ); + uiOrdering.addNewButton( "Show Image", [this]() { showImageDialog(); } ); } uiOrdering.skipRemainingFields(); @@ -249,94 +284,6 @@ void RimSeismicSection::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrde uiTreeOrdering.skipRemainingChildren(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSeismicSection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_enablePicking ) - { - auto* pbAttribute = dynamic_cast( attribute ); - if ( pbAttribute ) - { - if ( !m_enablePicking ) - { - pbAttribute->m_buttonText = "Start Picking Points"; - } - else - { - pbAttribute->m_buttonText = "Stop Picking Points"; - } - } - } - else if ( field == &m_showImage ) - { - auto* pbAttribute = dynamic_cast( attribute ); - if ( pbAttribute ) - { - pbAttribute->m_buttonText = "Show Image"; - } - } - else if ( field == &m_targets ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FIT_CONTENT; - - if ( m_enablePicking ) - { - tvAttribute->baseColor.setRgb( 255, 220, 255 ); - tvAttribute->alwaysEnforceResizePolicy = true; - } - } - } - else if ( ( field == &m_depthIndex ) || ( field == &m_inlineIndex ) || ( field == &m_xlineIndex ) ) - { - if ( ( m_seismicData != nullptr ) && m_seismicData->boundingBox()->isValid() ) - { - auto* sliderAttrib = dynamic_cast( attribute ); - if ( sliderAttrib != nullptr ) - { - sliderAttrib->m_showSpinBox = true; - int minVal = m_seismicData->inlineMin(); - int maxVal = m_seismicData->inlineMax(); - int stepVal = m_seismicData->inlineStep(); - - if ( field == &m_xlineIndex ) - { - minVal = m_seismicData->xlineMin(); - maxVal = m_seismicData->xlineMax(); - stepVal = m_seismicData->xlineStep(); - } - else if ( field == &m_depthIndex ) - { - minVal = m_seismicData->zMin(); - maxVal = m_seismicData->zMax(); - stepVal = m_seismicData->zStep(); - } - sliderAttrib->m_maximum = maxVal; - sliderAttrib->m_minimum = minVal; - sliderAttrib->m_step = stepVal; - } - } - } - else if ( ( field == &m_zUpperThreshold ) || ( field == &m_zLowerThreshold ) ) - { - auto* sliderAttrib = dynamic_cast( attribute ); - if ( ( sliderAttrib ) && ( m_seismicData != nullptr ) ) - { - auto bb = m_seismicData->boundingBox(); - if ( bb->isValid() ) - { - sliderAttrib->m_minimum = -1 * bb->max().z(); - sliderAttrib->m_maximum = -1 * bb->min().z(); - sliderAttrib->m_step = (int)m_seismicData->zStep(); - } - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -711,32 +658,30 @@ cvf::ref RimSeismicSection::texturedSection() return m_texturedSection; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSeismicSection::showImageDialog() +{ + if ( m_seismicData == nullptr ) return; + + QDialog w; + QLabel l; + QHBoxLayout layout; + layout.addWidget( &l ); + w.setLayout( &layout ); + QPixmap i = getImage(); + l.setPixmap( i ); + + w.exec(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimSeismicSection::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) { - if ( changedField == &m_enablePicking ) - { - updateConnectedEditors(); - } - else if ( changedField == &m_showImage ) - { - if ( m_seismicData == nullptr ) return; - - QDialog w; - QLabel l; - QHBoxLayout layout; - layout.addWidget( &l ); - w.setLayout( &layout ); - QPixmap i = getImage(); - l.setPixmap( i ); - - w.exec(); - - m_showImage = false; - } - else if ( changedField != &m_userDescription ) + if ( changedField != &m_userDescription ) { RigTexturedSection::WhatToUpdateEnum updateType = RigTexturedSection::WhatToUpdateEnum::UPDATE_NONE; diff --git a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.h b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.h index 026a87149c..d332c6ab66 100644 --- a/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.h +++ b/ApplicationLibCode/ProjectDataModel/Seismic/RimSeismicSection.h @@ -116,7 +116,6 @@ protected: private: void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void onLegendConfigChanged( const caf::SignalEmitter* emitter, RimLegendConfigChangeType changeType ); int alignZValue( int z ) const; @@ -126,6 +125,7 @@ private: void scheduleViewUpdate(); QPixmap getImage(); + void showImageDialog(); void updateTextureSectionFromPoints( std::vector points, double zmin, double zmax ); std::vector wellPathToSectionPoints( RigWellPath* wellpath, double zmin ); @@ -145,7 +145,6 @@ private: caf::PdmField m_lineThickness; caf::PdmField m_lineColor; caf::PdmField m_transparent; - caf::PdmField m_showImage; caf::PdmField m_inlineIndex; caf::PdmField m_xlineIndex; caf::PdmField m_depthIndex; diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.cpp b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.cpp index fd4191d89b..a32d7db049 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.cpp @@ -43,6 +43,8 @@ RimElasticProperties::RimElasticProperties() m_filePath.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() ); CAF_PDM_InitScriptableFieldNoDefault( &m_propertiesTable, "PropertiesTable", "Properties Table" ); + m_propertiesTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_propertiesTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); m_propertiesTable.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); m_propertiesTable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_propertiesTable.uiCapability()->setUiReadOnly( true ); @@ -135,22 +137,6 @@ void RimElasticProperties::defineUiOrdering( QString uiConfigName, caf::PdmUiOrd uiOrdering.add( &m_propertiesTable ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimElasticProperties::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_propertiesTable ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.h b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.h index 60bba787ab..143c62f91e 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.h +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimElasticProperties.h @@ -64,7 +64,6 @@ public: double getPropertyScaling( const QString& formationName, const QString& faciesName, RiaDefines::CurveProperty property ) const; protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.cpp b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.cpp index aa295e1b5d..e7f638494f 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.cpp +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.cpp @@ -47,6 +47,8 @@ RimFaciesProperties::RimFaciesProperties() m_filePath.uiCapability()->setUiEditorTypeName( caf::PdmUiLineEditor::uiEditorTypeName() ); CAF_PDM_InitScriptableFieldNoDefault( &m_propertiesTable, "PropertiesTable", "Properties Table" ); + m_propertiesTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + m_propertiesTable.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); m_propertiesTable.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); m_propertiesTable.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_propertiesTable.uiCapability()->setUiReadOnly( true ); @@ -131,22 +133,6 @@ void RimFaciesProperties::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde m_faciesDefinition->uiOrdering( uiConfigName, *faciesDefinitionGroup ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFaciesProperties::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_propertiesTable ) - { - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.h b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.h index e5afea91f1..16004bfe4e 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.h +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimFaciesProperties.h @@ -59,8 +59,7 @@ public: const RimEclipseResultDefinition* faciesDefinition() const; protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.cpp b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.cpp index 3c60e75562..313c25fc7c 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.cpp +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.cpp @@ -38,6 +38,10 @@ RimPressureTable::RimPressureTable() CAF_PDM_InitScriptableFieldNoDefault( &m_pressureTableItems, "Items", "Pressure Table Items" ); m_pressureTableItems.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_pressureTableItems.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_pressureTableItems.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + m_pressureTableItems.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 300 ); m_pressureTableItems.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_pressureTableItems.uiCapability()->setCustomContextMenuEnabled( true ); @@ -112,23 +116,6 @@ void RimPressureTable::defineCustomContextMenu( const caf::PdmFieldHandle* field menuBuilder.appendToMenu( menu ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimPressureTable::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_pressureTableItems ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttribute->alwaysEnforceResizePolicy = true; - tvAttribute->minimumHeight = 300; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.h b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.h index 4126569324..6ad244a0d1 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.h +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimPressureTable.h @@ -48,7 +48,6 @@ public: protected: void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.cpp b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.cpp index 377f8e618e..bc7c62d88e 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.cpp +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.cpp @@ -856,6 +856,11 @@ void RimStimPlanModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin pressureDataSourceGroup->add( &m_initialPressureEclipseCase ); uiOrdering.add( &m_MD ); + if ( wellPath() ) + { + m_MD.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, wellPath()->startMD() ); + m_MD.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, wellPath()->endMD() ); + } uiOrdering.add( &m_extractionType ); uiOrdering.add( &m_anchorPositionForUi ); uiOrdering.add( &m_thicknessDirection ); @@ -898,25 +903,6 @@ void RimStimPlanModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimStimPlanModel::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_MD ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( myAttr ) - { - if ( !wellPath() ) return; - - myAttr->m_minimum = wellPath()->startMD(); - myAttr->m_maximum = wellPath()->endMD(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.h b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.h index 485cc3f88e..8116847570 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.h +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModel.h @@ -199,8 +199,7 @@ public: protected: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void initAfterRead() override; + void initAfterRead() override; private: void updatePositionFromMeasuredDepth(); diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.cpp b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.cpp index 9dced84701..acf6a80fd7 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.cpp +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.cpp @@ -138,6 +138,10 @@ RimStimPlanModelTemplate::RimStimPlanModelTemplate() CAF_PDM_InitScriptableFieldNoDefault( &m_faciesInitialPressureConfigs, "FaciesInitialPressureConfigs", "Facies Initial Pressure Configs" ); m_faciesInitialPressureConfigs.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_faciesInitialPressureConfigs.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_faciesInitialPressureConfigs.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + m_faciesInitialPressureConfigs.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 300 ); m_faciesInitialPressureConfigs.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); m_faciesInitialPressureConfigs.uiCapability()->setUiTreeChildrenHidden( true ); @@ -303,23 +307,6 @@ void RimStimPlanModelTemplate::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiT uiTreeOrdering.skipRemainingChildren( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimStimPlanModelTemplate::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_faciesInitialPressureConfigs ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttribute->alwaysEnforceResizePolicy = true; - tvAttribute->minimumHeight = 300; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.h b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.h index 92f540e0c1..a81b0c5e2e 100644 --- a/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.h +++ b/ApplicationLibCode/ProjectDataModel/StimPlanModel/RimStimPlanModelTemplate.h @@ -128,7 +128,6 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void initAfterRead() override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; private: RimEclipseCase* getEclipseCase() const; diff --git a/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.cpp b/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.cpp index 950ea1dde4..96ef847890 100644 --- a/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.cpp @@ -133,6 +133,8 @@ RimStreamlineInViewCollection::RimStreamlineInViewCollection() CAF_PDM_InitFieldNoDefault( &m_animationSpeed, "AnimationSpeed", "Animation Speed" ); m_animationSpeed.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() ); + m_animationSpeed.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, 1 ); + m_animationSpeed.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, 100 ); m_animationSpeed = 10; CAF_PDM_InitFieldNoDefault( &m_animationIndex, "AnimationIndex", "Animation Index" ); @@ -142,10 +144,14 @@ RimStreamlineInViewCollection::RimStreamlineInViewCollection() CAF_PDM_InitFieldNoDefault( &m_scaleFactor, "ScaleFactor", "Scale Factor" ); m_scaleFactor.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_scaleFactor.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.1 ); + m_scaleFactor.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 10000.0 ); m_scaleFactor = 100.0; CAF_PDM_InitFieldNoDefault( &m_tracerLength, "TracerLength", "Tracer Length" ); m_tracerLength.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() ); + m_tracerLength.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, 1 ); + m_tracerLength.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, 1000 ); m_tracerLength = 100; CAF_PDM_InitFieldNoDefault( &m_streamlines, "Streamlines", "Streamlines" ); @@ -582,6 +588,8 @@ void RimStreamlineInViewCollection::defineUiOrdering( QString uiConfigName, caf: else if ( m_visualizationMode() == VisualizationMode::MANUAL ) { visualizationGroup->add( &m_animationIndex ); + m_animationIndex.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, 0 ); + m_animationIndex.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, static_cast( m_maxAnimationIndex ) ); } uiOrdering.skipRemainingFields(); @@ -596,51 +604,6 @@ void RimStreamlineInViewCollection::defineUiTreeOrdering( caf::PdmUiTreeOrdering uiTreeOrdering.skipRemainingChildren(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimStreamlineInViewCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_animationSpeed ) - { - caf::PdmUiSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 1; - myAttr->m_maximum = 100; - } - } - else if ( field == &m_animationIndex ) - { - caf::PdmUiSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = static_cast( m_maxAnimationIndex ); - } - } - else if ( field == &m_tracerLength ) - { - caf::PdmUiSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 1; - myAttr->m_maximum = static_cast( 1000 ); - } - } - else if ( field == &m_scaleFactor ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = 0.1; - myAttr->m_maximum = 10000.0; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.h b/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.h index 2bef4965aa..5a7bf99df2 100644 --- a/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Streamlines/RimStreamlineInViewCollection.h @@ -107,7 +107,6 @@ private: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void outputSummary() const; diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.cpp b/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.cpp index 88d8a55ef5..f86e1bd4f2 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.cpp +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.cpp @@ -151,46 +151,30 @@ void RimDepthSurface::fieldChangedByUi( const caf::PdmFieldHandle* changedField, surfColl->updateViews( { this } ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimDepthSurface::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - RimSurface::defineEditorAttribute( field, uiConfigName, attribute ); - - if ( field == &m_depth ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_minimum = m_depthLowerLimit; - attr->m_maximum = m_depthUpperLimit; - } - } - - if ( field == &m_minX || field == &m_maxX ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_minimum = m_areaOfInterestMin().x(); - attr->m_maximum = m_areaOfInterestMax().x(); - } - } - - if ( field == &m_minY || field == &m_maxY ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_minimum = m_areaOfInterestMin().y(); - attr->m_maximum = m_areaOfInterestMax().y(); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimDepthSurface::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { + RimSurface::defineUiOrdering( uiConfigName, uiOrdering ); + + using Slider = caf::PdmUiDoubleSliderEditor; + + m_depth.uiCapability()->setAttribute( Slider::Keys::MINIMUM, m_depthLowerLimit() ); + m_depth.uiCapability()->setAttribute( Slider::Keys::MAXIMUM, m_depthUpperLimit() ); + + for ( auto* field : { &m_minX, &m_maxX } ) + { + field->uiCapability()->setAttribute( Slider::Keys::MINIMUM, static_cast( m_areaOfInterestMin().x() ) ); + field->uiCapability()->setAttribute( Slider::Keys::MAXIMUM, static_cast( m_areaOfInterestMax().x() ) ); + } + + for ( auto* field : { &m_minY, &m_maxY } ) + { + field->uiCapability()->setAttribute( Slider::Keys::MINIMUM, static_cast( m_areaOfInterestMin().y() ) ); + field->uiCapability()->setAttribute( Slider::Keys::MAXIMUM, static_cast( m_areaOfInterestMax().y() ) ); + } + uiOrdering.add( &m_depth ); { diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.h b/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.h index e3ac532115..6c7561db40 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.h +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimDepthSurface.h @@ -46,7 +46,6 @@ private: QString fullName() const override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.cpp b/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.cpp index 1ae566a76e..2213f1a6ca 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.cpp +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.cpp @@ -120,18 +120,15 @@ QList RimGridCaseSurface::calculateValueOptions( const c //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimGridCaseSurface::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +void RimGridCaseSurface::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { - RimSurface::defineEditorAttribute( field, uiConfigName, attribute ); - - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr && m_case ) + if ( m_case ) { - const cvf::StructGridInterface* grid = RigReservoirGridTools::mainGrid( m_case ); - if ( !grid ) return; - - myAttr->m_minimum = 1; - myAttr->m_maximum = static_cast( grid->cellCountK() ); + if ( const cvf::StructGridInterface* grid = RigReservoirGridTools::mainGrid( m_case ) ) + { + m_oneBasedSliceIndex.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, 1 ); + m_oneBasedSliceIndex.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, static_cast( grid->cellCountK() ) ); + } } } diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.h b/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.h index 1268e81e3f..0bd40c33f7 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.h +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimGridCaseSurface.h @@ -51,7 +51,7 @@ public: protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; bool updateSurfaceData() override; void clearCachedNativeData() override; diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.cpp b/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.cpp index fbf993c575..a86080c6b4 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.cpp +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.cpp @@ -54,6 +54,8 @@ RimRegularSurface::RimRegularSurface() CAF_PDM_InitScriptableField( &m_originY, "OriginY", 0.0, "Origin Y" ); CAF_PDM_InitScriptableField( &m_depth, "Depth", 0.0, "Depth" ); m_depth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_depth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_depth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 10000.0 ); CAF_PDM_InitScriptableField( &m_nx, "Nx", 10, "Nx" ); CAF_PDM_InitScriptableField( &m_ny, "Ny", 10, "Ny" ); @@ -64,6 +66,8 @@ RimRegularSurface::RimRegularSurface() CAF_PDM_InitScriptableField( &m_depthProperty, "DepthProperty", internal::fixedDepth(), "Depth Property" ); m_rotation.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_rotation.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_rotation.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 360.0 ); } //-------------------------------------------------------------------------------------------------- @@ -104,37 +108,13 @@ void RimRegularSurface::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel surfColl->updateViews( { this } ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimRegularSurface::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - RimSurface::defineEditorAttribute( field, uiConfigName, attribute ); - - if ( field == &m_rotation ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_minimum = 0.0; - attr->m_maximum = 360.0; - } - } - - if ( field == &m_depth ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_minimum = 0.0; - attr->m_maximum = 10000.0; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimRegularSurface::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { + RimSurface::defineUiOrdering( uiConfigName, uiOrdering ); + auto locationGroup = uiOrdering.addNewGroup( "Location" ); locationGroup->add( &m_originX ); locationGroup->add( &m_originY ); diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.h b/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.h index 4b3cfa1b29..a26909f277 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.h +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimRegularSurface.h @@ -64,7 +64,6 @@ private: void clearCachedNativeData() override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.cpp b/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.cpp index 0ffc349d24..a41a0d2bbf 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.cpp +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.cpp @@ -65,6 +65,8 @@ RimSurface::RimSurface() CAF_PDM_InitField( &m_enableOpacity, "EnableOpacity", false, "Enable Opacity" ); CAF_PDM_InitField( &m_opacity, "Opacity", 0.6, "Opacity Value [0..1]" ); m_opacity.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); + m_opacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, 0.0 ); + m_opacity.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, 1.0 ); CAF_PDM_InitScriptableField( &m_depthOffset, "DepthOffset", 0.0, "Depth Offset" ); m_depthOffset.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() ); @@ -301,41 +303,25 @@ QString RimSurface::fullName() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimSurface::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) +void RimSurface::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { - auto doubleSliderAttrib = dynamic_cast( attribute ); - if ( doubleSliderAttrib ) + RiaApplication* app = RiaApplication::instance(); + std::vector cases = app->project()->allGridCases(); + + cvf::BoundingBox bb; + + for ( auto c : cases ) { - if ( field == &m_depthOffset ) - { - RiaApplication* app = RiaApplication::instance(); - std::vector cases = app->project()->allGridCases(); - - cvf::BoundingBox bb; - - for ( auto c : cases ) - { - bb.add( c->allCellsBoundingBox() ); - } - - double extentFromCase = std::fabs( bb.extent().z() ) * 2.0; - extentFromCase = std::floor( extentFromCase / 1000.0 ) * 1000.0; - - double minimumExtent = std::max( 1000.0, extentFromCase ); - - doubleSliderAttrib->m_minimum = -minimumExtent; - doubleSliderAttrib->m_maximum = minimumExtent; - } + bb.add( c->allCellsBoundingBox() ); } - if ( field == &m_opacity ) - { - if ( auto attr = dynamic_cast( attribute ) ) - { - attr->m_minimum = 0.0; - attr->m_maximum = 1.0; - } - } + double extentFromCase = std::fabs( bb.extent().z() ) * 2.0; + extentFromCase = std::floor( extentFromCase / 1000.0 ) * 1000.0; + + double minimumExtent = std::max( 1000.0, extentFromCase ); + + m_depthOffset.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, -minimumExtent ); + m_depthOffset.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, minimumExtent ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.h b/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.h index 2809087159..e15f0a6578 100644 --- a/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.h +++ b/ApplicationLibCode/ProjectDataModel/Surfaces/RimSurface.h @@ -91,7 +91,7 @@ protected: void setDepthOffset( double depthoffset ); void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; + void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; static void applyDepthOffset( const cvf::Vec3d& offset, std::vector* vertices ); diff --git a/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.cpp b/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.cpp index 1cf3d1ef21..45bc5ffb39 100644 --- a/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.cpp +++ b/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.cpp @@ -33,18 +33,8 @@ void RimCsvPreviewTools::initPreviewField( caf::PdmField& field ) field.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); field.uiCapability()->setUiReadOnly( true ); field.xmlCapability()->disableIO(); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCsvPreviewTools::setPreviewEditorAttribute( caf::PdmUiEditorAttribute* attribute ) -{ - if ( auto myAttr = dynamic_cast( attribute ) ) - { - myAttr->wrapMode = caf::PdmUiTextEditorAttribute::NoWrap; - myAttr->textMode = caf::PdmUiTextEditorAttribute::HTML; - } + field.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::WRAP_MODE, static_cast( caf::PdmUiTextEditor::NoWrap ) ); + field.uiCapability()->setAttribute( caf::PdmUiTextEditor::Keys::TEXT_MODE, static_cast( caf::PdmUiTextEditor::HTML ) ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.h b/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.h index 1699a72944..974b2a005e 100644 --- a/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.h +++ b/ApplicationLibCode/ProjectDataModel/Tools/RimCsvPreviewTools.h @@ -37,9 +37,6 @@ const int defaultMaxRowCount = 1000; // Configures the field as a read-only, non-persistent HTML text editor without label void initPreviewField( caf::PdmField& field ); -// Call from defineEditorAttribute() for the preview field -void setPreviewEditorAttribute( caf::PdmUiEditorAttribute* attribute ); - // Returns the HTML table, or the error message if the content could not be parsed QString htmlTableFromText( const QString& csvText, int maxRowCount = defaultMaxRowCount ); QString htmlTableFromFile( const QString& filePath, int maxRowCount = defaultMaxRowCount ); diff --git a/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.cpp b/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.cpp index 92722a180f..bd53f6246d 100644 --- a/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.cpp @@ -77,9 +77,11 @@ RimCustomVfpPlot::RimCustomVfpPlot() m_plotTitle.uiCapability()->setUiHidden( true ); CAF_PDM_InitFieldNoDefault( &m_mainDataSource, "MainDataSouce", "Main VFP Data Source" ); + RiuTools::enableUpDownArrowsForComboBox( &m_mainDataSource ); CAF_PDM_InitFieldNoDefault( &m_comparisonTables, "ComparisonTables", "Comparison Tables" ); m_comparisonTables.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); + m_comparisonTables.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); CAF_PDM_InitFieldNoDefault( &m_curveValueOptions, "CurveValueOptions", "Curve Value Options" ); CAF_PDM_InitFieldNoDefault( &m_curveMatchingType, "CurveMatchingType", "Curve Matching Type" ); @@ -115,18 +117,23 @@ RimCustomVfpPlot::RimCustomVfpPlot() CAF_PDM_InitFieldNoDefault( &m_flowRate, "LiquidFlowRate", "Flow Rate" ); m_flowRate.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); + m_flowRate.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); CAF_PDM_InitFieldNoDefault( &m_thp, "THP", "THP" ); m_thp.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); + m_thp.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); CAF_PDM_InitFieldNoDefault( &m_artificialLiftQuantity, "ArtificialLiftQuantity", "Artificial Lift Quantity" ); m_artificialLiftQuantity.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); + m_artificialLiftQuantity.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); CAF_PDM_InitFieldNoDefault( &m_waterCut, "WaterCut", "Water Cut" ); m_waterCut.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); + m_waterCut.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); CAF_PDM_InitFieldNoDefault( &m_gasLiquidRatio, "GasLiquidRatio", "Gas Liquid Ratio" ); m_gasLiquidRatio.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() ); + m_gasLiquidRatio.uiCapability()->setAttribute( caf::PdmUiTreeSelectionEditor::Keys::SHOW_TEXT_FILTER, false ); CAF_PDM_InitFieldNoDefault( &m_xAxisProperties, "xAxisProperties", "X Axis" ); m_xAxisProperties = new RimPlotAxisProperties; @@ -1312,22 +1319,6 @@ QList RimCustomVfpPlot::calculateValueOptions( const caf return options; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimCustomVfpPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->showTextFilter = false; - } - - if ( field == &m_mainDataSource ) - { - RiuTools::enableUpDownArrowsForComboBox( attribute ); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.h b/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.h index 4a5a95ba0f..e0af063fa8 100644 --- a/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.h +++ b/ApplicationLibCode/ProjectDataModel/VerticalFlowPerformance/RimCustomVfpPlot.h @@ -105,7 +105,6 @@ private: void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; std::vector valuesForProductionType( RimVfpDefines::ProductionVariableType variableType ) const; std::vector familyValuesForTable( RimVfpTable* table ) const; diff --git a/ApplicationLibCode/ProjectDataModel/WellEvents/RimKeywordEvent.cpp b/ApplicationLibCode/ProjectDataModel/WellEvents/RimKeywordEvent.cpp index 84a683aa27..2364332726 100644 --- a/ApplicationLibCode/ProjectDataModel/WellEvents/RimKeywordEvent.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellEvents/RimKeywordEvent.cpp @@ -44,7 +44,7 @@ RimKeywordEvent::RimKeywordEvent() m_items.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); m_items.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); m_items.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, - static_cast( caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER ) ); + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); m_items.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); m_items.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 200 ); diff --git a/ApplicationLibCode/ProjectDataModel/WellEvents/RimWellEventKeyword.cpp b/ApplicationLibCode/ProjectDataModel/WellEvents/RimWellEventKeyword.cpp index 556609cd29..5fe510557e 100644 --- a/ApplicationLibCode/ProjectDataModel/WellEvents/RimWellEventKeyword.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellEvents/RimWellEventKeyword.cpp @@ -44,7 +44,7 @@ RimWellEventKeyword::RimWellEventKeyword() m_items.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); m_items.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); m_items.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, - static_cast( caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER ) ); + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); m_items.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); m_items.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 200 ); diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.cpp index 5d853dce10..050538fbfc 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.cpp @@ -48,6 +48,7 @@ RimWellLog::RimWellLog() CAF_PDM_InitScriptableObject( "Well File Info", ":/LasFile16x16.png" ); CAF_PDM_InitFieldNoDefault( &m_date, "Date", "Date" ); + m_date.uiCapability()->setAttribute( caf::PdmUiDateEditor::Keys::DATE_FORMAT, RiaQDateTimeTools::dateFormatString() ); CAF_PDM_InitFieldNoDefault( &m_wellLogChannels, "WellLogChannels", "" ); m_wellLogChannels.registerKeywordAlias( "WellLogFileChannels" ); @@ -99,14 +100,3 @@ void RimWellLog::updateChannelsFromWellLogData( RigWellLogData* wellLogData ) m_wellLogChannels.push_back( wellLog ); } } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellLog::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( caf::PdmUiDateEditorAttribute* attrib = dynamic_cast( attribute ) ) - { - attrib->dateFormat = RiaQDateTimeTools::dateFormatString(); - } -} diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.h b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.h index cbec527922..c54e27dd63 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.h +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLog.h @@ -55,7 +55,6 @@ public: const static QDateTime DEFAULT_DATE_TIME; protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void updateChannelsFromWellLogData( RigWellLogData* wellLogData ); diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.cpp index 0774b00cb1..73cb1c9878 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.cpp @@ -111,6 +111,22 @@ RimWellLogCurveCommonDataSource::RimWellLogCurveCommonDataSource() m_wbsSmoothing.v() = caf::Tristate::State::PartiallyTrue; CAF_PDM_InitField( &m_wbsSmoothingThreshold, "WBSSmoothingThreshold", -1.0, "Smoothing Threshold" ); + m_wbsSmoothingThreshold.uiCapability() + ->setAttribute>( caf::PdmUiLineEditor::Keys::DISPLAY_STRING, + [this]() -> QString + { + if ( wbsSmoothingThreshold() != -1.0 ) return {}; + + QString displayString = "Mixed"; + if ( m_uniqueWbsSmoothingThreshold.size() > 1u ) + { + auto minmax_it = std::minmax_element( m_uniqueWbsSmoothingThreshold.begin(), + m_uniqueWbsSmoothingThreshold.end() ); + displayString += + QString( " [%1, %2]" ).arg( *( minmax_it.first ) ).arg( *( minmax_it.second ) ); + } + return displayString; + } ); CAF_PDM_InitField( &m_maximumCurvePointInterval, "MaximumCurvePointInterval", std::make_pair( true, 10.0 ), "Maximum Curve Point Interval" ); @@ -119,6 +135,31 @@ RimWellLogCurveCommonDataSource::RimWellLogCurveCommonDataSource() CAF_PDM_InitFieldNoDefault( &m_rftSegmentBranchIndex, "SegmentBranchIndex", "RFT Branch" ); CAF_PDM_InitFieldNoDefault( &m_rftSegmentBranchType, "SegmentBranchType", "RFT Completion" ); + for ( caf::PdmFieldHandle* field : std::vector{ &m_case, + &m_summaryCase, + &m_simWellName, + &m_wellPath, + &m_timeStep, + &m_rftTimeStep, + &m_rftSegmentBranchIndex, + &m_rftWellName } ) + { + RiuTools::enableUpDownArrowsForComboBox( field ); + } + + auto setNextPreviousButtonTexts = []( caf::PdmFieldHandle* field, const QString& modifierText ) + { + field->uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::NEXT_BUTTON_TEXT, "Next " + modifierText + "PgDown)" ); + field->uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::PREV_BUTTON_TEXT, "Previous " + modifierText + "PgUp)" ); + }; + + setNextPreviousButtonTexts( &m_case, "(Shift+" ); + m_case.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::MINIMUM_CONTENTS_LENGTH, 14 ); + setNextPreviousButtonTexts( &m_wellPath, "(Ctrl+" ); + setNextPreviousButtonTexts( &m_simWellName, "(Ctrl+" ); + setNextPreviousButtonTexts( &m_timeStep, "(" ); + m_timeStep.uiCapability()->setAttribute( caf::PdmUiComboBoxEditor::Keys::MINIMUM_CONTENTS_LENGTH, 12 ); + m_case = nullptr; m_wellPath = nullptr; } @@ -1078,60 +1119,6 @@ void RimWellLogCurveCommonDataSource::defineUiOrdering( QString uiConfigName, ca uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellLogCurveCommonDataSource::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - auto* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - if ( field == &m_case || field == &m_summaryCase || field == &m_simWellName || field == &m_wellPath || field == &m_timeStep || - field == &m_rftTimeStep || field == &m_rftSegmentBranchIndex || field == &m_rftWellName ) - { - RiuTools::enableUpDownArrowsForComboBox( attribute ); - } - - QString modifierText; - - if ( field == &m_case ) - { - modifierText = ( "(Shift+" ); - myAttr->minimumContentsLength = 14; - } - else if ( field == &m_wellPath || field == &m_simWellName ) - { - modifierText = ( "(Ctrl+" ); - } - else if ( field == &m_timeStep ) - { - modifierText = ( "(" ); - myAttr->minimumContentsLength = 12; - } - - if ( !modifierText.isEmpty() ) - { - myAttr->nextButtonText = "Next " + modifierText + "PgDown)"; - myAttr->prevButtonText = "Previous " + modifierText + "PgUp)"; - } - } - auto* uiDisplayStringAttr = dynamic_cast( attribute ); - if ( uiDisplayStringAttr && ( wbsSmoothingThreshold() == -1.0 ) && ( field == &m_wbsSmoothingThreshold ) ) - { - QString displayString = "Mixed"; - - if ( m_uniqueWbsSmoothingThreshold.size() > 1u ) - { - auto minmax_it = std::minmax_element( m_uniqueWbsSmoothingThreshold.begin(), m_uniqueWbsSmoothingThreshold.end() ); - displayString += QString( " [%1, %2]" ).arg( *( minmax_it.first ) ).arg( *( minmax_it.second ) ); - } - - uiDisplayStringAttr->m_displayString = displayString; - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.h b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.h index d5bc0d0191..9c36820c6b 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.h +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogCurveCommonDataSource.h @@ -108,9 +108,8 @@ private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void modifyCurrentIndex( caf::PdmValueField* field, int indexOffset ); - void resetSourceStepFields(); + void modifyCurrentIndex( caf::PdmValueField* field, int indexOffset ); + void resetSourceStepFields(); RifReaderRftInterface* rftReader(); diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.cpp index 49484ff26d..51627b1d66 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.cpp @@ -66,11 +66,3 @@ void RimWellLogFile::fieldChangedByUi( const caf::PdmFieldHandle* changedField, { RimWellLog::fieldChangedByUi( changedField, oldValue, newValue ); } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellLogFile::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - RimWellLog::defineEditorAttribute( field, uiConfigName, attribute ); -} diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.h b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.h index 7cb19f1a06..dafcd51f7e 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.h +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogFile.h @@ -44,7 +44,6 @@ public: virtual bool readFile( QString* errorMessage ) = 0; protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; caf::PdmField m_fileName; diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.cpp index 861ba9b725..81a7910592 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.cpp @@ -42,6 +42,8 @@ RimWellLogRegionAnnotationSettings::RimWellLogRegionAnnotationSettings() CAF_PDM_InitField( &m_colorShadingTransparency, "ColorShadingTransparency", 85, "Color Transparency" ); m_colorShadingTransparency.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() ); + m_colorShadingTransparency.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MINIMUM, 0 ); + m_colorShadingTransparency.uiCapability()->setAttribute( caf::PdmUiSliderEditor::Keys::MAXIMUM, 100 ); CAF_PDM_InitField( &m_showRegionLabels, "ShowFormationLabels", true, "Show Labels" ); @@ -203,24 +205,6 @@ void RimWellLogRegionAnnotationSettings::fieldChangedByUi( const caf::PdmFieldHa } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellLogRegionAnnotationSettings::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_colorShadingTransparency ) - { - auto sliderAttrib = dynamic_cast( attribute ); - if ( sliderAttrib ) - { - sliderAttrib->m_minimum = 0; - sliderAttrib->m_maximum = 100; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.h b/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.h index 41264226e6..8beb998b9b 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.h +++ b/ApplicationLibCode/ProjectDataModel/WellLog/WellLogTrack/RimWellLogRegionAnnotationSettings.h @@ -72,7 +72,6 @@ public: protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; private: diff --git a/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.cpp b/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.cpp index 9ba67e7541..3550b29a7c 100644 --- a/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.cpp @@ -121,6 +121,14 @@ void RimWellMeasurementInView::defineUiOrdering( QString uiConfigName, caf::PdmU caf::PdmUiGroup& filterGroup = *( uiOrdering.addNewGroup( "Value Filter Settings" ) ); filterGroup.add( &m_lowerBound ); filterGroup.add( &m_upperBound ); + + for ( auto* field : { &m_lowerBound, &m_upperBound } ) + { + if ( m_minimumResultValue != cvf::UNDEFINED_DOUBLE && m_maximumResultValue != cvf::UNDEFINED_DOUBLE ) + caf::PdmUiDoubleSliderEditor::setRange( field->uiCapability(), m_minimumResultValue, m_maximumResultValue ); + else + caf::PdmUiDoubleSliderEditor::clearRange( field->uiCapability() ); + } } uiOrdering.add( &m_wells ); @@ -130,27 +138,6 @@ void RimWellMeasurementInView::defineUiOrdering( QString uiConfigName, caf::PdmU uiOrdering.skipRemainingFields(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellMeasurementInView::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( m_minimumResultValue == cvf::UNDEFINED_DOUBLE || m_maximumResultValue == cvf::UNDEFINED_DOUBLE ) - { - return; - } - - if ( field == &m_lowerBound || field == &m_upperBound ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->m_minimum = m_minimumResultValue; - myAttr->m_maximum = m_maximumResultValue; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.h b/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.h index e0fd780cdc..e4c4ecc496 100644 --- a/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.h +++ b/ApplicationLibCode/ProjectDataModel/WellMeasurement/RimWellMeasurementInView.h @@ -59,7 +59,6 @@ public: protected: void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp index bb0a05a8dc..35549bc621 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp @@ -91,6 +91,7 @@ RimWellIASettings::RimWellIASettings() CAF_PDM_InitField( &m_showBox, "showBox", false, "Show model box" ); CAF_PDM_InitFieldNoDefault( &m_geostaticDate, "startDate", "Start Date (geostatic):" ); + m_geostaticDate.uiCapability()->setAttribute( caf::PdmUiDateEditor::Keys::DATE_FORMAT, "dd MMM yyyy" ); CAF_PDM_InitField( &m_boxValid, "boxValid", false, "Model box is valid" ); m_boxValid.uiCapability()->setUiHidden( true ); @@ -172,6 +173,11 @@ void RimWellIASettings::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi auto wellPath = firstAncestorOrThisOfType(); if ( wellPath ) { + m_startMD.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, wellPath->uniqueStartMD() ); + m_startMD.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, wellPath->uniqueEndMD() ); + m_endMD.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, wellPath->uniqueStartMD() ); + m_endMD.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, wellPath->uniqueEndMD() ); + if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_METRIC ) { m_startMD.uiCapability()->setUiName( "Start MD [m]" ); @@ -201,34 +207,6 @@ void RimWellIASettings::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi uiOrdering.skipRemainingFields( true ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellIASettings::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_startMD || field == &m_endMD ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( myAttr ) - { - auto wellPath = firstAncestorOrThisOfType(); - if ( !wellPath ) return; - - myAttr->m_minimum = wellPath->uniqueStartMD(); - myAttr->m_maximum = wellPath->uniqueEndMD(); - } - } - else if ( field == &m_geostaticDate ) - { - caf::PdmUiDateEditorAttribute* myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - myAttr->dateFormat = "dd MMM yyyy"; - } - } -} - //-------------------------------------------------------------------------------------------------- /// Return the name to show in the tree selector //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h index c641290567..24cc0a7a32 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h @@ -95,7 +95,6 @@ protected: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* userDescriptionField() override; diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.cpp index 790de6a4c9..2d5dad971d 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.cpp @@ -103,6 +103,12 @@ RimWellPath::RimWellPath() { CAF_PDM_InitScriptableObjectWithNameAndComment( "WellPath", ":/Well.svg", "", "", "WellPath", "A ResInsight Well Path" ); + // The nodes for well paths are created by the well path collection object. When a well path object is asked to + // be updated in the project tree, always rebuild the tree from the well path collection object. + uiCapability()->setAttribute>( caf::PdmUiTreeViewEditor::Keys::OBJECT_FOR_UPDATE_OF_UI_TREE, + []() -> caf::PdmObjectHandle* + { return RimWellPathCollection::instance(); } ); + CAF_PDM_InitScriptableFieldNoDefault( &m_name, "Name", "Name" ); m_name.registerKeywordAlias( "WellPathName" ); @@ -880,21 +886,6 @@ void RimWellPath::copyCompletionSettings( RimWellPath* from, RimWellPath* to ) } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPath::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - auto myAttr = dynamic_cast( attribute ); - if ( myAttr ) - { - // The nodes for well paths are created by the well path collection object. When a well path object is asked to - // be updated in the project tree, always rebuild the tree from the well path collection object. - - myAttr->objectForUpdateOfUiTree = RimWellPathCollection::instance(); - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.h index 18203968de..1ce7b687f6 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPath.h @@ -193,7 +193,6 @@ protected: void initAfterRead() override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; static void copyCompletionSettings( RimWellPath* from, RimWellPath* to ); diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.cpp index 3ca7d5e324..e0bff451cf 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.cpp @@ -36,6 +36,10 @@ RimWellPathAttributeCollection::RimWellPathAttributeCollection() CAF_PDM_InitFieldNoDefault( &m_attributes, "Attributes", "Casing Design Attributes" ); m_attributes.uiCapability()->setUiEditorTypeName( caf::PdmUiTableViewEditor::uiEditorTypeName() ); + m_attributes.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FILL_CONTAINER ) ); + m_attributes.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, true ); + m_attributes.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::MINIMUM_HEIGHT, 300 ); m_attributes.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::TOP ); m_attributes.uiCapability()->setCustomContextMenuEnabled( true ); setName( "Casing Design" ); @@ -123,25 +127,6 @@ void RimWellPathAttributeCollection::defineCustomContextMenu( const caf::PdmFiel menuBuilder.appendToMenu( menu ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathAttributeCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, - QString uiConfigName, - caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_attributes ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FILL_CONTAINER; - tvAttribute->alwaysEnforceResizePolicy = true; - tvAttribute->minimumHeight = 300; - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.h index 17555bde65..8cbe657a24 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathAttributeCollection.h @@ -41,7 +41,6 @@ public: protected: void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.cpp index d58ac8a538..75e7fbbb9c 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.cpp @@ -70,6 +70,9 @@ RimWellPathGeometryDef::RimWellPathGeometryDef() "ReferencePoint", cvf::Vec3d( 0, 0, 0 ), "UTM Reference Point" ); + m_referencePointUtmXyd.uiCapability() + ->setAttribute>( caf::PdmUiLineEditor::Keys::DISPLAY_STRING, + [this]() { return RimWellPathTarget::formatCoordinate( m_referencePointUtmXyd() ); } ); CAF_PDM_InitScriptableField( &m_airGap, "AirGap", 0.0, "Air Gap" ); m_airGap.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); @@ -106,7 +109,8 @@ RimWellPathGeometryDef::RimWellPathGeometryDef() CAF_PDM_InitFieldNoDefault( &m_fixedMeasuredDepths, "FixedMeasuredDepths", "" ); CAF_PDM_InitField( &m_pickPointsEnabled, "m_pickPointsEnabled", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pickPointsEnabled ); + m_pickPointsEnabled.xmlCapability()->disableIO(); + m_pickPointsEnabled.uiCapability()->setUiHidden( true ); CAF_PDM_InitScriptableField( &m_showSpheres, "ShowSpheres", true, "Spheres" ); CAF_PDM_InitField( &m_sphereColor, "SphereColor", cvf::Color3f( cvf::Color3f::CEETRON ), "Sphere Color" ); @@ -505,11 +509,7 @@ QList RimWellPathGeometryDef::calculateValueOptions( con //-------------------------------------------------------------------------------------------------- void RimWellPathGeometryDef::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) { - if ( changedField == &m_pickPointsEnabled ) - { - updateConnectedEditors(); - } - else if ( changedField == &m_referencePointUtmXyd ) + if ( changedField == &m_referencePointUtmXyd ) { if ( isReferencePointUpdatesLinked() ) { @@ -599,7 +599,14 @@ void RimWellPathGeometryDef::defineUiOrdering( QString uiConfigName, caf::PdmUiO uiOrdering.add( &m_showAbsolutePosForWellTargets ); uiOrdering.add( &m_wellTargets ); - uiOrdering.add( &m_pickPointsEnabled ); + m_wellTargets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::RESIZE_POLICY, + static_cast( caf::PdmUiTableViewEditor::RESIZE_TO_FIT_CONTENT ) ); + m_wellTargets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::ALWAYS_ENFORCE_RESIZE_POLICY, (bool)m_pickPointsEnabled ); + m_wellTargets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::BASE_COLOR, + m_pickPointsEnabled ? QColor( 255, 220, 255 ) : QColor() ); + m_wellTargets.uiCapability()->setAttribute( caf::PdmUiTableViewEditor::Keys::HEIGHT_HINT, 1000 ); + uiOrdering.addNewButton( m_pickPointsEnabled ? "Stop Picking Targets" : "Start Picking Targets", + [this]() { enableTargetPointPicking( !m_pickPointsEnabled ); } ); m_mdAtFirstTarget.uiCapability()->setUiReadOnly( m_useAutoGeneratedTargetAtSeaLevel() ); @@ -747,56 +754,6 @@ void RimWellPathGeometryDef::defineCustomContextMenu( const caf::PdmFieldHandle* menuBuilder.appendToMenu( menu ); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathGeometryDef::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_pickPointsEnabled ) - { - caf::PdmUiPushButtonEditorAttribute* pbAttribute = dynamic_cast( attribute ); - if ( pbAttribute ) - { - if ( !m_pickPointsEnabled ) - { - pbAttribute->m_buttonText = "Start Picking Targets"; - } - else - { - pbAttribute->m_buttonText = "Stop Picking Targets"; - } - } - } - - if ( field == &m_wellTargets ) - { - auto tvAttribute = dynamic_cast( attribute ); - if ( tvAttribute ) - { - tvAttribute->resizePolicy = caf::PdmUiTableViewEditorAttribute::RESIZE_TO_FIT_CONTENT; - tvAttribute->heightHint = 1000; - - if ( m_pickPointsEnabled ) - { - tvAttribute->baseColor.setRgb( 255, 220, 255 ); - tvAttribute->alwaysEnforceResizePolicy = true; - } - } - } - - if ( field == &m_referencePointUtmXyd ) - { - auto uiDisplayStringAttr = dynamic_cast( attribute ); - - if ( uiDisplayStringAttr ) - { - uiDisplayStringAttr->m_displayString = QString::number( m_referencePointUtmXyd()[0], 'f', 2 ) + " " + - QString::number( m_referencePointUtmXyd()[1], 'f', 2 ) + " " + - QString::number( m_referencePointUtmXyd()[2], 'f', 2 ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.h index c6036bd90e..b87efd83fc 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathGeometryDef.h @@ -98,8 +98,6 @@ protected: void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; caf::PdmFieldHandle* objectToggleField() override; diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.cpp index f857bd6739..495be4622c 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.cpp @@ -59,9 +59,14 @@ RimWellPathTarget::RimWellPathTarget() CAF_PDM_InitField( &m_isEnabled, "IsEnabled", true, "" ); CAF_PDM_InitScriptableFieldNoDefault( &m_targetPointXYD, "TargetPoint", "Relative Coord" ); + m_targetPointXYD.uiCapability()->setAttribute>( caf::PdmUiLineEditor::Keys::DISPLAY_STRING, + [this]() { return formatCoordinate( m_targetPointXYD() ); } ); CAF_PDM_InitFieldNoDefault( &m_targetPointForDisplay, "TargetPointForDisplay", "UTM Coord" ); m_targetPointForDisplay.registerGetMethod( this, &RimWellPathTarget::targetPointForDisplayXYD ); m_targetPointForDisplay.registerSetMethod( this, &RimWellPathTarget::setTargetPointFromDisplayCoord ); + m_targetPointForDisplay.uiCapability()->setAttribute>( caf::PdmUiLineEditor::Keys::DISPLAY_STRING, + [this]() + { return formatCoordinate( m_targetPointForDisplay() ); } ); CAF_PDM_InitScriptableFieldNoDefault( &m_targetMeasuredDepth, "TargetMeasuredDepth", "MD" ); m_targetMeasuredDepth.registerGetMethod( this, &RimWellPathTarget::measuredDepth ); @@ -100,6 +105,14 @@ RimWellPathTarget::~RimWellPathTarget() { } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RimWellPathTarget::formatCoordinate( const cvf::Vec3d& v ) +{ + return QString::number( v[0], 'f', 2 ) + " " + QString::number( v[1], 'f', 2 ) + " " + QString::number( v[2], 'f', 2 ); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -416,35 +429,6 @@ void RimWellPathTarget::initAfterRead() } } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathTarget::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_targetPointXYD ) - { - auto uiDisplayStringAttr = dynamic_cast( attribute ); - - if ( uiDisplayStringAttr ) - { - uiDisplayStringAttr->m_displayString = QString::number( m_targetPointXYD()[0], 'f', 2 ) + " " + - QString::number( m_targetPointXYD()[1], 'f', 2 ) + " " + - QString::number( m_targetPointXYD()[2], 'f', 2 ); - } - } - else if ( field == &m_targetPointForDisplay ) - { - auto uiDisplayStringAttr = dynamic_cast( attribute ); - - if ( uiDisplayStringAttr ) - { - uiDisplayStringAttr->m_displayString = QString::number( m_targetPointForDisplay()[0], 'f', 2 ) + " " + - QString::number( m_targetPointForDisplay()[1], 'f', 2 ) + " " + - QString::number( m_targetPointForDisplay()[2], 'f', 2 ); - } - } -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.h index 9cd75d5650..ad50c904d0 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTarget.h @@ -39,6 +39,8 @@ public: RimWellPathTarget(); ~RimWellPathTarget() override; + static QString formatCoordinate( const cvf::Vec3d& v ); + void setEnabled( bool enable ); bool isEnabled() const; @@ -76,7 +78,6 @@ public: private: void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; void initAfterRead() override; cvf::Vec3d targetPointForDisplayXYD() const; diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.cpp index d8771fbb24..bfc391220e 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.cpp @@ -235,6 +235,18 @@ void RimWellPathTieIn::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin if ( m_parentWell() != nullptr ) { tieInGroup->add( &m_tieInMeasuredDepth ); + + if ( parentWell() ) + { + auto wellPathGeo = parentWell()->wellPathGeometry(); + if ( wellPathGeo && wellPathGeo->measuredDepths().size() > 0 ) + { + m_tieInMeasuredDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MINIMUM, + wellPathGeo->measuredDepths().front() ); + m_tieInMeasuredDepth.uiCapability()->setAttribute( caf::PdmUiDoubleSliderEditor::Keys::MAXIMUM, + wellPathGeo->measuredDepths().back() ); + } + } tieInGroup->add( &m_addValveAtConnection ); bool isFileWellPath = dynamic_cast( m_childWell() ); @@ -309,30 +321,3 @@ QList RimWellPathTieIn::calculateValueOptions( const caf return options; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWellPathTieIn::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_tieInMeasuredDepth ) - { - caf::PdmUiDoubleSliderEditorAttribute* myAttr = dynamic_cast( attribute ); - - if ( myAttr && parentWell() ) - { - double minimumValue = 0.0, maximumValue = 0.0; - - auto wellPathGeo = parentWell()->wellPathGeometry(); - - if ( wellPathGeo && wellPathGeo->measuredDepths().size() > 0 ) - { - minimumValue = wellPathGeo->measuredDepths().front(); - maximumValue = wellPathGeo->measuredDepths().back(); - - myAttr->m_minimum = minimumValue; - myAttr->m_maximum = maximumValue; - } - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.h index 6b49ef0b4b..6a08b94bf2 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellPathTieIn.h @@ -61,8 +61,6 @@ private: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override; - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - private: caf::PdmField m_infoLabel; diff --git a/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.cpp b/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.cpp index f514edbb2f..8fd64f7527 100644 --- a/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.cpp +++ b/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.cpp @@ -28,7 +28,6 @@ CAF_PDM_SOURCE_INIT( RimWorkflowFilePathBinding, "WorkflowFilePathBinding" ); /// //-------------------------------------------------------------------------------------------------- RimWorkflowFilePathBinding::RimWorkflowFilePathBinding() - : m_selectDirectory( false ) { CAF_PDM_InitFieldNoDefault( &m_value, "Value", "Value" ); m_value.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() ); @@ -42,7 +41,7 @@ void RimWorkflowFilePathBinding::applySchema( const QJsonObject& fieldSchema ) RimWorkflowFieldBinding::applySchema( fieldSchema ); const QString fmt = fieldSchema.value( "format" ).toString(); - m_selectDirectory = ( fmt == "directory-path" ); + m_value.uiCapability()->setAttribute( caf::PdmUiFilePathEditor::Keys::SELECT_DIRECTORY, fmt == "directory-path" ); if ( fieldSchema.contains( "default" ) ) { @@ -68,17 +67,3 @@ QString RimWorkflowFilePathBinding::toYamlValue() const { return hasValue() ? yamlQuotedScalar( m_value().path() ) : "null"; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimWorkflowFilePathBinding::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( field == &m_value ) - { - if ( auto* attr = dynamic_cast( attribute ) ) - { - attr->m_selectDirectory = m_selectDirectory; - } - } -} diff --git a/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.h b/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.h index 8629a305bb..a1eb24a941 100644 --- a/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.h +++ b/ApplicationLibCode/ProjectDataModel/Workflow/RimWorkflowFilePathBinding.h @@ -35,10 +35,6 @@ public: caf::PdmFieldHandle* valueField() override { return &m_value; } -protected: - void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override; - private: caf::PdmField m_value; - bool m_selectDirectory; };