<div dir="ltr">Hi Kosta,<br><br>Welcome in kipi project. We are always happy to see new contributor... Writing smugmug plugin is a fine idea.<br><br>In first, you need to knoiw that KDE3 branche is closed for new implementation. you will work on KDE4 code using trunk:<br>

<br><a href="http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/" target="_blank">http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/</a><br><br>There is a main library to use in your plugin to play with host application (as digiKam): libkipi. Since KDE4.1, this lib is hosted by in KDEGraphics and published with KDE4 distro. source code is here:<br>

<br><a href="http://websvn.kde.org/trunk/KDE/kdegraphics/libs/" target="_blank">http://websvn.kde.org/trunk/KDE/kdegraphics/libs/</a><br><br>There are others libraries here used by kipi-plugins and digiKam as:<br><br>libkexiv2 : C++ wrapper around Exiv2 library dedicated to host common method to play with metadata following this paper : <a href="http://www.metadataworkinggroup.com/pdf/mwg_guidance.pdf">http://www.metadataworkinggroup.com/pdf/mwg_guidance.pdf</a><br>

libkdcraw : C++ wrapper around LibRaw library to play with Raw files.<br>libksane : a Sane interface to play with flat scanners.<br><br>I&#39;m afraid about API doc. nothing is published on KDE API web site about these libraries. i will contact maintainer&#39;s... At least, API doc is available in header files. You can run Doxygen in your computer to generate a suitable html documentation.<br>
<br>A second way to start a new plugin is to take a look into current code as FlickrExport tool:<br><br><a href="http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/flickrexport/">http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/flickrexport/</a><br>
<br><a href="http://www.digikam.org/drupal/node/346">http://www.digikam.org/drupal/node/346</a><br><br>The plugin declaration to host application is done here :<br><br><a href="http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/flickrexport/plugin_flickrexport.cpp?view=markup">http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/flickrexport/plugin_flickrexport.cpp?view=markup</a><br>
<br>... where you create menu action (look properties in libkipi) and methods to run when user use it. In Flickr tool, a dialog is created and display current selected items from host appliction to post on web service. This is exactly what you need.<br>
<br>libkipi provide a set of container to host collections, selections, items...&nbsp; properties. Just use it in your plugin. take a care that kipi interface are generally non-reentrant and do not support (yet) multithreading. Note that libkexiv2, libkdcraw support multithreading.<br>
<br>libkipi interface provides virtual classes re-implemented in host application, especially to render virtual collection contents widget following host application design. It&#39;s the case for ex with Flash Export plugin:<br>
<br><a href="http://www.flickr.com/photos/digikam/2608034196/">http://www.flickr.com/photos/digikam/2608034196/</a><br><br>In kipi-plugins, you will find a collection of common code to use in your plugin :<br><br><a href="http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/common/libkipiplugins/">http://websvn.kde.org/trunk/extragear/graphics/kipi-plugins/common/libkipiplugins/</a><br>
<br>Just read header files for details.<br><br>Of course, you can post question in this room or join #kde-imaging and #digiKam irc channels to find help.<br><br>Note : It&#39;s not too late to contribute to Coding Sprint planed in Genoa (Italia) between 31 october and 2 november. It&#39;s a perfect way to meet developpers and learn more about kipi project:<br>

<br><a href="http://www.digikam.org/drupal/node/374" target="_blank">http://www.digikam.org/drupal/node/374</a><br><br>Best<br><br>Gilles Caulier<br></div>