(#416) Improved Linked views

Removed list of available views
Renamed dialog to "Select Master View"
Use case icons for master view and linked views
This commit is contained in:
Magne Sjaastad 2015-09-07 12:14:50 +02:00
parent 2807a8d2f8
commit 64bda31cfb
7 changed files with 56 additions and 52 deletions

View File

@ -73,7 +73,7 @@ void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
RicLinkVisibleViewsFeatureUi featureUi;
featureUi.setViews(views);
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &featureUi, "Link Visible Views", "");
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &featureUi, "Select Master View", "");
propertyDialog.setWindowIcon(QIcon(":/chain.png"));
if (propertyDialog.exec() != QDialog::Accepted) return;

View File

@ -19,12 +19,11 @@
#include "RicLinkVisibleViewsFeatureUi.h"
#include "cafPdmUiTextEditor.h"
#include "cafPdmObjectGroup.h"
#include "RiaApplication.h"
#include "RimView.h"
#include "RimCase.h"
#include "RimLinkedViews.h"
#include "cafPdmUiItem.h"
#include "RimView.h"
CAF_PDM_SOURCE_INIT(RicLinkVisibleViewsFeatureUi, "RicLinkVisibleViewsFeatureUi");
@ -35,10 +34,6 @@ RicLinkVisibleViewsFeatureUi::RicLinkVisibleViewsFeatureUi(void)
{
CAF_PDM_InitObject("Link Visible Views Feature UI", ":/chain.png", "", "");
CAF_PDM_InitFieldNoDefault(&m_allViewsAsText, "VisibleViews", "Visible Views (Case name : View Name)", "", "", "");
m_allViewsAsText.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
m_allViewsAsText.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
CAF_PDM_InitFieldNoDefault(&m_masterView, "MasterView", "Master View", "", "", "");
}
@ -49,15 +44,19 @@ void RicLinkVisibleViewsFeatureUi::setViews(const std::vector<RimView*>& allView
{
m_allViews = allViews;
QString viewNames;
for (int i = 0; i < m_allViews.size(); i++)
{
viewNames += RimLinkedViews::displayNameForView(m_allViews[i]);
viewNames += "\n";
}
m_allViewsAsText = viewNames;
RimView* activeView = RiaApplication::instance()->activeReservoirView();
if (allViews.size() > 0)
// Set Active view as master view
for (size_t i = 0; i < allViews.size(); i++)
{
if (activeView == allViews[i])
{
m_masterView = allViews[i];
}
}
// Fallback to use first view if no active view is present
if (!m_masterView && allViews.size() > 0)
{
m_masterView = allViews[0];
}
@ -82,8 +81,20 @@ QList<caf::PdmOptionItemInfo> RicLinkVisibleViewsFeatureUi::calculateValueOption
{
for (int i = 0; i < m_allViews.size(); i++)
{
RimCase* rimCase = NULL;
m_allViews[i]->firstAnchestorOrThisOfType(rimCase);
QIcon icon;
if (rimCase)
{
icon = rimCase->uiCapability()->uiIcon();
}
optionList.push_back(caf::PdmOptionItemInfo(RimLinkedViews::displayNameForView(m_allViews[i]),
QVariant::fromValue(caf::PdmPointer<PdmObjectHandle>(m_allViews[i]))));
QVariant::fromValue(caf::PdmPointer<PdmObjectHandle>(m_allViews[i])),
false,
icon));
}
}

View File

@ -44,7 +44,6 @@ protected:
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
private:
caf::PdmField<QString> m_allViewsAsText;
caf::PdmPtrField<RimView*> m_masterView;
std::vector<RimView*> m_allViews;

View File

@ -47,7 +47,7 @@ CAF_PDM_SOURCE_INIT(RimLinkedViews, "RimLinkedViews");
//--------------------------------------------------------------------------------------------------
RimLinkedViews::RimLinkedViews(void)
{
CAF_PDM_InitObject("Linked Views", ":/ReservoirView.png", "", "");
CAF_PDM_InitObject("Linked Views", ":/Reservoir1View.png", "", "");
CAF_PDM_InitField(&m_name, "Name", QString("View Group Name"), "View Group Name", "", "", "");
m_name.uiCapability()->setUiHidden(true);
@ -267,33 +267,6 @@ void RimLinkedViews::applyAllOperations()
updateScaleZ(m_mainView, m_mainView->scaleZ());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimLinkedViews::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
{
QList<caf::PdmOptionItemInfo> optionList;
if (fieldNeedingOptions == &m_mainView)
{
RimProject* proj = RiaApplication::instance()->project();
std::vector<RimView*> views;
proj->allVisibleViews(views);
for (size_t i = 0; i < views.size(); i++)
{
optionList.push_back(caf::PdmOptionItemInfo(displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(views[i]))));
}
if (optionList.size() > 0)
{
optionList.push_front(caf::PdmOptionItemInfo("None", QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(NULL))));
}
}
return optionList;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -382,6 +355,17 @@ void RimLinkedViews::allViews(std::vector<RimView*>& views)
void RimLinkedViews::initAfterRead()
{
m_name = displayNameForView(m_mainView);
QIcon icon;
if (m_mainView)
{
RimCase* rimCase = NULL;
m_mainView->firstAnchestorOrThisOfType(rimCase);
icon = rimCase->uiCapability()->uiIcon();
}
this->setUiIcon(icon);
}
//--------------------------------------------------------------------------------------------------

View File

@ -66,7 +66,6 @@ public:
RimManagedViewConfig* viewConfigForView(RimView* view);
protected:
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_name; }
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");
virtual void initAfterRead();

View File

@ -186,7 +186,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
}
updateViewChanged();
updateDisplayName();
updateDisplayNameAndIcon();
name.uiCapability()->updateConnectedEditors();
}
@ -198,7 +198,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
void RimManagedViewConfig::initAfterRead()
{
configureOverrides();
updateDisplayName();
updateDisplayNameAndIcon();
updateViewChanged();
}
@ -352,7 +352,7 @@ void RimManagedViewConfig::updateViewChanged()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimManagedViewConfig::updateDisplayName()
void RimManagedViewConfig::updateDisplayNameAndIcon()
{
if (m_managedView)
{
@ -362,6 +362,17 @@ void RimManagedViewConfig::updateDisplayName()
{
name = "View Config : Empty view";
}
QIcon icon;
if (m_managedView)
{
RimCase* rimCase = NULL;
m_managedView->firstAnchestorOrThisOfType(rimCase);
icon = rimCase->uiCapability()->uiIcon();
}
this->setUiIcon(icon);
}
//--------------------------------------------------------------------------------------------------

View File

@ -63,7 +63,7 @@ protected:
private:
void configureOverridesUpdateDisplayModel();
void updateDisplayName();
void updateDisplayNameAndIcon();
RimEclipseView* managedEclipseView();
RimGeoMechView* managedGeoView();