#3883 Annotations. Validate line thickness

This commit is contained in:
Bjørn Erik Jensen 2018-12-18 10:48:48 +01:00
parent 024aa8af51
commit a2e2907e41
2 changed files with 43 additions and 0 deletions

View File

@ -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<caf::PdmUiLineEditorAttribute*>(attribute);
if (myAttr)
{
myAttr->validator = new ThicknessValidator();
}
}
}
CAF_PDM_SOURCE_INIT(RimPolylineAppearance, "RimPolylineAppearance");
//--------------------------------------------------------------------------------------------------

View File

@ -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<cvf::Color3f> m_color;