digikam 6.0.x and kipi-plugins

Gilles Caulier caulier.gilles at gmail.com
Sun Feb 10 14:37:59 GMT 2019


Le dim. 10 févr. 2019 à 15:12, Rex Dieter <rdieter at gmail.com> a écrit :

> Just so we're clear here.  It sounds like you didn't explicitly address my
> "dropping these means a significant reduction of functionality for other
> kipi-plugin consumers (like gwenview)" comment.
>
> So other kipi-plugin consumers (like gwenview) will be losing
> functionality?  If so, I may have trouble justifying providing such a
> digikam update in stable distro releases.
>

No. kipi-plugins still here, are libkipi. just digiKam do not use libkipi
anymore with 6.0.0.


>
> Or are other existing libkipi apps being adjusted to use these newer
> digikam interfaces too?
>

Good question.
The goal about the new digiKam start, after 2 years of development (last
stable was 5.9.0, but 6.0.0 have been started 2 year ago), is to rewrite
the whole plugins interface.

In fact, in next digiKam 6.1.0, we will come with 3 levels of plugins :
generic (as kipi), but also Editor (for digiKam image editor and Showfoto),
and Bqm, for the Batch Queue Manager.

We have something like more than 100 plugins now...

[gilles at localhost digikam]$ pwd
/usr/lib64/qt5/plugins/digikam

[gilles at localhost digikam]$ tree
.
├── bqm
│   ├── Bqm_AntiVignetting_Plugin.so
│   ├── Bqm_AssignTemplate_Plugin.so
│   ├── Bqm_AutoCorrection_Plugin.so
│   ├── Bqm_BcgCorrection_Plugin.so
│   ├── Bqm_Blur_Plugin.so
│   ├── Bqm_Border_Plugin.so
│   ├── Bqm_BWconvert_Plugin.so
│   ├── Bqm_ChannelMixer_Plugin.so
│   ├── Bqm_ColorBalance_Plugin.so
│   ├── Bqm_ColorFX_Plugin.so
│   ├── Bqm_Convert16To8_Plugin.so
│   ├── Bqm_Convert8To16_Plugin.so
│   ├── Bqm_ConvertToDNG_Plugin.so
│   ├── Bqm_ConvertToJP2lugin_Plugin.so
│   ├── Bqm_ConvertToJPEG_Plugin.so
│   ├── Bqm_ConvertToPGF_Plugin.so
│   ├── Bqm_ConvertToPNG_Plugin.so
│   ├── Bqm_ConvertToTIFF_Plugin.so
│   ├── Bqm_Crop_Plugin.so
│   ├── Bqm_CurvesAdjust_Plugin.so
│   ├── Bqm_FilmGrain_Plugin.so
│   ├── Bqm_Flip_Plugin.so
│   ├── Bqm_HslCorrection_Plugin.so
│   ├── Bqm_IccConvert_Plugin.so
│   ├── Bqm_Invert_Plugin.so
│   ├── Bqm_LensAutoFix_Plugin.so
│   ├── Bqm_LocalContrast_Plugin.so
│   ├── Bqm_NoiseReduction_Plugin.so
│   ├── Bqm_RedEyeCorrection_Plugin.so
│   ├── Bqm_RemoveMetadata_Plugin.so
│   ├── Bqm_Resize_Plugin.so
│   ├── Bqm_Restoration_Plugin.so
│   ├── Bqm_Rotate_Plugin.so
│   ├── Bqm_Sharpen_Plugin.so
│   ├── Bqm_TimeAdjust_Plugin.so
│   ├── Bqm_UserScript_Plugin.so
│   ├── Bqm_WaterMark_Plugin.so
│   └── Bqm_WhiteBalance_Plugin.so
├── editor
│   ├── Editor_AdjustCurvesTool_Plugin.so
│   ├── Editor_AdjustLevelsTool_Plugin.so
│   ├── Editor_AntivignettingTool_Plugin.so
│   ├── Editor_AutoCorrectionTool_Plugin.so
│   ├── Editor_AutoCropTool_Plugin.so
│   ├── Editor_BcgTool_Plugin.so
│   ├── Editor_BlurFxTool_Plugin.so
│   ├── Editor_BlurTool_Plugin.so
│   ├── Editor_BorderTool_Plugin.so
│   ├── Editor_BWSepiaTool_Plugin.so
│   ├── Editor_CBTool_Plugin.so
│   ├── Editor_ChannelMixerTool_Plugin.so
│   ├── Editor_CharcoalTool_Plugin.so
│   ├── Editor_ColorFxTool_Plugin.so
│   ├── Editor_ContentAwareResizeTool_Plugin.so
│   ├── Editor_Convert16To8Tool_Plugin.so
│   ├── Editor_Convert8To16Tool_Plugin.so
│   ├── Editor_DistortionFxTool_Plugin.so
│   ├── Editor_EmbossTool_Plugin.so
│   ├── Editor_FilmGrainTool_Plugin.so
│   ├── Editor_FilmTool_Plugin.so
│   ├── Editor_FreeRotationTool_Plugin.so
│   ├── Editor_HotpixelsTool_Plugin.so
│   ├── Editor_HSLTool_Plugin.so
│   ├── Editor_InserTextTool_Plugin.so
│   ├── Editor_InsertTextTool_Plugin.so
│   ├── Editor_InvertTool_Plugin.so
│   ├── Editor_LensAutoFixTool_Plugin.so
│   ├── Editor_LensDistortionTool_Plugin.so
│   ├── Editor_LocalContrastTool_Plugin.so
│   ├── Editor_NoiseReductionTool_Plugin.so
│   ├── Editor_OilPaintTool_Plugin.so
│   ├── Editor_PerspectiveTool_Plugin.so
│   ├── Editor_PrintTool_Plugin.so
│   ├── Editor_ProfileConversionTool_Plugin.so
│   ├── Editor_RainDropTool_Plugin.so
│   ├── Editor_RatioCropTool_Plugin.so
│   ├── Editor_RedEyeTool_Plugin.so
│   ├── Editor_ResizeTool_Plugin.so
│   ├── Editor_RestorationTool_Plugin.so
│   ├── Editor_SharpenTool_Plugin.so
│   ├── Editor_ShearTool_Plugin.so
│   ├── Editor_TextureTool_Plugin.so
│   ├── Editor_WhiteBalanceTool_Plugin.so
│   └── libEditor_HelloWorld_Plugin.so
└── generic
   ├── Generic_Box_Plugin.so
   ├── Generic_Calendar_Plugin.so
   ├── Generic_DigitalScanner_Plugin.so
   ├── Generic_DropBox_Plugin.so
   ├── Generic_ExpoBlending_Plugin.so
   ├── Generic_FaceBook_Plugin.so
   ├── Generic_FileTransfer_Plugin.so
   ├── Generic_Flickr_Plugin.so
   ├── Generic_GeolocationEdit_Plugin.so
   ├── Generic_GLViewer_Plugin.so
   ├── Generic_Google_Plugin.so
   ├── Generic_HtmlGallery_Plugin.so
   ├── Generic_ImageShack_Plugin.so
   ├── Generic_ImgUr_Plugin.so
   ├── Generic_IpFs_Plugin.so
   ├── Generic_JAlbum_Plugin.so
   ├── Generic_MediaServer_Plugin.so
   ├── Generic_MediaWiki_Plugin.so
   ├── Generic_MetadataEdit_Plugin.so
   ├── Generic_OneDrive_Plugin.so
   ├── Generic_Panorama_Plugin.so
   ├── Generic_Pinterest_Plugin.so
   ├── Generic_Piwigo_Plugin.so
   ├── Generic_Presentation_Plugin.so
   ├── Generic_PrintCreator_Plugin.so
   ├── Generic_Rajce_Plugin.so
   ├── Generic_SendByMail_Plugin.so
   ├── Generic_SmugMug_Plugin.so
   ├── Generic_TimeAdjust_Plugin.so
   ├── Generic_Twitter_Plugin.so
   ├── Generic_VideoSlideShow_Plugin.so
   ├── Generic_VKontakte_Plugin.so
   └── Generic_YandexFotki_Plugin.so

3 directories, 116 files

All plugin mechanisms are inspired from Marble stuff. It use a pure and
simple Qt5 API. All plugin types use shared components from digiKam core.
Plugin types share same classes internally, and this prevent code
duplication and permit to implement a new plugin very quickly without to
re-invent the wheel.

Later 6.1.0, we will create more plugin types step by step, as face
engines, maintenance tools, image loaders, etc... This will take time, but
it's the plan to make all lead features as plugins in digiKam. This way
permit to isolate well all digiKam components which will be more easy for
external contributor to patch and create new ones, without to touch
internal implementations.

So to come back about the sharing plugin with other KDE applications. why
not, i don't say no, _but_, the plugin interface still in digiKam core.
External KDE applications who want load plugins will need to use digiKam
core, as extra dependency.

Voilà for some technical details, and the plan...

Best

Gilles Caulier

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/digikam-devel/attachments/20190210/d13a67f5/attachment.html>


More information about the Digikam-devel mailing list