Revision 707597
Go back to digest for 9th September 2007Features in Office
I realized the other day that our plugin versioning system is a bit weak; it doesn't scale well beyond the simple usage of 1 codebase. So I thought lets fix that :)
Specifically I made the following possible;
* allowing users to download a plugin that a 3rd party made and just install it without things breaking. This specifically means that if the user is running KOffice 2.2 and the plugin uses features in KOffice 2.3, we will not load the plugin. But if the user is running KOffice 2.4 we will load it.
The latter was impossible before.
* The user can install a plugin in his homedir that supersedes the same plugin installed on the system.
I want to allow a user to download a new version and get it loaded without silly things like suddenly seeing 2 versions in his apps.
For this reason I made all registries (in the libs) use both a MinVersion and a PluginVersion variable.
MinVersion basically is a 'minimum required application version for this plugin to run'. So it won't be used if the plugin requires a higher number version of KOffice.
PluginVersion means the version of the plugin. If multiple are found, the highest number is used.
The version I put as the current one is '0', so any plugin that should have a minimum version of 0. This may sound a bit weird as we normally start counting at 1, but I did this on purpose due to 2 reasons.
1) it fits nicely with the KOffice minor version. So KOffice2.3 will have a minimum version of 3.
2) we won't freeze the APIs until KOffice2.1, so the first real version that external plugin implementers will actually see is version 1.
File Changes
- /trunk/koffice
- /kchart/shape/chartshape.desktop
- /kformula/flake/formulashape.desktop
- /kspread/flake/tableshape.desktop
- /libs/flake/flake.desktop
- /libs/flake/flakeshape.desktop
- /libs/flake/flaketool.desktop
- /libs/flake/KoShapeBorderRegistry.cpp
- /libs/flake/KoShapeRegistry.cpp
- /libs/flake/KoToolRegistry.cpp
- /libs/kotext/inlinetextobject.desktop
- /libs/kotext/KoInlineObjectRegistry.cpp
- /libs/kotext/KoTextEditingRegistry.cpp
- /libs/kotext/texteditingplugin.desktop
- /libs/main/KoDockRegistry.cpp
- /libs/main/kofficedocker.desktop
- /libs/main/KoPluginLoader.cpp
- /libs/pigment/KoColorSpaceRegistry.cpp
- /libs/pigment/pigment.desktop
- /plugins/autocorrection/autocorrect.desktop
- /plugins/changecase/changecase.desktop
- /plugins/defaultTools/defaulttools.desktop
- /plugins/dockers/kofficedockers.desktop
- /plugins/spellcheck/spellcheck.desktop
- /plugins/variables/textvariables.desktop
- /shapes/divineProportion/divineproportionshape.desktop
- /shapes/musicshape/musicshape.desktop
- /shapes/pathshapes/pathshapes.desktop
- /shapes/pictureshape/pictureshape.desktop
- /shapes/text/textshape.desktop
- /shapes/videoshape/videoshape.desktop
- /tools/thesaurus/thesaurustool.desktop
- /karbon/plugins/tools/karbontools.desktop
- /plugins/colorspaces/cmyk_u16/krita_cmyk_u16_plugin.desktop
- /plugins/colorspaces/cmyk_u8/kritacmykplugin.desktop
- /plugins/colorspaces/gray_u16/koffice_graya_u16_plugin.desktop
- /plugins/colorspaces/gray_u8/kofficegrayaplugin.desktop
- /plugins/colorspaces/rgb_u8/kritargbplugin.desktop