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 "RicLinkVisibleViewsFeatureUi.h"
|
||||
|
||||
#include "RimLinkedViews.h"
|
||||
#include "RimManagedViewConfig.h"
|
||||
#include "RimProject.h"
|
||||
@ -28,12 +30,13 @@
|
||||
|
||||
#include "RiuMainWindow.h"
|
||||
|
||||
#include "cafPdmUiPropertyViewDialog.h"
|
||||
#include "cafPdmUiTreeView.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QTreeView>
|
||||
#include "RicLinkVisibleViewsFeatureUi.h"
|
||||
#include "cafPdmUiPropertyViewDialog.h"
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
CAF_CMD_SOURCE_INIT(RicLinkVisibleViewsFeature, "RicLinkVisibleViewsFeature");
|
||||
|
||||
@ -57,14 +60,20 @@ bool RicLinkVisibleViewsFeature::isCommandEnabled()
|
||||
void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
|
||||
std::vector<RimView*> views;
|
||||
proj->allVisibleViews(views);
|
||||
CVF_ASSERT(views.size() > 1);
|
||||
findNotLinkedVisibleViews(views);
|
||||
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;
|
||||
featureUi.setViews(views);
|
||||
|
||||
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &featureUi, "New View Group", "");
|
||||
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &featureUi, "Link Visible Views", "");
|
||||
propertyDialog.setWindowIcon(QIcon(":/chain.png"));
|
||||
if (propertyDialog.exec() != QDialog::Accepted) return;
|
||||
|
||||
@ -109,3 +118,54 @@ void RicLinkVisibleViewsFeature::setupActionLook(QAction* actionToSetup)
|
||||
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 <vector>
|
||||
|
||||
class RimView;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
@ -32,6 +36,11 @@ protected:
|
||||
// Overrides
|
||||
virtual bool isCommandEnabled();
|
||||
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 "RimLinkedViews.h"
|
||||
#include "cafPdmUiItem.h"
|
||||
|
||||
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_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()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_masterView, "MasterView", "Master View", "", "", "");
|
||||
}
|
||||
|
@ -354,3 +354,19 @@ RimView* RimLinkedViews::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 allViewsForCameraSync(std::vector<RimView*>& views);
|
||||
void allViews(std::vector<RimView*>& views);
|
||||
|
||||
public:
|
||||
static QString displayNameForView(RimView* view);
|
||||
|
Loading…
Reference in New Issue
Block a user