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:
Magne Sjaastad
2022-10-31 10:41:50 +01:00
committed by GitHub
parent ed8fa08b13
commit 9b61ebcac2
11 changed files with 95 additions and 48 deletions

View File

@@ -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 );
}
}

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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;
};

View File

@@ -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 )
{

View File

@@ -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();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -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 );

View File

@@ -80,6 +80,7 @@ void RimViewLinkerCollection::fieldChangedByUi( const caf::PdmFieldHandle* chang
}
viewLinker()->updateDependentViews();
viewLinker()->updateWindowTitles();
}
}

View File

@@ -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();