From a2e2907e41985b8fccc96a5b302cf4f8d0c40758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Jensen?= Date: Tue, 18 Dec 2018 10:48:48 +0100 Subject: [PATCH] #3883 Annotations. Validate line thickness --- .../RimAnnotationLineAppearance.cpp | 40 +++++++++++++++++++ .../Annotations/RimAnnotationLineAppearance.h | 3 ++ 2 files changed, 43 insertions(+) diff --git a/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp b/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp index 8a12bb757b..1c0e0e29f0 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp +++ b/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.cpp @@ -19,6 +19,29 @@ #include "RimAnnotationLineAppearance.h" #include "RimAnnotationCollection.h" +#include "RiaStdStringTools.h" + +#include "QValidator.h" + +#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<> @@ -108,6 +131,23 @@ void RimAnnotationLineAppearance::fieldChangedByUi(const caf::PdmFieldHandle* ch annColl->scheduleRedrawOfRelevantViews(); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +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/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h b/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h index c8625223a6..5b1bc41f70 100644 --- a/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h +++ b/ApplicationCode/ProjectDataModel/Annotations/RimAnnotationLineAppearance.h @@ -52,6 +52,9 @@ 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_color;