[Digikam-devel] [Bug 103255] wish: *add* (not edit) EXIF headers like date, comment etc
Gilles Caulier
caulier.gilles at free.fr
Wed Oct 18 21:31:04 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-18 22:31 -------
SVN commit 596893 by cgilles:
kipi-plugins from trunk : MetadataEdit plugin : Exif Exposure editor : add ISO speed ratings settings
CCBUGS: 103255
M +73 -0 exifexposure.cpp
--- trunk/extragear/libs/kipi-plugins/metadataedit/exifexposure.cpp #596892:596893
@ -25,6 +25,7 @
#include <qwhatsthis.h>
#include <qcheckbox.h>
#include <qcombobox.h>
+#include <qlistbox.h>
// KDE includes.
@ -50,8 +51,10 @
exposureTimeCheck = 0;
exposureProgramCheck = 0;
exposureModeCheck = 0;
+ ISOSpeedCheck = 0;
exposureProgramCB = 0;
exposureModeCB = 0;
+ ISOSpeedCB = 0;
exposureTimeNumEdit = 0;
exposureTimeDenEdit = 0;
}
@ -59,9 +62,11 @
QCheckBox *exposureTimeCheck;
QCheckBox *exposureProgramCheck;
QCheckBox *exposureModeCheck;
+ QCheckBox *ISOSpeedCheck;
QComboBox *exposureProgramCB;
QComboBox *exposureModeCB;
+ QComboBox *ISOSpeedCB;
KIntSpinBox *exposureTimeNumEdit;
KIntSpinBox *exposureTimeDenEdit;
@ -121,6 +126,51 @
"series of frames of the same scene at different "
"exposure settings."));
+ // --------------------------------------------------------
+
+ d->ISOSpeedCheck = new QCheckBox(i18n("ISO Speed Rating:"), parent);
+ d->ISOSpeedCB = new QComboBox(false, parent);
+ d->ISOSpeedCB->insertItem("10", 0);
+ d->ISOSpeedCB->insertItem("12", 1);
+ d->ISOSpeedCB->insertItem("16", 2);
+ d->ISOSpeedCB->insertItem("20", 3);
+ d->ISOSpeedCB->insertItem("25", 4);
+ d->ISOSpeedCB->insertItem("32", 5);
+ d->ISOSpeedCB->insertItem("40", 6);
+ d->ISOSpeedCB->insertItem("50", 7);
+ d->ISOSpeedCB->insertItem("64", 8);
+ d->ISOSpeedCB->insertItem("80", 9);
+ d->ISOSpeedCB->insertItem("100", 10);
+ d->ISOSpeedCB->insertItem("125", 11);
+ d->ISOSpeedCB->insertItem("160", 12);
+ d->ISOSpeedCB->insertItem("200", 13);
+ d->ISOSpeedCB->insertItem("250", 14);
+ d->ISOSpeedCB->insertItem("320", 15);
+ d->ISOSpeedCB->insertItem("400", 16);
+ d->ISOSpeedCB->insertItem("500", 17);
+ d->ISOSpeedCB->insertItem("640", 18);
+ d->ISOSpeedCB->insertItem("800", 19);
+ d->ISOSpeedCB->insertItem("1000", 20);
+ d->ISOSpeedCB->insertItem("1250", 21);
+ d->ISOSpeedCB->insertItem("1600", 22);
+ d->ISOSpeedCB->insertItem("2000", 23);
+ d->ISOSpeedCB->insertItem("2500", 24);
+ d->ISOSpeedCB->insertItem("3200", 25);
+ d->ISOSpeedCB->insertItem("4000", 26);
+ d->ISOSpeedCB->insertItem("5000", 27);
+ d->ISOSpeedCB->insertItem("6400", 28);
+ d->ISOSpeedCB->insertItem("8000", 29);
+ d->ISOSpeedCB->insertItem("10000", 30);
+ d->ISOSpeedCB->insertItem("12500", 31);
+ d->ISOSpeedCB->insertItem("16000", 32);
+ d->ISOSpeedCB->insertItem("20000", 33);
+ d->ISOSpeedCB->insertItem("25000", 34);
+ d->ISOSpeedCB->insertItem("32000", 35);
+ grid->addMultiCellWidget(d->ISOSpeedCheck, 4, 4, 0, 0);
+ grid->addMultiCellWidget(d->ISOSpeedCB, 4, 4, 2, 4);
+ QWhatsThis::add(d->ISOSpeedCB, i18n("<p>Select here the ISO Speed of the digital still camera "
+ "witch have taken the picture."));
+
grid->setColStretch(1, 10);
grid->setRowStretch(6, 10);
@ -138,6 +188,9 @
connect(d->exposureModeCheck, SIGNAL(toggled(bool)),
d->exposureModeCB, SLOT(setEnabled(bool)));
+ connect(d->ISOSpeedCheck, SIGNAL(toggled(bool)),
+ d->ISOSpeedCB, SLOT(setEnabled(bool)));
+
// --------------------------------------------------------
readMetadata(exifData);
@ -177,6 +230,21 @
d->exposureModeCheck->setChecked(true);
}
d->exposureModeCB->setEnabled(d->exposureModeCheck->isChecked());
+
+ if (exiv2Iface.getExifTagLong("Exif.Photo.ISOSpeedRatings", val))
+ {
+ int item = -1;
+ for (int i = 0 ; i < d->ISOSpeedCB->count() ; i++)
+ if (d->ISOSpeedCB->text(i) == QString::number(val))
+ item = i;
+
+ if (item != -1)
+ {
+ d->ISOSpeedCB->setCurrentItem(item);
+ d->ISOSpeedCheck->setChecked(true);
+ }
+ }
+ d->ISOSpeedCB->setEnabled(d->ISOSpeedCheck->isChecked());
}
void EXIFExposure::applyMetadata(QByteArray& exifData)
@ -200,6 +268,11 @
else
exiv2Iface.removeExifTag("Exif.Photo.ExposureMode");
+ if (d->ISOSpeedCheck->isChecked())
+ exiv2Iface.setExifTagLong("Exif.Photo.ISOSpeedRatings", d->ISOSpeedCB->currentText().toLong());
+ else
+ exiv2Iface.removeExifTag("Exif.Photo.ISOSpeedRatings");
+
exifData = exiv2Iface.getExif();
}
More information about the Digikam-devel
mailing list