mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Maintenance october
* Hide contour plot collection when empty * Update the project tree when a linked view is removed * Make sure the window title is in sync with link state * Do not use link state to find window tile ordering
This commit is contained in:
@@ -58,7 +58,7 @@ public:
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicDeleteAllLinkedViewsFeature::isCommandEnabled()
|
||||
{
|
||||
return caf::SelectionManager::instance()->selectedItemAncestorOfType<RimViewLinkerCollection>() != nullptr;
|
||||
return caf::SelectionManager::instance()->selectedItemOfType<RimViewLinker>() != nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -66,7 +66,21 @@ bool RicDeleteAllLinkedViewsFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicDeleteAllLinkedViewsFeature::onActionTriggered( bool isChecked )
|
||||
{
|
||||
DeleteAllLinkedViewsImpl::execute();
|
||||
RimProject* proj = RimProject::current();
|
||||
|
||||
RimViewLinker* viewLinker = proj->viewLinkerCollection()->viewLinker();
|
||||
if ( viewLinker )
|
||||
{
|
||||
// Remove the view linker object from the view linker collection
|
||||
// viewLinkerCollection->viewLinker is a PdmChildField containing one RimViewLinker child object
|
||||
proj->viewLinkerCollection->viewLinker.removeChild( viewLinker );
|
||||
|
||||
viewLinker->applyCellFilterCollectionByUserChoice();
|
||||
|
||||
delete viewLinker;
|
||||
|
||||
proj->uiCapability()->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -76,4 +90,5 @@ void RicDeleteAllLinkedViewsFeature::setupActionLook( QAction* actionToSetup )
|
||||
{
|
||||
actionToSetup->setText( "Unlink All Views" );
|
||||
actionToSetup->setIcon( QIcon( ":/UnLinkView.svg" ) );
|
||||
actionToSetup->setShortcut( Qt::Key_Delete );
|
||||
}
|
||||
|
||||
@@ -379,8 +379,18 @@ void Rim3dView::updateMdiWindowTitle()
|
||||
{
|
||||
if ( m_viewer )
|
||||
{
|
||||
m_viewer->layoutWidget()->setWindowTitle(
|
||||
autoName() + ( isMasterView() ? " (Primary)" : viewController() ? " (Controlled)" : "" ) );
|
||||
auto title = autoName();
|
||||
|
||||
if ( isMasterView() && assosiatedViewLinker() && assosiatedViewLinker()->isActive() )
|
||||
{
|
||||
title += " (Primary)";
|
||||
}
|
||||
else if ( viewController() && viewController()->isActive() )
|
||||
{
|
||||
title += " (Controlled)";
|
||||
}
|
||||
|
||||
m_viewer->layoutWidget()->setWindowTitle( title );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -178,6 +178,7 @@ public:
|
||||
Rim3dView* activeComparisonView() const;
|
||||
void setComparisonView( Rim3dView* compView );
|
||||
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
|
||||
void updateMdiWindowTitle() override;
|
||||
|
||||
protected:
|
||||
static void removeModelByName( cvf::Scene* scene, const cvf::String& modelName );
|
||||
@@ -263,7 +264,6 @@ private:
|
||||
void setId( int id );
|
||||
void assignIdIfNecessary() final;
|
||||
|
||||
void updateMdiWindowTitle() override;
|
||||
void deleteViewWidget() override;
|
||||
QWidget* viewWidget() override;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "RimEclipseContourMapViewCollection.h"
|
||||
|
||||
#include "RimCase.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseContourMapView.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT( RimEclipseContourMapViewCollection, "Eclipse2dViewCollection" );
|
||||
@@ -38,3 +38,14 @@ void RimEclipseContourMapViewCollection::push_back( RimEclipseContourMapView* co
|
||||
{
|
||||
m_contourMapViews.push_back( contourMap );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseContourMapViewCollection::onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
|
||||
std::vector<caf::PdmObjectHandle*>& referringObjects )
|
||||
{
|
||||
RimEclipseCase* eclipseCase = nullptr;
|
||||
this->firstAncestorOrThisOfType( eclipseCase );
|
||||
if ( eclipseCase ) eclipseCase->updateConnectedEditors();
|
||||
}
|
||||
|
||||
@@ -35,6 +35,9 @@ public:
|
||||
std::vector<RimEclipseContourMapView*> views();
|
||||
void push_back( RimEclipseContourMapView* contourMap );
|
||||
|
||||
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
|
||||
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimEclipseContourMapView*> m_contourMapViews;
|
||||
};
|
||||
|
||||
@@ -172,6 +172,8 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
||||
updateCameraLink();
|
||||
updateDisplayNameAndIcon();
|
||||
updateTimeStepLink();
|
||||
|
||||
if ( m_managedView ) m_managedView->updateMdiWindowTitle();
|
||||
}
|
||||
else if ( changedField == &m_syncCamera )
|
||||
{
|
||||
|
||||
@@ -56,25 +56,24 @@ CAF_PDM_SOURCE_INIT( RimViewLinker, "ViewLinker" );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLinker::RimViewLinker()
|
||||
{
|
||||
// clang-format off
|
||||
CAF_PDM_InitObject("Linked Views");
|
||||
CAF_PDM_InitObject( "Linked Views" );
|
||||
|
||||
CAF_PDM_InitField(&m_name, "Name", QString("View Group Name"), "View Group Name");
|
||||
m_name.uiCapability()->setUiHidden(true);
|
||||
CAF_PDM_InitField( &m_name, "Name", QString( "View Group Name" ), "View Group Name" );
|
||||
m_name.uiCapability()->setUiHidden( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_masterView, "MainView", "Main View");
|
||||
m_masterView.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
m_masterView.uiCapability()->setUiTreeHidden(true);
|
||||
m_masterView.uiCapability()->setUiHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault( &m_masterView, "MainView", "Main View" );
|
||||
m_masterView.uiCapability()->setUiTreeChildrenHidden( true );
|
||||
m_masterView.uiCapability()->setUiTreeHidden( true );
|
||||
m_masterView.uiCapability()->setUiHidden( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_viewControllers, "ManagedViews", "Managed Views");
|
||||
m_viewControllers.uiCapability()->setUiTreeHidden(true);
|
||||
m_viewControllers.uiCapability()->setUiTreeChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault( &m_viewControllers, "ManagedViews", "Managed Views" );
|
||||
m_viewControllers.uiCapability()->setUiTreeHidden( true );
|
||||
m_viewControllers.uiCapability()->setUiTreeChildrenHidden( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_comparisonView, "LinkedComparisonView", "Comparison View");
|
||||
CAF_PDM_InitFieldNoDefault( &m_comparisonView, "LinkedComparisonView", "Comparison View" );
|
||||
m_comparisonView.xmlCapability()->disableIO();
|
||||
|
||||
// clang-format on
|
||||
setDeletable( true );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -234,6 +233,22 @@ void RimViewLinker::updateOverrides()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateWindowTitles()
|
||||
{
|
||||
if ( m_masterView ) m_masterView->updateMdiWindowTitle();
|
||||
|
||||
for ( RimViewController* viewLink : m_viewControllers )
|
||||
{
|
||||
if ( auto view = viewLink->managedView() )
|
||||
{
|
||||
view->updateMdiWindowTitle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -511,6 +526,17 @@ void RimViewLinker::notifyManagedViewChange( RimGridView* oldManagedView, RimGri
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
|
||||
std::vector<caf::PdmObjectHandle*>& referringObjects )
|
||||
{
|
||||
RimViewLinkerCollection* viewLinkerCollection = nullptr;
|
||||
this->firstAncestorOrThisOfType( viewLinkerCollection );
|
||||
if ( viewLinkerCollection ) viewLinkerCollection->updateConnectedEditors();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -67,6 +67,7 @@ public:
|
||||
RimGridView* firstControlledView();
|
||||
|
||||
void updateOverrides();
|
||||
void updateWindowTitles();
|
||||
|
||||
void updateCamera( RimGridView* sourceView );
|
||||
void updateTimeStep( RimGridView* sourceView, int timeStep );
|
||||
@@ -103,6 +104,8 @@ protected:
|
||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||
|
||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
|
||||
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
||||
|
||||
private:
|
||||
static QString displayNameForView( RimGridView* view );
|
||||
|
||||
@@ -80,6 +80,7 @@ void RimViewLinkerCollection::fieldChangedByUi( const caf::PdmFieldHandle* chang
|
||||
}
|
||||
|
||||
viewLinker()->updateDependentViews();
|
||||
viewLinker()->updateWindowTitles();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -84,6 +84,8 @@ public:
|
||||
|
||||
void viewNavigationChanged();
|
||||
|
||||
virtual void updateMdiWindowTitle();
|
||||
|
||||
protected:
|
||||
void removeMdiWindowFromMdiArea();
|
||||
|
||||
@@ -93,7 +95,6 @@ protected:
|
||||
QString windowTitle();
|
||||
virtual QWidget* createViewWidget( QWidget* mainWindowParent = nullptr ) = 0;
|
||||
virtual void updateViewWidgetAfterCreation(){};
|
||||
virtual void updateMdiWindowTitle(); // Has real default implementation
|
||||
virtual void deleteViewWidget() = 0;
|
||||
virtual void onLoadDataAndUpdate() = 0;
|
||||
virtual void onViewNavigationChanged();
|
||||
|
||||
@@ -1967,34 +1967,9 @@ void RiuMainWindow::tileSubWindows()
|
||||
windowList.push_back( subWindow );
|
||||
}
|
||||
|
||||
// Get the active view linker if there is one
|
||||
RimProject* proj = RimProject::current();
|
||||
RimViewLinkerCollection* viewLinkerCollection = proj->viewLinkerCollection();
|
||||
RimViewLinker* viewLinker = nullptr;
|
||||
if ( viewLinkerCollection && viewLinkerCollection->isActive() )
|
||||
{
|
||||
viewLinker = viewLinkerCollection->viewLinker();
|
||||
}
|
||||
|
||||
// Perform stable sort of list so we first sort by window position but retain activation order
|
||||
// for windows with the same position.
|
||||
windowList.sort( [this, viewLinker]( QMdiSubWindow* lhs, QMdiSubWindow* rhs ) {
|
||||
RimViewWindow* lhsViewWindow = findViewWindowFromSubWindow( lhs );
|
||||
RimViewWindow* rhsViewWindow = findViewWindowFromSubWindow( rhs );
|
||||
RimGridView* lhsGridView = dynamic_cast<RimGridView*>( lhsViewWindow );
|
||||
RimGridView* rhsGridView = dynamic_cast<RimGridView*>( rhsViewWindow );
|
||||
|
||||
if ( viewLinker )
|
||||
{
|
||||
if ( viewLinker->isFirstViewDependentOnSecondView( lhsGridView, rhsGridView ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if ( viewLinker->isFirstViewDependentOnSecondView( rhsGridView, lhsGridView ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
windowList.sort( [this]( QMdiSubWindow* lhs, QMdiSubWindow* rhs ) {
|
||||
if ( lhs->frameGeometry().topLeft().ry() == rhs->frameGeometry().topLeft().ry() )
|
||||
{
|
||||
return lhs->frameGeometry().topLeft().rx() < rhs->frameGeometry().topLeft().rx();
|
||||
@@ -2007,7 +1982,7 @@ void RiuMainWindow::tileSubWindows()
|
||||
|
||||
bool prevActivationBlock = isBlockingSubWindowActivatedSignal();
|
||||
|
||||
QMdiSubWindow* a = m_mdiArea->activeSubWindow();
|
||||
QMdiSubWindow* activeWindow = m_mdiArea->activeSubWindow();
|
||||
|
||||
// Force activation order so they end up in the order of the loop.
|
||||
m_mdiArea->setActivationOrder( QMdiArea::ActivationHistoryOrder );
|
||||
@@ -2023,7 +1998,7 @@ void RiuMainWindow::tileSubWindows()
|
||||
m_mdiArea->tileSubWindows();
|
||||
// Set back the original activation order to avoid messing with the standard ordering
|
||||
m_mdiArea->setActivationOrder( currentActivationOrder );
|
||||
m_mdiArea->setActiveSubWindow( a );
|
||||
m_mdiArea->setActiveSubWindow( activeWindow );
|
||||
setBlockSubWindowActivatedSignal( prevActivationBlock );
|
||||
|
||||
storeSubWindowTiling( true );
|
||||
|
||||
Reference in New Issue
Block a user