mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#395) Remove already linked views from visibile views when linking visible views
This commit is contained in:
parent
ccc7703e1f
commit
3e0423cd0f
@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
|
|
||||||
|
#include "RicLinkVisibleViewsFeatureUi.h"
|
||||||
|
|
||||||
#include "RimLinkedViews.h"
|
#include "RimLinkedViews.h"
|
||||||
#include "RimManagedViewConfig.h"
|
#include "RimManagedViewConfig.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
@ -28,12 +30,13 @@
|
|||||||
|
|
||||||
#include "RiuMainWindow.h"
|
#include "RiuMainWindow.h"
|
||||||
|
|
||||||
|
#include "cafPdmUiPropertyViewDialog.h"
|
||||||
#include "cafPdmUiTreeView.h"
|
#include "cafPdmUiTreeView.h"
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
#include "RicLinkVisibleViewsFeatureUi.h"
|
#include <QMessageBox>
|
||||||
#include "cafPdmUiPropertyViewDialog.h"
|
|
||||||
|
|
||||||
CAF_CMD_SOURCE_INIT(RicLinkVisibleViewsFeature, "RicLinkVisibleViewsFeature");
|
CAF_CMD_SOURCE_INIT(RicLinkVisibleViewsFeature, "RicLinkVisibleViewsFeature");
|
||||||
|
|
||||||
@ -57,14 +60,20 @@ bool RicLinkVisibleViewsFeature::isCommandEnabled()
|
|||||||
void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
|
void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
|
||||||
{
|
{
|
||||||
RimProject* proj = RiaApplication::instance()->project();
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
|
|
||||||
std::vector<RimView*> views;
|
std::vector<RimView*> views;
|
||||||
proj->allVisibleViews(views);
|
findNotLinkedVisibleViews(views);
|
||||||
CVF_ASSERT(views.size() > 1);
|
if (views.size() < 2)
|
||||||
|
{
|
||||||
|
QMessageBox::warning(RiuMainWindow::instance(), "Link Visible Views", "Less than two views available for linking. Please open at least two not linked views before creating a new link group.");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
RicLinkVisibleViewsFeatureUi featureUi;
|
RicLinkVisibleViewsFeatureUi featureUi;
|
||||||
featureUi.setViews(views);
|
featureUi.setViews(views);
|
||||||
|
|
||||||
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &featureUi, "New View Group", "");
|
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &featureUi, "Link Visible Views", "");
|
||||||
propertyDialog.setWindowIcon(QIcon(":/chain.png"));
|
propertyDialog.setWindowIcon(QIcon(":/chain.png"));
|
||||||
if (propertyDialog.exec() != QDialog::Accepted) return;
|
if (propertyDialog.exec() != QDialog::Accepted) return;
|
||||||
|
|
||||||
@ -109,3 +118,54 @@ void RicLinkVisibleViewsFeature::setupActionLook(QAction* actionToSetup)
|
|||||||
actionToSetup->setIcon(QIcon(":/chain.png"));
|
actionToSetup->setIcon(QIcon(":/chain.png"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicLinkVisibleViewsFeature::allLinkedViews(std::vector<RimView*>& views)
|
||||||
|
{
|
||||||
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
|
for (size_t i = 0; i < proj->linkedViews().size(); i++)
|
||||||
|
{
|
||||||
|
RimLinkedViews* linkedViews = proj->linkedViews()[i];
|
||||||
|
linkedViews->allViews(views);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicLinkVisibleViewsFeature::findNotLinkedVisibleViews(std::vector<RimView*> &views)
|
||||||
|
{
|
||||||
|
RimProject* proj = RiaApplication::instance()->project();
|
||||||
|
|
||||||
|
std::vector<RimView*> alreadyLinkedViews;
|
||||||
|
allLinkedViews(alreadyLinkedViews);
|
||||||
|
|
||||||
|
std::vector<RimView*> visibleViews;
|
||||||
|
proj->allVisibleViews(visibleViews);
|
||||||
|
|
||||||
|
bool anyAlreadyLinkedViews = false;
|
||||||
|
for (size_t i = 0; i < visibleViews.size(); i++)
|
||||||
|
{
|
||||||
|
bool isLinked = false;
|
||||||
|
for (size_t j = 0; j < alreadyLinkedViews.size(); j++)
|
||||||
|
{
|
||||||
|
if (visibleViews[i] == alreadyLinkedViews[j])
|
||||||
|
{
|
||||||
|
anyAlreadyLinkedViews = true;
|
||||||
|
isLinked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isLinked)
|
||||||
|
{
|
||||||
|
views.push_back(visibleViews[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (anyAlreadyLinkedViews)
|
||||||
|
{
|
||||||
|
QMessageBox::warning(RiuMainWindow::instance(), "Link Visible Views", "Detected one or more visible view(s) already part of a Linked View Group.\nThese views were removed from the list of visible views.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,10 @@
|
|||||||
|
|
||||||
#include "cafCmdFeature.h"
|
#include "cafCmdFeature.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
class RimView;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
@ -32,6 +36,11 @@ protected:
|
|||||||
// Overrides
|
// Overrides
|
||||||
virtual bool isCommandEnabled();
|
virtual bool isCommandEnabled();
|
||||||
virtual void onActionTriggered( bool isChecked );
|
virtual void onActionTriggered( bool isChecked );
|
||||||
virtual void setupActionLook( QAction* actionToSetup );
|
|
||||||
|
|
||||||
|
|
||||||
|
virtual void setupActionLook(QAction* actionToSetup);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void findNotLinkedVisibleViews(std::vector<RimView*> &views);
|
||||||
|
void allLinkedViews(std::vector<RimView*>& views);
|
||||||
};
|
};
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "RimView.h"
|
#include "RimView.h"
|
||||||
#include "RimLinkedViews.h"
|
#include "RimLinkedViews.h"
|
||||||
|
#include "cafPdmUiItem.h"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RicLinkVisibleViewsFeatureUi, "RicLinkVisibleViewsFeatureUi");
|
CAF_PDM_SOURCE_INIT(RicLinkVisibleViewsFeatureUi, "RicLinkVisibleViewsFeatureUi");
|
||||||
|
|
||||||
@ -34,8 +35,9 @@ RicLinkVisibleViewsFeatureUi::RicLinkVisibleViewsFeatureUi(void)
|
|||||||
{
|
{
|
||||||
CAF_PDM_InitObject("Link Visible Views Feature UI", ":/chain.png", "", "");
|
CAF_PDM_InitObject("Link Visible Views Feature UI", ":/chain.png", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_allViewsAsText, "VisibleViews", "Visible Views", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_allViewsAsText, "VisibleViews", "Visible Views (Case name : View Name)", "", "", "");
|
||||||
m_allViewsAsText.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
m_allViewsAsText.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||||
|
m_allViewsAsText.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_masterView, "MasterView", "Master View", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_masterView, "MasterView", "Master View", "", "", "");
|
||||||
}
|
}
|
||||||
|
@ -354,3 +354,19 @@ RimView* RimLinkedViews::mainView()
|
|||||||
return m_mainView;
|
return m_mainView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimLinkedViews::allViews(std::vector<RimView*>& views)
|
||||||
|
{
|
||||||
|
views.push_back(m_mainView());
|
||||||
|
|
||||||
|
for (size_t i = 0; i < viewConfigs.size(); i++)
|
||||||
|
{
|
||||||
|
if (viewConfigs[i]->managedView())
|
||||||
|
{
|
||||||
|
views.push_back(viewConfigs[i]->managedView());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -58,6 +58,7 @@ public:
|
|||||||
void configureOverrides();
|
void configureOverrides();
|
||||||
|
|
||||||
void allViewsForCameraSync(std::vector<RimView*>& views);
|
void allViewsForCameraSync(std::vector<RimView*>& views);
|
||||||
|
void allViews(std::vector<RimView*>& views);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static QString displayNameForView(RimView* view);
|
static QString displayNameForView(RimView* view);
|
||||||
|
Loading…
Reference in New Issue
Block a user