Add preview mode to multi plots

* Apply margins matching the Page Layout so the plot is a preview of the PDF output
* Currently not a user setting, just switched off for plots based on MultiPlotPage and on for plots based on
MultiPlotWindow
This commit is contained in:
Gaute Lindkvist 2020-01-08 08:53:06 +01:00
parent 3d5903b9c4
commit de68df122d
8 changed files with 86 additions and 6 deletions

View File

@ -105,7 +105,9 @@ void RicSnapshotViewToFileFeature::savePlotPDFReportAs( const QString& fileName,
pdfPrinter.setCreator( QCoreApplication::applicationName() );
pdfPrinter.setResolution( resolution );
QRect widgetRect = plot->viewWidget()->contentsRect();
if ( dynamic_cast<RimMultiPlotWindow*>( plot ) )
RimMultiPlotWindow* multiPlot = dynamic_cast<RimMultiPlotWindow*>( plot );
if ( multiPlot && multiPlot->previewModeEnabled() )
{
QRect pageRect = pdfPrinter.pageLayout().fullRectPixels( resolution );
plot->viewWidget()->resize( pageRect.size() );

View File

@ -465,6 +465,18 @@ bool RimMultiPlotWindow::acceptDrops() const
return m_acceptDrops;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimMultiPlotWindow::previewModeEnabled() const
{
if ( m_viewer )
{
return m_viewer->previewModeEnabled();
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -103,6 +103,8 @@ public:
void setAcceptDrops( bool acceptDrops );
bool acceptDrops() const;
bool previewModeEnabled() const;
protected:
QImage snapshotWindowContent() override;

View File

@ -50,6 +50,9 @@ public:
virtual void setFontSize( int fontSize ) = 0;
virtual int fontSize() const = 0;
virtual bool previewModeEnabled() const = 0;
virtual void setPreviewModeEnabled( bool previewMode ) = 0;
virtual void scheduleUpdate() = 0;
virtual void scheduleReplotOfAllPlots() = 0;
virtual void updateVerticalScrollBar( double visibleMin, double visibleMax, double totalMin, double totalMax ) = 0;

View File

@ -66,6 +66,7 @@
RiuMultiPlotPage::RiuMultiPlotPage( RimMultiPlotWindow* plotDefinition, QWidget* parent )
: RiuMultiPlotInterface( parent )
, m_plotDefinition( plotDefinition )
, m_previewMode( false )
{
Q_ASSERT( plotDefinition );
m_plotDefinition = plotDefinition;
@ -288,6 +289,22 @@ int RiuMultiPlotPage::fontSize() const
return m_plotTitle->font().pointSize() - 2;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiuMultiPlotPage::previewModeEnabled() const
{
return m_previewMode;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMultiPlotPage::setPreviewModeEnabled( bool previewMode )
{
m_previewMode = previewMode;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -554,10 +571,17 @@ int RiuMultiPlotPage::heightForWidth( int width ) const
//--------------------------------------------------------------------------------------------------
void RiuMultiPlotPage::updateMarginsFromPageLayout()
{
QPageLayout pageLayout = m_plotDefinition->pageLayout();
const int resolution = RiaGuiApplication::applicationResolution();
QMargins margins = pageLayout.marginsPixels( resolution );
m_layout->setContentsMargins( margins );
if ( m_previewMode )
{
QPageLayout pageLayout = m_plotDefinition->pageLayout();
const int resolution = RiaGuiApplication::applicationResolution();
QMargins margins = pageLayout.marginsPixels( resolution );
m_layout->setContentsMargins( margins );
}
else
{
m_layout->setContentsMargins( 0, 0, 0, 0 );
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -74,6 +74,9 @@ public:
void setFontSize( int fontSize ) override;
int fontSize() const override;
bool previewModeEnabled() const override;
void setPreviewModeEnabled( bool previewMode ) override;
void scheduleUpdate() override;
void scheduleReplotOfAllPlots() override;
void updateVerticalScrollBar( double visibleMin, double visibleMax, double totalMin, double totalMax ) override {}
@ -136,6 +139,7 @@ protected:
QList<QPointer<RiuQwtPlotWidget>> m_plotWidgets;
caf::PdmPointer<RimMultiPlotWindow> m_plotDefinition;
QPointer<QLabel> m_dropTargetPlaceHolder;
bool m_previewMode;
caf::UiStyleSheet m_dropTargetStyleSheet;

View File

@ -103,6 +103,7 @@ RiuMultiPlotWindow::RiuMultiPlotWindow( RimMultiPlotWindow* plotDefinition, QWid
, m_plotDefinition( plotDefinition )
, m_plotTitle( "Multi Plot" )
, m_titleVisible( true )
, m_previewMode( true )
{
Q_ASSERT( plotDefinition );
m_plotDefinition = plotDefinition;
@ -250,10 +251,13 @@ void RiuMultiPlotWindow::setFontSize( int fontSize )
font.setPixelSize( pixelSize );
this->setFont( font );
for ( auto page : m_pages )
{
page->setFontSize( fontSize );
}
scheduleUpdate();
}
//--------------------------------------------------------------------------------------------------
@ -272,6 +276,29 @@ int RiuMultiPlotWindow::indexOfPlotWidget( RiuQwtPlotWidget* plotWidget )
return m_plotWidgets.indexOf( plotWidget );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiuMultiPlotWindow::previewModeEnabled() const
{
return m_previewMode;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMultiPlotWindow::setPreviewModeEnabled( bool previewMode )
{
m_previewMode = previewMode;
for ( auto page : m_pages )
{
page->setPreviewModeEnabled( previewModeEnabled() );
}
scheduleUpdate();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -471,9 +498,11 @@ void RiuMultiPlotWindow::createPages()
page->setVisible( true );
page->performUpdate();
}
// Reapply plot titles
// Reapply plot settings
setPlotTitle( m_plotTitle );
setFontSize( fontSize() );
setTitleVisible( m_titleVisible );
setPreviewModeEnabled( m_previewMode );
m_book->adjustSize();
}

View File

@ -77,6 +77,9 @@ public:
int indexOfPlotWidget( RiuQwtPlotWidget* plotWidget );
bool previewModeEnabled() const override;
void setPreviewModeEnabled( bool previewMode ) override;
void scheduleUpdate();
void scheduleReplotOfAllPlots();
void updateVerticalScrollBar( double visibleMin, double visibleMax, double totalMin, double totalMax ) override {}
@ -118,4 +121,5 @@ protected:
caf::PdmPointer<RimMultiPlotWindow> m_plotDefinition;
QString m_plotTitle;
bool m_titleVisible;
bool m_previewMode;
};