Implement {bar,line}chart writeXml and readXml function, add a plot type() virtual function

This commit is contained in:
Mathieu Pellerin 2025-06-23 16:06:45 +07:00 committed by Nyall Dawson
parent b0a73b65e3
commit c89b4961c8
10 changed files with 72 additions and 4 deletions

View File

@ -9,7 +9,7 @@ try:
except (NameError, AttributeError):
pass
try:
QgsPlot.__virtual_methods__ = ['writeXml', 'readXml']
QgsPlot.__virtual_methods__ = ['type', 'writeXml', 'readXml']
QgsPlot.__group__ = ['plot']
except (NameError, AttributeError):
pass

View File

@ -29,9 +29,16 @@ A simple bar chart class.
QgsBarChart();
~QgsBarChart();
virtual QString type() const;
virtual void renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData = QgsPlotData() );
virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context );
};
@ -55,9 +62,16 @@ A simple line chart class.
QgsLineChart();
~QgsLineChart();
virtual QString type() const;
virtual void renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData = QgsPlotData() );
virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context );
};
/************************************************************************

View File

@ -31,6 +31,8 @@ Base class for plot/chart/graphs.
virtual ~QgsPlot();
virtual QString type() const;
virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
%Docstring
Writes the plot's properties into an XML ``element``.

View File

@ -9,7 +9,7 @@ try:
except (NameError, AttributeError):
pass
try:
QgsPlot.__virtual_methods__ = ['writeXml', 'readXml']
QgsPlot.__virtual_methods__ = ['type', 'writeXml', 'readXml']
QgsPlot.__group__ = ['plot']
except (NameError, AttributeError):
pass

View File

@ -29,9 +29,16 @@ A simple bar chart class.
QgsBarChart();
~QgsBarChart();
virtual QString type() const;
virtual void renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData = QgsPlotData() );
virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context );
};
@ -55,9 +62,16 @@ A simple line chart class.
QgsLineChart();
~QgsLineChart();
virtual QString type() const;
virtual void renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData = QgsPlotData() );
virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context );
};
/************************************************************************

View File

@ -31,6 +31,8 @@ Base class for plot/chart/graphs.
virtual ~QgsPlot();
virtual QString type() const;
virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
%Docstring
Writes the plot's properties into an XML ``element``.

View File

@ -92,6 +92,18 @@ void QgsBarChart::renderContent( QgsRenderContext &context, const QRectF &plotAr
context.painter()->restore();
}
bool QgsBarChart::writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const
{
Qgs2DXyPlot::writeXml( element, document, context );
return true;
}
bool QgsBarChart::readXml( const QDomElement &element, const QgsReadWriteContext &context )
{
Qgs2DXyPlot::readXml( element, context );
return true;
}
void QgsLineChart::renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData )
{
const QList<QgsAbstractPlotSeries *> seriesList = plotData.series();
@ -161,3 +173,15 @@ void QgsLineChart::renderContent( QgsRenderContext &context, const QRectF &plotA
context.painter()->restore();
}
bool QgsLineChart::writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const
{
Qgs2DXyPlot::writeXml( element, document, context );
return true;
}
bool QgsLineChart::readXml( const QDomElement &element, const QgsReadWriteContext &context )
{
Qgs2DXyPlot::readXml( element, context );
return true;
}

View File

@ -37,10 +37,14 @@ class CORE_EXPORT QgsBarChart : public Qgs2DXyPlot
QgsBarChart() = default;
~QgsBarChart() = default;
QString type() const override { return QStringLiteral( "bar" ); }
void renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData = QgsPlotData() ) override;
private:
bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
bool readXml( const QDomElement &element, const QgsReadWriteContext &context ) override;
private:
};
@ -60,8 +64,13 @@ class CORE_EXPORT QgsLineChart : public Qgs2DXyPlot
QgsLineChart() = default;
~QgsLineChart() = default;
QString type() const override { return QStringLiteral( "line" ); }
void renderContent( QgsRenderContext &context, const QRectF &plotArea, const QgsPlotData &plotData = QgsPlotData() ) override;
bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
bool readXml( const QDomElement &element, const QgsReadWriteContext &context ) override;
private:

View File

@ -29,8 +29,9 @@
QgsPlot::~QgsPlot() = default;
bool QgsPlot::writeXml( QDomElement &, QDomDocument &, const QgsReadWriteContext & ) const
bool QgsPlot::writeXml( QDomElement &element, QDomDocument &, const QgsReadWriteContext & ) const
{
element.setAttribute( QStringLiteral( "plotType" ), type() );
return true;
}

View File

@ -48,6 +48,8 @@ class CORE_EXPORT QgsPlot
virtual ~QgsPlot();
virtual QString type() const { return QString(); }
/**
* Writes the plot's properties into an XML \a element.
*/