mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4014 Use Vec3d Editor for Text and ReachCircle Annotations
This commit is contained in:
parent
058b9cfb7a
commit
0e52426071
@ -24,6 +24,9 @@
|
||||
#include "RimProject.h"
|
||||
#include "RimAnnotationCollection.h"
|
||||
|
||||
#include "RicVec3dPickEventHandler.h"
|
||||
|
||||
#include "cafPdmUiVec3dEditor.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimReachCircleAnnotation, "RimReachCircleAnnotation");
|
||||
|
||||
@ -39,6 +42,7 @@ RimReachCircleAnnotation::RimReachCircleAnnotation()
|
||||
m_isActive.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitField(&m_centerPointXyd, "CenterPointXyd", Vec3d::ZERO, "Center Point", "", "", "");
|
||||
m_centerPointXyd.uiCapability()->setUiEditorTypeName(caf::PdmUiVec3dEditor::uiEditorTypeName());
|
||||
CAF_PDM_InitField(&m_radius, "Radius", 0.0, "Radius", "", "", "");
|
||||
CAF_PDM_InitField(&m_name, "Name", QString("Circle Annotation"), "Name", "", "", "");
|
||||
|
||||
@ -47,6 +51,8 @@ RimReachCircleAnnotation::RimReachCircleAnnotation()
|
||||
m_appearance = new RimReachCircleLineAppearance();
|
||||
m_appearance.uiCapability()->setUiTreeHidden(true);
|
||||
m_appearance.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
|
||||
m_centerPointEventHandler.reset(new RicVec3dPickEventHandler(&m_centerPointXyd));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -146,3 +152,25 @@ caf::PdmFieldHandle* RimReachCircleAnnotation::objectToggleField()
|
||||
return &m_isActive;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimReachCircleAnnotation::defineEditorAttribute(const caf::PdmFieldHandle* field,
|
||||
QString uiConfigName,
|
||||
caf::PdmUiEditorAttribute* attribute)
|
||||
{
|
||||
if (field == &m_centerPointXyd)
|
||||
{
|
||||
caf::PdmUiVec3dEditorAttribute* attr = dynamic_cast<caf::PdmUiVec3dEditorAttribute*>(attribute);
|
||||
if (attr)
|
||||
{
|
||||
attr->pickEventHandler = m_centerPointEventHandler;
|
||||
if (m_centerPointXyd().isZero())
|
||||
{
|
||||
attr->startPicking = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <vector>
|
||||
|
||||
class QString;
|
||||
class RicVec3dPickEventHandler;
|
||||
class RimGridView;
|
||||
class RimReachCircleLineAppearance;
|
||||
|
||||
@ -69,6 +70,7 @@ protected:
|
||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
caf::PdmFieldHandle* userDescriptionField() override;
|
||||
caf::PdmFieldHandle* objectToggleField() override;
|
||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_isActive;
|
||||
@ -77,4 +79,6 @@ private:
|
||||
caf::PdmField<double> m_radius;
|
||||
caf::PdmField<QString> m_name;
|
||||
caf::PdmChildField<RimReachCircleLineAppearance*> m_appearance;
|
||||
|
||||
std::shared_ptr<RicVec3dPickEventHandler> m_centerPointEventHandler;
|
||||
};
|
||||
|
@ -25,10 +25,16 @@
|
||||
#include "RimAnnotationGroupCollection.h"
|
||||
#include "RimAnnotationTextAppearance.h"
|
||||
|
||||
#include "RicVec3dPickEventHandler.h"
|
||||
#include "AnnotationCommands/RicTextAnnotation3dEditor.h"
|
||||
|
||||
#include "cafCmdFeatureManager.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
#include "cafPdmUiTreeOrdering.h"
|
||||
#include "cafPdmUiVec3dEditor.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QPointer>
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimTextAnnotation, "RimTextAnnotation");
|
||||
|
||||
@ -42,7 +48,9 @@ RimTextAnnotation::RimTextAnnotation()
|
||||
this->setUi3dEditorTypeName(RicTextAnnotation3dEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitField(&m_anchorPointXyd, "AnchorPointXyd", Vec3d::ZERO, "Anchor Point", "", "", "");
|
||||
m_anchorPointXyd.uiCapability()->setUiEditorTypeName(caf::PdmUiVec3dEditor::uiEditorTypeName());
|
||||
CAF_PDM_InitField(&m_labelPointXyd, "LabelPointXyd", Vec3d::ZERO, "Label Point", "", "", "");
|
||||
m_labelPointXyd.uiCapability()->setUiEditorTypeName(caf::PdmUiVec3dEditor::uiEditorTypeName());
|
||||
CAF_PDM_InitField(&m_text, "Text", QString("(New text)"), "Text", "", "", "");
|
||||
m_text.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||
|
||||
@ -59,6 +67,9 @@ RimTextAnnotation::RimTextAnnotation()
|
||||
m_nameProxy.uiCapability()->setUiReadOnly(true);
|
||||
m_nameProxy.xmlCapability()->disableIO();
|
||||
|
||||
m_anchorPointPickEventHandler.reset(new RicVec3dPickEventHandler(&m_anchorPointXyd));
|
||||
m_labelPointPickEventHandler.reset(new RicVec3dPickEventHandler(&m_labelPointXyd));
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -145,6 +156,16 @@ void RimTextAnnotation::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
||||
const QVariant& oldValue,
|
||||
const QVariant& newValue)
|
||||
{
|
||||
if (changedField == &m_anchorPointXyd && m_labelPointXyd().isZero())
|
||||
{
|
||||
m_labelPointXyd = m_anchorPointXyd();
|
||||
}
|
||||
if (changedField == &m_labelPointXyd && m_anchorPointXyd().isZero())
|
||||
{
|
||||
m_anchorPointXyd = m_labelPointXyd();
|
||||
}
|
||||
|
||||
|
||||
RimAnnotationCollectionBase* annColl = nullptr;
|
||||
this->firstAncestorOrThisOfTypeAsserted(annColl);
|
||||
|
||||
@ -178,6 +199,7 @@ bool RimTextAnnotation::isVisible() const
|
||||
bool visible = true;
|
||||
if (coll) visible = coll->isVisible();
|
||||
if(visible) visible = m_isActive;
|
||||
|
||||
return visible;
|
||||
}
|
||||
|
||||
@ -197,6 +219,29 @@ caf::PdmFieldHandle* RimTextAnnotation::objectToggleField()
|
||||
return &m_isActive;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimTextAnnotation::defineEditorAttribute(const caf::PdmFieldHandle* field,
|
||||
QString uiConfigName,
|
||||
caf::PdmUiEditorAttribute* attribute)
|
||||
{
|
||||
caf::PdmUiVec3dEditorAttribute* attr = dynamic_cast<caf::PdmUiVec3dEditorAttribute*>(attribute);
|
||||
|
||||
if (attr && field == &m_anchorPointXyd)
|
||||
{
|
||||
attr->pickEventHandler = m_anchorPointPickEventHandler;
|
||||
if (m_anchorPointXyd().isZero())
|
||||
{
|
||||
attr->startPicking = true;
|
||||
}
|
||||
}
|
||||
else if (attr && field == &m_labelPointXyd)
|
||||
{
|
||||
attr->pickEventHandler = m_labelPointPickEventHandler;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -34,9 +34,11 @@
|
||||
#include "cvfObject.h"
|
||||
#include "cvfVector3.h"
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class QString;
|
||||
class RicVec3dPickEventHandler;
|
||||
class RimGridView;
|
||||
class RimAnnotationTextAppearance;
|
||||
|
||||
@ -72,6 +74,9 @@ protected:
|
||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||
caf::PdmFieldHandle* userDescriptionField() override;
|
||||
caf::PdmFieldHandle* objectToggleField() override;
|
||||
void defineEditorAttribute(const caf::PdmFieldHandle* field,
|
||||
QString uiConfigName,
|
||||
caf::PdmUiEditorAttribute* attribute) override;
|
||||
|
||||
private:
|
||||
friend class RicTextAnnotation3dEditor;
|
||||
@ -86,5 +91,9 @@ private:
|
||||
caf::PdmChildField<RimAnnotationTextAppearance*> m_textAppearance;
|
||||
|
||||
caf::PdmProxyValueField<QString> m_nameProxy;
|
||||
|
||||
std::shared_ptr<RicVec3dPickEventHandler> m_anchorPointPickEventHandler;
|
||||
std::shared_ptr<RicVec3dPickEventHandler> m_labelPointPickEventHandler;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user