Bug 126086

Summary: Besides the basic and full exif info I would like a page with selectable fields
Product: [Applications] digikam Reporter: Gerhard Hoogterp <gerhard>
Component: Metadata-ExifAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: wishlist CC: ahuggel, caulier.gilles, lparrab, marcel.wiesweg
Priority: NOR    
Version: 0.8.2   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In: 1.0.0
Attachments: proposal side bar

Description Gerhard Hoogterp 2006-04-22 22:42:18 UTC
Version:           0.8.2-svn (using KDE 3.5.0, Gentoo)
Compiler:          gcc version 3.3.6 (Gentoo 3.3.6, ssp-3.3.6-1.0, pie-8.7.8)
OS:                Linux (i686) release 2.6.14-gentoo-r4

Besides basic and full I would like to see an option "selected" in the properties - exif tab  for which I can  select the shown fields myself.

Basic lacks the fields as often needed for photo websites  while it has fields which I generally couldn't care less about.  Full has everything but makes you search for the info needed. As I realize that everybody's needs are different a page with selectable fields would be great..
Comment 1 Jens 2006-06-24 00:20:59 UTC
Suggestion for this bug: 

Add a checkbox to each field in "Full" view that defines whether this field is visible in the "Basic" view. Save these settings in digikamrc.

I can try and make a patch if Caullier agrees with this.

Jens
Comment 2 caulier.gilles 2006-06-24 00:43:18 UTC
I'm not agree to use this way becaus it will take space in side bar. We are limited... Also settings must be out of application to be unconfuse with user. This is why we use a setup page for all settings.

Also, your solution is not enough. digikam need to follow Exiv2 features, witch drive metadata tags. The list of tags isn't frozen and continue to be discovered (Makernotes).

For that, we need a new page in setup dialog, witch display all tags available  in Exiv2 (Exif, IPTC, Makernote, and in the future XMP). Using tabs is the right way to optimize space in dialog page. 

In this setup, Exiv2 need to be called to get the list of tags available in the version installed on the computer. We display a list with check buttons for all items. When the user valid the setup, the config is recorded in digikamrc file. and used by the sidebar

2 new buttons must be added on the top of sidebar : one to call directly this setup page, a second to display only the users configuration of metadata tags.

But, JensB, this implementation can be long, and complicated. This is why i have delayed this task later than 0.9.0 final.

I recommend you to look in TODO file the tasks to complete to finalize this version before to try to add new features... Choise the most easy task to limit the depencies on the current implementation. I'm sure that there are some easy jobs to do into B.K.O files. We are in 0.9.0-beta1 finalization. Take a care.

Thanks in advance for your help

Gilles 
Comment 3 Jens 2006-06-24 01:45:17 UTC
Looking at 0.9 svn current, the right sidebar IMHO needs to be cleaned up a bit anyway. (I just noticed that you have replied to this already. Just for the record, I'm posting this anyway, maybe for later.)

It is great that I can view all this information of a photograph. But the GUI clutter is far too big (IMHO):

- The right sidebar is unuseable on displays smaller than 1024x768 - there is simply no space. And it is not possible to make it small enough (it probably has a minimum forced size). Can this minimum size perhaps be taken out?

- Now there are *three* (!!) place where the tag tree is shown. It is not easy to see what the purpose of this duplication (triplication) is:

   a) we want to filter images per tags: select a tag
   b) we want to assign tags to images : drop images on a tag

That way, we only need one list with the tags. The left side tag list already does all of this.

- In the "Properties" sidebar tab, what is the difference between "File properties", "Images properties", and "photograph properties"? This is confusing. For example the "date/time" values that digikam shows. For any image, we have

 a) logical datetime values:
    (i) when the picture was taken;
   (ii) when the picture was copied on the computer;
  (iii) when the picture was (last) modified (from within Digikam?).

 b) physical datetime values:
    (1) EXIF:DateTime == DateTimeOriginal == IPTC:Date/TimeCreated
    (2) EXIF:DateTimeDigitized == IPTC:DigitizationDate/Time
    (3) file mtime
    (4) file atime

IMHO, (i) == (1), (ii) == (2) and (iii) == (3), and digikam should only care about the first two of these values.
For the file mtime: either it should be _always_ kept in sync with the datetime value in the DB, or ignored altogether (then one can use 'exiftool' to sync it with the EXIF datetime). But in digikam we are managing photos, not files. Right?


Here follows a proposal for the "Properties" right side tab. The idea is that the first (default) tab shows information that the *user* is interested in, but no technical details that are not related to the actual contents of the photo.


=======================================================================

_______Photograph information:___________
    Name      : (file name)           (editable)
    Date      : xx.xx.xxxx xx:xx:xx   (editable)
   [Digitized : xx.xx.xxxx xx:xx:xx]  (optional, editable)

   Rating     : [* * * * *]           (editable)

   Tags       : xxx, xxx/yyyyyyyyyyyyyy,
                xxxxxxx/yyy, zzzzzzzzzz

   Comments: ________________________
   |                                 |
   |                                 |
   |                                 |
   |_________________________________|


______Technical details:_____________
    Size      : xxx.xxx.xxx bytes
    Type      : xxxxxxxxxxx
    Dimensions: xxxx X xxxx
    
    Camera maker
    Camera model
    Aperture, Zoom, Flash, Exposure, etc.

(and all other EXIF/IPTC info that the user has selected)

=======================================================================

The fields marked "editable" should look like text fields but change into an input field when hovering over them with the mouse. That way you don't acidentally change/delete them, and they are easier to read quickly (than a lot of input boxes).

Reasoning:

- This new arrangement will unify the tabs "Tag filter" and "Comments/Tags" with the "Properties" tab -> less GUI clutter. Only three tabs are left - Properties, Metadata and Colors.
- "Folder" is not necessary, because we are working with Albums, not folders.
- Instead of "Modified" it should show the DB date/time (== EXIF/IPTC date/time) and (optionally) the date/time of digitization. These fields should be editable (upon click).
- "Size" is OK.
- "Owner" and "Permissions" is irrelevant for photos, unless you want to offer a photo LAN sharing system like Apple's iPhoto does. But that would require digikam to be network capable first. :-)

I would be willing to work / help working on this, but first I'd like to know what you think.

Thanks!

Jens
Comment 4 Jens 2006-06-24 14:25:25 UTC
Created attachment 16777 [details]
proposal side bar

Hi,

Here is a proposal for the new side bar. It's in KDevelop Designer format and
just a quick hack (no resizing etc). But it contains tooltips with explanations
what all the fields mean and why I think this arrangement is good.

The idea is to provide general non-technical information about the image
_contents_ first (what is this picture, who did it, where, when, how good is
it, etc).

After that, the main technical info (taken from EXIF/IPTC tags) is shown, and
these should be user-definable in the settings dialog with good defaults.

What do you think?

Jens
Comment 5 caulier.gilles 2006-09-07 18:49:30 UTC
SVN commit 581825 by cgilles:

digiKam from trunk : new Setup album item tooltip section to optimize the informations to show over the picture using the pop-up tool tip window. Each item to show can be set in this new setup dialog tab.

CCBUGS: 126086

 M  +8 -8      digikam.kdevelop  
 M  +207 -130  digikam/albumfiletip.cpp  
 M  +314 -75   digikam/albumsettings.cpp  
 M  +64 -16    digikam/albumsettings.h  
 M  +2 -1      utilities/setup/Makefile.am  
 M  +15 -5     utilities/setup/setup.cpp  
 M  +1 -0      utilities/setup/setup.h  
 M  +18 -35    utilities/setup/setupgeneral.cpp  
 A             utilities/setup/setuptooltip.cpp   [License: GPL]
 A             utilities/setup/setuptooltip.h   [License: GPL]
Comment 6 caulier.gilles 2008-06-04 12:49:12 UTC
*** Bug 145914 has been marked as a duplicate of this bug. ***
Comment 7 caulier.gilles 2009-07-11 13:03:45 UTC
Andreas,

How i can get a list of Exif, Iptc, and XMP tags supported by Exiv2 ?

Gilles
Comment 8 caulier.gilles 2009-07-11 15:04:44 UTC
Andreas,

I take a look to KPhotoAlbum source code to see how tags list is contructed from Exiv2. KphotoAlbum has a way to customize tags to show in information dialog.

Sound like it's not simple :

http://lxr.kde.org/source/extragear/graphics/kphotoalbum/Exif/Info.cpp#102

... especially with makernotes.

I dream to see a method which return a structure with all Exiv2 tags registry database entries, including tags name, tags description, and tags type.

Gilles Caulier
Comment 9 Andreas Huggel 2009-07-11 17:05:41 UTC
Gilles,

It's not quite that bad. The KPhotoAlbum people just didn't follow up and update their code. Look here:

http://dev.exiv2.org/issues/show/564

Andreas
Comment 10 caulier.gilles 2009-07-11 17:22:03 UTC
Ok, now it's clear.

For makernote, it will be nice to have only one method to get all markernotes tags at the same time. Problem to provide one method by maker is to follow Exiv2 version and add new makers supported.

Anyway, i will take a look to your current API and implement a wrapper in libkexiv2

Gilles
Comment 11 caulier.gilles 2009-07-12 09:57:50 UTC
Andreas, 

Exif, Makernotes, and Iptc methods are implemented in libkexiv2 :

http://websvn.kde.org/trunk/KDE/kdegraphics/libs/libkexiv2/libkexiv2/kexiv2exif.cpp?r1=985160&r2=995141

http://websvn.kde.org/trunk/KDE/kdegraphics/libs/libkexiv2/libkexiv2/kexiv2exif.cpp?r1=995141&r2=995145

http://websvn.kde.org/trunk/KDE/kdegraphics/libs/libkexiv2/libkexiv2/kexiv2iptc.cpp?r1=980383&r2=995152

For XMP, it's a little bit complicated, because i need to pass prefix namespace name to get all properties relevant:

http://www.exiv2.org/doc/classExiv2_1_1XmpProperties.html#e280a62dd2f58da353cdc4dede298103

and there is not method to know all registered prefix in Exiv2... Right ?

Gilles
Comment 13 caulier.gilles 2009-07-16 16:13:09 UTC
SVN commit 997792 by cgilles:

new widget to config metadata tags to display on EXIF, IPTC, and XMP view
It will be used in setupMetadata panel.
CCBUGS: 126086


 AM            metadataselector.cpp   [License: GPL (v2+)]
 AM            metadataselector.h   [License: GPL (v2+)]


WebSVN link: http://websvn.kde.org/?view=rev&revision=997792
Comment 14 Mikolaj Machowski 2009-07-16 17:07:45 UTC
On Thursday 16 July 2009 16:13:12 Gilles Caulier wrote:
> new widget to config metadata tags to display on EXIF, IPTC, and XMP view
> It will be used in setupMetadata panel.
> CCBUGS: 126086
>
>
>  AM            metadataselector.cpp   [License: GPL (v2+)]
>  AM            metadataselector.h   [License: GPL (v2+)]

This feature rocks! But:

From commits to kdegraphics/kexiv2 looks like it will be only available in 
trunk which will become 4.4 in January 2010 while digiKam 1.0 is planned for 
September 2009.

And when using URL: 
svn://anonsvn.kde.org/home/kde/branches/KDE/4.3/kdegraphics + digiKam from 
trunk I get:

 In file included from 
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:24:
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.h:68: 
error: expected unqualified-id before '&' token
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.h:68: 
error: expected ',' or '...' before '&' token
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:82: 
error: expected unqualified-id before '&' token
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:82: 
error: expected ',' or '...' before '&' token
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp: 
In member function 'void Digikam::MetadataSelector::setTagsMap()':
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:90: 
error: 'Digikam::DMetadata::TagsMap' has not been declared
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:90: 
error: expected `;' before 'it'
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:90: 
error: 'it' was not declared in this scope
/home/mikolaj/kde/src/extragear/graphics/digikam/libs/widgets/metadata/metadataselector.cpp:90: 
error: 'map' was not declared in this scope
make[2]: *** 
[digikam/digikam/CMakeFiles/digikamcore.dir/__/libs/widgets/metadata/metadataselector.o] 
Błąd 1

What are plans regarding releases and this feature?

TIA

m.
Comment 15 Marcel Wiesweg 2009-07-16 18:55:10 UTC
I think Mikolaj is quite right, new features added to libkexiv2 need time to get downstream, next major release is 4.4, and features won't go into KDE4.3.0 anymore.
So we need ifdefs around this code.
Comment 16 caulier.gilles 2009-07-16 19:21:54 UTC
Yes, i just forget to add conditional compilation rules... I will fix it

Gilles
Comment 17 caulier.gilles 2009-07-16 20:53:24 UTC
SVN commit 997973 by cgilles:

fix broken compilation with old KExiv2
CCBUGS: 126086


 M  +4 -0      metadataselector.cpp  
 M  +6 -0      metadataselector.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=997973
Comment 18 caulier.gilles 2009-07-18 07:55:00 UTC
SVN commit 998593 by cgilles:

Implement metadata tags filter settings and rules for metadata viewer from right side bar.
In setup metadata dialog page, a new panel is available to set which metadata tags must be 
displayed in EXIF, Makernotes, Iptc and XMP viewer. This panel list all tags supported by Exiv2.
User can search on whole tags collection supported with a search bar to found easily metadata title to select.
Buttons can clear selection, select all, or use Human Readable default list of tags.
NOTE: you need libkexiv2 from trunk (KDE4.4) to be able to use this feature.
TODO : showfoto need the same config panel.
CCBUGS: 126086


 M  +1 -0      CMakeLists.txt  
 M  +1 -0      digikam/digikamview.cpp  
 M  +1 -1      libs/imageproperties/imagepropertiescolorstab.cpp  
 M  +34 -11    libs/imageproperties/imagepropertiesmetadatatab.cpp  
 M  +8 -1      libs/imageproperties/imagepropertiesmetadatatab.h  
 M  +5 -0      libs/imageproperties/imagepropertiessidebar.cpp  
 M  +2 -0      libs/imageproperties/imagepropertiessidebar.h  
 M  +6 -1      libs/imageproperties/imagepropertiessidebarcamgui.cpp  
 M  +2 -0      libs/imageproperties/imagepropertiessidebarcamgui.h  
 M  +12 -11    libs/widgets/iccprofiles/iccprofilewidget.cpp  
 M  +4 -37     libs/widgets/metadata/exifwidget.cpp  
 M  +1 -2      libs/widgets/metadata/exifwidget.h  
 M  +4 -24     libs/widgets/metadata/iptcwidget.cpp  
 M  +1 -2      libs/widgets/metadata/iptcwidget.h  
 M  +4 -62     libs/widgets/metadata/makernotewidget.cpp  
 M  +1 -2      libs/widgets/metadata/makernotewidget.h  
 M  +4 -4      libs/widgets/metadata/metadatalistview.cpp  
 AM            libs/widgets/metadata/metadatapanel.cpp   [License: GPL (v2+)]
 AM            libs/widgets/metadata/metadatapanel.h   [License: GPL (v2+)]
 M  +166 -4    libs/widgets/metadata/metadataselector.cpp  
 M  +33 -0     libs/widgets/metadata/metadataselector.h  
 M  +16 -3     libs/widgets/metadata/metadatawidget.cpp  
 M  +4 -1      libs/widgets/metadata/metadatawidget.h  
 M  +4 -25     libs/widgets/metadata/xmpwidget.cpp  
 M  +1 -2      libs/widgets/metadata/xmpwidget.h  
 M  +1 -0      showfoto/showfoto.cpp  
 M  +1 -0      utilities/cameragui/cameraui.cpp  
 M  +1 -0      utilities/imageeditor/editor/imagewindow.cpp  
 M  +1 -0      utilities/lighttable/lighttablewindow.cpp  
 M  +51 -33    utilities/setup/setupmetadata.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=998593
Comment 19 caulier.gilles 2009-07-18 10:59:17 UTC
SVN commit 998637 by cgilles:

Added Metadata Tags filter support to Showfoto
BUGS: 126086


 M  +1 -0      CMakeLists.txt  
 M  +16 -0     showfoto/setup/setup.cpp  
 M  +1 -0      showfoto/setup/setup.h  
 M  +0 -24     showfoto/setup/setupeditor.cpp  
 AM            showfoto/setup/setupmetadata.cpp   [License: GPL (v2+)]
 AM            showfoto/setup/setupmetadata.h   [License: GPL (v2+)]


WebSVN link: http://websvn.kde.org/?view=rev&revision=998637