[Digikam-devel] [Bug 307337] Add versioning to libkipi

Marcel Wiesweg marcel.wiesweg at gmx.de
Tue Sep 25 14:28:23 BST 2012


https://bugs.kde.org/show_bug.cgi?id=307337

--- Comment #1 from Marcel Wiesweg <marcel.wiesweg at gmx.de> ---
This is a major feature request, and has been troubling me for some time.

Versioning is currently implemented inside digikam. 
The parts required for this request are
a) format XML describing the history and add it to the image's metadata on save
b) for the parent object, define a history image id, write it to metadata if
possible, and tell it to the host app. (there's some interoperability dirt
here, unavoidable if the file is not writable)

One approach to open this functionality to kipi plugins would be to add
abstract methods to the kipi library. Problem: Only digikam will ever implement
these methods. Advantage: Kipi plugins support versioning when run under
digikam Disadvantage: Kipi plugins will not do this when run from all other
host apps.

The clean approach means factoring out a library from parts of digikam
versioning code. Quite cleanly, the three files in libs/dimg/imagehistory have
no dependencies except for Qt. To do this right, there is quite some glue code
inside DImg, which can be factored out to the generic class VersionedImage
without loss. It's depending on a bit of code in DImgLoader and DMetadata,
mostly the way we create the file hash. All this essentially depends only on
libkexiv2 and Qt and could be factored to a sublibrary of libkexiv2 (or a
library of its own, unless we want to avoid that).

This is not the full story, things like replaying actions and storing
intermediate steps are probably out of the scope of opening to libkipi, at the
moment. What we'd get here is the information: I am derived from file xy, with
a step of the name yz.

-- 
You are receiving this mail because:
You are the assignee for the bug.



More information about the Digikam-devel mailing list