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 "RimProject.h"
|
||||||
#include "RimAnnotationCollection.h"
|
#include "RimAnnotationCollection.h"
|
||||||
|
|
||||||
|
#include "RicVec3dPickEventHandler.h"
|
||||||
|
|
||||||
|
#include "cafPdmUiVec3dEditor.h"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimReachCircleAnnotation, "RimReachCircleAnnotation");
|
CAF_PDM_SOURCE_INIT(RimReachCircleAnnotation, "RimReachCircleAnnotation");
|
||||||
|
|
||||||
@ -39,6 +42,7 @@ RimReachCircleAnnotation::RimReachCircleAnnotation()
|
|||||||
m_isActive.uiCapability()->setUiHidden(true);
|
m_isActive.uiCapability()->setUiHidden(true);
|
||||||
|
|
||||||
CAF_PDM_InitField(&m_centerPointXyd, "CenterPointXyd", Vec3d::ZERO, "Center Point", "", "", "");
|
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_radius, "Radius", 0.0, "Radius", "", "", "");
|
||||||
CAF_PDM_InitField(&m_name, "Name", QString("Circle Annotation"), "Name", "", "", "");
|
CAF_PDM_InitField(&m_name, "Name", QString("Circle Annotation"), "Name", "", "", "");
|
||||||
|
|
||||||
@ -47,6 +51,8 @@ RimReachCircleAnnotation::RimReachCircleAnnotation()
|
|||||||
m_appearance = new RimReachCircleLineAppearance();
|
m_appearance = new RimReachCircleLineAppearance();
|
||||||
m_appearance.uiCapability()->setUiTreeHidden(true);
|
m_appearance.uiCapability()->setUiTreeHidden(true);
|
||||||
m_appearance.uiCapability()->setUiTreeChildrenHidden(true);
|
m_appearance.uiCapability()->setUiTreeChildrenHidden(true);
|
||||||
|
|
||||||
|
m_centerPointEventHandler.reset(new RicVec3dPickEventHandler(&m_centerPointXyd));
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -146,3 +152,25 @@ caf::PdmFieldHandle* RimReachCircleAnnotation::objectToggleField()
|
|||||||
return &m_isActive;
|
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>
|
#include <vector>
|
||||||
|
|
||||||
class QString;
|
class QString;
|
||||||
|
class RicVec3dPickEventHandler;
|
||||||
class RimGridView;
|
class RimGridView;
|
||||||
class RimReachCircleLineAppearance;
|
class RimReachCircleLineAppearance;
|
||||||
|
|
||||||
@ -69,6 +70,7 @@ protected:
|
|||||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
caf::PdmFieldHandle* userDescriptionField() override;
|
caf::PdmFieldHandle* userDescriptionField() override;
|
||||||
caf::PdmFieldHandle* objectToggleField() override;
|
caf::PdmFieldHandle* objectToggleField() override;
|
||||||
|
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<bool> m_isActive;
|
caf::PdmField<bool> m_isActive;
|
||||||
@ -77,4 +79,6 @@ private:
|
|||||||
caf::PdmField<double> m_radius;
|
caf::PdmField<double> m_radius;
|
||||||
caf::PdmField<QString> m_name;
|
caf::PdmField<QString> m_name;
|
||||||
caf::PdmChildField<RimReachCircleLineAppearance*> m_appearance;
|
caf::PdmChildField<RimReachCircleLineAppearance*> m_appearance;
|
||||||
|
|
||||||
|
std::shared_ptr<RicVec3dPickEventHandler> m_centerPointEventHandler;
|
||||||
};
|
};
|
||||||
|
@ -25,10 +25,16 @@
|
|||||||
#include "RimAnnotationGroupCollection.h"
|
#include "RimAnnotationGroupCollection.h"
|
||||||
#include "RimAnnotationTextAppearance.h"
|
#include "RimAnnotationTextAppearance.h"
|
||||||
|
|
||||||
|
#include "RicVec3dPickEventHandler.h"
|
||||||
#include "AnnotationCommands/RicTextAnnotation3dEditor.h"
|
#include "AnnotationCommands/RicTextAnnotation3dEditor.h"
|
||||||
|
|
||||||
|
#include "cafCmdFeatureManager.h"
|
||||||
#include "cafPdmUiTextEditor.h"
|
#include "cafPdmUiTextEditor.h"
|
||||||
#include "cafPdmUiTreeOrdering.h"
|
#include "cafPdmUiTreeOrdering.h"
|
||||||
|
#include "cafPdmUiVec3dEditor.h"
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimTextAnnotation, "RimTextAnnotation");
|
CAF_PDM_SOURCE_INIT(RimTextAnnotation, "RimTextAnnotation");
|
||||||
|
|
||||||
@ -42,7 +48,9 @@ RimTextAnnotation::RimTextAnnotation()
|
|||||||
this->setUi3dEditorTypeName(RicTextAnnotation3dEditor::uiEditorTypeName());
|
this->setUi3dEditorTypeName(RicTextAnnotation3dEditor::uiEditorTypeName());
|
||||||
|
|
||||||
CAF_PDM_InitField(&m_anchorPointXyd, "AnchorPointXyd", Vec3d::ZERO, "Anchor Point", "", "", "");
|
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", "", "", "");
|
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", "", "", "");
|
CAF_PDM_InitField(&m_text, "Text", QString("(New text)"), "Text", "", "", "");
|
||||||
m_text.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
m_text.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||||
|
|
||||||
@ -59,6 +67,9 @@ RimTextAnnotation::RimTextAnnotation()
|
|||||||
m_nameProxy.uiCapability()->setUiReadOnly(true);
|
m_nameProxy.uiCapability()->setUiReadOnly(true);
|
||||||
m_nameProxy.xmlCapability()->disableIO();
|
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& oldValue,
|
||||||
const QVariant& newValue)
|
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;
|
RimAnnotationCollectionBase* annColl = nullptr;
|
||||||
this->firstAncestorOrThisOfTypeAsserted(annColl);
|
this->firstAncestorOrThisOfTypeAsserted(annColl);
|
||||||
|
|
||||||
@ -178,6 +199,7 @@ bool RimTextAnnotation::isVisible() const
|
|||||||
bool visible = true;
|
bool visible = true;
|
||||||
if (coll) visible = coll->isVisible();
|
if (coll) visible = coll->isVisible();
|
||||||
if(visible) visible = m_isActive;
|
if(visible) visible = m_isActive;
|
||||||
|
|
||||||
return visible;
|
return visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -197,6 +219,29 @@ caf::PdmFieldHandle* RimTextAnnotation::objectToggleField()
|
|||||||
return &m_isActive;
|
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 "cvfObject.h"
|
||||||
#include "cvfVector3.h"
|
#include "cvfVector3.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class QString;
|
class QString;
|
||||||
|
class RicVec3dPickEventHandler;
|
||||||
class RimGridView;
|
class RimGridView;
|
||||||
class RimAnnotationTextAppearance;
|
class RimAnnotationTextAppearance;
|
||||||
|
|
||||||
@ -72,6 +74,9 @@ protected:
|
|||||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
caf::PdmFieldHandle* userDescriptionField() override;
|
caf::PdmFieldHandle* userDescriptionField() override;
|
||||||
caf::PdmFieldHandle* objectToggleField() override;
|
caf::PdmFieldHandle* objectToggleField() override;
|
||||||
|
void defineEditorAttribute(const caf::PdmFieldHandle* field,
|
||||||
|
QString uiConfigName,
|
||||||
|
caf::PdmUiEditorAttribute* attribute) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class RicTextAnnotation3dEditor;
|
friend class RicTextAnnotation3dEditor;
|
||||||
@ -86,5 +91,9 @@ private:
|
|||||||
caf::PdmChildField<RimAnnotationTextAppearance*> m_textAppearance;
|
caf::PdmChildField<RimAnnotationTextAppearance*> m_textAppearance;
|
||||||
|
|
||||||
caf::PdmProxyValueField<QString> m_nameProxy;
|
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