[Qgis-developer] Plugin Development C++ Windows - Any response?

Barend Gehrels barend at xs4all.nl
Sat Feb 26 06:52:36 EST 2011


Hi Tim, Charlie,

Thanks for your answers.


> The best is to look at src/gui/qgisinterface.h which shows the various
> methods and objects available to the api. You can also manipulate the
> main window app from within you plugin via qGisInterface->mainWindow()

OK, that is useful. But I actually meant the interface a plugin has to 
implement. Of course I can look in the source and that will be 
QgisPlugin. It is small, I like it.


>>
>> I can imagine the API is not binary compatible for some upgrades (usually it
>> is extended so then still compatible, depending on the model used). Is there
>> not a mechanism to check if a plugin corresponds to the version of the host
>> (qgis)? I think this is feasable...
> Yes the version is available within the QGIS namespace: QGis::QGIS_VERSION

What I mean is this: adding one method to QgisPlugin, e.g.:
virtual int interfaceVersion() = 0;

which gives back a interface_version_number. That number only changes if 
the (plugin) interface changes. QGis can check if the plugin does 
implement the right interface.

But I now understand better that if the plugin calls back the qgis API, 
also that interface has to be stable. So in practice this will indeed 
change with every version. But anyway, even then, qgis can check that 
number as its first action and discard that plugin if the 
interface_version_number is wrong.

So IMO it is not this:
//! Version of the plugin
QString & version()

Because that is the version of the plugin, obviously, and not the 
version of the ABI/API.




> We maintain backwards compatibility for API. So if a method name
> changes for example the old name must remain as a wrapper for the new
> method. Old methods are marked as deprecated in the docs and in major
> releases (e.g. upcoming 2.0) we will shed deprecated methods from the
> API.
>
> Because we use C++ ABI compatibility is not possible between versions.
> This doesnt affect python (as the plugins only need the same language
> binding elements to be present) so it is an advantage for python that
> its not vulnerable to lib updates.

Understood.


Regards, Barend



More information about the Qgis-developer mailing list