API changes for version 2.0

This is a list of changes for 2.0 which are breaking the API compatibility. It also serves as a basic guide on how to port plugins from 1.x to 2.0

Main application

QgisApp

Removed methods:
  • addRasterLayer( QString const &rasterLayerPath, QString const &baseName, QString const &providerKey, QStringList const & layers, QStringList const & styles, QString const &format, QString const &crs )
    This method was a hack for WMS used before true raster providers. Use QgsDataSourceURI to create encoded URI and addRasterLayer( QString const & uri, QString const & baseName, QString const & providerKey );

QgisAppInterface

Removed methods:
  • addRasterLayer( const QString& url, const QString& baseName, const QString& providerKey, const QStringList& layers, const QStringList& styles, const QString& format, const QString& crs )
    Replaced by addRasterLayer( const QString& url, const QString& baseName, const QString& providerKey)

QgsRasterLayer

Removed methods:
  • QgsRasterLayer( int dummy, const QString & baseName = QString(), const QString & path = QString(), const QString & providerLib = QString(), const QStringList & layers = QStringList(), const QStringList & styles = QStringList(), const QString & format = QString(), const QString & crs = QString() );
    Replaced by QgsRasterLayer( const QString & uri, const QString & baseName, const QString & providerKey, bool loadDefaultStyleFlag = true );
  • setDataProvider( QString const & provider, QStringList const & layers, QStringList const & styles, QString const & format, QString const & theCrs, bool loadDefaultStyleFlag )
    Replaced by setDataProvider( QString const & provider)
  • setDataProvider( QString const & provider, QStringList const & layers, QStringList const & styles, QString const & format, QString const & theCrs )
    Replaced by setDataProvider( QString const & provider)

QgsComposerView

Removed methods:
  • addComposerLabel
  • addComposerMap
  • addComposerScaleBar
  • addComposerLegend
  • addComposerPicture
  • addComposerShape
  • addComposerTable
  • pushAddRemoveCommand
  • sendItemAddedSignal
Removed signals:
  • composerLabelAdded
  • composerMapAdded
  • composerScaleBarAdded
  • composerLegendAdded
  • composerPictureAdded

To port 1.x plugins, use the corresponding methods and signals of QgsComposition

PostrgeSQL data provider

Look at ce4fc1daa5

Best practises for Plugin developers

During a transition time, a plugin sould work with both the old and new API.
This can be achieved with exception handling in an import clause e.g.:

try:
    from qgis.core import newFunctionName as newFunctionName
except:
    from qgis.core import oldFunctionName as newFunctionName

Following the duck typing scheme of dynamic langagues, this could also be done before calling the function:

if hasattr(composerView, "addComposerShape"):
    composerView.addComposerShape(item)
else:
    composition.addComposerShape(item)