#3824 Annotations. 'Create annotation' context menu item on each annotation group

This commit is contained in:
Bjørn Erik Jensen 2018-12-05 10:23:15 +01:00
parent 6a2484c40e
commit 23148c621e
9 changed files with 47 additions and 11 deletions

View File

@ -25,6 +25,7 @@
#include "RimReachCircleAnnotation.h"
#include "RimPolylinesAnnotation.h"
#include "RimAnnotationCollection.h"
#include "RimAnnotationGroupCollection.h"
#include "RimAnnotationInViewCollection.h"
#include "RimProject.h"
#include "RimOilField.h"
@ -45,7 +46,10 @@ CAF_CMD_SOURCE_INIT(RicCreateReachCircleAnnotationFeature, "RicCreateReachCircle
bool RicCreateReachCircleAnnotationFeature::isCommandEnabled()
{
auto selObjs = caf::selectedObjectsByTypeStrict<RimAnnotationCollection*>();
return selObjs.size() == 1;
auto selGroupColl = caf::selectedObjectsByTypeStrict<RimAnnotationGroupCollection*>();
return selObjs.size() == 1 || (selGroupColl.size() == 1
&& selGroupColl.front()->uiCapability()->uiName() == RimAnnotationGroupCollection::REACH_CIRCLE_ANNOTATION_UI_NAME);
}
//--------------------------------------------------------------------------------------------------

View File

@ -24,6 +24,7 @@
#include "RimReachCircleAnnotation.h"
#include "RimPolylinesAnnotation.h"
#include "RimAnnotationCollection.h"
#include "RimAnnotationGroupCollection.h"
#include "RimAnnotationInViewCollection.h"
#include "RimProject.h"
#include "RimOilField.h"
@ -44,8 +45,11 @@ bool RicCreateTextAnnotationFeature::isCommandEnabled()
{
auto selObjsGlobal = caf::selectedObjectsByTypeStrict<RimAnnotationCollection*>();
auto selObjs2InView = caf::selectedObjectsByTypeStrict<RimAnnotationInViewCollection*>();
auto selGroupColl = caf::selectedObjectsByTypeStrict<RimAnnotationGroupCollection*>();
return selObjsGlobal.size() == 1 || selObjs2InView.size() == 1;
return selObjsGlobal.size() == 1 || selObjs2InView.size() == 1 ||
(selGroupColl.size() == 1 &&
selGroupColl.front()->uiCapability()->uiName() == RimAnnotationGroupCollection::TEXT_ANNOTATION_UI_NAME);
}
//--------------------------------------------------------------------------------------------------

View File

@ -25,6 +25,7 @@
#include "RimReachCircleAnnotation.h"
#include "RimUserDefinedPolylinesAnnotation.h"
#include "RimAnnotationCollection.h"
#include "RimAnnotationGroupCollection.h"
#include "RimAnnotationInViewCollection.h"
#include "RimProject.h"
#include "RimOilField.h"
@ -44,8 +45,11 @@ CAF_CMD_SOURCE_INIT(RicCreateUserDefinedPolylinesAnnotationFeature, "RicCreateUs
//--------------------------------------------------------------------------------------------------
bool RicCreateUserDefinedPolylinesAnnotationFeature::isCommandEnabled()
{
auto selObjs = caf::selectedObjectsByTypeStrict<RimAnnotationCollection*>();
return selObjs.size() == 1;
auto selObjs = caf::selectedObjectsByTypeStrict<RimAnnotationCollection*>();
auto selGroupColl = caf::selectedObjectsByTypeStrict<RimAnnotationGroupCollection*>();
return selObjs.size() == 1 || (selGroupColl.size() == 1 && selGroupColl.front()->uiCapability()->uiName() ==
RimAnnotationGroupCollection::USED_DEFINED_POLYLINE_ANNOTATION_UI_NAME);
}
//--------------------------------------------------------------------------------------------------

View File

@ -23,6 +23,7 @@
#include "RimOilField.h"
#include "RimProject.h"
#include "RimAnnotationCollection.h"
#include "RimAnnotationGroupCollection.h"
#include "RimPolylinesFromFileAnnotation.h"
#include "Riu3DMainWindowTools.h"
@ -30,6 +31,8 @@
#include <QAction>
#include <QFileDialog>
#include <cafSelectionManagerTools.h>
CAF_CMD_SOURCE_INIT(RicImportPolylinesAnnotationFeature, "RicImportPolylinesAnnotationFeature");
@ -38,7 +41,12 @@ CAF_CMD_SOURCE_INIT(RicImportPolylinesAnnotationFeature, "RicImportPolylinesAnno
//--------------------------------------------------------------------------------------------------
bool RicImportPolylinesAnnotationFeature::isCommandEnabled()
{
return true;
auto selObjs = caf::selectedObjectsByTypeStrict<RimAnnotationCollection*>();
auto selGroupColl = caf::selectedObjectsByTypeStrict<RimAnnotationGroupCollection*>();
return selObjs.size() == 1 ||
(selGroupColl.size() == 1 && selGroupColl.front()->uiCapability()->uiName() ==
RimAnnotationGroupCollection::POLYLINE_FROM_FILE_ANNOTATION_UI_NAME);
}
//--------------------------------------------------------------------------------------------------

View File

@ -57,9 +57,9 @@ RimAnnotationCollection::RimAnnotationCollection()
m_userDefinedPolylineAnnotations = new RimAnnotationGroupCollection();
m_polylineFromFileAnnotations = new RimAnnotationGroupCollection();
m_reachCircleAnnotations->uiCapability()->setUiName("Reach Circle Annotations");
m_userDefinedPolylineAnnotations->uiCapability()->setUiName("User Defined Polyline Annotations");
m_polylineFromFileAnnotations->uiCapability()->setUiName("Polylines From File");
m_reachCircleAnnotations->uiCapability()->setUiName(RimAnnotationGroupCollection::REACH_CIRCLE_ANNOTATION_UI_NAME);
m_userDefinedPolylineAnnotations->uiCapability()->setUiName(RimAnnotationGroupCollection::USED_DEFINED_POLYLINE_ANNOTATION_UI_NAME);
m_polylineFromFileAnnotations->uiCapability()->setUiName(RimAnnotationGroupCollection::POLYLINE_FROM_FILE_ANNOTATION_UI_NAME);
m_reachCircleAnnotations->uiCapability()->setUiIcon(QIcon(":/ReachCircle16x16.png"));
m_userDefinedPolylineAnnotations->uiCapability()->setUiIcon(QIcon(":/PolylinesFromFile16x16.png"));

View File

@ -48,7 +48,7 @@ RimAnnotationCollectionBase::RimAnnotationCollectionBase()
m_textAnnotations.uiCapability()->setUiHidden(true);
m_textAnnotations = new RimAnnotationGroupCollection();
m_textAnnotations->uiCapability()->setUiName("Text Annotations");
m_textAnnotations->uiCapability()->setUiName(RimAnnotationGroupCollection::TEXT_ANNOTATION_UI_NAME);
m_textAnnotations->uiCapability()->setUiIcon(QIcon(":/TextAnnotation16x16.png"));
}

View File

@ -35,6 +35,14 @@
CAF_PDM_SOURCE_INIT(RimAnnotationGroupCollection, "RimAnnotationGroupCollection");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString RimAnnotationGroupCollection::TEXT_ANNOTATION_UI_NAME = "Text Annotations";
const QString RimAnnotationGroupCollection::REACH_CIRCLE_ANNOTATION_UI_NAME = "Reach Circle Annotations";
const QString RimAnnotationGroupCollection::USED_DEFINED_POLYLINE_ANNOTATION_UI_NAME = "User Defined Polyline Annotations";
const QString RimAnnotationGroupCollection::POLYLINE_FROM_FILE_ANNOTATION_UI_NAME = "Polylines From File";
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -39,6 +39,13 @@ class RimAnnotationGroupCollection : public caf::PdmObject
friend class RimAnnotationInViewCollection;
CAF_PDM_HEADER_INIT;
public:
const static QString TEXT_ANNOTATION_UI_NAME;
const static QString REACH_CIRCLE_ANNOTATION_UI_NAME;
const static QString USED_DEFINED_POLYLINE_ANNOTATION_UI_NAME;
const static QString POLYLINE_FROM_FILE_ANNOTATION_UI_NAME;
public:
RimAnnotationGroupCollection();
~RimAnnotationGroupCollection() override;

View File

@ -28,6 +28,7 @@
#include "Rim3dWellLogRftCurve.h"
#include "RimAnnotationCollection.h"
#include "RimAnnotationInViewCollection.h"
#include "RimAnnotationGroupCollection.h"
#include "RimCalcScript.h"
#include "RimCaseCollection.h"
#include "RimCellRangeFilter.h"
@ -681,7 +682,8 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
menuBuilder << "Separator";
menuBuilder << "RicConvertFractureTemplateUnitFeature";
}
else if (dynamic_cast<RimAnnotationCollection*>(uiItem))
else if (dynamic_cast<RimAnnotationCollection*>(uiItem)
|| dynamic_cast<RimAnnotationGroupCollection*>(uiItem))
{
menuBuilder << "RicCreateTextAnnotationFeature";
menuBuilder << "RicCreateReachCircleAnnotationFeature";
@ -692,7 +694,6 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
{
menuBuilder << "RicCreateTextAnnotationFeature";
}
if (dynamic_cast<Rim3dView*>(uiItem))
{
menuBuilder << "Separator";