mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Show progress bar when appending plots to multiplot (#8976)
* Show progress bar when appending plots to multiplot * Stop plot manager from going crazy creating plots when filter text is blank * Speed up plot manager create plot
This commit is contained in:
parent
17f169e513
commit
db589c7e32
@ -35,6 +35,7 @@
|
||||
#include "RimSummaryPlot.h"
|
||||
|
||||
#include "cafAssert.h"
|
||||
#include "cafProgressInfo.h"
|
||||
#include "cafSelectionManager.h"
|
||||
|
||||
#include <QAction>
|
||||
@ -63,6 +64,8 @@ void RicAppendSummaryPlotsForObjectsFeature::appendPlots( RimSummaryMultiPlot* s
|
||||
auto sourcePlots = summaryMultiPlot->summaryPlots();
|
||||
auto plotsForOneInstance = plotsForOneInstanceOfObjectType( sourcePlots, selectionType );
|
||||
|
||||
caf::ProgressInfo info( sumAddressCollections.size(), "Appending plots..." );
|
||||
|
||||
for ( auto summaryAdrCollection : sumAddressCollections )
|
||||
{
|
||||
auto duplicatedPlots = RicSummaryPlotBuilder::duplicateSummaryPlots( plotsForOneInstance );
|
||||
@ -94,6 +97,7 @@ void RicAppendSummaryPlotsForObjectsFeature::appendPlots( RimSummaryMultiPlot* s
|
||||
duplicatedPlot->resolveReferencesRecursively();
|
||||
}
|
||||
}
|
||||
info.incrementProgress();
|
||||
}
|
||||
|
||||
summaryMultiPlot->loadDataAndUpdate();
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "RimSummaryMultiPlot.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
|
||||
#include "cafProgressInfo.h"
|
||||
#include "cafSelectionManager.h"
|
||||
|
||||
#include <QAction>
|
||||
@ -43,6 +44,8 @@ void RicAppendSummaryPlotsForSummaryAddressesFeature::appendPlotsForAddresses( R
|
||||
if ( !summaryMultiPlot ) return;
|
||||
if ( addresses.empty() ) return;
|
||||
|
||||
caf::ProgressInfo info( addresses.size(), "Appending plots..." );
|
||||
|
||||
for ( auto adr : addresses )
|
||||
{
|
||||
auto* plot = new RimSummaryPlot();
|
||||
@ -50,6 +53,8 @@ void RicAppendSummaryPlotsForSummaryAddressesFeature::appendPlotsForAddresses( R
|
||||
plot->handleDroppedObjects( { adr } );
|
||||
|
||||
summaryMultiPlot->addPlot( plot );
|
||||
|
||||
info.incrementProgress();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -478,11 +478,11 @@ RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( con
|
||||
appendPlotsToSummaryMultiPlot( summaryMultiPlot, plots );
|
||||
|
||||
summaryMultiPlot->setDefaultRangeAggregationSteppingDimension();
|
||||
summaryMultiPlot->zoomAll();
|
||||
|
||||
plotCollection->updateAllRequiredEditors();
|
||||
summaryMultiPlot->loadDataAndUpdate();
|
||||
summaryMultiPlot->updateAllRequiredEditors();
|
||||
summaryMultiPlot->zoomAll();
|
||||
|
||||
if ( !plots.empty() )
|
||||
{
|
||||
@ -527,6 +527,7 @@ RimSummaryMultiPlot* RicSummaryPlotBuilder::createAndAppendSingleSummaryMultiPlo
|
||||
void RicSummaryPlotBuilder::appendPlotsToSummaryMultiPlot( RimSummaryMultiPlot* multiPlot,
|
||||
const std::vector<RimSummaryPlot*>& plots )
|
||||
{
|
||||
multiPlot->startBatchAddOperation();
|
||||
for ( auto plot : plots )
|
||||
{
|
||||
plot->revokeMdiWindowStatus();
|
||||
@ -535,9 +536,8 @@ void RicSummaryPlotBuilder::appendPlotsToSummaryMultiPlot( RimSummaryMultiPlot*
|
||||
|
||||
plot->resolveReferencesRecursively();
|
||||
plot->setShowWindow( true );
|
||||
|
||||
plot->loadDataAndUpdate();
|
||||
}
|
||||
multiPlot->endBatchAddOperation();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -46,6 +46,7 @@ CAF_PDM_SOURCE_INIT( RimMultiPlot, "MultiPlot" );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimMultiPlot::RimMultiPlot()
|
||||
: m_isValid( true )
|
||||
, m_delayPlotUpdatesDuringBatchAdd( false )
|
||||
{
|
||||
CAF_PDM_InitObject( "Multi Plot", ":/MultiPlot16x16.png" );
|
||||
|
||||
@ -197,9 +198,12 @@ void RimMultiPlot::insertPlot( RimPlot* plot, size_t index )
|
||||
plot->createPlotWidget( m_viewer );
|
||||
m_viewer->insertPlot( plot->plotWidget(), index );
|
||||
}
|
||||
plot->updateAfterInsertingIntoMultiPlot();
|
||||
|
||||
onPlotAdditionOrRemoval();
|
||||
if ( !m_delayPlotUpdatesDuringBatchAdd )
|
||||
{
|
||||
plot->updateAfterInsertingIntoMultiPlot();
|
||||
onPlotAdditionOrRemoval();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -916,3 +920,20 @@ bool RimMultiPlot::isValid() const
|
||||
{
|
||||
return m_isValid;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMultiPlot::startBatchAddOperation()
|
||||
{
|
||||
m_delayPlotUpdatesDuringBatchAdd = true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimMultiPlot::endBatchAddOperation()
|
||||
{
|
||||
m_delayPlotUpdatesDuringBatchAdd = false;
|
||||
onPlotAdditionOrRemoval();
|
||||
}
|
||||
|
@ -69,6 +69,9 @@ public:
|
||||
void removePlot( RimPlot* plot ) override;
|
||||
void movePlotsToThis( const std::vector<RimPlot*>& plots, int insertAtPosition );
|
||||
|
||||
virtual void startBatchAddOperation();
|
||||
virtual void endBatchAddOperation();
|
||||
|
||||
virtual void removePlotNoUpdate( RimPlot* plot );
|
||||
virtual void updateAfterPlotRemove();
|
||||
|
||||
@ -169,6 +172,8 @@ protected:
|
||||
friend class RiuMultiPlotBook;
|
||||
QPointer<RiuMultiPlotBook> m_viewer;
|
||||
|
||||
bool m_delayPlotUpdatesDuringBatchAdd;
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimPlot*> m_plots;
|
||||
|
||||
|
@ -382,6 +382,8 @@ void RimSummaryPlotManager::replaceCurves()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlotManager::createNewPlot()
|
||||
{
|
||||
if ( m_filterText().trimmed().isEmpty() ) return;
|
||||
|
||||
std::vector<RimSummaryCase*> summaryCases;
|
||||
std::vector<RimSummaryCaseCollection*> ensembles;
|
||||
findFilteredSummaryCasesAndEnsembles( summaryCases, ensembles );
|
||||
@ -400,24 +402,8 @@ void RimSummaryPlotManager::createNewPlot()
|
||||
auto plots = plotBuilder.createPlots();
|
||||
if ( m_createMultiPlot )
|
||||
{
|
||||
{
|
||||
auto summaryPlots = plotBuilder.createPlots();
|
||||
RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( summaryPlots );
|
||||
}
|
||||
|
||||
bool createStandardMultiPlot = false;
|
||||
if ( createStandardMultiPlot )
|
||||
{
|
||||
// Code to generate a standard multi plot
|
||||
std::vector<RimPlot*> plotsForMultiPlot;
|
||||
for ( auto p : plots )
|
||||
{
|
||||
p->loadDataAndUpdate();
|
||||
plotsForMultiPlot.push_back( dynamic_cast<RimPlot*>( p ) );
|
||||
}
|
||||
|
||||
RicSummaryPlotBuilder::createAndAppendMultiPlot( plotsForMultiPlot );
|
||||
}
|
||||
auto summaryPlots = plotBuilder.createPlots();
|
||||
RicSummaryPlotBuilder::createAndAppendSummaryMultiPlot( summaryPlots );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user