[Digikam-devel] [Bug 103255] wish: *add* (not edit) EXIF headers like date, comment etc

Gilles Caulier caulier.gilles at free.fr
Wed Oct 25 12:13:24 BST 2006


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=103255         




------- Additional Comments From caulier.gilles free fr  2006-10-25 13:13 -------
SVN commit 598992 by cgilles:

kipiplugins from trunk : MetadataEdit plugin: Exif Device informations editor: add Subject Distance Range settings

CCBUGS: 103255

 M  +62 -32    exifdevice.cpp  


--- trunk/extragear/libs/kipi-plugins/metadataedit/exifdevice.cpp #598991:598992
 @ -56,28 +56,30  @
 
     EXIFDevicePriv()
     {
-        makeCheck            = 0;
-        modelCheck           = 0;
-        deviceTypeCheck      = 0;
-        exposureTimeCheck    = 0;
-        exposureProgramCheck = 0;
-        exposureModeCheck    = 0;
-        exposureBiasCheck    = 0;
-        ISOSpeedCheck        = 0;
-        meteringModeCheck    = 0;
-        sensingMethodCheck   = 0;
-        sceneTypeCheck       = 0;
-        exposureProgramCB    = 0;
-        exposureModeCB       = 0;
-        ISOSpeedCB           = 0;
-        meteringModeCB       = 0;
-        sensingMethodCB      = 0;
-        sceneTypeCB          = 0;
-        exposureTimeNumEdit  = 0;
-        exposureTimeDenEdit  = 0;
-        exposureBiasEdit     = 0;
-        makeEdit             = 0;
-        modelEdit            = 0;
+        makeCheck                = 0;
+        modelCheck               = 0;
+        deviceTypeCheck          = 0;
+        exposureTimeCheck        = 0;
+        exposureProgramCheck     = 0;
+        exposureModeCheck        = 0;
+        exposureBiasCheck        = 0;
+        ISOSpeedCheck            = 0;
+        meteringModeCheck        = 0;
+        sensingMethodCheck       = 0;
+        sceneTypeCheck           = 0;
+        subjectDistanceTypeCheck = 0;
+        exposureProgramCB        = 0;
+        exposureModeCB           = 0;
+        ISOSpeedCB               = 0;
+        meteringModeCB           = 0;
+        sensingMethodCB          = 0;
+        sceneTypeCB              = 0;
+        subjectDistanceTypeCB    = 0;
+        exposureTimeNumEdit      = 0;
+        exposureTimeDenEdit      = 0;
+        exposureBiasEdit         = 0;
+        makeEdit                 = 0;
+        modelEdit                = 0;
     }
 
     QCheckBox      *makeCheck;
 @ -91,6 +93,7  @
     QCheckBox      *meteringModeCheck;
     QCheckBox      *sensingMethodCheck;
     QCheckBox      *sceneTypeCheck;
+    QCheckBox      *subjectDistanceTypeCheck;
    
     QComboBox      *deviceTypeCB;
     QComboBox      *exposureProgramCB;
 @ -99,6 +102,7  @
     QComboBox      *meteringModeCB;
     QComboBox      *sensingMethodCB;
     QComboBox      *sceneTypeCB;
+    QComboBox      *subjectDistanceTypeCB;
 
     KLineEdit      *makeEdit;
     KLineEdit      *modelEdit;
 @ -114,7 +118,7  @
 {
     d = new EXIFDevicePriv;
 
-    QGridLayout* grid = new QGridLayout(parent, 12, 5, KDialog::spacingHint());
+    QGridLayout* grid = new QGridLayout(parent, 13, 5, KDialog::spacingHint());
 
     // EXIF only accept printable Ascii char.
     QRegExp asciiRx("[\x20-\x7F]+$");
 @ -127,8 +131,8  @
     d->makeEdit->setValidator(asciiValidator);
     grid->addMultiCellWidget(d->makeCheck, 0, 0, 0, 0);
     grid->addMultiCellWidget(d->makeEdit, 0, 0, 2, 5);
-    QWhatsThis::add(d->makeEdit, i18n("<p>Set here the manufacturer of image input equipment. "
-                                 "This field is limited to ASCII characters."));
+    QWhatsThis::add(d->makeEdit, i18n("<p>Set here the manufacturer of image input equipment used to "
+                                 "take the picture. This field is limited to ASCII characters."));
 
     // --------------------------------------------------------
 
 @ -137,8 +141,8  @
     d->modelEdit->setValidator(asciiValidator);
     grid->addMultiCellWidget(d->modelCheck, 1, 1, 0, 0);
     grid->addMultiCellWidget(d->modelEdit, 1, 1, 2, 5);
-    QWhatsThis::add(d->modelEdit, i18n("<p>Set here the model of image input equipment. "
-                                  "This field is limited to ASCII characters."));
+    QWhatsThis::add(d->modelEdit, i18n("<p>Set here the model of image input equipment used to "
+                                  "take the picture. This field is limited to ASCII characters."));
 
     // --------------------------------------------------------
 
 @ -147,12 +151,10  @
     d->deviceTypeCB->insertItem(i18n("Film scanner"),             0);
     d->deviceTypeCB->insertItem(i18n("Reflection print scanner"), 1);
     d->deviceTypeCB->insertItem(i18n("Digital camera"),           2);
-    d->deviceTypeCheck->setTristate(true);
-
     grid->addMultiCellWidget(d->deviceTypeCheck, 2, 2, 0, 0);
     grid->addMultiCellWidget(d->deviceTypeCB, 2, 2, 2, 5);
     QWhatsThis::add(d->deviceTypeCB, i18n("<p>Select here the image input equipment type used to "
-                                     "generate the picture."));
+                                     "take the picture."));
 
     // --------------------------------------------------------
 
 @ -303,13 +305,26  @
 
     // --------------------------------------------------------
 
+    d->subjectDistanceTypeCheck = new QCheckBox(i18n("Subject distance type:"), parent);
+    d->subjectDistanceTypeCB    = new QComboBox(false, parent);
+    d->subjectDistanceTypeCB->insertItem(i18n("Unknow"),       0);
+    d->subjectDistanceTypeCB->insertItem(i18n("Macro"),        1);
+    d->subjectDistanceTypeCB->insertItem(i18n("Close view"),   2);
+    d->subjectDistanceTypeCB->insertItem(i18n("Distant view"), 3);
+    grid->addMultiCellWidget(d->subjectDistanceTypeCheck, 11, 11, 0, 0);
+    grid->addMultiCellWidget(d->subjectDistanceTypeCB, 11, 11, 2, 5);
+    QWhatsThis::add(d->subjectDistanceTypeCB, i18n("<p>Select here the type of distance between "
+                                              "the subject and the image input equipment."));
+
+    // --------------------------------------------------------
+
     QLabel *exifNote = new QLabel(i18n("<b>Note: EXIF text tags annoted by (*) only support printable "
                                        "ASCII characters set.</b>"), parent);
-    grid->addMultiCellWidget(exifNote, 11, 11, 0, 5);
+    grid->addMultiCellWidget(exifNote, 12, 12, 0, 5);
 
     grid->setColStretch(1, 10);                     
     grid->setColStretch(5, 10);                     
-    grid->setRowStretch(12, 10);                     
+    grid->setRowStretch(13, 10);                     
 
     // --------------------------------------------------------
 
 @ -349,6 +364,9  @
     connect(d->sceneTypeCheck, SIGNAL(toggled(bool)),
             d->sceneTypeCB, SLOT(setEnabled(bool)));
 
+    connect(d->subjectDistanceTypeCheck, SIGNAL(toggled(bool)),
+            d->subjectDistanceTypeCB, SLOT(setEnabled(bool)));
+
     // --------------------------------------------------------
     
     readMetadata(exifData);
 @ -481,6 +499,13  @
         d->sceneTypeCheck->setChecked(true);
     }
     d->sceneTypeCB->setEnabled(d->sceneTypeCheck->isChecked());
+
+    if (exiv2Iface.getExifTagLong("Exif.Photo.SubjectDistanceRange", val))
+    {
+        d->subjectDistanceTypeCB->setCurrentItem(val);
+        d->subjectDistanceTypeCheck->setChecked(true);
+    }
+    d->subjectDistanceTypeCB->setEnabled(d->subjectDistanceTypeCheck->isChecked());
 }
 
 void EXIFDevice::applyMetadata(QByteArray& exifData)
 @ -573,6 +598,11  @
     else
         exiv2Iface.removeExifTag("Exif.Photo.SceneCaptureType");
 
+    if (d->subjectDistanceTypeCheck->isChecked())
+        exiv2Iface.setExifTagLong("Exif.Photo.SubjectDistanceRange", d->subjectDistanceTypeCB->currentItem());
+    else
+        exiv2Iface.removeExifTag("Exif.Photo.SubjectDistanceRange");
+
     exifData = exiv2Iface.getExif();
 }



More information about the Digikam-devel mailing list