diff --git a/cexif.cpp b/cexif.cpp new file mode 100644 index 0000000..922c96c --- /dev/null +++ b/cexif.cpp @@ -0,0 +1,1563 @@ +/*! + \file cexif.cpp + +*/ + +#include "cexif.h" + +#include "common.h" + +#include +#include +#include +#include + +#include + + +cEXIF::cEXIF() : + m_szMimeType(""), + m_iWidth(0), + m_iHeight(0), + m_szFileName("") +{ +} + +bool cEXIF::fromFile(const QString& szFileName) +{ + if(!QFile::exists(szFileName)) + return(false); + + m_exifValueList.clear(); + m_previewList.clear(); + + m_szFileName = ""; + + try + { + Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(szFileName.toLocal8Bit().toStdString()); + if(!image.get()) + return(false); + + image->readMetadata(); + + Exiv2::ExifData& exifData = image->exifData(); + Exiv2::IptcData& iptcData = image->iptcData(); + Exiv2::XmpData& xmpData = image->xmpData(); + + m_szMimeType = QString::fromStdString(image->mimeType()); + m_iWidth = image->pixelWidth(); + m_iHeight = image->pixelHeight(); + + m_szFileName = szFileName; + + if(!iptcData.empty()) + { + Exiv2::IptcData::const_iterator end = iptcData.end(); + + for(Exiv2::IptcData::const_iterator i = iptcData.begin(); i != end; ++i) + { + cIPTCTag* lpTag = m_iptcTagList.find(i->tag()); + + if(lpTag) + { + cIPTCValue* lpValue = m_iptcValueList.add(lpTag); + if(lpValue) + lpValue->setValue(QString::fromStdString(i->value().toString()), i->typeId(), i->count()); + } + } + + Exiv2::PreviewManager previewManager(*image); + Exiv2::PreviewPropertiesList previewPropertiesList = previewManager.getPreviewProperties(); + + for(Exiv2::PreviewPropertiesList::const_iterator i = previewPropertiesList.begin();i != previewPropertiesList.end();i++) + { + Exiv2::PreviewImage previewImage = previewManager.getPreviewImage(*i); + QImage image; + image.loadFromData(static_cast(previewImage.pData()), static_cast(previewImage.size())); + + QTransform rotation; + int angle = 0; + + switch(imageOrientation()) + { + case 8: + angle = 270; + break; + case 3: + angle = 180; + break; + case 6: + angle = 90; + break; + } + + if(angle != 0) + { + rotation.rotate(angle); + image = image.transformed(rotation); + } + + m_previewList.append(image); + } + } + + if(!xmpData.empty()) + { + Exiv2::XmpData::const_iterator end = xmpData.end(); + + for(Exiv2::XmpData::const_iterator i = xmpData.begin(); i != end; ++i) + { + cXMPTag* lpTag = m_xmpTagList.find(QString::fromStdString(i->key())); + + if(lpTag) + { + cXMPValue* lpValue = m_xmpValueList.add(lpTag); + if(lpValue) + lpValue->setValue(QString::fromStdString(i->value().toString()), i->typeId(), i->count()); + } + } + + Exiv2::PreviewManager previewManager(*image); + Exiv2::PreviewPropertiesList previewPropertiesList = previewManager.getPreviewProperties(); + + for(Exiv2::PreviewPropertiesList::const_iterator i = previewPropertiesList.begin();i != previewPropertiesList.end();i++) + { + Exiv2::PreviewImage previewImage = previewManager.getPreviewImage(*i); + QImage image; + image.loadFromData(static_cast(previewImage.pData()), static_cast(previewImage.size())); + + QTransform rotation; + int angle = 0; + + switch(imageOrientation()) + { + case 8: + angle = 270; + break; + case 3: + angle = 180; + break; + case 6: + angle = 90; + break; + } + + if(angle != 0) + { + rotation.rotate(angle); + image = image.transformed(rotation); + } + + m_previewList.append(image); + } + } + + if(!exifData.empty()) + { + Exiv2::ExifData::const_iterator end = exifData.end(); + for(Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) + { + cEXIFTag* lpTag = m_exifTagList.find(i->tag(), i->ifdId()); + + if(lpTag) + { + cEXIFValue* lpValue = m_exifValueList.add(lpTag); + if(lpValue) + lpValue->setValue(QString::fromStdString(i->value().toString()), i->typeId(), i->count()); + } + } + + Exiv2::PreviewManager previewManager(*image); + Exiv2::PreviewPropertiesList previewPropertiesList = previewManager.getPreviewProperties(); + + for(Exiv2::PreviewPropertiesList::const_iterator i = previewPropertiesList.begin();i != previewPropertiesList.end();i++) + { + Exiv2::PreviewImage previewImage = previewManager.getPreviewImage(*i); + QImage image; + image.loadFromData(static_cast(previewImage.pData()), static_cast(previewImage.size())); + + QTransform rotation; + int angle = 0; + + switch(imageOrientation()) + { + case 8: + angle = 270; + break; + case 3: + angle = 180; + break; + case 6: + angle = 90; + break; + } + + if(angle != 0) + { + rotation.rotate(angle); + image = image.transformed(rotation); + } + + m_previewList.append(image); + } + } + } + catch (Exiv2::AnyError& e) + { + qDebug() << "Caught Exiv2 exception '" << e.what(); + return(false); + } + + if(!m_previewList.count()) + { + QImage image; + if(image.load(szFileName)) + { + QTransform rotation; + int angle = 0; + + switch(imageOrientation()) + { + case 8: + angle = 270; + break; + case 3: + angle = 180; + break; + case 6: + angle = 90; + break; + } + + if(angle != 0) + { + rotation.rotate(angle); + image = image.transformed(rotation); + } + + m_thumbnail = image.scaled(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } + } + else + { + qint32 index = -1; + qint32 widthDiff = std::numeric_limits::max(); + qint32 heightDiff = std::numeric_limits::max(); + + for(qint32 i = 0;i < m_previewList.count();i++) + { + qint32 wd = m_previewList[i].width() - THUMBNAIL_WIDTH; + qint32 hd = m_previewList[i].height() - THUMBNAIL_HEIGHT; + + if(wd >= 0 && hd >= 0) + { + if(wd <= widthDiff && hd <= heightDiff) + { + index = i; + widthDiff = wd; + heightDiff = hd; + } + } + } + + if(index == -1) + { + for(qint32 i = 0;i < m_previewList.count();i++) + { + qint32 wd = m_previewList[i].width() - THUMBNAIL_WIDTH; + qint32 hd = m_previewList[i].height() - THUMBNAIL_HEIGHT; + + if(abs(wd) <= widthDiff && abs(hd) <= heightDiff) + { + index = i; + widthDiff = abs(wd); + heightDiff = abs(hd); + } + } + } + + if(index != -1) + m_thumbnail = m_previewList[index].scaled(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, Qt::KeepAspectRatio, Qt::SmoothTransformation); + } + + return(true); +} + +QString cEXIF::mimeType() +{ + return(m_szMimeType); +} + +qint32 cEXIF::imageWidth() +{ + if(m_iWidth) + return(m_iWidth); + + qint32 iWidth = getEXIFTag(0x0100, 1).value(); + + if(iWidth) + return(iWidth); + + return(getXMPTag("Xmp.video.Width").value()); +} + +qint32 cEXIF::imageHeight() +{ + if(m_iHeight) + return(m_iHeight); + + qint32 iHeight = getEXIFTag(0x0101, 1).value(); + + if(iHeight) + return(iHeight); + + return(getXMPTag("Xmp.video.Height").value()); +} + +qint16 cEXIF::imageOrientation() +{ + return(getEXIFTag(0x0112, 1).value()); +} + +QString cEXIF::cameraMake() +{ + QString szCameraMake = getEXIFTag(0x010f, 1).toString(); + + if(!szCameraMake.isEmpty()) + return(szCameraMake); + + return(getXMPTag("Xmp.video.MajorBrand").toString()); +} + +QString cEXIF::cameraModel() +{ + QString szCameraModel = getEXIFTag(0x0110, 1).toString(); + + if(!szCameraModel.isEmpty()) + return(szCameraModel); + + return(getXMPTag("Xmp.video.MajorBrand").toString()); +} + +QDateTime cEXIF::dateTime() +{ + QDateTime dateTime = QDateTime::fromString(getEXIFTag(0x9004, 1).value(), "yyyy:MM:dd hh:mm:ss"); + if(dateTime.isValid()) + return(dateTime); + + dateTime = QDateTime::fromString(getXMPTag("Xmp.video.DateTimeDigitized").toString(), "yyyy-MM-ddThh:mm:ssZ"); + if(dateTime.isValid()) + return(dateTime); + + dateTime = QDateTime::fromString(getEXIFTag(0x0132, 1).value(), "yyyy:MM:dd hh:mm:ss"); + if(dateTime.isValid()) + return(dateTime); + + QFileInfo info(m_szFileName); + return(info.lastModified()); +} + +QString cEXIF::fNumber() +{ + return(getEXIFTag(0x829d, 5).value()); +} + +qint32 cEXIF::iso() +{ + return(getEXIFTag(0x8827, 5).value()); +} + +QString cEXIF::flash() +{ + return(m_exifFlashList.flash(getEXIFTag(0x9209, 5).value())); +} + +qint32 cEXIF::flashID() +{ + return(getEXIFTag(0x9209, 5).value()); +} + +qreal cEXIF::focalLength() +{ + return(getEXIFTag(0x920a, 5).value()); +} + +QString cEXIF::lensMake() +{ + return(getEXIFTag(0xa433, 5).value()); +} + +QString cEXIF::lensModel() +{ + return(getEXIFTag(0xa434, 5).value()); +} + +QString cEXIF::exposureTime() +{ + qreal value = getEXIFTag(0x829a, 5).value(); + + if(value == 0.0) + return("error"); + + if(value >= 1.0) + return(QString("%1 sec").arg(value)); + + return(QString("1/%1").arg(1/value)); +} + +qint32 cEXIF::exposureBias() +{ + return(getEXIFTag(0x9204, 5).value()); +} + +QString cEXIF::exifVersion() +{ + return(getEXIFTag(0x9000, 5).value()); +} + +QDateTime cEXIF::dateTimeOriginal() +{ + return(QDateTime::fromString(getEXIFTag(0x9003, 5).value(), "yyyy:MM:dd hh:mm:ss")); +} + +QDateTime cEXIF::dateTimeDigitized() +{ + return(QDateTime::fromString(getEXIFTag(0x9004, 5).value(), "yyyy:MM:dd hh:mm:ss")); +} + +qint32 cEXIF::whiteBalance() +{ + return(getEXIFTag(0xa403, 5).value()); +} + +qreal cEXIF::focalLength35() +{ + return(getEXIFTag(0xa405, 5).value()); +} + +QString cEXIF::gps() +{ + QList nList = getTagList(0x0002, 6); + QList eList = getTagList(0x0004, 6); + + if(nList.count() != 3) + return(""); + if(eList.count() != 3) + return(""); + + QString szGPS = QString("%1 %2° %3' %4\" %5 %6° %7' %8\"").arg(getEXIFTag(0x0001, 6).value()).arg(nList[0].value()).arg(nList[1].value()).arg(nList[2].value()).arg(getEXIFTag(0x0001, 6).value()).arg(eList[0].value()).arg(eList[1].value()).arg(eList[2].value()); + return(szGPS); +} + +QString cEXIF::duration() +{ + return(getXMPTag("Xmp.video.Duration").toString()); +} + +QString cEXIF::fileName() +{ + return(m_szFileName); +} + +QList cEXIF::previewList() +{ + return(m_previewList); +} + +QImage cEXIF::thumbnail() +{ + return(m_thumbnail); +} + +QVariant cEXIF::getEXIFTag(qint32 iTAGID, qint32 iIFDID) +{ + cEXIFTag* lpTag = m_exifTagList.find(iTAGID, iIFDID); + + if(!lpTag) + return(QVariant()); + + cEXIFValue* lpValue = m_exifValueList.find(lpTag); + + if(!lpValue) + return(QVariant()); + + return(lpValue->value()); +} + +QVariant cEXIF::getIPTCTag(qint32 iTAGID) +{ + cIPTCTag* lpTag = m_iptcTagList.find(iTAGID); + + if(!lpTag) + return(QVariant()); + + cIPTCValue* lpValue = m_iptcValueList.find(lpTag); + + if(!lpValue) + return(QVariant()); + + return(lpValue->value()); +} + +QVariant cEXIF::getXMPTag(const QString& szTAGName) +{ + cXMPTag* lpTag = m_xmpTagList.find(szTAGName); + + if(!lpTag) + return(QVariant()); + + cXMPValue* lpValue = m_xmpValueList.find(lpTag); + + if(!lpValue) + return(QVariant()); + + return(lpValue->value()); +} + +QList cEXIF::getTagList(qint32 iTAGID, qint32 iIFDID) +{ + cEXIFTag* lpTag = m_exifTagList.find(iTAGID, iIFDID); + + if(!lpTag) + return(QList()); + + cEXIFValue* lpValue = m_exifValueList.find(lpTag); + + if(!lpValue) + return(QList()); + + return(lpValue->valueList()); +} + +cEXIFCompression::cEXIFCompression(const qint32& iID, const QString& szCompression) : + m_iID(iID), + m_szCompression(szCompression) +{ +} + +cEXIFCompressionList::cEXIFCompressionList() +{ + add(0x0001, QObject::tr("Uncompressed")); + add(0x0002, QObject::tr("CCITT 1D")); + add(0x0003, QObject::tr("T4/Group 3 Fax")); + add(0x0004, QObject::tr("T6/Group 4 Fax")); + add(0x0005, QObject::tr("LZW")); + add(0x0006, QObject::tr("JPEG (old-style)")); + add(0x0007, QObject::tr("JPEG")); + add(0x0008, QObject::tr("Adobe Deflate")); + add(0x0009, QObject::tr("JBIG B&W")); + add(0x000A, QObject::tr("JBIG Color")); + add(0x0063, QObject::tr("JPEG")); + add(0x0106, QObject::tr("Kodak 262")); + add(0x7FFE, QObject::tr("Next")); + add(0x7FFF, QObject::tr("Sony ARW Compressed")); + add(0x8001, QObject::tr("Packed RAW")); + add(0x8002, QObject::tr("Samsung SRW Compressed")); + add(0x8003, QObject::tr("CCIRLEW")); + add(0x8004, QObject::tr("Samsung SRW Compressed 2")); + add(0x8005, QObject::tr("PackBits")); + add(0x8029, QObject::tr("Thunderscan")); + add(0x8063, QObject::tr("Kodak KDC Compressed")); + add(0x807F, QObject::tr("IT8CTPAD")); + add(0x8080, QObject::tr("IT8LW")); + add(0x8081, QObject::tr("IT8MP")); + add(0x8082, QObject::tr("IT8BL")); + add(0x808C, QObject::tr("PixarFilm")); + add(0x808D, QObject::tr("PixarLog")); + add(0x80B2, QObject::tr("Deflate")); + add(0x80B3, QObject::tr("DCS")); + add(0x80EB, QObject::tr("Aperio JPEG 2000 YCbCr")); + add(0x80ED, QObject::tr("Aperio JPEG 2000 RGB")); + add(0x8765, QObject::tr("JBIG")); + add(0x8774, QObject::tr("SGILog")); + add(0x8775, QObject::tr("SGILog24")); + add(0x8798, QObject::tr("JPEG 2000")); + add(0x8799, QObject::tr("Nikon NEF Compressed")); + add(0x879B, QObject::tr("JBIG2 TIFF FX")); + add(0x879E, QObject::tr("Microsoft Document Imaging (MDI) Binary Level Codec")); + add(0x879F, QObject::tr("Microsoft Document Imaging (MDI) Progressive Transform Codec")); + add(0x87A0, QObject::tr("Microsoft Document Imaging (MDI) Vector")); + add(0x8847, QObject::tr("ESRI Lerc")); + add(0x884C, QObject::tr("Lossy JPEG")); + add(0x886D, QObject::tr("LZMA2")); + add(0x886E, QObject::tr("Zstd")); + add(0x886F, QObject::tr("WebP")); + add(0x8875, QObject::tr("PNG")); + add(0x8876, QObject::tr("JPEG XR")); + add(0xFDE8, QObject::tr("Kodak DCR Compressed")); + add(0xFFFF, QObject::tr("Pentax PEF Compressed")); +} + +cEXIFCompression* cEXIFCompressionList::add(const qint32& iID, const QString& szCompression) +{ + cEXIFCompression* lpNew = find(iID); + + if(lpNew) + return(nullptr); + + lpNew = new cEXIFCompression(iID, szCompression); + append(lpNew); + return(lpNew); +} + +cEXIFCompression* cEXIFCompressionList::find(const qint32& iID) +{ + for(int x = 0;x < count();x++) + { + cEXIFCompression* lpCompression= at(x); + + if(lpCompression->m_iID == iID) + return(lpCompression); + } + return(nullptr); +} + +QString cEXIFCompressionList::compression(const qint32& iID) +{ + cEXIFCompression* lpCompression = find(iID); + if(!lpCompression) + return(QObject::tr("unknown")); + return(lpCompression->m_szCompression); +} + +cEXIFLightSource::cEXIFLightSource(const qint32& iID, const QString& szLightSource) : + m_iID(iID), + m_szLightSource(szLightSource) +{ +} + +cEXIFLightSourceList::cEXIFLightSourceList() +{ + add(0x0001, QObject::tr("Daylight")); + add(0x0002, QObject::tr("Fluorescent")); + add(0x0003, QObject::tr("Tungsten (Incandescent)")); + add(0x0004, QObject::tr("Flash")); + add(0x0009, QObject::tr("Fine Weather")); + add(0x000A, QObject::tr("Cloudy")); + add(0x000B, QObject::tr("Shade")); + add(0x000C, QObject::tr("Daylight Fluorescent")); + add(0x000D, QObject::tr("Day White Fluorescent")); + add(0x000E, QObject::tr("Cool White Fluorescent")); + add(0x000F, QObject::tr("White Fluorescent")); + add(0x0010, QObject::tr("Warm White Fluorescent")); + add(0x0011, QObject::tr("Standard Light A")); + add(0x0012, QObject::tr("Standard Light B")); + add(0x0013, QObject::tr("Standard Light C")); + add(0x0014, QObject::tr("D55")); + add(0x0015, QObject::tr("D65")); + add(0x0016, QObject::tr("D75")); + add(0x0017, QObject::tr("D50")); + add(0x0018, QObject::tr("ISO Studio Tungsten")); + add(0x00FF, QObject::tr("Other")); +} + +cEXIFLightSource* cEXIFLightSourceList::add(const qint32& iID, const QString& szLightSource) +{ + cEXIFLightSource* lpNew = find(iID); + + if(lpNew) + return(nullptr); + + lpNew = new cEXIFLightSource(iID, szLightSource); + append(lpNew); + return(lpNew); +} + +cEXIFLightSource* cEXIFLightSourceList::find(const qint32& iID) +{ + for(int x = 0;x < count();x++) + { + cEXIFLightSource* lpLightSource = at(x); + + if(lpLightSource->m_iID == iID) + return(lpLightSource); + } + return(nullptr); +} + +QString cEXIFLightSourceList::lightSource(const qint32& iID) +{ + cEXIFLightSource* lpLightSource = find(iID); + if(!lpLightSource) + return(QObject::tr("unknown")); + return(lpLightSource->m_szLightSource); +} + +cEXIFFlash::cEXIFFlash(const qint32& iID, const QString& szFlash) : + m_iID(iID), + m_szFlash(szFlash) +{ +} + +cEXIFFlashList::cEXIFFlashList() +{ + add(0x00, QObject::tr("No Flash")); + add(0x01, QObject::tr("Fired")); + add(0x05, QObject::tr("Fired, Return not detected")); + add(0x07, QObject::tr("Fired, Return detected")); + add(0x08, QObject::tr("On, Did not fire")); + add(0x09, QObject::tr("On, Fired")); + add(0x0d, QObject::tr("On, Return not detected")); + add(0x0f, QObject::tr("On, Return detected")); + add(0x10, QObject::tr("Off, Did not fire")); + add(0x14, QObject::tr("Off, Did not fire, Return not detected")); + add(0x18, QObject::tr("Auto, Did not fire")); + add(0x19, QObject::tr("Auto, Fired")); + add(0x1d, QObject::tr("Auto, Fired, Return not detected")); + add(0x1f, QObject::tr("Auto, Fired, Return detected")); + add(0x20, QObject::tr("No Flash function")); + add(0x30, QObject::tr("Off, No flash function")); + add(0x41, QObject::tr("Fired, Red-eye reduction")); + add(0x45, QObject::tr("Fired, Red-eye reduction, Return not detected")); + add(0x47, QObject::tr("Fired, Red-eye reduction, Return detected")); + add(0x49, QObject::tr("On, Red-eye reduction")); + add(0x4d, QObject::tr("On, Red-eye reduction, Return not detected")); + add(0x4f, QObject::tr("On, Red-eye reduction, Return detected")); + add(0x50, QObject::tr("Off, Red-eye reduction")); + add(0x58, QObject::tr("Auto, Did not fire, Red-eye reduction")); + add(0x59, QObject::tr("Auto, Fired, Red-eye reduction")); + add(0x5d, QObject::tr("Auto, Fired, Red-eye reduction, Return not detected")); + add(0x5f, QObject::tr("Auto, Fired, Red-eye reduction, Return detected")); +} + +cEXIFFlash* cEXIFFlashList::add(const qint32& iID, const QString& szFlash) +{ + cEXIFFlash* lpNew = find(iID); + + if(lpNew) + return(nullptr); + + lpNew = new cEXIFFlash(iID, szFlash); + append(lpNew); + return(lpNew); +} + +cEXIFFlash* cEXIFFlashList::find(const qint32& iID) +{ + for(int x = 0;x < count();x++) + { + cEXIFFlash* lpFlash = at(x); + + if(lpFlash->m_iID == iID) + return(lpFlash); + } + return(nullptr); +} + +QString cEXIFFlashList::flash(const qint32& iID) +{ + cEXIFFlash* lpFlash = find(iID); + if(!lpFlash) + return(QObject::tr("unknown")); + return(lpFlash->m_szFlash); +} + +cEXIFTag::cEXIFTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription) : + m_iTAGID(iTAGID), + m_szTAGName(szTAGName), + m_iIFDID(iIFDID), + m_iTypeID(iTypeID), + m_szDescription(szDescription) +{ +} + +cEXIFTagList::cEXIFTagList() +{ + add(0x000b, QObject::tr("ProcessingSoftware"), 1, 2, QObject::tr("The name and version of the software used to post-process the picture.")); + add(0x00fe, QObject::tr("NewSubfileType"), 1, 4, QObject::tr("A general indication of the kind of data contained in this subfile.")); + add(0x00ff, QObject::tr("SubfileType"), 1, 3, QObject::tr("A general indication of the kind of data contained in this subfile. This field is deprecated. The NewSubfileType field should be used instead.")); + add(0x0100, QObject::tr("ImageWidth"), 1, 4, QObject::tr("The number of columns of image data, equal to the number of pixels per row. In JPEG compressed data a JPEG marker is used instead of this tag.")); + add(0x0101, QObject::tr("ImageHeight"), 1, 4, QObject::tr("The number of rows of image data. In JPEG compressed data a JPEG marker is used instead of this tag.")); + add(0x0102, QObject::tr("BitsPerSample"), 1, 3, QObject::tr("The number of bits per image component. In this standard each component of the image is 8 bits, so the value for this tag is 8. See also . In JPEG compressed data a JPEG marker is used instead of this tag.")); + add(0x0103, QObject::tr("Compression"), 1, 3, QObject::tr("The compression scheme used for the image data. When a primary image is JPEG compressed, this designation is not necessary and is omitted. When thumbnails use JPEG compression, this tag value is set to 6.")); + add(0x0106, QObject::tr("PhotometricInterpretation"), 1, 3, QObject::tr("The pixel composition. In JPEG compressed data a JPEG marker is used instead of this tag.")); + add(0x0107, QObject::tr("Thresholding"), 1, 3, QObject::tr("For black and white TIFF files that represent shades of gray, the technique used to convert from gray to black and white pixels.")); + add(0x0108, QObject::tr("CellWidth"), 1, 3, QObject::tr("The width of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.")); + add(0x0109, QObject::tr("CellLength"), 1, 3, QObject::tr("The length of the dithering or halftoning matrix used to create a dithered or halftoned bilevel file.")); + add(0x010a, QObject::tr("FillOrder"), 1, 3, QObject::tr("The logical order of bits within a byte")); + add(0x010d, QObject::tr("DocumentName"), 1, 2, QObject::tr("The name of the document from which this image was scanned")); + add(0x010e, QObject::tr("ImageDescription"), 1, 2, QObject::tr("A character string giving the title of the image. It may be a comment such as \"1988 company picnic\" or the like. Two-bytes character codes cannot be used. When a 2-bytes code is necessary, the Exif Private tag is to be used.")); + add(0x010f, QObject::tr("Make"), 1, 2, QObject::tr("The manufacturer of the recording equipment. This is the manufacturer of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown.")); + add(0x0110, QObject::tr("Model"), 1, 2, QObject::tr("The model name or model number of the equipment. This is the model name or number of the DSC, scanner, video digitizer or other equipment that generated the image. When the field is left blank, it is treated as unknown.")); + add(0x0111, QObject::tr("StripOffsets"), 1, 4, QObject::tr("For each strip, the byte offset of that strip. It is recommended that this be selected so the number of strip bytes does not exceed 64 Kbytes. With JPEG compressed data this designation is not needed and is omitted. See also and .")); + add(0x0112, QObject::tr("Orientation"), 1, 3, QObject::tr("The image orientation viewed in terms of rows and columns.")); + add(0x0115, QObject::tr("SamplesPerPixel"), 1, 3, QObject::tr("The number of components per pixel. Since this standard applies to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed data a JPEG marker is used instead of this tag.")); + add(0x0116, QObject::tr("RowsPerStrip"), 1, 4, QObject::tr("The number of rows per strip. This is the number of rows in the image of one strip when an image is divided into strips. With JPEG compressed data this designation is not needed and is omitted. See also and .")); + add(0x0117, QObject::tr("StripByteCounts"), 1, 4, QObject::tr("The total number of bytes in each strip. With JPEG compressed data this designation is not needed and is omitted.")); + add(0x011a, QObject::tr("XResolution"), 1, 5, QObject::tr("The number of pixels per in the direction. When the image resolution is unknown, 72 [dpi] is designated.")); + add(0x011b, QObject::tr("YResolution"), 1, 5, QObject::tr("The number of pixels per in the direction. The same value as is designated.")); + add(0x011c, QObject::tr("PlanarConfiguration"), 1, 3, QObject::tr("Indicates whether pixel components are recorded in a chunky or planar format. In JPEG compressed files a JPEG marker is used instead of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed.")); + add(0x0122, QObject::tr("GrayResponseUnit"), 1, 3, QObject::tr("The precision of the information contained in the GrayResponseCurve.")); + add(0x0123, QObject::tr("GrayResponseCurve"), 1, 3, QObject::tr("For grayscale data, the optical density of each possible pixel value.")); + add(0x0124, QObject::tr("T4Options"), 1, 4, QObject::tr("T.4-encoding options.")); + add(0x0125, QObject::tr("T6Options"), 1, 4, QObject::tr("T.6-encoding options.")); + add(0x0128, QObject::tr("ResolutionUnit"), 1, 3, QObject::tr("The unit for measuring and . The same unit is used for both and . If the image resolution is unknown, 2 (inches) is designated.")); + add(0x0129, QObject::tr("PageNumber"), 1, 3, QObject::tr("The page number of the page from which this image was scanned.")); + add(0x012d, QObject::tr("TransferFunction"), 1, 3, QObject::tr("A transfer function for the image, described in tabular style. Normally this tag is not necessary, since color space is specified in the color space information tag ().")); + add(0x0131, QObject::tr("Software"), 1, 2, QObject::tr("This tag records the name and version of the software or firmware of the camera or image input device used to generate the image. The detailed format is not specified, but it is recommended that the example shown below be followed. When the field is left blank, it is treated as unknown.")); + add(0x0132, QObject::tr("DateTime"), 1, 2, QObject::tr("The date and time of image creation. In Exif standard, it is the date and time the file was changed.")); + add(0x013b, QObject::tr("Artist"), 1, 2, QObject::tr("This tag records the name of the camera owner, photographer or image creator. The detailed format is not specified, but it is recommended that the information be written as in the example below for ease of Interoperability. When the field is left blank, it is treated as unknown. Ex.) \"Camera owner, John Smith; Photographer, Michael Brown; Image creator, Ken James\"")); + add(0x013c, QObject::tr("HostComputer"), 1, 2, QObject::tr("This tag records information about the host computer used to generate the image.")); + add(0x013d, QObject::tr("Predictor"), 1, 3, QObject::tr("A predictor is a mathematical operator that is applied to the image data before an encoding scheme is applied.")); + add(0x013e, QObject::tr("WhitePoint"), 1, 5, QObject::tr("The chromaticity of the white point of the image. Normally this tag is not necessary, since color space is specified in the colorspace information tag ().")); + add(0x013f, QObject::tr("PrimaryChromaticities"), 1, 5, QObject::tr("The chromaticity of the three primary colors of the image. Normally this tag is not necessary, since colorspace is specified in the colorspace information tag ().")); + add(0x0140, QObject::tr("ColorMap"), 1, 3, QObject::tr("A color map for palette color images. This field defines a Red-Green-Blue color map (often called a lookup table) for palette-color images. In a palette-color image, a pixel value is used to index into an RGB lookup table.")); + add(0x0141, QObject::tr("HalftoneHints"), 1, 3, QObject::tr("The purpose of the HalftoneHints field is to convey to the halftone function the range of gray levels within a colorimetrically-specified image that should retain tonal detail.")); + add(0x0142, QObject::tr("TileWidth"), 1, 3, QObject::tr("The tile width in pixels. This is the number of columns in each tile.")); + add(0x0143, QObject::tr("TileLength"), 1, 3, QObject::tr("The tile length (height) in pixels. This is the number of rows in each tile.")); + add(0x0144, QObject::tr("TileOffsets"), 1, 3, QObject::tr("For each tile, the byte offset of that tile, as compressed and stored on disk. The offset is specified with respect to the beginning of the TIFF file. Note that this implies that each tile has a location independent of the locations of other tiles.")); + add(0x0145, QObject::tr("TileByteCounts"), 1, 3, QObject::tr("For each tile, the number of (compressed) bytes in that tile. See TileOffsets for a description of how the byte counts are ordered.")); + add(0x014a, QObject::tr("SubIFDs"), 1, 4, QObject::tr("Defined by Adobe Corporation to enable TIFF Trees within a TIFF file.")); + add(0x014c, QObject::tr("InkSet"), 1, 3, QObject::tr("The set of inks used in a separated (PhotometricInterpretation=5) image.")); + add(0x014d, QObject::tr("InkNames"), 1, 2, QObject::tr("The name of each ink used in a separated (PhotometricInterpretation=5) image.")); + add(0x014e, QObject::tr("NumberOfInks"), 1, 3, QObject::tr("The number of inks. Usually equal to SamplesPerPixel, unless there are extra samples.")); + add(0x0150, QObject::tr("DotRange"), 1, 1, QObject::tr("The component values that correspond to a 0% dot and 100% dot.")); + add(0x0151, QObject::tr("TargetPrinter"), 1, 2, QObject::tr("A description of the printing environment for which this separation is intended.")); + add(0x0152, QObject::tr("ExtraSamples"), 1, 3, QObject::tr("Specifies that each pixel has m extra components whose interpretation is defined by one of the values listed below.")); + add(0x0153, QObject::tr("SampleFormat"), 1, 3, QObject::tr("This field specifies how to interpret each data sample in a pixel.")); + add(0x0154, QObject::tr("SMinSampleValue"), 1, 3, QObject::tr("This field specifies the minimum sample value.")); + add(0x0155, QObject::tr("SMaxSampleValue"), 1, 3, QObject::tr("This field specifies the maximum sample value.")); + add(0x0156, QObject::tr("TransferRange"), 1, 3, QObject::tr("Expands the range of the TransferFunction")); + add(0x0157, QObject::tr("ClipPath"), 1, 1, QObject::tr("A TIFF ClipPath is intended to mirror the essentials of PostScript's path creation functionality.")); + add(0x0158, QObject::tr("XClipPathUnits"), 1, 8, QObject::tr("The number of units that span the width of the image, in terms of integer ClipPath coordinates.")); + add(0x0159, QObject::tr("YClipPathUnits"), 1, 8, QObject::tr("The number of units that span the height of the image, in terms of integer ClipPath coordinates.")); + add(0x015a, QObject::tr("Indexed"), 1, 3, QObject::tr("Indexed images are images where the 'pixels' do not represent color values, but rather an index (usually 8-bit) into a separate color table, the ColorMap.")); + add(0x015b, QObject::tr("JPEGTables"), 1, 7, QObject::tr("This optional tag may be used to encode the JPEG quantization and Huffman tables for subsequent use by the JPEG decompression process.")); + add(0x015f, QObject::tr("OPIProxy"), 1, 3, QObject::tr("OPIProxy gives information concerning whether this image is a low-resolution proxy of a high-resolution image (Adobe OPI).")); + add(0x0200, QObject::tr("JPEGProc"), 1, 4, QObject::tr("This field indicates the process used to produce the compressed data")); + add(0x0201, QObject::tr("JPEGInterchangeFormat"), 1, 4, QObject::tr("The offset to the start byte (SOI) of JPEG compressed thumbnail data. This is not used for primary image JPEG data.")); + add(0x0202, QObject::tr("JPEGInterchangeFormatLength"), 1, 4, QObject::tr("The number of bytes of JPEG compressed thumbnail data. This is not used for primary image JPEG data. JPEG thumbnails are not divided but are recorded as a continuous JPEG bitstream from SOI to EOI. Appn and COM markers should not be recorded. Compressed thumbnails must be recorded in no more than 64 Kbytes, including all other data to be recorded in APP1.")); + add(0x0203, QObject::tr("JPEGRestartInterval"), 1, 3, QObject::tr("This Field indicates the length of the restart interval used in the compressed image data.")); + add(0x0205, QObject::tr("JPEGLosslessPredictors"), 1, 3, QObject::tr("This Field points to a list of lossless predictor-selection values, one per component.")); + add(0x0206, QObject::tr("JPEGPointTransforms"), 1, 3, QObject::tr("This Field points to a list of point transform values, one per component.")); + add(0x0207, QObject::tr("JPEGQTables"), 1, 4, QObject::tr("This Field points to a list of offsets to the quantization tables, one per component.")); + add(0x0208, QObject::tr("JPEGDCTables"), 1, 4, QObject::tr("This Field points to a list of offsets to the DC Huffman tables or the lossless Huffman tables, one per component.")); + add(0x0209, QObject::tr("JPEGACTables"), 1, 4, QObject::tr("This Field points to a list of offsets to the Huffman AC tables, one per component.")); + add(0x0211, QObject::tr("YCbCrCoefficients"), 1, 5, QObject::tr("The matrix coefficients for transformation from RGB to YCbCr image data. No default is given in TIFF; but here the value given in Appendix E, \"Color Space Guidelines\"), is used as the default. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability this condition.")); + add(0x0212, QObject::tr("YCbCrSubSampling"), 1, 3, QObject::tr("The sampling ratio of chrominance components in relation to the luminance component. In JPEG compressed data a JPEG marker is used instead of this tag.")); + add(0x0213, QObject::tr("YCbCrPositioning"), 1, 3, QObject::tr("The position of chrominance components in relation to the luminance component. This field is designated only for JPEG compressed data or uncompressed YCbCr data. The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in this standard that 2 (co-sited) be used to record data, in order to improve the image quality when viewed on TV systems. When this field does not exist, the reader shall assume the TIFF default. In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended. If the reader does not have the capability of supporting both kinds of , it shall follow the TIFF default regardless of the value in this field. It is preferable that readers be able to support both centered and co-sited positioning.")); + add(0x0214, QObject::tr("ReferenceBlackWhite"), 1, 5, QObject::tr("The reference black point value and reference white point value. No defaults are given in TIFF, but the values below are given as defaults here. The color space is declared in a color space information tag, with the default being the value that gives the optimal image characteristics Interoperability these conditions.")); + add(0x02bc, QObject::tr("XMLPacket"), 1, 1, QObject::tr("XMP Metadata (Adobe technote 9-14-02)")); + add(0x4746, QObject::tr("Rating"), 1, 3, QObject::tr("Rating tag used by Windows")); + add(0x4749, QObject::tr("RatingPercent"), 1, 3, QObject::tr("Rating tag used by Windows, value in percent")); + add(0x800d, QObject::tr("ImageID"), 1, 2, QObject::tr("ImageID is the full pathname of the original, high-resolution image, or any other identifying string that uniquely identifies the original image (Adobe OPI).")); + add(0x828d, QObject::tr("CFARepeatPatternDim"), 1, 3, QObject::tr("Contains two values representing the minimum rows and columns to define the repeating patterns of the color filter array")); + add(0x828e, QObject::tr("CFAPattern"), 1, 1, QObject::tr("Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods")); + add(0x828f, QObject::tr("BatteryLevel"), 1, 5, QObject::tr("Contains a value of the battery level as a fraction or string")); + add(0x8298, QObject::tr("Copyright"), 1, 2, QObject::tr("Copyright information. In this standard the tag is used to indicate both the photographer and editor copyrights. It is the copyright notice of the person or organization claiming rights to the image. The Interoperability copyright statement including date and rights should be written in this field; e.g., \"Copyright, John Smith, 19xx. All rights reserved.\". In this standard the field records both the photographer and editor copyrights, with each recorded in a separate part of the statement. When there is a clear distinction between the photographer and editor copyrights, these are to be written in the order of photographer followed by editor copyright, separated by NULL (in this case since the statement also ends with a NULL, there are two NULL codes). When only the photographer copyright is given, it is terminated by one NULL code. When only the editor copyright is given, the photographer copyright part consists of one space followed by a terminating NULL code, then the editor copyright is given. When the field is left blank, it is treated as unknown.")); + add(0x829a, QObject::tr("ExposureTime"), 1, 5, QObject::tr("Exposure time, given in seconds.")); + add(0x829d, QObject::tr("FNumber"), 1, 5, QObject::tr("The F number.")); + add(0x83bb, QObject::tr("IPTCNAA"), 1, 4, QObject::tr("Contains an IPTC/NAA record")); + add(0x8649, QObject::tr("ImageResources"), 1, 1, QObject::tr("Contains information embedded by the Adobe Photoshop application")); + add(0x8769, QObject::tr("ExifTag"), 1, 4, QObject::tr("A pointer to the Exif IFD. Interoperability, Exif IFD has the same structure as that of the IFD specified in TIFF. ordinarily, however, it does not contain image data as in the case of TIFF.")); + add(0x8773, QObject::tr("InterColorProfile"), 1, 7, QObject::tr("Contains an InterColor Consortium (ICC) format color space characterization/profile")); + add(0x8822, QObject::tr("ExposureProgram"), 1, 3, QObject::tr("The class of the program used by the camera to set exposure when the picture is taken.")); + add(0x8824, QObject::tr("SpectralSensitivity"), 1, 2, QObject::tr("Indicates the spectral sensitivity of each channel of the camera used.")); + add(0x8825, QObject::tr("GPSTag"), 1, 4, QObject::tr("A pointer to the GPS Info IFD. The Interoperability structure of the GPS Info IFD, like that of Exif IFD, has no image data.")); + add(0x8827, QObject::tr("ISOSpeedRatings"), 1, 3, QObject::tr("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232.")); + add(0x8828, QObject::tr("OECF"), 1, 7, QObject::tr("Indicates the Opto-Electric Conversion Function (OECF) specified in ISO 14524.")); + add(0x8829, QObject::tr("Interlace"), 1, 3, QObject::tr("Indicates the field number of multifield images.")); + add(0x882a, QObject::tr("TimeZoneOffset"), 1, 8, QObject::tr("This optional tag encodes the time zone of the camera clock (relative to Greenwich Mean Time) used to create the DataTimeOriginal tag-value when the picture was taken. It may also contain the time zone offset of the clock used to create the DateTime tag-value when the image was modified.")); + add(0x882b, QObject::tr("SelfTimerMode"), 1, 3, QObject::tr("Number of seconds image capture was delayed from button press.")); + add(0x9003, QObject::tr("DateTimeOriginal"), 1, 2, QObject::tr("The date and time when the original image data was generated.")); + add(0x9102, QObject::tr("CompressedBitsPerPixel"), 1, 5, QObject::tr("Specific to compressed data; states the compressed bits per pixel.")); + add(0x9201, QObject::tr("ShutterSpeedValue"), 1, 10, QObject::tr("Shutter speed.")); + add(0x9202, QObject::tr("ApertureValue"), 1, 5, QObject::tr("The lens aperture.")); + add(0x9203, QObject::tr("BrightnessValue"), 1, 10, QObject::tr("The value of brightness.")); + add(0x9204, QObject::tr("ExposureBiasValue"), 1, 10, QObject::tr("The exposure bias.")); + add(0x9205, QObject::tr("MaxApertureValue"), 1, 5, QObject::tr("The smallest F number of the lens.")); + add(0x9206, QObject::tr("SubjectDistance"), 1, 10, QObject::tr("The distance to the subject, given in meters.")); + add(0x9207, QObject::tr("MeteringMode"), 1, 3, QObject::tr("The metering mode.")); + add(0x9208, QObject::tr("LightSource"), 1, 3, QObject::tr("The kind of light source.")); + add(0x9209, QObject::tr("Flash"), 1, 3, QObject::tr("Indicates the status of flash when the image was shot.")); + add(0x920a, QObject::tr("FocalLength"), 1, 5, QObject::tr("The actual focal length of the lens, in mm.")); + add(0x920b, QObject::tr("FlashEnergy"), 1, 5, QObject::tr("Amount of flash energy (BCPS).")); + add(0x920c, QObject::tr("SpatialFrequencyResponse"), 1, 7, QObject::tr("SFR of the camera.")); + add(0x920d, QObject::tr("Noise"), 1, 7, QObject::tr("Noise measurement values.")); + add(0x920e, QObject::tr("FocalPlaneXResolution"), 1, 5, QObject::tr("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageWidth direction for main image.")); + add(0x920f, QObject::tr("FocalPlaneYResolution"), 1, 5, QObject::tr("Number of pixels per FocalPlaneResolutionUnit (37392) in ImageLength direction for main image.")); + add(0x9210, QObject::tr("FocalPlaneResolutionUnit"), 1, 3, QObject::tr("Unit of measurement for FocalPlaneXResolution(37390) and FocalPlaneYResolution(37391).")); + add(0x9211, QObject::tr("ImageNumber"), 1, 4, QObject::tr("Number assigned to an image, e.g., in a chained image burst.")); + add(0x9212, QObject::tr("SecurityClassification"), 1, 2, QObject::tr("Security classification assigned to the image.")); + add(0x9213, QObject::tr("ImageHistory"), 1, 2, QObject::tr("Record of what has been done to the image.")); + add(0x9214, QObject::tr("SubjectLocation"), 1, 3, QObject::tr("Indicates the location and area of the main subject in the overall scene.")); + add(0x9215, QObject::tr("ExposureIndex"), 1, 5, QObject::tr("Encodes the camera exposure index setting when image was captured.")); + add(0x9216, QObject::tr("TIFFEPStandardID"), 1, 1, QObject::tr("Contains four ASCII characters representing the TIFF/EP standard version of a TIFF/EP file, eg '1', '0', '0', '0'")); + add(0x9217, QObject::tr("SensingMethod"), 1, 3, QObject::tr("Type of image sensor.")); + add(0x9c9b, QObject::tr("XPTitle"), 1, 1, QObject::tr("Title tag used by Windows, encoded in UCS2")); + add(0x9c9c, QObject::tr("XPComment"), 1, 1, QObject::tr("Comment tag used by Windows, encoded in UCS2")); + add(0x9c9d, QObject::tr("XPAuthor"), 1, 1, QObject::tr("Author tag used by Windows, encoded in UCS2")); + add(0x9c9e, QObject::tr("XPKeywords"), 1, 1, QObject::tr("Keywords tag used by Windows, encoded in UCS2")); + add(0x9c9f, QObject::tr("XPSubject"), 1, 1, QObject::tr("Subject tag used by Windows, encoded in UCS2")); + add(0xc4a5, QObject::tr("PrintImageMatching"), 1, 7, QObject::tr("Print Image Matching, description needed.")); + add(0xc612, QObject::tr("DNGVersion"), 1, 1, QObject::tr("This tag encodes the DNG four-tier version number. For files compliant with version 1.1.0.0 of the DNG specification, this tag should contain the bytes: 1, 1, 0, 0.")); + add(0xc613, QObject::tr("DNGBackwardVersion"), 1, 1, QObject::tr("This tag specifies the oldest version of the Digital Negative specification for which a file is compatible. Readers shouldnot attempt to read a file if this tag specifies a version number that is higher than the version number of the specification the reader was based on. In addition to checking the version tags, readers should, for all tags, check the types, counts, and values, to verify it is able to correctly read the file.")); + add(0xc614, QObject::tr("UniqueCameraModel"), 1, 2, QObject::tr("Defines a unique, non-localized name for the camera model that created the image in the raw file. This name should include the manufacturer's name to avoid conflicts, and should not be localized, even if the camera name itself is localized for different markets (see LocalizedCameraModel). This string may be used by reader software to index into per-model preferences and replacement profiles.")); + add(0xc615, QObject::tr("LocalizedCameraModel"), 1, 1, QObject::tr("Similar to the UniqueCameraModel field, except the name can be localized for different markets to match the localization of the camera name.")); + add(0xc616, QObject::tr("CFAPlaneColor"), 1, 1, QObject::tr("Provides a mapping between the values in the CFAPattern tag and the plane numbers in LinearRaw space. This is a required tag for non-RGB CFA images.")); + add(0xc617, QObject::tr("CFALayout"), 1, 3, QObject::tr("Describes the spatial layout of the CFA.")); + add(0xc618, QObject::tr("LinearizationTable"), 1, 3, QObject::tr("Describes a lookup table that maps stored values into linear values. This tag is typically used to increase compression ratios by storing the raw data in a non-linear, more visually uniform space with fewer total encoding levels. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel.")); + add(0xc619, QObject::tr("BlackLevelRepeatDim"), 1, 3, QObject::tr("Specifies repeat pattern size for the BlackLevel tag.")); + add(0xc61a, QObject::tr("BlackLevel"), 1, 5, QObject::tr("Specifies the zero light (a.k.a. thermal black or black current) encoding level, as a repeating pattern. The origin of this pattern is the top-left corner of the ActiveArea rectangle. The values are stored in row-column-sample scan order.")); + add(0xc61b, QObject::tr("BlackLevelDeltaH"), 1, 10, QObject::tr("If the zero light encoding level is a function of the image column, BlackLevelDeltaH specifies the difference between the zero light encoding level for each column and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel.")); + add(0xc61c, QObject::tr("BlackLevelDeltaV"), 1, 10, QObject::tr("If the zero light encoding level is a function of the image row, this tag specifies the difference between the zero light encoding level for each row and the baseline zero light encoding level. If SamplesPerPixel is not equal to one, this single table applies to all the samples for each pixel.")); + add(0xc61d, QObject::tr("WhiteLevel"), 1, 3, QObject::tr("This tag specifies the fully saturated encoding level for the raw sample values. Saturation is caused either by the sensor itself becoming highly non-linear in response, or by the camera's analog to digital converter clipping.")); + add(0xc61e, QObject::tr("DefaultScale"), 1, 5, QObject::tr("DefaultScale is required for cameras with non-square pixels. It specifies the default scale factors for each direction to convert the image to square pixels. Typically these factors are selected to approximately preserve total pixel count. For CFA images that use CFALayout equal to 2, 3, 4, or 5, such as the Fujifilm SuperCCD, these two values should usually differ by a factor of 2.0.")); + add(0xc61f, QObject::tr("DefaultCropOrigin"), 1, 3, QObject::tr("Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropOrigin specifies the origin of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied), relative to the top-left corner of the ActiveArea rectangle.")); + add(0xc620, QObject::tr("DefaultCropSize"), 1, 3, QObject::tr("Raw images often store extra pixels around the edges of the final image. These extra pixels help prevent interpolation artifacts near the edges of the final image. DefaultCropSize specifies the size of the final image area, in raw image coordinates (i.e., before the DefaultScale has been applied).")); + add(0xc621, QObject::tr("ColorMatrix1"), 1, 10, QObject::tr("ColorMatrix1 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the first calibration illuminant. The matrix values are stored in row scan order. The ColorMatrix1 tag is required for all non-monochrome DNG files.")); + add(0xc622, QObject::tr("ColorMatrix2"), 1, 10, QObject::tr("ColorMatrix2 defines a transformation matrix that converts XYZ values to reference camera native color space values, under the second calibration illuminant. The matrix values are stored in row scan order.")); + add(0xc623, QObject::tr("CameraCalibration1"), 1, 10, QObject::tr("CameraCalibration1 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the first calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix1 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer.")); + add(0xc624, QObject::tr("CameraCalibration2"), 1, 10, QObject::tr("CameraCalibration2 defines a calibration matrix that transforms reference camera native space values to individual camera native space values under the second calibration illuminant. The matrix is stored in row scan order. This matrix is stored separately from the matrix specified by the ColorMatrix2 tag to allow raw converters to swap in replacement color matrices based on UniqueCameraModel tag, while still taking advantage of any per-individual camera calibration performed by the camera manufacturer.")); + add(0xc625, QObject::tr("ReductionMatrix1"), 1, 10, QObject::tr("ReductionMatrix1 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the first calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order.")); + add(0xc626, QObject::tr("ReductionMatrix2"), 1, 10, QObject::tr("ReductionMatrix2 defines a dimensionality reduction matrix for use as the first stage in converting color camera native space values to XYZ values, under the second calibration illuminant. This tag may only be used if ColorPlanes is greater than 3. The matrix is stored in row scan order.")); + add(0xc627, QObject::tr("AnalogBalance"), 1, 5, QObject::tr("Normally the stored raw values are not white balanced, since any digital white balancing will reduce the dynamic range of the final image if the user decides to later adjust the white balance; however, if camera hardware is capable of white balancing the color channels before the signal is digitized, it can improve the dynamic range of the final image. AnalogBalance defines the gain, either analog (recommended) or digital (not recommended) that has been applied the stored raw values.")); + add(0xc628, QObject::tr("AsShotNeutral"), 1, 3, QObject::tr("Specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values. The inclusion of this tag precludes the inclusion of the AsShotWhiteXY tag.")); + add(0xc629, QObject::tr("AsShotWhiteXY"), 1, 5, QObject::tr("Specifies the selected white balance at time of capture, encoded as x-y chromaticity coordinates. The inclusion of this tag precludes the inclusion of the AsShotNeutral tag.")); + add(0xc62a, QObject::tr("BaselineExposure"), 1, 10, QObject::tr("Camera models vary in the trade-off they make between highlight headroom and shadow noise. Some leave a significant amount of highlight headroom during a normal exposure. This allows significant negative exposure compensation to be applied during raw conversion, but also means normal exposures will contain more shadow noise. Other models leave less headroom during normal exposures. This allows for less negative exposure compensation, but results in lower shadow noise for normal exposures. Because of these differences, a raw converter needs to vary the zero point of its exposure compensation control from model to model. BaselineExposure specifies by how much (in EV units) to move the zero point. Positive values result in brighter default results, while negative values result in darker default results.")); + add(0xc62b, QObject::tr("BaselineNoise"), 1, 5, QObject::tr("Specifies the relative noise level of the camera model at a baseline ISO value of 100, compared to a reference camera model. Since noise levels tend to vary approximately with the square root of the ISO value, a raw converter can use this value, combined with the current ISO, to estimate the relative noise level of the current image.")); + add(0xc62c, QObject::tr("BaselineSharpness"), 1, 5, QObject::tr("Specifies the relative amount of sharpening required for this camera model, compared to a reference camera model. Camera models vary in the strengths of their anti-aliasing filters. Cameras with weak or no filters require less sharpening than cameras with strong anti-aliasing filters.")); + add(0xc62d, QObject::tr("BayerGreenSplit"), 1, 4, QObject::tr("Only applies to CFA images using a Bayer pattern filter array. This tag specifies, in arbitrary units, how closely the values of the green pixels in the blue/green rows track the values of the green pixels in the red/green rows. A value of zero means the two kinds of green pixels track closely, while a non-zero value means they sometimes diverge. The useful range for this tag is from 0 (no divergence) to about 5000 (quite large divergence).")); + add(0xc62e, QObject::tr("LinearResponseLimit"), 1, 5, QObject::tr("Some sensors have an unpredictable non-linearity in their response as they near the upper limit of their encoding range. This non-linearity results in color shifts in the highlight areas of the resulting image unless the raw converter compensates for this effect. LinearResponseLimit specifies the fraction of the encoding range above which the response may become significantly non-linear.")); + add(0xc62f, QObject::tr("CameraSerialNumber"), 1, 2, QObject::tr("CameraSerialNumber contains the serial number of the camera or camera body that captured the image.")); + add(0xc630, QObject::tr("LensInfo"), 1, 5, QObject::tr("Contains information about the lens that captured the image. If the minimum f-stops are unknown, they should be encoded as 0/0.")); + add(0xc631, QObject::tr("ChromaBlurRadius"), 1, 5, QObject::tr("ChromaBlurRadius provides a hint to the DNG reader about how much chroma blur should be applied to the image. If this tag is omitted, the reader will use its default amount of chroma blurring. Normally this tag is only included for non-CFA images, since the amount of chroma blur required for mosaic images is highly dependent on the de-mosaic algorithm, in which case the DNG reader's default value is likely optimized for its particular de-mosaic algorithm.")); + add(0xc632, QObject::tr("AntiAliasStrength"), 1, 5, QObject::tr("Provides a hint to the DNG reader about how strong the camera's anti-alias filter is. A value of 0.0 means no anti-alias filter (i.e., the camera is prone to aliasing artifacts with some subjects), while a value of 1.0 means a strong anti-alias filter (i.e., the camera almost never has aliasing artifacts).")); + add(0xc633, QObject::tr("ShadowScale"), 1, 10, QObject::tr("This tag is used by Adobe Camera Raw to control the sensitivity of its 'Shadows' slider.")); + add(0xc634, QObject::tr("DNGPrivateData"), 1, 1, QObject::tr("Provides a way for camera manufacturers to store private data in the DNG file for use by their own raw converters, and to have that data preserved by programs that edit DNG files.")); + add(0xc635, QObject::tr("MakerNoteSafety"), 1, 3, QObject::tr("MakerNoteSafety lets the DNG reader know whether the EXIF MakerNote tag is safe to preserve along with the rest of the EXIF data. File browsers and other image management software processing an image with a preserved MakerNote should be aware that any thumbnail image embedded in the MakerNote may be stale, and may not reflect the current state of the full size image.")); + add(0xc65a, QObject::tr("CalibrationIlluminant1"), 1, 3, QObject::tr("The illuminant used for the first set of color calibration tags (ColorMatrix1, CameraCalibration1, ReductionMatrix1). The legal values for this tag are the same as the legal values for the LightSource EXIF tag.")); + add(0xc65b, QObject::tr("CalibrationIlluminant2"), 1, 3, QObject::tr("The illuminant used for an optional second set of color calibration tags (ColorMatrix2, CameraCalibration2, ReductionMatrix2). The legal values for this tag are the same as the legal values for the CalibrationIlluminant1 tag; however, if both are included, neither is allowed to have a value of 0 (unknown).")); + add(0xc65c, QObject::tr("BestQualityScale"), 1, 5, QObject::tr("For some cameras, the best possible image quality is not achieved by preserving the total pixel count during conversion. For example, Fujifilm SuperCCD images have maximum detail when their total pixel count is doubled. This tag specifies the amount by which the values of the DefaultScale tag need to be multiplied to achieve the best quality image size.")); + add(0xc65d, QObject::tr("RawDataUniqueID"), 1, 1, QObject::tr("This tag contains a 16-byte unique identifier for the raw image data in the DNG file. DNG readers can use this tag to recognize a particular raw image, even if the file's name or the metadata contained in the file has been changed. If a DNG writer creates such an identifier, it should do so using an algorithm that will ensure that it is very unlikely two different images will end up having the same identifier.")); + add(0xc68b, QObject::tr("OriginalRawFileName"), 1, 1, QObject::tr("If the DNG file was converted from a non-DNG raw file, then this tag contains the file name of that original raw file.")); + add(0xc68c, QObject::tr("OriginalRawFileData"), 1, 7, QObject::tr("If the DNG file was converted from a non-DNG raw file, then this tag contains the compressed contents of that original raw file. The contents of this tag always use the big-endian byte order. The tag contains a sequence of data blocks. Future versions of the DNG specification may define additional data blocks, so DNG readers should ignore extra bytes when parsing this tag. DNG readers should also detect the case where data blocks are missing from the end of the sequence, and should assume a default value for all the missing blocks. There are no padding or alignment bytes between data blocks.")); + add(0xc68d, QObject::tr("ActiveArea"), 1, 3, QObject::tr("This rectangle defines the active (non-masked) pixels of the sensor. The order of the rectangle coordinates is: top, left, bottom, right.")); + add(0xc68e, QObject::tr("MaskedAreas"), 1, 3, QObject::tr("This tag contains a list of non-overlapping rectangle coordinates of fully masked pixels, which can be optionally used by DNG readers to measure the black encoding level. The order of each rectangle's coordinates is: top, left, bottom, right. If the raw image data has already had its black encoding level subtracted, then this tag should not be used, since the masked pixels are no longer useful.")); + add(0xc68f, QObject::tr("AsShotICCProfile"), 1, 7, QObject::tr("This tag contains an ICC profile that, in conjunction with the AsShotPreProfileMatrix tag, provides the camera manufacturer with a way to specify a default color rendering from camera color space coordinates (linear reference values) into the ICC profile connection space. The ICC profile connection space is an output referred colorimetric space, whereas the other color calibration tags in DNG specify a conversion into a scene referred colorimetric space. This means that the rendering in this profile should include any desired tone and gamut mapping needed to convert between scene referred values and output referred values.")); + add(0xc690, QObject::tr("AsShotPreProfileMatrix"), 1, 10, QObject::tr("This tag is used in conjunction with the AsShotICCProfile tag. It specifies a matrix that should be applied to the camera color space coordinates before processing the values through the ICC profile specified in the AsShotICCProfile tag. The matrix is stored in the row scan order. If ColorPlanes is greater than three, then this matrix can (but is not required to) reduce the dimensionality of the color data down to three components, in which case the AsShotICCProfile should have three rather than ColorPlanes input components.")); + add(0xc691, QObject::tr("CurrentICCProfile"), 1, 7, QObject::tr("This tag is used in conjunction with the CurrentPreProfileMatrix tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers.")); + add(0xc692, QObject::tr("CurrentPreProfileMatrix"), 1, 10, QObject::tr("This tag is used in conjunction with the CurrentICCProfile tag. The CurrentICCProfile and CurrentPreProfileMatrix tags have the same purpose and usage as the AsShotICCProfile and AsShotPreProfileMatrix tag pair, except they are for use by raw file editors rather than camera manufacturers.")); + add(0xc6bf, QObject::tr("ColorimetricReference"), 1, 3, QObject::tr("The DNG color model documents a transform between camera colors and CIE XYZ values. This tag describes the colorimetric reference for the CIE XYZ values. 0 = The XYZ values are scene-referred. 1 = The XYZ values are output-referred, using the ICC profile perceptual dynamic range. This tag allows output-referred data to be stored in DNG files and still processed correctly by DNG readers.")); + add(0xc6f3, QObject::tr("CameraCalibrationSignature"), 1, 1, QObject::tr("A UTF-8 encoded string associated with the CameraCalibration1 and CameraCalibration2 tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transform if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile.")); + add(0xc6f4, QObject::tr("ProfileCalibrationSignature"), 1, 1, QObject::tr("A UTF-8 encoded string associated with the camera profile tags. The CameraCalibration1 and CameraCalibration2 tags should only be used in the DNG color transfer if the string stored in the CameraCalibrationSignature tag exactly matches the string stored in the ProfileCalibrationSignature tag for the selected camera profile.")); + add(0xc6f6, QObject::tr("AsShotProfileName"), 1, 1, QObject::tr("A UTF-8 encoded string containing the name of the \"as shot\" camera profile, if any.")); + add(0xc6f7, QObject::tr("NoiseReductionApplied"), 1, 5, QObject::tr("This tag indicates how much noise reduction has been applied to the raw data on a scale of 0.0 to 1.0. A 0.0 value indicates that no noise reduction has been applied. A 1.0 value indicates that the \"ideal\" amount of noise reduction has been applied, i.e. that the DNG reader should not apply additional noise reduction by default. A value of 0/0 indicates that this parameter is unknown.")); + add(0xc6f8, QObject::tr("ProfileName"), 1, 1, QObject::tr("A UTF-8 encoded string containing the name of the camera profile. This tag is optional if there is only a single camera profile stored in the file but is required for all camera profiles if there is more than one camera profile stored in the file.")); + add(0xc6f9, QObject::tr("ProfileHueSatMapDims"), 1, 4, QObject::tr("This tag specifies the number of input samples in each dimension of the hue/saturation/value mapping tables. The data for these tables are stored in ProfileHueSatMapData1 and ProfileHueSatMapData2 tags. The most common case has ValueDivisions equal to 1, so only hue and saturation are used as inputs to the mapping table.")); + add(0xc6fa, QObject::tr("ProfileHueSatMapData1"), 1, 11, QObject::tr("This tag contains the data for the first hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0.")); + add(0xc6fb, QObject::tr("ProfileHueSatMapData2"), 1, 11, QObject::tr("This tag contains the data for the second hue/saturation/value mapping table. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees; the second entry is a saturation scale factor; and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0.")); + add(0xc6fc, QObject::tr("ProfileToneCurve"), 1, 11, QObject::tr("This tag contains a default tone curve that can be applied while processing the image as a starting point for user adjustments. The curve is specified as a list of 32-bit IEEE floating-point value pairs in linear gamma. Each sample has an input value in the range of 0.0 to 1.0, and an output value in the range of 0.0 to 1.0. The first sample is required to be (0.0, 0.0), and the last sample is required to be (1.0, 1.0). Interpolated the curve using a cubic spline.")); + add(0xc6fd, QObject::tr("ProfileEmbedPolicy"), 1, 4, QObject::tr("This tag contains information about the usage rules for the associated camera profile.")); + add(0xc6fe, QObject::tr("ProfileCopyright"), 1, 1, QObject::tr("A UTF-8 encoded string containing the copyright information for the camera profile. This string always should be preserved along with the other camera profile tags.")); + add(0xc714, QObject::tr("ForwardMatrix1"), 1, 10, QObject::tr("This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors.")); + add(0xc715, QObject::tr("ForwardMatrix2"), 1, 10, QObject::tr("This tag defines a matrix that maps white balanced camera colors to XYZ D50 colors.")); + add(0xc716, QObject::tr("PreviewApplicationName"), 1, 1, QObject::tr("A UTF-8 encoded string containing the name of the application that created the preview stored in the IFD.")); + add(0xc717, QObject::tr("PreviewApplicationVersion"), 1, 1, QObject::tr("A UTF-8 encoded string containing the version number of the application that created the preview stored in the IFD.")); + add(0xc718, QObject::tr("PreviewSettingsName"), 1, 1, QObject::tr("A UTF-8 encoded string containing the name of the conversion settings (for example, snapshot name) used for the preview stored in the IFD.")); + add(0xc719, QObject::tr("PreviewSettingsDigest"), 1, 1, QObject::tr("A unique ID of the conversion settings (for example, MD5 digest) used to render the preview stored in the IFD.")); + add(0xc71a, QObject::tr("PreviewColorSpace"), 1, 4, QObject::tr("This tag specifies the color space in which the rendered preview in this IFD is stored. The default value for this tag is sRGB for color previews and Gray Gamma 2.2 for monochrome previews.")); + add(0xc71b, QObject::tr("PreviewDateTime"), 1, 2, QObject::tr("This tag is an ASCII string containing the name of the date/time at which the preview stored in the IFD was rendered. The date/time is encoded using ISO 8601 format.")); + add(0xc71c, QObject::tr("RawImageDigest"), 1, 7, QObject::tr("This tag is an MD5 digest of the raw image data. All pixels in the image are processed in row-scan order. Each pixel is zero padded to 16 or 32 bits deep (16-bit for data less than or equal to 16 bits deep, 32-bit otherwise). The data for each pixel is processed in little-endian byte order.")); + add(0xc71d, QObject::tr("OriginalRawFileDigest"), 1, 7, QObject::tr("This tag is an MD5 digest of the data stored in the OriginalRawFileData tag.")); + add(0xc71e, QObject::tr("SubTileBlockSize"), 1, 4, QObject::tr("Normally, the pixels within a tile are stored in simple row-scan order. This tag specifies that the pixels within a tile should be grouped first into rectangular blocks of the specified size. These blocks are stored in row-scan order. Within each block, the pixels are stored in row-scan order. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0.")); + add(0xc71f, QObject::tr("RowInterleaveFactor"), 1, 4, QObject::tr("This tag specifies that rows of the image are stored in interleaved order. The value of the tag specifies the number of interleaved fields. The use of a non-default value for this tag requires setting the DNGBackwardVersion tag to at least 1.2.0.0.")); + add(0xc725, QObject::tr("ProfileLookTableDims"), 1, 4, QObject::tr("This tag specifies the number of input samples in each dimension of a default \"look\" table. The data for this table is stored in the ProfileLookTableData tag.")); + add(0xc726, QObject::tr("ProfileLookTableData"), 1, 11, QObject::tr("This tag contains a default \"look\" table that can be applied while processing the image as a starting point for user adjustment. This table uses the same format as the tables stored in the ProfileHueSatMapData1 and ProfileHueSatMapData2 tags, and is applied in the same color space. However, it should be applied later in the processing pipe, after any exposure compensation and/or fill light stages, but before any tone curve stage. Each entry of the table contains three 32-bit IEEE floating-point values. The first entry is hue shift in degrees, the second entry is a saturation scale factor, and the third entry is a value scale factor. The table entries are stored in the tag in nested loop order, with the value divisions in the outer loop, the hue divisions in the middle loop, and the saturation divisions in the inner loop. All zero input saturation entries are required to have a value scale factor of 1.0.")); + add(0xc740, QObject::tr("OpcodeList1"), 1, 7, QObject::tr("Specifies the list of opcodes that should be applied to the raw image, as read directly from the file.")); + add(0xc741, QObject::tr("OpcodeList2"), 1, 7, QObject::tr("Specifies the list of opcodes that should be applied to the raw image, just after it has been mapped to linear reference values.")); + add(0xc74e, QObject::tr("OpcodeList3"), 1, 7, QObject::tr("Specifies the list of opcodes that should be applied to the raw image, just after it has been demosaiced.")); + add(0xc761, QObject::tr("NoiseProfile"), 1, 11, QObject::tr("NoiseProfile describes the amount of noise in a raw image. Specifically, this tag models the amount of signal-dependent photon (shot) noise and signal-independent sensor readout noise, two common sources of noise in raw images. The model assumes that the noise is white and spatially independent, ignoring fixed pattern effects and other sources of noise (e.g., pixel response non-uniformity, spatially-dependent thermal effects, etc.).")); + add(0xc763, QObject::tr("TimeCodes"), 1, 1, QObject::tr("The optional TimeCodes tag shall contain an ordered array of time codes. All time codes shall be 8 bytes long and in binary format. The tag may contain from 1 to 10 time codes. When the tag contains more than one time code, the first one shall be the default time code. This specification does not prescribe how to use multiple time codes. Each time code shall be as defined for the 8-byte time code structure in SMPTE 331M-2004, Section 8.3. See also SMPTE 12-1-2008 and SMPTE 309-1999.")); + add(0xc764, QObject::tr("FrameRate"), 1, 10, QObject::tr("The optional FrameRate tag shall specify the video frame rate in number of image frames per second, expressed as a signed rational number. The numerator shall be non-negative and the denominator shall be positive. This field value is identical to the sample rate field in SMPTE 377-1-2009.")); + add(0xc772, QObject::tr("TStop"), 1, 10, QObject::tr("The optional TStop tag shall specify the T-stop of the actual lens, expressed as an unsigned rational number. T-stop is also known as T-number or the photometric aperture of the lens. (F-number is the geometric aperture of the lens.) When the exact value is known, the T-stop shall be specified using a single number. Alternately, two numbers shall be used to indicate a T-stop range, in which case the first number shall be the minimum T-stop and the second number shall be the maximum T-stop.")); + add(0xc789, QObject::tr("ReelName"), 1, 2, QObject::tr("The optional ReelName tag shall specify a name for a sequence of images, where each image in the sequence has a unique image identifier (including but not limited to file name, frame number, date time, time code).")); + add(0xc7a1, QObject::tr("CameraLabel"), 1, 2, QObject::tr("The optional CameraLabel tag shall specify a text label for how the camera is used or assigned in this clip. This tag is similar to CameraLabel in XMP.")); + add(0x829a, QObject::tr("ExposureTime"), 5, 5, QObject::tr("Exposure time, given in seconds (sec).")); + add(0x829d, QObject::tr("FNumber"), 5, 5, QObject::tr("The F number.")); + add(0x8822, QObject::tr("ExposureProgram"), 5, 3, QObject::tr("The class of the program used by the camera to set exposure when the picture is taken.")); + add(0x8824, QObject::tr("SpectralSensitivity"), 5, 2, QObject::tr("Indicates the spectral sensitivity of each channel of the camera used. The tag value is an ASCII string compatible with the standard developed by the ASTM Technical Committee.")); + add(0x8827, QObject::tr("ISOSpeedRatings"), 5, 3, QObject::tr("Indicates the ISO Speed and ISO Latitude of the camera or input device as specified in ISO 12232.")); + add(0x8828, QObject::tr("OECF"), 5, 7, QObject::tr("Indicates the Opto-Electoric Conversion Function (OECF) specified in ISO 14524. is the relationship between the camera optical input and the image values.")); + add(0x8830, QObject::tr("SensitivityType"), 5, 3, QObject::tr("The SensitivityType tag indicates which one of the parameters of ISO12232 is the PhotographicSensitivity tag. Although it is an optional tag, it should be recorded when a PhotographicSensitivity tag is recorded. Value = 4, 5, 6, or 7 may be used in case that the values of plural parameters are the same.")); + add(0x8831, QObject::tr("StandardOutputSensitivity"), 5, 4, QObject::tr("This tag indicates the standard output sensitivity value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded.")); + add(0x8832, QObject::tr("RecommendedExposureIndex"), 5, 4, QObject::tr("This tag indicates the recommended exposure index value of a camera or input device defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded.")); + add(0x8833, QObject::tr("ISOSpeed"), 5, 4, QObject::tr("This tag indicates the ISO speed value of a camera or input device that is defined in ISO 12232. When recording this tag, the PhotographicSensitivity and SensitivityType tags shall also be recorded.")); + add(0x8834, QObject::tr("ISOSpeedLatitudeyyy"), 5, 4, QObject::tr("This tag indicates the ISO speed latitude yyy value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudezzz.")); + add(0x8835, QObject::tr("ISOSpeedLatitudezzz"), 5, 4, QObject::tr("This tag indicates the ISO speed latitude zzz value of a camera or input device that is defined in ISO 12232. However, this tag shall not be recorded without ISOSpeed and ISOSpeedLatitudeyyy.")); + add(0x9000, QObject::tr("ExifVersion"), 5, 7, QObject::tr("The version of this standard supported. Nonexistence of this field is taken to mean nonconformance to the standard.")); + add(0x9003, QObject::tr("DateTimeOriginal"), 5, 2, QObject::tr("The date and time when the original image data was generated. For a digital still camera the date and time the picture was taken are recorded.")); + add(0x9004, QObject::tr("DateTimeDigitized"), 5, 2, QObject::tr("The date and time when the image was stored as digital data.")); + add(0x9101, QObject::tr("ComponentsConfiguration"), 5, 7, QObject::tr("Information specific to compressed data. The channels of each component are arranged in order from the 1st component to the 4th. For uncompressed data the data arrangement is given in the tag. However, since can only express the order of Y, Cb and Cr, this tag is provided for cases when compressed data uses components other than Y, Cb, and Cr and to enable support of other sequences.")); + add(0x9102, QObject::tr("CompressedBitsPerPixel"), 5, 5, QObject::tr("Information specific to compressed data. The compression mode used for a compressed image is indicated in unit bits per pixel.")); + add(0x9201, QObject::tr("ShutterSpeedValue"), 5, 10, QObject::tr("Shutter speed. The unit is the APEX (Additive System of Photographic Exposure) setting.")); + add(0x9202, QObject::tr("ApertureValue"), 5, 5, QObject::tr("The lens aperture. The unit is the APEX value.")); + add(0x9203, QObject::tr("BrightnessValue"), 5, 10, QObject::tr("The value of brightness. The unit is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99.")); + add(0x9204, QObject::tr("ExposureBiasValue"), 5, 10, QObject::tr("The exposure bias. The units is the APEX value. Ordinarily it is given in the range of -99.99 to 99.99.")); + add(0x9205, QObject::tr("MaxApertureValue"), 5, 5, QObject::tr("The smallest F number of the lens. The unit is the APEX value. Ordinarily it is given in the range of 00.00 to 99.99, but it is not limited to this range.")); + add(0x9206, QObject::tr("SubjectDistance"), 5, 5, QObject::tr("The distance to the subject, given in meters.")); + add(0x9207, QObject::tr("MeteringMode"), 5, 3, QObject::tr("The metering mode.")); + add(0x9208, QObject::tr("LightSource"), 5, 3, QObject::tr("The kind of light source.")); + add(0x9209, QObject::tr("Flash"), 5, 3, QObject::tr("This tag is recorded when an image is taken using a strobe light (flash).")); + add(0x920a, QObject::tr("FocalLength"), 5, 5, QObject::tr("The actual focal length of the lens, in mm. Conversion is not made to the focal length of a 35 mm film camera.")); + add(0x9214, QObject::tr("SubjectArea"), 5, 3, QObject::tr("This tag indicates the location and area of the main subject in the overall scene.")); + add(0x927c, QObject::tr("MakerNote"), 5, 7, QObject::tr("A tag for manufacturers of Exif writers to record any desired information. The contents are up to the manufacturer.")); + add(0x9286, QObject::tr("UserComment"), 5, 7, QObject::tr("A tag for Exif users to write keywords or comments on the image besides those in , and without the character code limitations of the tag.")); + add(0x9290, QObject::tr("SubSecTime"), 5, 2, QObject::tr("A tag used to record fractions of seconds for the tag.")); + add(0x9291, QObject::tr("SubSecTimeOriginal"), 5, 2, QObject::tr("A tag used to record fractions of seconds for the tag.")); + add(0x9292, QObject::tr("SubSecTimeDigitized"), 5, 2, QObject::tr("A tag used to record fractions of seconds for the tag.")); + add(0xa000, QObject::tr("FlashpixVersion"), 5, 7, QObject::tr("The FlashPix format version supported by a FPXR file.")); + add(0xa001, QObject::tr("ColorSpace"), 5, 3, QObject::tr("The color space information tag is always recorded as the color space specifier. Normally sRGB is used to define the color space based on the PC monitor conditions and environment. If a color space other than sRGB is used, Uncalibrated is set. Image data recorded as Uncalibrated can be treated as sRGB when it is converted to FlashPix.")); + add(0xa002, QObject::tr("PixelXDimension"), 5, 4, QObject::tr("Information specific to compressed data. When a compressed file is recorded, the valid width of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file.")); + add(0xa003, QObject::tr("PixelYDimension"), 5, 4, QObject::tr("Information specific to compressed data. When a compressed file is recorded, the valid height of the meaningful image must be recorded in this tag, whether or not there is padding data or a restart marker. This tag should not exist in an uncompressed file. Since data padding is unnecessary in the vertical direction, the number of lines recorded in this valid image height tag will in fact be the same as that recorded in the SOF.")); + add(0xa004, QObject::tr("RelatedSoundFile"), 5, 2, QObject::tr("This tag is used to record the name of an audio file related to the image data. The only relational information recorded here is the Exif audio file name and extension (an ASCII string consisting of 8 characters + '.' + 3 characters). The path is not recorded.")); + add(0xa005, QObject::tr("InteroperabilityTag"), 5, 4, QObject::tr("Interoperability IFD is composed of tags which stores the information to ensure the Interoperability and pointed by the following tag located in Exif IFD. The Interoperability structure of Interoperability IFD is the same as TIFF defined IFD structure but does not contain the image data characteristically compared with normal TIFF IFD.")); + add(0xa20b, QObject::tr("FlashEnergy"), 5, 5, QObject::tr("Indicates the strobe energy at the time the image is captured, as measured in Beam Candle Power Seconds (BCPS).")); + add(0xa20c, QObject::tr("SpatialFrequencyResponse"), 5, 7, QObject::tr("This tag records the camera or input device spatial frequency table and SFR values in the direction of image width, image height, and diagonal direction, as specified in ISO 12233.")); + add(0xa20e, QObject::tr("FocalPlaneXResolution"), 5, 5, QObject::tr("Indicates the number of pixels in the image width (X) direction per on the camera focal plane.")); + add(0xa20f, QObject::tr("FocalPlaneYResolution"), 5, 5, QObject::tr("Indicates the number of pixels in the image height (V) direction per on the camera focal plane.")); + add(0xa210, QObject::tr("FocalPlaneResolutionUnit"), 5, 3, QObject::tr("Indicates the unit for measuring and . This value is the same as the .")); + add(0xa214, QObject::tr("SubjectLocation"), 5, 3, QObject::tr("Indicates the location of the main subject in the scene. The value of this tag represents the pixel at the center of the main subject relative to the left edge, prior to rotation processing as per the tag. The first value indicates the X column number and second indicates the Y row number.")); + add(0xa215, QObject::tr("ExposureIndex"), 5, 5, QObject::tr("Indicates the exposure index selected on the camera or input device at the time the image is captured.")); + add(0xa217, QObject::tr("SensingMethod"), 5, 3, QObject::tr("Indicates the image sensor type on the camera or input device.")); + add(0xa300, QObject::tr("FileSource"), 5, 7, QObject::tr("Indicates the image source. If a DSC recorded the image, this tag value of this tag always be set to 3, indicating that the image was recorded on a DSC.")); + add(0xa301, QObject::tr("SceneType"), 5, 7, QObject::tr("Indicates the type of scene. If a DSC recorded the image, this tag value must always be set to 1, indicating that the image was directly photographed.")); + add(0xa302, QObject::tr("CFAPattern"), 5, 7, QObject::tr("Indicates the color filter array (CFA) geometric pattern of the image sensor when a one-chip color area sensor is used. It does not apply to all sensing methods.")); + add(0xa401, QObject::tr("CustomRendered"), 5, 3, QObject::tr("This tag indicates the use of special processing on image data, such as rendering geared to output. When special processing is performed, the reader is expected to disable or minimize any further processing.")); + add(0xa402, QObject::tr("ExposureMode"), 5, 3, QObject::tr("This tag indicates the exposure mode set when the image was shot. In auto-bracketing mode, the camera shoots a series of frames of the same scene at different exposure settings.")); + add(0xa403, QObject::tr("WhiteBalance"), 5, 3, QObject::tr("This tag indicates the white balance mode set when the image was shot.")); + add(0xa404, QObject::tr("DigitalZoomRatio"), 5, 5, QObject::tr("This tag indicates the digital zoom ratio when the image was shot. If the numerator of the recorded value is 0, this indicates that digital zoom was not used.")); + add(0xa405, QObject::tr("FocalLengthIn35mmFilm"), 5, 3, QObject::tr("This tag indicates the equivalent focal length assuming a 35mm film camera, in mm. A value of 0 means the focal length is unknown. Note that this tag differs from the tag.")); + add(0xa406, QObject::tr("SceneCaptureType"), 5, 3, QObject::tr("This tag indicates the type of scene that was shot. It can also be used to record the mode in which the image was shot. Note that this differs from the tag.")); + add(0xa407, QObject::tr("GainControl"), 5, 3, QObject::tr("This tag indicates the degree of overall image gain adjustment.")); + add(0xa408, QObject::tr("Contrast"), 5, 3, QObject::tr("This tag indicates the direction of contrast processing applied by the camera when the image was shot.")); + add(0xa409, QObject::tr("Saturation"), 5, 3, QObject::tr("This tag indicates the direction of saturation processing applied by the camera when the image was shot.")); + add(0xa40a, QObject::tr("Sharpness"), 5, 3, QObject::tr("This tag indicates the direction of sharpness processing applied by the camera when the image was shot.")); + add(0xa40b, QObject::tr("DeviceSettingDescription"), 5, 7, QObject::tr("This tag indicates information on the picture-taking conditions of a particular camera model. The tag is used only to indicate the picture-taking conditions in the reader.")); + add(0xa40c, QObject::tr("SubjectDistanceRange"), 5, 3, QObject::tr("This tag indicates the distance to the subject.")); + add(0xa420, QObject::tr("ImageUniqueID"), 5, 2, QObject::tr("This tag indicates an identifier assigned uniquely to each image. It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length.")); + add(0xa430, QObject::tr("CameraOwnerName"), 5, 2, QObject::tr("This tag records the owner of a camera used in photography as an ASCII string.")); + add(0xa431, QObject::tr("BodySerialNumber"), 5, 2, QObject::tr("This tag records the serial number of the body of the camera that was used in photography as an ASCII string.")); + add(0xa432, QObject::tr("LensSpecification"), 5, 5, QObject::tr("This tag notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography. When the minimum F number is unknown, the notation is 0/0")); + add(0xa433, QObject::tr("LensMake"), 5, 2, QObject::tr("This tag records the lens manufactor as an ASCII string.")); + add(0xa434, QObject::tr("LensModel"), 5, 2, QObject::tr("This tag records the lens's model name and model number as an ASCII string.")); + add(0xa435, QObject::tr("LensSerialNumber"), 5, 2, QObject::tr("This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string.")); + add(0x0001, QObject::tr("InteroperabilityIndex"), 7, 2, QObject::tr("Indicates the identification of the Interoperability rule. Use \"R98\" for stating ExifR98 Rules. Four bytes used including the termination code (NULL). see the separate volume of Recommended Exif Interoperability Rules (ExifR98) for other tags used for ExifR98.")); + add(0x0002, QObject::tr("InteroperabilityVersion"), 7, 7, QObject::tr("Interoperability version")); + add(0x1000, QObject::tr("RelatedImageFileFormat"), 7, 2, QObject::tr("File format of image file")); + add(0x1001, QObject::tr("RelatedImageWidth"), 7, 4, QObject::tr("Image width")); + add(0x1002, QObject::tr("RelatedImageLength"), 7, 4, QObject::tr("Image height")); + add(0x0000, QObject::tr("GPSVersionID"), 6, 1, QObject::tr("Indicates the version of . The version is given as 2.0.0.0. This tag is mandatory when tag is present. (Note: The tag is given in bytes, unlike the tag. When the version is 2.0.0.0, the tag value is 02000000.H).")); + add(0x0001, QObject::tr("GPSLatitudeRef"), 6, 2, QObject::tr("Indicates whether the latitude is north or south latitude. The ASCII value 'N' indicates north latitude, and 'S' is south latitude.")); + add(0x0002, QObject::tr("GPSLatitude"), 6, 5, QObject::tr("Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is dd/1,mmmm/100,0/1.")); + add(0x0003, QObject::tr("GPSLongitudeRef"), 6, 2, QObject::tr("Indicates whether the longitude is east or west longitude. ASCII 'E' indicates east longitude, and 'W' is west longitude.")); + add(0x0004, QObject::tr("GPSLongitude"), 6, 5, QObject::tr("Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. When degrees, minutes and seconds are expressed, the format is ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format is ddd/1,mmmm/100,0/1.")); + add(0x0005, QObject::tr("GPSAltitudeRef"), 6, 1, QObject::tr("Indicates the altitude used as the reference altitude. If the reference is sea level and the altitude is above sea level, 0 is given. If the altitude is below sea level, a value of 1 is given and the altitude is indicated as an absolute value in the GSPAltitude tag. The reference unit is meters. Note that this tag is BYTE type, unlike other reference tags.")); + add(0x0006, QObject::tr("GPSAltitude"), 6, 5, QObject::tr("Indicates the altitude based on the reference in GPSAltitudeRef. Altitude is expressed as one RATIONAL value. The reference unit is meters.")); + add(0x0007, QObject::tr("GPSTimeStamp"), 6, 5, QObject::tr("Indicates the time as UTC (Coordinated Universal Time). is expressed as three RATIONAL values giving the hour, minute, and second (atomic clock).")); + add(0x0008, QObject::tr("GPSSatellites"), 6, 2, QObject::tr("Indicates the GPS satellites used for measurements. This tag can be used to describe the number of satellites, their ID number, angle of elevation, azimuth, SNR and other information in ASCII notation. The format is not specified. If the GPS receiver is incapable of taking measurements, value of the tag is set to NULL.")); + add(0x0009, QObject::tr("GPSStatus"), 6, 2, QObject::tr("Indicates the status of the GPS receiver when the image is recorded. \"A\" means measurement is in progress, and \"V\" means the measurement is Interoperability.")); + add(0x000a, QObject::tr("GPSMeasureMode"), 6, 2, QObject::tr("Indicates the GPS measurement mode. \"2\" means two-dimensional measurement and \"3\" means three-dimensional measurement is in progress.")); + add(0x000b, QObject::tr("GPSDOP"), 6, 5, QObject::tr("Indicates the GPS DOP (data degree of precision). An HDOP value is written during two-dimensional measurement, and PDOP during three-dimensional measurement.")); + add(0x000c, QObject::tr("GPSSpeedRef"), 6, 2, QObject::tr("Indicates the unit used to express the GPS receiver speed of movement. \"K\" \"M\" and \"N\" represents kilometers per hour, miles per hour, and knots.")); + add(0x000d, QObject::tr("GPSSpeed"), 6, 5, QObject::tr("Indicates the speed of GPS receiver movement.")); + add(0x000e, QObject::tr("GPSTrackRef"), 6, 2, QObject::tr("Indicates the reference for giving the direction of GPS receiver movement. \"T\" denotes true direction and \"M\" is magnetic direction.")); + add(0x000f, QObject::tr("GPSTrack"), 6, 5, QObject::tr("Indicates the direction of GPS receiver movement. The range of values is from 0.00 to 359.99.")); + add(0x0010, QObject::tr("GPSImgDirectionRef"), 6, 2, QObject::tr("Indicates the reference for giving the direction of the image when it is captured. \"T\" denotes true direction and \"M\" is magnetic direction.")); + add(0x0011, QObject::tr("GPSImgDirection"), 6, 5, QObject::tr("Indicates the direction of the image when it was captured. The range of values is from 0.00 to 359.99.")); + add(0x0012, QObject::tr("GPSMapDatum"), 6, 2, QObject::tr("Indicates the geodetic survey data used by the GPS receiver. If the survey data is restricted to Japan, the value of this tag is \"TOKYO\" or \"WGS-84\".")); + add(0x0013, QObject::tr("GPSDestLatitudeRef"), 6, 2, QObject::tr("Indicates whether the latitude of the destination point is north or south latitude. The ASCII value \"N\" indicates north latitude, and \"S\" is south latitude.")); + add(0x0014, QObject::tr("GPSDestLatitude"), 6, 5, QObject::tr("Indicates the latitude of the destination point. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If latitude is expressed as degrees, minutes and seconds, a typical format would be dd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be dd/1,mmmm/100,0/1.")); + add(0x0015, QObject::tr("GPSDestLongitudeRef"), 6, 2, QObject::tr("Indicates whether the longitude of the destination point is east or west longitude. ASCII \"E\" indicates east longitude, and \"W\" is west longitude.")); + add(0x0016, QObject::tr("GPSDestLongitude"), 6, 5, QObject::tr("Indicates the longitude of the destination point. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively. If longitude is expressed as degrees, minutes and seconds, a typical format would be ddd/1,mm/1,ss/1. When degrees and minutes are used and, for example, fractions of minutes are given up to two decimal places, the format would be ddd/1,mmmm/100,0/1.")); + add(0x0017, QObject::tr("GPSDestBearingRef"), 6, 2, QObject::tr("Indicates the reference used for giving the bearing to the destination point. \"T\" denotes true direction and \"M\" is magnetic direction.")); + add(0x0018, QObject::tr("GPSDestBearing"), 6, 5, QObject::tr("Indicates the bearing to the destination point. The range of values is from 0.00 to 359.99.")); + add(0x0019, QObject::tr("GPSDestDistanceRef"), 6, 2, QObject::tr("Indicates the unit used to express the distance to the destination point. \"K\"), \"M\" and \"N\" represent kilometers, miles and knots.")); + add(0x001a, QObject::tr("GPSDestDistance"), 6, 5, QObject::tr("Indicates the distance to the destination point.")); + add(0x001b, QObject::tr("GPSProcessingMethod"), 6, 7, QObject::tr("A character string recording the name of the method used for location finding. The first byte indicates the character code used, and this is followed by the name of the method.")); + add(0x001c, QObject::tr("GPSAreaInformation"), 6, 7, QObject::tr("A character string recording the name of the GPS area. The first byte indicates the character code used, and this is followed by the name of the GPS area.")); + add(0x001d, QObject::tr("GPSDateStamp"), 6, 2, QObject::tr("A character string recording date and time information relative to UTC (Coordinated Universal Time). The format is \"YYYY:MM:DD.\".")); + add(0x001e, QObject::tr("GPSDifferential"), 6, 3, QObject::tr("Indicates whether differential correction is applied to the GPS receiver.")); +} + +cEXIFTag* cEXIFTagList::add(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription) +{ + cEXIFTag* lpNew = find(iTAGID, iIFDID); + + if(lpNew) + return(nullptr); + + lpNew = new cEXIFTag(iTAGID, szTAGName, iIFDID, iTypeID, szDescription); + append(lpNew); + return(lpNew); +} + +cEXIFTag* cEXIFTagList::find(const qint32& iTAGID, const qint32& iIFDID) +{ + for(int x = 0;x < count();x++) + { + cEXIFTag* lpTag = at(x); + + if(lpTag->m_iTAGID == iTAGID && lpTag->m_iIFDID == iIFDID) + return(lpTag); + } + return(nullptr); +} + +cEXIFTag* cEXIFValue::exifTag() +{ + return(m_lpEXIFTag); +} + +cEXIFValue::cEXIFValue(cEXIFTag* lpEXIFTag) : + m_lpEXIFTag(lpEXIFTag) +{ +} + +QVariant cEXIFValue::convertValue(const QString& szValue, qint32 iTypeId) +{ + QVariant variant; + + switch(iTypeId) + { + case 1: //byte + case 3: //short + case 4: //long + case 8: //signed short + variant = QVariant::fromValue(szValue.toLong()); + break; + case 5: //rational + case 10: //signed rational + case 11: //float + if(szValue.contains("/")) + { + QStringList tmp = szValue.split("/"); + variant = QVariant::fromValue(tmp[0].toDouble()/tmp[1].toDouble()); + } + else + variant = QVariant::fromValue(szValue.toDouble()); + break; + default: + variant = szValue; + } + return(variant); +} + +void cEXIFValue::setValue(const QString& szValue, qint32 iTypeId, qint32 iCount) +{ + if(iCount == 1 || iTypeId == 2 || iTypeId == 7) + { + m_valueList.append(convertValue(szValue, iTypeId)); + return; + } + + QStringList valueList = szValue.split(" "); + + if(valueList.count() != iCount) + return; + + for(int x = 0;x < iCount;x++) + m_valueList.append(convertValue(valueList[x], iTypeId)); +} + +QVariant cEXIFValue::value() +{ + if(m_valueList.count()) + return(m_valueList[0]); + + return(QVariant()); +} + +QList cEXIFValue::valueList() +{ + return(m_valueList); +} + +cEXIFValueList::cEXIFValueList() +{ +} + +cEXIFValue* cEXIFValueList::add(cEXIFTag* lpEXIFTag) +{ + cEXIFValue* lpNew = find(lpEXIFTag); + + if(lpNew) + return(nullptr); + + lpNew = new cEXIFValue(lpEXIFTag); + + append(lpNew); + return(lpNew); +} + +cEXIFValue* cEXIFValueList::find(cEXIFTag* lpEXIFTag) +{ + for(int x = 0;x < count();x++) + { + cEXIFValue* lpValue = at(x); + if(lpValue->exifTag() == lpEXIFTag) + return(lpValue); + } + return(nullptr); +} + +cIPTCTag::cIPTCTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iTypeID, const QString& szDescription) : + m_iTAGID(iTAGID), + m_szTAGName(szTAGName), + m_iTypeID(iTypeID), + m_szDescription(szDescription) +{ +} + +cIPTCTagList::cIPTCTagList() +{ +// add(0x000b, QObject::tr("ProcessingSoftware"), 1, 2, QObject::tr("The name and version of the software used to post-process the picture.")); +} + +cIPTCTag* cIPTCTagList::add(const qint32& iTAGID, const QString& szTAGName, const qint32& iTypeID, const QString& szDescription) +{ + cIPTCTag* lpNew = find(iTAGID); + + if(lpNew) + return(nullptr); + + lpNew = new cIPTCTag(iTAGID, szTAGName, iTypeID, szDescription); + append(lpNew); + return(lpNew); +} + +cIPTCTag* cIPTCTagList::find(const qint32& iTAGID) +{ + for(int x = 0;x < count();x++) + { + cIPTCTag* lpTag = at(x); + + if(lpTag->m_iTAGID == iTAGID) + return(lpTag); + } + return(nullptr); +} + +cIPTCTag* cIPTCValue::iptcTag() +{ + return(m_lpIPTCTag); +} + +cIPTCValue::cIPTCValue(cIPTCTag* lpIPTCTag) : + m_lpIPTCTag(lpIPTCTag) +{ +} + +QVariant cIPTCValue::convertValue(const QString& szValue, qint32 iTypeId) +{ + QVariant variant; + + switch(iTypeId) + { + case 1: //byte + case 3: //short + case 4: //long + case 8: //signed short + variant = QVariant::fromValue(szValue.toLong()); + break; + case 5: //rational + case 10: //signed rational + case 11: //float + if(szValue.contains("/")) + { + QStringList tmp = szValue.split("/"); + variant = QVariant::fromValue(tmp[0].toDouble()/tmp[1].toDouble()); + } + else + variant = QVariant::fromValue(szValue.toDouble()); + break; + default: + variant = szValue; + } + return(variant); +} + +void cIPTCValue::setValue(const QString& szValue, qint32 iTypeId, qint32 iCount) +{ + if(iCount == 1 || iTypeId == 2 || iTypeId == 7) + { + m_valueList.append(convertValue(szValue, iTypeId)); + return; + } + + QStringList valueList = szValue.split(" "); + + if(valueList.count() != iCount) + return; + + for(int x = 0;x < iCount;x++) + m_valueList.append(convertValue(valueList[x], iTypeId)); +} + +QVariant cIPTCValue::value() +{ + if(m_valueList.count()) + return(m_valueList[0]); + + return(QVariant()); +} + +QList cIPTCValue::valueList() +{ + return(m_valueList); +} + +cIPTCValueList::cIPTCValueList() +{ +} + +cIPTCValue* cIPTCValueList::add(cIPTCTag* lpIPTCTag) +{ + cIPTCValue* lpNew = find(lpIPTCTag); + + if(lpNew) + return(nullptr); + + lpNew = new cIPTCValue(lpIPTCTag); + + append(lpNew); + return(lpNew); +} + +cIPTCValue* cIPTCValueList::find(cIPTCTag* lpIPTCTag) +{ + for(int x = 0;x < count();x++) + { + cIPTCValue* lpValue = at(x); + if(lpValue->iptcTag() == lpIPTCTag) + return(lpValue); + } + return(nullptr); +} + +cXMPTag::cXMPTag(const QString& szTAGName, const qint32& iTypeID, const QString& szDescription) : + m_szTAGName(szTAGName), + m_iTypeID(iTypeID), + m_szDescription(szDescription) +{ +} + +cXMPTagList::cXMPTagList() +{ + add("Xmp.video.FileSize", 65541, QObject::tr("File Size")); + add("Xmp.video.FileName", 65541, QObject::tr("File Name")); + add("Xmp.video.MimeType", 65541, QObject::tr("Mime Type")); + add("Xmp.video.Container", 65541, QObject::tr("Container Type")); + add("Xmp.video.FileType", 65541, QObject::tr("File Type")); + add("Xmp.video.MicroSecPerFrame", 65541, QObject::tr("Micro Seconds Per Frame")); + add("Xmp.video.MaxDataRate", 65541, QObject::tr("Maximum Data Rate")); + add("Xmp.video.FrameCount", 65541, QObject::tr("Frame Count")); + add("Xmp.video.StreamCount", 65541, QObject::tr("Stream Count")); + add("Xmp.video.Width", 65541, QObject::tr("Video Width")); + add("Xmp.video.Height", 65541, QObject::tr("Video Height")); + add("Xmp.video.AspectRatio", 65541, QObject::tr("Video Aspect Ratio")); + add("Xmp.video.FileDataRate", 65541, QObject::tr("File Data Rate")); + add("Xmp.video.Duration", 65541, QObject::tr("Duration")); + add("Xmp.video.Codec", 65541, QObject::tr("Video Codec")); + add("Xmp.video.FrameRate", 65541, QObject::tr("Video Frame Rate")); + add("Xmp.video.VideoQuality", 65541, QObject::tr("Video Quality")); + add("Xmp.video.VideoSampleSize", 65541, QObject::tr("Video Sample Size")); + add("Xmp.video.Planes", 65541, QObject::tr("Planes")); + add("Xmp.video.PixelDepth", 65541, QObject::tr("Video Pixel Depth")); + add("Xmp.video.Compressor", 65541, QObject::tr("Compressor")); + add("Xmp.video.ImageLength", 65541, QObject::tr("Image Length")); + add("Xmp.video.PixelPerMeterX", 65541, QObject::tr("Pixels Per Meter X")); + add("Xmp.video.PixelPerMeterY", 65541, QObject::tr("Pixels Per Meter Y")); + add("Xmp.video.NumOfColours", 65541, QObject::tr("Number Of Colours")); + add("Xmp.video.NumOfImpColours", 65541, QObject::tr("Number Of Important Colours")); + add("Xmp.audio.Codec", 65541, QObject::tr("Audio Codec")); + add("Xmp.audio.SampleRate", 65541, QObject::tr("Audio Sample Rate")); + add("Xmp.audio.SampleCount", 65541, QObject::tr("Audio Sample Count")); + add("Xmp.audio.Compressor", 65541, QObject::tr("Audio Compressor")); + add("Xmp.audio.ChannelType", 65541, QObject::tr("Audio Channel Type")); + add("Xmp.audio.SampleType", 65541, QObject::tr("Audio Sample Type")); + add("Xmp.audio.BitsPerSample", 65541, QObject::tr("Bits Per Sample/ Bit Rate")); + add("Xmp.video.TotalFrameCount", 65541, QObject::tr("Total Frame Count")); + add("Xmp.video.DateTimeDigitized", 65541, QObject::tr("Date and Time Digitized")); + add("Xmp.video.Junk", 65541, QObject::tr("Junk Data")); + add("Xmp.video.MajorBrand", 65541, QObject::tr("QTime Major FileType Brand")); + add("Xmp.video.MinorVersion", 65541, QObject::tr("QTime Minor FileType Version")); + add("Xmp.video.CompatibleBrands", 65544, QObject::tr("QTime Compatible FileType Brand")); + add("Xmp.video.CompressorVersion", 65541, QObject::tr("Compressor Version")); + add("Xmp.video.HandlerType", 65541, QObject::tr("Handler Type")); + add("Xmp.video.PreviewDate", 65541, QObject::tr("Preview Date")); + add("Xmp.video.PreviewVersion", 65541, QObject::tr("Preview Version")); + add("Xmp.video.PreviewAtomType", 65541, QObject::tr("Preview Atom Type")); + add("Xmp.video.MovieHeaderVersion", 65541, QObject::tr("Movie Header Version")); + add("Xmp.video.DateUTC", 65541, QObject::tr("Date")); + add("Xmp.video.ModificationDate", 65541, QObject::tr("Modification Date")); + add("Xmp.video.TimeScale", 65541, QObject::tr("Time Scale")); + add("Xmp.video.PreferredRate", 65541, QObject::tr("Preferred Rate")); + add("Xmp.video.PreferredVolume", 65541, QObject::tr("Preferred Volume")); + add("Xmp.video.PreviewTime", 65541, QObject::tr("Preview Time")); + add("Xmp.video.PreviewDuration", 65541, QObject::tr("Preview Duration")); + add("Xmp.video.PosterTime", 65541, QObject::tr("Poster Time")); + add("Xmp.video.SelectionTime", 65541, QObject::tr("Selection Time")); + add("Xmp.video.SelectionDuration", 65541, QObject::tr("Selection Duration")); + add("Xmp.video.CurrentTime", 65541, QObject::tr("Current Time")); + add("Xmp.video.NextTrackID", 65541, QObject::tr("Next Track ID")); + add("Xmp.video.TrackHeaderVersion", 65541, QObject::tr("Track Header Version")); + add("Xmp.video.TrackCreateDate", 65541, QObject::tr("Video Track Create Date")); + add("Xmp.video.TrackModifyDate", 65541, QObject::tr("Video Track Modify Date")); + add("Xmp.video.TrackID", 65541, QObject::tr("Track ID")); + add("Xmp.video.TrackDuration", 65541, QObject::tr("Video Track Duration")); + add("Xmp.video.TrackLayer", 65541, QObject::tr("Video Track Layer")); + add("Xmp.video.TrackVolume", 65541, QObject::tr("Track Volume")); + add("Xmp.video.MediaHeaderVersion", 65541, QObject::tr("Media Header Version")); + add("Xmp.video.MediaCreateDate", 65541, QObject::tr("Media Track Create Date")); + add("Xmp.video.MediaModifyDate", 65541, QObject::tr("Media Track Modify Date")); + add("Xmp.video.MediaTimeScale", 65541, QObject::tr("Media Time Scale")); + add("Xmp.video.MediaDuration", 65541, QObject::tr("Media Track Duration")); + add("Xmp.video.MediaLangCode", 65541, QObject::tr("Media Language Code")); + add("Xmp.video.HandlerClass", 65541, QObject::tr("Handler Class")); + add("Xmp.video.GraphicsMode", 65541, QObject::tr("Graphics Mode")); + add("Xmp.video.OpColor", 65541, QObject::tr("Operation Colours")); + add("Xmp.video.SourceImageWidth", 65541, QObject::tr("Source Image Width")); + add("Xmp.video.SourceImageHeight", 65541, QObject::tr("Source Image Height")); + add("Xmp.video.XResolution", 65541, QObject::tr("X Resolution")); + add("Xmp.video.YResolution", 65541, QObject::tr("Y Resolution")); + add("Xmp.video.BitDepth", 65541, QObject::tr("Bit Depth")); + add("Xmp.audio.TrackHeaderVersion", 65541, QObject::tr("Track Header Version")); + add("Xmp.audio.TrackCreateDate", 65541, QObject::tr("Audio Track Create Date")); + add("Xmp.audio.TrackModifyDate", 65541, QObject::tr("Audio Track Modify Date")); + add("Xmp.audio.TrackID", 65541, QObject::tr("Track ID")); + add("Xmp.audio.TrackDuration", 65541, QObject::tr("Audio Track Duration")); + add("Xmp.audio.TrackLayer", 65541, QObject::tr("Audio Track Layer")); + add("Xmp.audio.MediaHeaderVersion", 65541, QObject::tr("Media Header Version")); + add("Xmp.audio.MediaCreateDate", 65541, QObject::tr("Media Track Create Date")); + add("Xmp.audio.MediaModifyDate", 65541, QObject::tr("Media Track Modify Date")); + add("Xmp.audio.MediaTimeScale", 65541, QObject::tr("Media Time Scale")); + add("Xmp.audio.MediaDuration", 65541, QObject::tr("Media Track Duration")); + add("Xmp.audio.MediaLangCode", 65541, QObject::tr("Media Language Code")); + add("Xmp.audio.HandlerClass", 65541, QObject::tr("Handler Class")); + add("Xmp.audio.HandlerType", 65541, QObject::tr("Handler Type")); + add("Xmp.audio.Balance", 65541, QObject::tr("Balance")); +} + +cXMPTag* cXMPTagList::add(const QString& szTAGName, const qint32& iTypeID, const QString& szDescription) +{ + cXMPTag* lpNew = find(szTAGName); + + if(lpNew) + return(nullptr); + + lpNew = new cXMPTag(szTAGName, iTypeID, szDescription); + append(lpNew); + return(lpNew); +} + +cXMPTag* cXMPTagList::find(const QString& szTAGName) +{ + for(int x = 0;x < count();x++) + { + cXMPTag* lpTag = at(x); + + if(lpTag->m_szTAGName == szTAGName) + return(lpTag); + } + return(nullptr); +} + +cXMPTag* cXMPValue::xmpTag() +{ + return(m_lpXMPTag); +} + +cXMPValue::cXMPValue(cXMPTag* lpXMPTag) : + m_lpXMPTag(lpXMPTag) +{ +} + +QVariant cXMPValue::convertValue(const QString& szValue, qint32 iTypeId) +{ + QVariant variant; + + switch(iTypeId) + { + case 1: //byte + case 3: //short + case 4: //long + case 8: //signed short + variant = QVariant::fromValue(szValue.toLong()); + break; + case 5: //rational + case 10: //signed rational + case 11: //float + if(szValue.contains("/")) + { + QStringList tmp = szValue.split("/"); + variant = QVariant::fromValue(tmp[0].toDouble()/tmp[1].toDouble()); + } + else + variant = QVariant::fromValue(szValue.toDouble()); + break; + default: + variant = szValue; + } + return(variant); +} + +void cXMPValue::setValue(const QString& szValue, qint32 iTypeId, qint32 /*iCount*/) +{ +// if(iCount == 1 || iTypeId == 2 || iTypeId == 7) +// { +// m_valueList.append(convertValue(szValue, iTypeId)); +// return; +// } + +// QStringList valueList = szValue.split(" "); + +// if(valueList.count() != iCount) +// return; + +// for(int x = 0;x < iCount;x++) +// m_valueList.append(convertValue(valueList[x], iTypeId)); + m_valueList.append(convertValue(szValue, iTypeId)); +} + +QVariant cXMPValue::value() +{ + if(m_valueList.count()) + return(m_valueList[0]); + + return(QVariant()); +} + +QList cXMPValue::valueList() +{ + return(m_valueList); +} + +cXMPValueList::cXMPValueList() +{ +} + +cXMPValue* cXMPValueList::add(cXMPTag* lpXMPTag) +{ + cXMPValue* lpNew = find(lpXMPTag); + + if(lpNew) + return(nullptr); + + lpNew = new cXMPValue(lpXMPTag); + + append(lpNew); + return(lpNew); +} + +cXMPValue* cXMPValueList::find(cXMPTag* lpXMPTag) +{ + for(int x = 0;x < count();x++) + { + cXMPValue* lpValue = at(x); + if(lpValue->xmpTag() == lpXMPTag) + return(lpValue); + } + return(nullptr); +} diff --git a/cexif.h b/cexif.h new file mode 100644 index 0000000..c16073d --- /dev/null +++ b/cexif.h @@ -0,0 +1,844 @@ +/*! + \file cexif.h + +*/ + +#ifndef CEXIF_H +#define CEXIF_H + +#include +#include +#include +#include + +#include +#include + +#include + + +/*! + \brief + + \class cEXIFCompression cexif.h "cexif.h" +*/ +class cEXIFCompression +{ +public: + cEXIFCompression(const qint32& iID, const QString& szCompression); + + qint32 m_iID; /*!< TODO: describe */ + QString m_szCompression; /*!< TODO: describe */ +}; + +Q_DECLARE_METATYPE(cEXIFCompression*) + +/*! + \brief + + \class cEXIFCompressionList cexif.h "cexif.h" +*/ +class cEXIFCompressionList : public QList +{ +public: + cEXIFCompressionList(); + + /*! + \brief + + \fn add + \param iID + \param szCompression + \return cEXIFCompression + */ + cEXIFCompression* add(const qint32& iID, const QString& szCompression); + /*! + \brief + + \fn find + \param iID + \return cEXIFCompression + */ + cEXIFCompression* find(const qint32& iID); + + /*! + \brief + + \fn compression + \param iID + \return QString + */ + QString compression(const qint32& iID); +}; + +Q_DECLARE_METATYPE(cEXIFCompressionList) + +/*! + \brief + + \class cEXIFLightSource cexif.h "cexif.h" +*/ +class cEXIFLightSource +{ +public: + cEXIFLightSource(const qint32& iID, const QString& szLightSource); + + qint32 m_iID; /*!< TODO: describe */ + QString m_szLightSource; /*!< TODO: describe */ +}; + +Q_DECLARE_METATYPE(cEXIFLightSource*) + +/*! + \brief + + \class cEXIFLightSourceList cexif.h "cexif.h" +*/ +class cEXIFLightSourceList : public QList +{ +public: + cEXIFLightSourceList(); + + /*! + \brief + + \fn add + \param iID + \param szLightSource + \return cEXIFLightSource + */ + cEXIFLightSource* add(const qint32& iID, const QString& szLightSource); + /*! + \brief + + \fn find + \param iID + \return cEXIFLightSource + */ + cEXIFLightSource* find(const qint32& iID); + + /*! + \brief + + \fn lightSource + \param iID + \return QString + */ + QString lightSource(const qint32& iID); +}; + +/*! + \brief + + \class cEXIFFlash cexif.h "cexif.h" +*/ +class cEXIFFlash +{ +public: + cEXIFFlash(const qint32& iID, const QString& szFlash); + + qint32 m_iID; /*!< TODO: describe */ + QString m_szFlash; /*!< TODO: describe */ +}; + +Q_DECLARE_METATYPE(cEXIFFlash*) + +/*! + \brief + + \class cEXIFFlashList cexif.h "cexif.h" +*/ +class cEXIFFlashList : public QList +{ +public: + cEXIFFlashList(); + + /*! + \brief + + \fn add + \param iID + \param szFlash + \return cEXIFFlash + */ + cEXIFFlash* add(const qint32& iID, const QString& szFlash); + /*! + \brief + + \fn find + \param iID + \return cEXIFFlash + */ + cEXIFFlash* find(const qint32& iID); + + /*! + \brief + + \fn flash + \param iID + \return QString + */ + QString flash(const qint32& iID); +}; + +/** + * @brief + * + */ +class cEXIFTag +{ +public: + cEXIFTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription); + + qint32 m_iTAGID; /*!< TODO: describe */ + QString m_szTAGName; /*!< TODO: describe */ + qint32 m_iIFDID; /*!< TODO: describe */ + qint32 m_iTypeID; /*!< TODO: describe */ + QString m_szDescription; /*!< TODO: describe */ +}; + +Q_DECLARE_METATYPE(cEXIFTag*) + +/*! + \brief + + \class cEXIFTagList cexif.h "cexif.h" +*/ +class cEXIFTagList : public QList +{ +public: + cEXIFTagList(); + + /*! + \brief + + \fn add + \param iTAGID + \param szTAGName + \param iIFDID + \param iTypeID + \param szDescription + \return cEXIFTag + */ + cEXIFTag* add(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription); + /*! + \brief + + \fn find + \param iTAGID + \param iIFDID + \return cEXIFTag + */ + cEXIFTag* find(const qint32& iTAGID, const qint32& iIFDID); +}; + +/*! + \brief + +*/ +class cEXIFValue +{ +public: + cEXIFValue(cEXIFTag* lpEXIFTag); + + /*! + \brief + + \fn exifTag + \return cEXIFTag + */ + cEXIFTag* exifTag(); + /*! + \brief + + \fn setValue + \param szValue + \param iTypeId + \param iCount + */ + void setValue(const QString& szValue, qint32 iTypeId, qint32 iCount = 1); + /*! + \brief + + \fn value + \return QVariant + */ + QVariant value(); + /*! + \brief + + \fn valueList + \return QList + */ + QList valueList(); + +private: + cEXIFTag* m_lpEXIFTag; /*!< TODO: describe */ + QList m_valueList; /*!< TODO: describe */ + + /*! + \brief + + \fn convertValue + \param szValue + \param iTypeId + \return QVariant + */ + QVariant convertValue(const QString& szValue, qint32 iTypeId); +}; + +Q_DECLARE_METATYPE(cEXIFValue*) + +/*! + \brief + + \class cEXIFValueList cexif.h "cexif.h" +*/ +class cEXIFValueList : public QList +{ +public: + cEXIFValueList(); + + /*! + \brief + + \fn add + \param lpEXIFTag + \return cEXIFValue + */ + cEXIFValue* add(cEXIFTag* lpEXIFTag); + /*! + \brief + + \fn find + \param lpEXIFTag + \return cEXIFValue + */ + cEXIFValue* find(cEXIFTag* lpEXIFTag); +}; + +/** + * @brief + * + */ +class cIPTCTag +{ +public: + cIPTCTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iTypeID, const QString& szDescription); + + qint32 m_iTAGID; /*!< TODO: describe */ + QString m_szTAGName; /*!< TODO: describe */ + qint32 m_iTypeID; /*!< TODO: describe */ + QString m_szDescription; /*!< TODO: describe */ +}; + +Q_DECLARE_METATYPE(cIPTCTag*) + +/*! + \brief + + \class cIPTCTagList cexif.h "cexif.h" +*/ +class cIPTCTagList : public QList +{ +public: + cIPTCTagList(); + + /*! + \brief + + \fn add + \param iTAGID + \param szTAGName + \param iTypeID + \param szDescription + \return cIPTCTag + */ + cIPTCTag* add(const qint32& iTAGID, const QString& szTAGName, const qint32& iTypeID, const QString& szDescription); + /*! + \brief + + \fn find + \param iTAGID + \return cIPTCTag + */ + cIPTCTag* find(const qint32& iTAGID); +}; + +/*! + \brief + +*/ +class cIPTCValue +{ +public: + cIPTCValue(cIPTCTag* lpIPTCTag); + + /*! + \brief + + \fn iptcTag + \return cIPTCTag + */ + cIPTCTag* iptcTag(); + /*! + \brief + + \fn setValue + \param szValue + \param iTypeId + \param iCount + */ + void setValue(const QString& szValue, qint32 iTypeId, qint32 iCount = 1); + /*! + \brief + + \fn value + \return QVariant + */ + QVariant value(); + /*! + \brief + + \fn valueList + \return QList + */ + QList valueList(); + +private: + cIPTCTag* m_lpIPTCTag; /*!< TODO: describe */ + QList m_valueList; /*!< TODO: describe */ + + /*! + \brief + + \fn convertValue + \param szValue + \param iTypeId + \return QVariant + */ + QVariant convertValue(const QString& szValue, qint32 iTypeId); +}; + +Q_DECLARE_METATYPE(cIPTCValue*) + +/*! + \brief + + \class cIPTCValueList cexif.h "cexif.h" +*/ +class cIPTCValueList : public QList +{ +public: + cIPTCValueList(); + + /*! + \brief + + \fn add + \param lpIPTCTag + \return cIPTCValue + */ + cIPTCValue* add(cIPTCTag* lpIPTCTag); + /*! + \brief + + \fn find + \param lpIPTCTag + \return cIPTCValue + */ + cIPTCValue* find(cIPTCTag* lpIPTCTag); +}; + +/** + * @brief + * + */ +class cXMPTag +{ +public: + cXMPTag(const QString& szTAGName, const qint32& iTypeID, const QString& szDescription); + + QString m_szTAGName; /*!< TODO: describe */ + qint32 m_iTypeID; /*!< TODO: describe */ + QString m_szDescription; /*!< TODO: describe */ +}; + +Q_DECLARE_METATYPE(cXMPTag*) + +/*! + \brief + + \class cXMPTagList cexif.h "cexif.h" +*/ +class cXMPTagList : public QList +{ +public: + cXMPTagList(); + + /*! + \brief + + \fn add + \param szTAGName + \param iTypeID + \param szDescription + \return cXMPTag + */ + cXMPTag* add(const QString& szTAGName, const qint32& iTypeID, const QString& szDescription); + /*! + \brief + + \fn find + \param szTAGName + \return cXMPTag + */ + cXMPTag* find(const QString& szTAGName); +}; + +/*! + \brief + +*/ +class cXMPValue +{ +public: + cXMPValue(cXMPTag* lpXMPTag); + + /*! + \brief + + \fn exifTag + \return cXMPTag + */ + cXMPTag* xmpTag(); + /*! + \brief + + \fn setValue + \param szValue + \param iTypeId + \param iCount + */ + void setValue(const QString& szValue, qint32 iTypeId, qint32 iCount = 1); + /*! + \brief + + \fn value + \return QVariant + */ + QVariant value(); + /*! + \brief + + \fn valueList + \return QList + */ + QList valueList(); + +private: + cXMPTag* m_lpXMPTag; /*!< TODO: describe */ + QList m_valueList; /*!< TODO: describe */ + + /*! + \brief + + \fn convertValue + \param szValue + \param iTypeId + \return QVariant + */ + QVariant convertValue(const QString& szValue, qint32 iTypeId); +}; + +Q_DECLARE_METATYPE(cXMPValue*) + +/*! + \brief + + \class cXMPValueList cexif.h "cexif.h" +*/ +class cXMPValueList : public QList +{ +public: + cXMPValueList(); + + /*! + \brief + + \fn add + \param lpXMPTag + \return cXMPValue + */ + cXMPValue* add(cXMPTag* lpXMPTag); + /*! + \brief + + \fn find + \param lpXMPTag + \return cXMPValue + */ + cXMPValue* find(cXMPTag* lpXMPTag); +}; + +/*! + \brief + + \class cEXIF cexif.h "cexif.h" +*/ +class cEXIF +{ +public: + cEXIF(); + + /*! + \brief + + \fn fromFile + \param szFileName + \return bool + */ + bool fromFile(const QString& szFileName); + + /*! + \brief + + \fn mimeType + \return QString + */ + QString mimeType(); + /*! + \brief + + \fn imageWidth + \return qint32 + */ + qint32 imageWidth(); + /*! + \brief + + \fn imageHeight + \return qint32 + */ + qint32 imageHeight(); + /*! + \brief + + \fn imageOrientation + \return qint16 + */ + qint16 imageOrientation(); + /*! + \brief + + \fn cameraMake + \return QString + */ + QString cameraMake(); + /*! + \brief + + \fn cameraModel + \return QString + */ + QString cameraModel(); + /*! + \brief + + \fn dateTime + \return QDateTime + */ + QDateTime dateTime(); + /*! + \brief + + \fn fNumber + \return QString + */ + QString fNumber(); + /*! + \brief + + \fn iso + \return qint32 + */ + qint32 iso(); + /*! + \brief + + \fn flash + \return QString + */ + QString flash(); + /*! + \brief + + \fn flashID + \return qint32 + */ + qint32 flashID(); + /*! + \brief + + \fn focalLength + \return qreal + */ + qreal focalLength(); + /*! + \brief + + \fn lensMake + \return QString + */ + QString lensMake(); + /*! + \brief + + \fn lensModel + \return QString + */ + QString lensModel(); + /*! + \brief + + \fn exposureTime + \return QString + */ + QString exposureTime(); + /*! + \brief + + \fn exposureBias + \return qint32 + */ + qint32 exposureBias(); + /*! + \brief + + \fn exifVersion + \return QString + */ + QString exifVersion(); + /*! + \brief + + \fn dateTimeOriginal + \return QDateTime + */ + QDateTime dateTimeOriginal(); + /*! + \brief + + \fn dateTimeDigitized + \return QDateTime + */ + QDateTime dateTimeDigitized(); + /*! + \brief + + \fn whiteBalance + \return qint32 + */ + qint32 whiteBalance(); + /*! + \brief + + \fn focalLength35 + \return qreal + */ + qreal focalLength35(); + /*! + \brief + + \fn gps + \return QString + */ + QString gps(); + /*! + \brief + + \fn duration + \return QString + */ + QString duration(); + /*! + \brief + + \fn fileName + \return QString + */ + QString fileName(); + /*! + \brief + + \fn previewList + \return QList + */ + QList previewList(); + /*! + \brief + + \fn thumbnail + \return QImage + */ + QImage thumbnail(); + +private: + cEXIFValueList m_exifValueList; /*!< TODO: describe */ + cIPTCValueList m_iptcValueList; /*!< TODO: describe */ + cXMPValueList m_xmpValueList; /*!< TODO: describe */ + QString m_szMimeType; /*!< TODO: describe */ + qint32 m_iWidth; /*!< TODO: describe */ + qint32 m_iHeight; /*!< TODO: describe */ + QString m_szFileName; /*!< TODO: describe */ + QList m_previewList; /*!< TODO: describe */ + QImage m_thumbnail; /*!< TODO: describe */ + + cEXIFCompressionList m_exifCompressionList; /*!< TODO: describe */ + cEXIFLightSourceList m_exifLightSourceList; /*!< TODO: describe */ + cEXIFFlashList m_exifFlashList; /*!< TODO: describe */ + cEXIFTagList m_exifTagList; /*!< TODO: describe */ + + cIPTCTagList m_iptcTagList; /*!< TODO: describe */ + + cXMPTagList m_xmpTagList; /*!< TODO: describe */ + + /*! + \brief + + \fn getEXIFTag + \param iTAGID + \param iIFDID + \return QVariant + */ + QVariant getEXIFTag(qint32 iTAGID, qint32 iIFDID); + /*! + \brief + + \fn getIPTCTag + \param iTAGID + \return QVariant + */ + QVariant getIPTCTag(qint32 iTAGID); + /*! + \brief + + \fn getXMPTag + \param szTAGName + \return QVariant + */ + QVariant getXMPTag(const QString& szTAGName); + /*! + \brief + + \fn getTagList + \param iTAGID + \param iIFDID + \return QList + */ + QList getTagList(qint32 iTAGID, qint32 iIFDID); +}; + +Q_DECLARE_METATYPE(cEXIF*) + +#endif // CEXIF_H diff --git a/cexportdialog.cpp b/cexportdialog.cpp new file mode 100644 index 0000000..1dc676a --- /dev/null +++ b/cexportdialog.cpp @@ -0,0 +1,22 @@ +#include "cexportdialog.h" +#include "ui_cexportdialog.h" + + +cExportDialog::cExportDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::cExportDialog) +{ + ui->setupUi(this); + + connect(ui->m_lpQualityValue, &QSlider::valueChanged, this, &cExportDialog::onQualityChanged); +} + +cExportDialog::~cExportDialog() +{ + delete ui; +} + +void cExportDialog::onQualityChanged(int value) +{ + ui->m_lpQualityValue->setNum(value); +} diff --git a/cexportdialog.h b/cexportdialog.h new file mode 100644 index 0000000..b1714f5 --- /dev/null +++ b/cexportdialog.h @@ -0,0 +1,25 @@ +#ifndef CEXPORTDIALOG_H +#define CEXPORTDIALOG_H + +#include + +namespace Ui { +class cExportDialog; +} + +class cExportDialog : public QDialog +{ + Q_OBJECT + +public: + explicit cExportDialog(QWidget *parent = nullptr); + ~cExportDialog(); + +private: + Ui::cExportDialog *ui; + +private slots: + void onQualityChanged(int value); +}; + +#endif // CEXPORTDIALOG_H diff --git a/cexportdialog.ui b/cexportdialog.ui new file mode 100644 index 0000000..5e2df33 --- /dev/null +++ b/cexportdialog.ui @@ -0,0 +1,136 @@ + + + cExportDialog + + + + 0 + 0 + 400 + 135 + + + + Dialog + + + + + + + + quality: + + + + + + + file format: + + + m_lpFileFormat + + + + + + + + + + destination path: + + + m_lpDestinationPath + + + + + + + + + Qt::Horizontal + + + QSlider::TicksBelow + + + + + + + 0 + + + m_lpQuality + + + + + + + + + + + + + + ... + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + cExportDialog + accept() + + + 227 + 117 + + + 157 + 134 + + + + + buttonBox + rejected() + cExportDialog + reject() + + + 295 + 123 + + + 286 + 134 + + + + + diff --git a/cimage.cpp b/cimage.cpp new file mode 100644 index 0000000..26d0066 --- /dev/null +++ b/cimage.cpp @@ -0,0 +1,147 @@ +/*! + \file cimage.cpp + +*/ + +#include "cimage.h" + +#include "libraw/libraw.h" + +#include +#include + + +cImage::cImage() : + QImage() +{ + +} + +cImage::cImage(const QSize &size, QImage::Format format) : + QImage(size, format) +{ +} + +cImage::cImage(int width, int height, QImage::Format format) : + QImage(width, height, format) +{ +} + +cImage::cImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, bytesPerLine, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, bytesPerLine, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(const QString &fileName, const char *format) : + QImage() +{ + load(fileName, format); +} + +cImage::cImage(const QImage &image) : + QImage(image) +{ +} + +cImage::cImage(QImage &&other) : + QImage(other) +{ +} + +bool cImage::load(const QString &fileName, const char *format) +{ + QFileInfo fileInfo(fileName); + + if(!fileInfo.suffix().compare("NEF", Qt::CaseInsensitive)) + return(loadRAW(fileName)); + + if(QImage::load(fileName, format)) + return(true); + + return(loadRAW(fileName)); +} + +bool cImage::loadRAW(const QString &fileName) +{ + LibRaw rawProcessor; + libraw_processed_image_t* lpOutput; + + if(rawProcessor.open_file(fileName.toUtf8()) != LIBRAW_SUCCESS) + return(false); + + if(rawProcessor.unpack() != LIBRAW_SUCCESS) + return(false); + + rawProcessor.dcraw_process(); + lpOutput = rawProcessor.dcraw_make_mem_image(); + + const libraw_data_t& imgdata = rawProcessor.imgdata; + uchar* pixels = nullptr; + + if(lpOutput->type == LIBRAW_IMAGE_JPEG) + { + loadFromData(lpOutput->data, static_cast(lpOutput->data_size), "JPEG"); + + if(imgdata.sizes.flip != 0) + { + QTransform rotation; + int angle = 0; + + if(imgdata.sizes.flip == 3) + angle = 180; + else if(imgdata.sizes.flip == 5) + angle = -90; + else if(imgdata.sizes.flip == 6) + angle = 90; + if(angle != 0) + { + rotation.rotate(angle); + *this = transformed(rotation); + } + } + } + else + { + int numPixels = lpOutput->width * lpOutput->height; + int colorSize = lpOutput->bits / 8; + int pixelSize = lpOutput->colors * colorSize; + pixels = new uchar[numPixels * 4]; + uchar* data = lpOutput->data; + + for(int i = 0; i < numPixels; i++, data += pixelSize) + { + if(lpOutput->colors == 3) + { + pixels[i * 4] = data[2 * colorSize]; + pixels[i * 4 + 1] = data[1 * colorSize]; + pixels[i * 4 + 2] = data[0]; + } + else + { + pixels[i * 4] = data[0]; + pixels[i * 4 + 1] = data[0]; + pixels[i * 4 + 2] = data[0]; + } + } + *this = QImage(pixels, lpOutput->width, lpOutput->height, QImage::Format_RGB32); + } + + rawProcessor.recycle(); + + return(true); +} diff --git a/cimage.h b/cimage.h new file mode 100644 index 0000000..695cc7b --- /dev/null +++ b/cimage.h @@ -0,0 +1,133 @@ +/*! + \file cimage.h + +*/ + +#ifndef CIMAGE_H +#define CIMAGE_H + + +#include + + +/*! + \brief + + \class cImage cimage.h "cimage.h" +*/ +class cImage : public QImage +{ +public: + cImage(); + /*! + \brief + + \fn cImage + \param size + \param format + */ + cImage(const QSize &size, QImage::Format format); + /*! + \brief + + \fn cImage + \param width + \param height + \param format + */ + cImage(int width, int height, QImage::Format format); + /*! + \brief + + \fn cImage + \param data + \param width + \param height + \param format + \param cleanupFunction + \param cleanupInfo + */ + cImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /*! + \brief + + \fn cImage + \param data + \param width + \param height + \param format + \param cleanupFunction + \param cleanupInfo + */ + cImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /*! + \brief + + \fn cImage + \param data + \param width + \param height + \param bytesPerLine + \param format + \param cleanupFunction + \param cleanupInfo + */ + cImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /*! + \brief + + \fn cImage + \param data + \param width + \param height + \param bytesPerLine + \param format + \param cleanupFunction + \param cleanupInfo + */ + cImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /*! + \brief + + \fn cImage + \param fileName + \param format + */ + cImage(const QString &fileName, const char *format = nullptr); + /*! + \brief + + \fn cImage + \param image + */ + cImage(const QImage &image); + /*! + \brief + + \fn cImage + \param other + */ + cImage(QImage &&other); + + /*! + \brief + + \fn load + \param fileName + \param format + \return bool + */ + bool load(const QString &fileName, const char *format = nullptr); + +private: + /*! + \brief + + \fn loadRAW + \param fileName + \return bool + */ + bool loadRAW(const QString &fileName); +}; + +#endif // CIMAGE_H diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 99eb277..d00d2b3 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -1,11 +1,44 @@ #include "cmainwindow.h" #include "ui_cmainwindow.h" -cMainWindow::cMainWindow(QWidget *parent) - : QMainWindow(parent) - , ui(new Ui::cMainWindow) +#include "cimage.h" + +#include "cexif.h" + +#include "cexportdialog.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include + + +cMainWindow::cMainWindow(cSplashScreen* lpSplashScreen, QWidget *parent) : + QMainWindow(parent), + ui(new Ui::cMainWindow), + m_lpSplashScreen(lpSplashScreen) { - ui->setupUi(this); +// QImageWriter writer; +// QList list = writer.supportedImageFormats(); + +// writer.setFormat("jpg"); +// QList list1 = writer.supportedSubTypes(); + +// bool b; + +// b = writer.supportsOption(QImageIOHandler::CompressionRatio); +// b = writer.supportsOption(QImageIOHandler::Quality); + + initUI(); + createActions(); + + onClearList(); } cMainWindow::~cMainWindow() @@ -13,3 +46,187 @@ cMainWindow::~cMainWindow() delete ui; } +void cMainWindow::closeEvent(QCloseEvent *event) +{ + QSettings settings; + settings.setValue("main/width", QVariant::fromValue(size().width())); + settings.setValue("main/height", QVariant::fromValue(size().height())); + settings.setValue("main/x", QVariant::fromValue(x())); + settings.setValue("main/y", QVariant::fromValue(y())); + if(this->isMaximized()) + settings.setValue("main/maximized", QVariant::fromValue(true)); + else + settings.setValue("main/maximized", QVariant::fromValue(false)); + + event->accept(); +} + +void cMainWindow::initUI() +{ + ui->setupUi(this); + + QIcon::setThemeName("TangoMFK"); + + m_lpFileListModel = new QStandardItemModel; + ui->m_lpFileList->setModel(m_lpFileListModel); + + QSettings settings; + + if(!settings.value("main/maximized").toBool()) + { + qint32 iX = settings.value("main/x", QVariant::fromValue(-1)).toInt(); + qint32 iY = settings.value("main/y", QVariant::fromValue(-1)).toInt(); + qint32 iWidth = settings.value("main/width", QVariant::fromValue(-1)).toInt(); + qint32 iHeight = settings.value("main/height", QVariant::fromValue(-1)).toInt(); + + if(iWidth != -1 && iHeight != -1) + resize(iWidth, iHeight); + if(iX != -1 && iY != -1) + move(iX, iY); + } +} + +void cMainWindow::createActions() +{ + setToolButtonStyle(Qt::ToolButtonFollowStyle); + + createFileActions(); + createContextActions(); + + connect(ui->m_lpAddFile, &QPushButton::clicked, this, &cMainWindow::onAddFile); + connect(ui->m_lpAddFolder, &QPushButton::clicked, this, &cMainWindow::onAddFolder); + connect(ui->m_lpRemoveSelected, &QPushButton::clicked, this, &cMainWindow::onRemoveSelected); + connect(ui->m_lpClearList, &QPushButton::clicked, this, &cMainWindow::onClearList); + + connect(ui->m_lpConvert, &QPushButton::clicked, this, &cMainWindow::onConvert); + + connect(ui->m_lpFileList, &cTreeView::addEntry, this, &cMainWindow::onAddEntry); +} + +void cMainWindow::createContextActions() +{ +} + +void cMainWindow::createFileActions() +{ +} + +void cMainWindow::onAddFile() +{ +} + +void cMainWindow::onAddFolder() +{ +} + +void cMainWindow::onRemoveSelected() +{ +} + +void cMainWindow::onClearList() +{ + m_lpFileListModel->clear(); + + QStringList headerLabels = QStringList() << tr("path") << tr("file") << tr("size") << tr("date") << tr("width") << tr("height") << (""); + m_lpFileListModel->setHorizontalHeaderLabels(headerLabels); +} + +void cMainWindow::onAddEntry(const QString& file) +{ + QFileInfo fileInfo(file); + + if(fileInfo.isDir()) + addPath(file); + else + { + QMimeType mimeType = m_mimeDB.mimeTypeForFile(file); + + if(mimeType.name().startsWith("image")) + addFile(file); + } +} + +void cMainWindow::addPath(const QString& path) +{ + QDir dir(path); + QStringList dirList = dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); + QStringList fileList = dir.entryList(QDir::Files); + + for(int i = 0;i < dirList.count();i++) + addPath(path + "/" + dirList[i]); + + for(int i = 0;i < fileList.count();i++) + addFile(path + "/" + fileList[i]); +} + +void cMainWindow::addFile(const QString& file) +{ + if(isInList(file)) + return; + + QFileInfo info(file); + cEXIF* lpExif = new cEXIF; + + if(!lpExif->fromFile(file)) + { + delete lpExif; + return; + } + + QList items; + + items.append(new QStandardItem(info.path())); + items.append(new QStandardItem(info.fileName())); + items.append(new QStandardItem(QString::number(info.size()))); + items.append(new QStandardItem(info.birthTime().toString("dd.MM.yyyy hh:mm:ss"))); + items.append(new QStandardItem(QString::number(lpExif->imageWidth()))); + items.append(new QStandardItem(QString::number(lpExif->imageHeight()))); + + items[3]->setTextAlignment(Qt::AlignRight); + items[4]->setTextAlignment(Qt::AlignRight); + items[5]->setTextAlignment(Qt::AlignRight); + + items[0]->setData(QVariant::fromValue(lpExif), Qt::UserRole+1); + + m_lpFileListModel->appendRow(items); +} + +bool cMainWindow::isInList(const QString& file) +{ + for(int i = 0;i < m_lpFileListModel->rowCount();i++) + { + QString file1 = m_lpFileListModel->item(i, 0)->text() + "/" + m_lpFileListModel->item(i, 1)->text(); + if(!file.compare(file1, Qt::CaseInsensitive)) + return(true); + } + + return(false); +} + +void cMainWindow::onConvert() +{ + cExportDialog* lpExportDialog = new cExportDialog(this); + lpExportDialog->exec(); + delete lpExportDialog; + + for(int i = 0;i < m_lpFileListModel->rowCount();i++) + { + QStandardItem* lpItem = m_lpFileListModel->item(i, 0); + if(!lpItem) + continue; + + cEXIF* lpExif = lpItem->data(Qt::UserRole+1).value(); + if(!lpExif) + continue; + + cImage image(lpExif->fileName()); + if(image.isNull()) + continue; + + QString newFile = lpExif->fileName(); + newFile = newFile.left(newFile.lastIndexOf(".")); + newFile.append("_converted.jpg"); + + image.save(newFile); + } +} diff --git a/cmainwindow.h b/cmainwindow.h index 65f0642..4a2aef4 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -1,7 +1,15 @@ #ifndef CMAINWINDOW_H #define CMAINWINDOW_H + +#include "csplashscreen.h" + #include +#include + +#include +#include + QT_BEGIN_NAMESPACE namespace Ui { class cMainWindow; } @@ -12,10 +20,37 @@ class cMainWindow : public QMainWindow Q_OBJECT public: - cMainWindow(QWidget *parent = nullptr); + cMainWindow(cSplashScreen* lpSplashScreen, QWidget *parent = nullptr); ~cMainWindow(); private: - Ui::cMainWindow *ui; + Ui::cMainWindow* ui; + cSplashScreen* m_lpSplashScreen; /*!< TODO: describe */ + QStandardItemModel* m_lpFileListModel; + + QMimeDatabase m_mimeDB; + + + void initUI(); + void createActions(); + void createFileActions(); + void createContextActions(); + + void addPath(const QString& path); + void addFile(const QString& file); + + bool isInList(const QString& file); + +private slots: + void onAddFile(); + void onAddFolder(); + void onRemoveSelected(); + void onClearList(); + void onConvert(); + + void onAddEntry(const QString& file); + +protected: + void closeEvent(QCloseEvent* event); }; #endif // CMAINWINDOW_H diff --git a/cmainwindow.ui b/cmainwindow.ui index 7dddbe4..f6eb7bb 100644 --- a/cmainwindow.ui +++ b/cmainwindow.ui @@ -13,10 +13,120 @@ cMainWindow - - + + + + + + + + + + add file... + + + + + + + add folder... + + + + + + + remove selected + + + + + + + clear list + + + + + + + convert... + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::MultiSelection + + + + + + + + + TextLabel + + + + + + + TextLabel + + + + + + + + + + + + + + + 0 + 0 + 800 + 21 + + + + + + cTreeView + QTreeView +
ctreeview.h
+
+
diff --git a/common.h b/common.h new file mode 100644 index 0000000..f42e6c5 --- /dev/null +++ b/common.h @@ -0,0 +1,21 @@ +#ifndef COMMON_H +#define COMMON_H + + +#include + + +#define THUMBNAIL_WIDTH 160 +#define THUMBNAIL_HEIGHT 120 + + +#ifdef __GNUC__ + #define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":" +#elif __MINGW32__ + #define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":" +#else + #define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __FUNCTION__ << ":" +#endif + + +#endif // COMMON_H diff --git a/csplashscreen.cpp b/csplashscreen.cpp new file mode 100644 index 0000000..6f0a358 --- /dev/null +++ b/csplashscreen.cpp @@ -0,0 +1,68 @@ +/*! + \file csplashscreen.cpp + +*/ + +#include "csplashscreen.h" +#include "common.h" + +#include + + +cSplashScreen::cSplashScreen(const QPixmap& pixmap, QFont& font) : + QSplashScreen(pixmap), + m_iMax(100), + m_iProgress(0) +{ + setFont(font); + m_textDocument.setDefaultFont(font); +} + +void cSplashScreen::setMax(qint32 max) +{ + m_iMax = max; +} + +void cSplashScreen::drawContents(QPainter *painter) +{ + painter->translate(m_rect.topLeft()); + m_textDocument.setHtml(m_szMessage); + m_textDocument.drawContents(painter); + + QStyleOptionProgressBar pbstyle; + pbstyle.initFrom(this); + pbstyle.state = QStyle::State_Enabled; + pbstyle.textVisible = false; + pbstyle.minimum = 0; + pbstyle.maximum = m_iMax; + pbstyle.progress = m_iProgress; + pbstyle.invertedAppearance = false; + pbstyle.rect = QRect(0, 330, 390, 10); // Where is it. + + // Draw it... + style()->drawControl(QStyle::CE_ProgressBar, &pbstyle, painter, this); +} + +void cSplashScreen::showStatusMessage(const QString& message) +{ + m_szMessage = message; + showMessage(m_szMessage); +} + +void cSplashScreen::addStatusMessage(const QString& message) +{ + m_szMessage.append(message); + showMessage(m_szMessage); +} + +void cSplashScreen::setMessageRect(QRect rect) +{ + m_rect = rect; + m_textDocument.setTextWidth(rect.width()); +} + +void cSplashScreen::setProgress(int value) +{ + m_iProgress = value; + update(); +} diff --git a/csplashscreen.h b/csplashscreen.h new file mode 100644 index 0000000..0ebe29b --- /dev/null +++ b/csplashscreen.h @@ -0,0 +1,78 @@ +/*! + \file csplashscreen.h + +*/ + +#ifndef CSPLASHSCREEN_H +#define CSPLASHSCREEN_H + + +#include +#include +#include + + +/*! + \brief + + \class cSplashScreen csplashscreen.h "csplashscreen.h" +*/ +class cSplashScreen : public QSplashScreen +{ +public: + cSplashScreen(const QPixmap& pixmap, QFont &font); + + /*! + \brief + + \fn drawContents + \param painter + */ + virtual void drawContents(QPainter *painter); + /*! + \brief + + \fn showStatusMessage + \param message + */ + void showStatusMessage(const QString &message); + /*! + \brief + + \fn addStatusMessage + \param message + */ + void addStatusMessage(const QString &message); + /*! + \brief + + \fn setMessageRect + \param rect + */ + void setMessageRect(QRect rect); + + /*! + \brief + + \fn setMax + \param max + */ + void setMax(qint32 max); + +private: + QTextDocument m_textDocument; /*!< TODO: describe */ + QString m_szMessage; /*!< TODO: describe */ + QRect m_rect; /*!< TODO: describe */ + qint32 m_iMax; /*!< TODO: describe */ + qint32 m_iProgress; /*!< TODO: describe */ +public slots: + /*! + \brief + + \fn setProgress + \param value + */ + void setProgress(int value); +}; + +#endif // CSPLASHSCREEN_H diff --git a/ctreeview.cpp b/ctreeview.cpp new file mode 100644 index 0000000..3e5fbdd --- /dev/null +++ b/ctreeview.cpp @@ -0,0 +1,48 @@ +#include "ctreeview.h" + +#include +#include +#include + +#include + + +cTreeView::cTreeView(QWidget* parent) : + QTreeView(parent) +{ + setAcceptDrops(true); +} + +void cTreeView::dragEnterEvent(QDragEnterEvent *event) +{ + if(event->mimeData()->hasUrls()) + { + event->acceptProposedAction(); + } +} + +void cTreeView::dropEvent(QDropEvent* event) +{ + const QMimeData* mimeData = event->mimeData(); + + if(mimeData->hasUrls()) + { + QStringList pathList; + QList urlList = mimeData->urls(); + + for(int i = 0; i < urlList.size(); i++) + emit addEntry(urlList[i].toLocalFile()); + } + + event->acceptProposedAction(); +} + +void cTreeView::dragMoveEvent(QDragMoveEvent *event) +{ + event->acceptProposedAction(); +} + +void cTreeView::dragLeaveEvent(QDragLeaveEvent *event) +{ + event->accept(); +} diff --git a/ctreeview.h b/ctreeview.h new file mode 100644 index 0000000..fe9224e --- /dev/null +++ b/ctreeview.h @@ -0,0 +1,35 @@ +#ifndef CTREEVIEW_H +#define CTREEVIEW_H + + +#include +#include + +#include + +#include + + +class cTreeView : public QTreeView +{ + Q_OBJECT + +public: + cTreeView(QWidget* parent = Q_NULLPTR); + +protected: + void dragEnterEvent(QDragEnterEvent *event) override; + void dropEvent(QDropEvent *event) override; + void dragMoveEvent(QDragMoveEvent *event) override; + void dragLeaveEvent(QDragLeaveEvent *event) override; + +private: + +signals: + void addEntry(const QString& path); +}; + +Q_DECLARE_METATYPE(cTreeView*) + + +#endif // CTREEVIEW_H diff --git a/images/splash.png b/images/splash.png new file mode 100644 index 0000000..5329d63 Binary files /dev/null and b/images/splash.png differ diff --git a/images/tango/16x16/actions/address-book-new.png b/images/tango/16x16/actions/address-book-new.png new file mode 100644 index 0000000..2098cfd Binary files /dev/null and b/images/tango/16x16/actions/address-book-new.png differ diff --git a/images/tango/16x16/actions/appointment-new.png b/images/tango/16x16/actions/appointment-new.png new file mode 100644 index 0000000..18b7c67 Binary files /dev/null and b/images/tango/16x16/actions/appointment-new.png differ diff --git a/images/tango/16x16/actions/bookmark-new.png b/images/tango/16x16/actions/bookmark-new.png new file mode 100644 index 0000000..6cf6443 Binary files /dev/null and b/images/tango/16x16/actions/bookmark-new.png differ diff --git a/images/tango/16x16/actions/contact-new.png b/images/tango/16x16/actions/contact-new.png new file mode 100644 index 0000000..46573ff Binary files /dev/null and b/images/tango/16x16/actions/contact-new.png differ diff --git a/images/tango/16x16/actions/document-new.png b/images/tango/16x16/actions/document-new.png new file mode 100644 index 0000000..4c3efdd Binary files /dev/null and b/images/tango/16x16/actions/document-new.png differ diff --git a/images/tango/16x16/actions/document-open.png b/images/tango/16x16/actions/document-open.png new file mode 100644 index 0000000..ab94046 Binary files /dev/null and b/images/tango/16x16/actions/document-open.png differ diff --git a/images/tango/16x16/actions/document-pdf.png b/images/tango/16x16/actions/document-pdf.png new file mode 100644 index 0000000..4e1657f Binary files /dev/null and b/images/tango/16x16/actions/document-pdf.png differ diff --git a/images/tango/16x16/actions/document-print-preview.png b/images/tango/16x16/actions/document-print-preview.png new file mode 100644 index 0000000..ab92a30 Binary files /dev/null and b/images/tango/16x16/actions/document-print-preview.png differ diff --git a/images/tango/16x16/actions/document-print.png b/images/tango/16x16/actions/document-print.png new file mode 100644 index 0000000..35c37bd Binary files /dev/null and b/images/tango/16x16/actions/document-print.png differ diff --git a/images/tango/16x16/actions/document-properties.png b/images/tango/16x16/actions/document-properties.png new file mode 100644 index 0000000..ab0e8ea Binary files /dev/null and b/images/tango/16x16/actions/document-properties.png differ diff --git a/images/tango/16x16/actions/document-revert.png b/images/tango/16x16/actions/document-revert.png new file mode 100644 index 0000000..cf3c13b Binary files /dev/null and b/images/tango/16x16/actions/document-revert.png differ diff --git a/images/tango/16x16/actions/document-save-as.png b/images/tango/16x16/actions/document-save-as.png new file mode 100644 index 0000000..9bed143 Binary files /dev/null and b/images/tango/16x16/actions/document-save-as.png differ diff --git a/images/tango/16x16/actions/document-save.png b/images/tango/16x16/actions/document-save.png new file mode 100644 index 0000000..22ff495 Binary files /dev/null and b/images/tango/16x16/actions/document-save.png differ diff --git a/images/tango/16x16/actions/edit-clear.png b/images/tango/16x16/actions/edit-clear.png new file mode 100644 index 0000000..e6c8e8b Binary files /dev/null and b/images/tango/16x16/actions/edit-clear.png differ diff --git a/images/tango/16x16/actions/edit-copy.png b/images/tango/16x16/actions/edit-copy.png new file mode 100644 index 0000000..8dd48c4 Binary files /dev/null and b/images/tango/16x16/actions/edit-copy.png differ diff --git a/images/tango/16x16/actions/edit-cut.png b/images/tango/16x16/actions/edit-cut.png new file mode 100644 index 0000000..dc9eb9a Binary files /dev/null and b/images/tango/16x16/actions/edit-cut.png differ diff --git a/images/tango/16x16/actions/edit-delete.png b/images/tango/16x16/actions/edit-delete.png new file mode 100644 index 0000000..ea03150 Binary files /dev/null and b/images/tango/16x16/actions/edit-delete.png differ diff --git a/images/tango/16x16/actions/edit-find-replace.png b/images/tango/16x16/actions/edit-find-replace.png new file mode 100644 index 0000000..6edbef6 Binary files /dev/null and b/images/tango/16x16/actions/edit-find-replace.png differ diff --git a/images/tango/16x16/actions/edit-find.png b/images/tango/16x16/actions/edit-find.png new file mode 100644 index 0000000..d072d3c Binary files /dev/null and b/images/tango/16x16/actions/edit-find.png differ diff --git a/images/tango/16x16/actions/edit-paste.png b/images/tango/16x16/actions/edit-paste.png new file mode 100644 index 0000000..24588a3 Binary files /dev/null and b/images/tango/16x16/actions/edit-paste.png differ diff --git a/images/tango/16x16/actions/edit-redo.png b/images/tango/16x16/actions/edit-redo.png new file mode 100644 index 0000000..c3b0df0 Binary files /dev/null and b/images/tango/16x16/actions/edit-redo.png differ diff --git a/images/tango/16x16/actions/edit-select-all.png b/images/tango/16x16/actions/edit-select-all.png new file mode 100644 index 0000000..f4b0b19 Binary files /dev/null and b/images/tango/16x16/actions/edit-select-all.png differ diff --git a/images/tango/16x16/actions/edit-undo.png b/images/tango/16x16/actions/edit-undo.png new file mode 100644 index 0000000..8b0fef9 Binary files /dev/null and b/images/tango/16x16/actions/edit-undo.png differ diff --git a/images/tango/16x16/actions/folder-new.png b/images/tango/16x16/actions/folder-new.png new file mode 100644 index 0000000..628f4d5 Binary files /dev/null and b/images/tango/16x16/actions/folder-new.png differ diff --git a/images/tango/16x16/actions/format-indent-less.png b/images/tango/16x16/actions/format-indent-less.png new file mode 100644 index 0000000..1787a7f Binary files /dev/null and b/images/tango/16x16/actions/format-indent-less.png differ diff --git a/images/tango/16x16/actions/format-indent-more.png b/images/tango/16x16/actions/format-indent-more.png new file mode 100644 index 0000000..6bad6bb Binary files /dev/null and b/images/tango/16x16/actions/format-indent-more.png differ diff --git a/images/tango/16x16/actions/format-justify-center.png b/images/tango/16x16/actions/format-justify-center.png new file mode 100644 index 0000000..207dc4c Binary files /dev/null and b/images/tango/16x16/actions/format-justify-center.png differ diff --git a/images/tango/16x16/actions/format-justify-fill.png b/images/tango/16x16/actions/format-justify-fill.png new file mode 100644 index 0000000..663cbad Binary files /dev/null and b/images/tango/16x16/actions/format-justify-fill.png differ diff --git a/images/tango/16x16/actions/format-justify-left.png b/images/tango/16x16/actions/format-justify-left.png new file mode 100644 index 0000000..d9b40a7 Binary files /dev/null and b/images/tango/16x16/actions/format-justify-left.png differ diff --git a/images/tango/16x16/actions/format-justify-right.png b/images/tango/16x16/actions/format-justify-right.png new file mode 100644 index 0000000..c301307 Binary files /dev/null and b/images/tango/16x16/actions/format-justify-right.png differ diff --git a/images/tango/16x16/actions/format-text-bold.png b/images/tango/16x16/actions/format-text-bold.png new file mode 100644 index 0000000..c9cb630 Binary files /dev/null and b/images/tango/16x16/actions/format-text-bold.png differ diff --git a/images/tango/16x16/actions/format-text-italic.png b/images/tango/16x16/actions/format-text-italic.png new file mode 100644 index 0000000..977ea82 Binary files /dev/null and b/images/tango/16x16/actions/format-text-italic.png differ diff --git a/images/tango/16x16/actions/format-text-strikethrough.png b/images/tango/16x16/actions/format-text-strikethrough.png new file mode 100644 index 0000000..ccee76e Binary files /dev/null and b/images/tango/16x16/actions/format-text-strikethrough.png differ diff --git a/images/tango/16x16/actions/format-text-underline.png b/images/tango/16x16/actions/format-text-underline.png new file mode 100644 index 0000000..0c48721 Binary files /dev/null and b/images/tango/16x16/actions/format-text-underline.png differ diff --git a/images/tango/16x16/actions/go-bottom.png b/images/tango/16x16/actions/go-bottom.png new file mode 100644 index 0000000..2c5a803 Binary files /dev/null and b/images/tango/16x16/actions/go-bottom.png differ diff --git a/images/tango/16x16/actions/go-down.png b/images/tango/16x16/actions/go-down.png new file mode 100644 index 0000000..3dd7fcc Binary files /dev/null and b/images/tango/16x16/actions/go-down.png differ diff --git a/images/tango/16x16/actions/go-first.png b/images/tango/16x16/actions/go-first.png new file mode 100644 index 0000000..9c15c09 Binary files /dev/null and b/images/tango/16x16/actions/go-first.png differ diff --git a/images/tango/16x16/actions/go-home.png b/images/tango/16x16/actions/go-home.png new file mode 100644 index 0000000..a46fb22 Binary files /dev/null and b/images/tango/16x16/actions/go-home.png differ diff --git a/images/tango/16x16/actions/go-jump.png b/images/tango/16x16/actions/go-jump.png new file mode 100644 index 0000000..1d218c3 Binary files /dev/null and b/images/tango/16x16/actions/go-jump.png differ diff --git a/images/tango/16x16/actions/go-last.png b/images/tango/16x16/actions/go-last.png new file mode 100644 index 0000000..6e904ef Binary files /dev/null and b/images/tango/16x16/actions/go-last.png differ diff --git a/images/tango/16x16/actions/go-next.png b/images/tango/16x16/actions/go-next.png new file mode 100644 index 0000000..6ef8de7 Binary files /dev/null and b/images/tango/16x16/actions/go-next.png differ diff --git a/images/tango/16x16/actions/go-previous.png b/images/tango/16x16/actions/go-previous.png new file mode 100644 index 0000000..659cd90 Binary files /dev/null and b/images/tango/16x16/actions/go-previous.png differ diff --git a/images/tango/16x16/actions/go-top.png b/images/tango/16x16/actions/go-top.png new file mode 100644 index 0000000..70f2c99 Binary files /dev/null and b/images/tango/16x16/actions/go-top.png differ diff --git a/images/tango/16x16/actions/go-up.png b/images/tango/16x16/actions/go-up.png new file mode 100644 index 0000000..fa9a7d7 Binary files /dev/null and b/images/tango/16x16/actions/go-up.png differ diff --git a/images/tango/16x16/actions/list-add.png b/images/tango/16x16/actions/list-add.png new file mode 100644 index 0000000..1aa7f09 Binary files /dev/null and b/images/tango/16x16/actions/list-add.png differ diff --git a/images/tango/16x16/actions/list-remove.png b/images/tango/16x16/actions/list-remove.png new file mode 100644 index 0000000..00b654e Binary files /dev/null and b/images/tango/16x16/actions/list-remove.png differ diff --git a/images/tango/16x16/actions/mail-forward.png b/images/tango/16x16/actions/mail-forward.png new file mode 100644 index 0000000..de0199b Binary files /dev/null and b/images/tango/16x16/actions/mail-forward.png differ diff --git a/images/tango/16x16/actions/mail-mark-junk.png b/images/tango/16x16/actions/mail-mark-junk.png new file mode 100644 index 0000000..f12d452 Binary files /dev/null and b/images/tango/16x16/actions/mail-mark-junk.png differ diff --git a/images/tango/16x16/actions/mail-mark-not-junk.png b/images/tango/16x16/actions/mail-mark-not-junk.png new file mode 100644 index 0000000..87c425f Binary files /dev/null and b/images/tango/16x16/actions/mail-mark-not-junk.png differ diff --git a/images/tango/16x16/actions/mail-message-new.png b/images/tango/16x16/actions/mail-message-new.png new file mode 100644 index 0000000..7c68cb8 Binary files /dev/null and b/images/tango/16x16/actions/mail-message-new.png differ diff --git a/images/tango/16x16/actions/mail-reply-all.png b/images/tango/16x16/actions/mail-reply-all.png new file mode 100644 index 0000000..2017b0a Binary files /dev/null and b/images/tango/16x16/actions/mail-reply-all.png differ diff --git a/images/tango/16x16/actions/mail-reply-sender.png b/images/tango/16x16/actions/mail-reply-sender.png new file mode 100644 index 0000000..a619741 Binary files /dev/null and b/images/tango/16x16/actions/mail-reply-sender.png differ diff --git a/images/tango/16x16/actions/mail-send-receive.png b/images/tango/16x16/actions/mail-send-receive.png new file mode 100644 index 0000000..3eb6a9c Binary files /dev/null and b/images/tango/16x16/actions/mail-send-receive.png differ diff --git a/images/tango/16x16/actions/media-eject.png b/images/tango/16x16/actions/media-eject.png new file mode 100644 index 0000000..2084067 Binary files /dev/null and b/images/tango/16x16/actions/media-eject.png differ diff --git a/images/tango/16x16/actions/media-playback-pause.png b/images/tango/16x16/actions/media-playback-pause.png new file mode 100644 index 0000000..c8b4fe2 Binary files /dev/null and b/images/tango/16x16/actions/media-playback-pause.png differ diff --git a/images/tango/16x16/actions/media-playback-start.png b/images/tango/16x16/actions/media-playback-start.png new file mode 100644 index 0000000..a7de0fe Binary files /dev/null and b/images/tango/16x16/actions/media-playback-start.png differ diff --git a/images/tango/16x16/actions/media-playback-stop.png b/images/tango/16x16/actions/media-playback-stop.png new file mode 100644 index 0000000..ede2815 Binary files /dev/null and b/images/tango/16x16/actions/media-playback-stop.png differ diff --git a/images/tango/16x16/actions/media-record.png b/images/tango/16x16/actions/media-record.png new file mode 100644 index 0000000..2f66cde Binary files /dev/null and b/images/tango/16x16/actions/media-record.png differ diff --git a/images/tango/16x16/actions/media-seek-backward.png b/images/tango/16x16/actions/media-seek-backward.png new file mode 100644 index 0000000..ffcac31 Binary files /dev/null and b/images/tango/16x16/actions/media-seek-backward.png differ diff --git a/images/tango/16x16/actions/media-seek-forward.png b/images/tango/16x16/actions/media-seek-forward.png new file mode 100644 index 0000000..4d7e2cd Binary files /dev/null and b/images/tango/16x16/actions/media-seek-forward.png differ diff --git a/images/tango/16x16/actions/media-skip-backward.png b/images/tango/16x16/actions/media-skip-backward.png new file mode 100644 index 0000000..94381f5 Binary files /dev/null and b/images/tango/16x16/actions/media-skip-backward.png differ diff --git a/images/tango/16x16/actions/media-skip-forward.png b/images/tango/16x16/actions/media-skip-forward.png new file mode 100644 index 0000000..758ec6f Binary files /dev/null and b/images/tango/16x16/actions/media-skip-forward.png differ diff --git a/images/tango/16x16/actions/process-stop.png b/images/tango/16x16/actions/process-stop.png new file mode 100644 index 0000000..ab6808f Binary files /dev/null and b/images/tango/16x16/actions/process-stop.png differ diff --git a/images/tango/16x16/actions/system-lock-screen.png b/images/tango/16x16/actions/system-lock-screen.png new file mode 100644 index 0000000..f7ea0cd Binary files /dev/null and b/images/tango/16x16/actions/system-lock-screen.png differ diff --git a/images/tango/16x16/actions/system-log-out.png b/images/tango/16x16/actions/system-log-out.png new file mode 100644 index 0000000..0010931 Binary files /dev/null and b/images/tango/16x16/actions/system-log-out.png differ diff --git a/images/tango/16x16/actions/system-search.png b/images/tango/16x16/actions/system-search.png new file mode 100644 index 0000000..fd7f0b0 Binary files /dev/null and b/images/tango/16x16/actions/system-search.png differ diff --git a/images/tango/16x16/actions/system-shutdown.png b/images/tango/16x16/actions/system-shutdown.png new file mode 100644 index 0000000..afe62de Binary files /dev/null and b/images/tango/16x16/actions/system-shutdown.png differ diff --git a/images/tango/16x16/actions/tab-new.png b/images/tango/16x16/actions/tab-new.png new file mode 100644 index 0000000..3e590f6 Binary files /dev/null and b/images/tango/16x16/actions/tab-new.png differ diff --git a/images/tango/16x16/actions/view-fullscreen.png b/images/tango/16x16/actions/view-fullscreen.png new file mode 100644 index 0000000..ffdabd4 Binary files /dev/null and b/images/tango/16x16/actions/view-fullscreen.png differ diff --git a/images/tango/16x16/actions/view-refresh.png b/images/tango/16x16/actions/view-refresh.png new file mode 100644 index 0000000..3fd71d6 Binary files /dev/null and b/images/tango/16x16/actions/view-refresh.png differ diff --git a/images/tango/16x16/actions/window-new.png b/images/tango/16x16/actions/window-new.png new file mode 100644 index 0000000..0e12ef9 Binary files /dev/null and b/images/tango/16x16/actions/window-new.png differ diff --git a/images/tango/16x16/animations/process-working.png b/images/tango/16x16/animations/process-working.png new file mode 100644 index 0000000..984bde4 Binary files /dev/null and b/images/tango/16x16/animations/process-working.png differ diff --git a/images/tango/16x16/apps/accessories-calculator.png b/images/tango/16x16/apps/accessories-calculator.png new file mode 100644 index 0000000..9248971 Binary files /dev/null and b/images/tango/16x16/apps/accessories-calculator.png differ diff --git a/images/tango/16x16/apps/accessories-character-map.png b/images/tango/16x16/apps/accessories-character-map.png new file mode 100644 index 0000000..5dd1124 Binary files /dev/null and b/images/tango/16x16/apps/accessories-character-map.png differ diff --git a/images/tango/16x16/apps/accessories-text-editor.png b/images/tango/16x16/apps/accessories-text-editor.png new file mode 100644 index 0000000..188e1c1 Binary files /dev/null and b/images/tango/16x16/apps/accessories-text-editor.png differ diff --git a/images/tango/16x16/apps/help-browser.png b/images/tango/16x16/apps/help-browser.png new file mode 100644 index 0000000..f25fc3f Binary files /dev/null and b/images/tango/16x16/apps/help-browser.png differ diff --git a/images/tango/16x16/apps/internet-group-chat.png b/images/tango/16x16/apps/internet-group-chat.png new file mode 100644 index 0000000..f6e8325 Binary files /dev/null and b/images/tango/16x16/apps/internet-group-chat.png differ diff --git a/images/tango/16x16/apps/internet-mail.png b/images/tango/16x16/apps/internet-mail.png new file mode 100644 index 0000000..859251f Binary files /dev/null and b/images/tango/16x16/apps/internet-mail.png differ diff --git a/images/tango/16x16/apps/internet-news-reader.png b/images/tango/16x16/apps/internet-news-reader.png new file mode 100644 index 0000000..a9850ee Binary files /dev/null and b/images/tango/16x16/apps/internet-news-reader.png differ diff --git a/images/tango/16x16/apps/internet-web-browser.png b/images/tango/16x16/apps/internet-web-browser.png new file mode 100644 index 0000000..ac5957a Binary files /dev/null and b/images/tango/16x16/apps/internet-web-browser.png differ diff --git a/images/tango/16x16/apps/office-calendar.png b/images/tango/16x16/apps/office-calendar.png new file mode 100644 index 0000000..106a592 Binary files /dev/null and b/images/tango/16x16/apps/office-calendar.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-accessibility.png b/images/tango/16x16/apps/preferences-desktop-accessibility.png new file mode 100644 index 0000000..b365c27 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-accessibility.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-assistive-technology.png b/images/tango/16x16/apps/preferences-desktop-assistive-technology.png new file mode 100644 index 0000000..513d817 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-assistive-technology.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-font.png b/images/tango/16x16/apps/preferences-desktop-font.png new file mode 100644 index 0000000..18a0149 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-font.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-keyboard-shortcuts.png b/images/tango/16x16/apps/preferences-desktop-keyboard-shortcuts.png new file mode 100644 index 0000000..291dc1a Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-keyboard-shortcuts.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-locale.png b/images/tango/16x16/apps/preferences-desktop-locale.png new file mode 100644 index 0000000..5ef73a6 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-locale.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-multimedia.png b/images/tango/16x16/apps/preferences-desktop-multimedia.png new file mode 100644 index 0000000..2e5ba43 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-multimedia.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-remote-desktop.png b/images/tango/16x16/apps/preferences-desktop-remote-desktop.png new file mode 100644 index 0000000..b790f63 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-remote-desktop.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-screensaver.png b/images/tango/16x16/apps/preferences-desktop-screensaver.png new file mode 100644 index 0000000..dc297db Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-screensaver.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-theme.png b/images/tango/16x16/apps/preferences-desktop-theme.png new file mode 100644 index 0000000..fbea772 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-theme.png differ diff --git a/images/tango/16x16/apps/preferences-desktop-wallpaper.png b/images/tango/16x16/apps/preferences-desktop-wallpaper.png new file mode 100644 index 0000000..e7cc834 Binary files /dev/null and b/images/tango/16x16/apps/preferences-desktop-wallpaper.png differ diff --git a/images/tango/16x16/apps/preferences-system-network-proxy.png b/images/tango/16x16/apps/preferences-system-network-proxy.png new file mode 100644 index 0000000..bdeb79d Binary files /dev/null and b/images/tango/16x16/apps/preferences-system-network-proxy.png differ diff --git a/images/tango/16x16/apps/preferences-system-session.png b/images/tango/16x16/apps/preferences-system-session.png new file mode 100644 index 0000000..35f8b57 Binary files /dev/null and b/images/tango/16x16/apps/preferences-system-session.png differ diff --git a/images/tango/16x16/apps/preferences-system-windows.png b/images/tango/16x16/apps/preferences-system-windows.png new file mode 100644 index 0000000..596caf9 Binary files /dev/null and b/images/tango/16x16/apps/preferences-system-windows.png differ diff --git a/images/tango/16x16/apps/system-file-manager.png b/images/tango/16x16/apps/system-file-manager.png new file mode 100644 index 0000000..60cade4 Binary files /dev/null and b/images/tango/16x16/apps/system-file-manager.png differ diff --git a/images/tango/16x16/apps/system-installer.png b/images/tango/16x16/apps/system-installer.png new file mode 100644 index 0000000..d16abcb Binary files /dev/null and b/images/tango/16x16/apps/system-installer.png differ diff --git a/images/tango/16x16/apps/system-software-update.png b/images/tango/16x16/apps/system-software-update.png new file mode 100644 index 0000000..58f19c6 Binary files /dev/null and b/images/tango/16x16/apps/system-software-update.png differ diff --git a/images/tango/16x16/apps/system-users.png b/images/tango/16x16/apps/system-users.png new file mode 100644 index 0000000..9d2d500 Binary files /dev/null and b/images/tango/16x16/apps/system-users.png differ diff --git a/images/tango/16x16/apps/utilities-system-monitor.png b/images/tango/16x16/apps/utilities-system-monitor.png new file mode 100644 index 0000000..8734e77 Binary files /dev/null and b/images/tango/16x16/apps/utilities-system-monitor.png differ diff --git a/images/tango/16x16/apps/utilities-terminal.png b/images/tango/16x16/apps/utilities-terminal.png new file mode 100644 index 0000000..c5b797a Binary files /dev/null and b/images/tango/16x16/apps/utilities-terminal.png differ diff --git a/images/tango/16x16/categories/applications-accessories.png b/images/tango/16x16/categories/applications-accessories.png new file mode 100644 index 0000000..c8d899c Binary files /dev/null and b/images/tango/16x16/categories/applications-accessories.png differ diff --git a/images/tango/16x16/categories/applications-development.png b/images/tango/16x16/categories/applications-development.png new file mode 100644 index 0000000..4375227 Binary files /dev/null and b/images/tango/16x16/categories/applications-development.png differ diff --git a/images/tango/16x16/categories/applications-games.png b/images/tango/16x16/categories/applications-games.png new file mode 100644 index 0000000..4ba874b Binary files /dev/null and b/images/tango/16x16/categories/applications-games.png differ diff --git a/images/tango/16x16/categories/applications-graphics.png b/images/tango/16x16/categories/applications-graphics.png new file mode 100644 index 0000000..4bb955f Binary files /dev/null and b/images/tango/16x16/categories/applications-graphics.png differ diff --git a/images/tango/16x16/categories/applications-internet.png b/images/tango/16x16/categories/applications-internet.png new file mode 100644 index 0000000..a588968 Binary files /dev/null and b/images/tango/16x16/categories/applications-internet.png differ diff --git a/images/tango/16x16/categories/applications-multimedia.png b/images/tango/16x16/categories/applications-multimedia.png new file mode 100644 index 0000000..3e4ced5 Binary files /dev/null and b/images/tango/16x16/categories/applications-multimedia.png differ diff --git a/images/tango/16x16/categories/applications-office.png b/images/tango/16x16/categories/applications-office.png new file mode 100644 index 0000000..f9b3bb9 Binary files /dev/null and b/images/tango/16x16/categories/applications-office.png differ diff --git a/images/tango/16x16/categories/applications-other.png b/images/tango/16x16/categories/applications-other.png new file mode 100644 index 0000000..0d49f9d Binary files /dev/null and b/images/tango/16x16/categories/applications-other.png differ diff --git a/images/tango/16x16/categories/applications-system.png b/images/tango/16x16/categories/applications-system.png new file mode 100644 index 0000000..d90ab66 Binary files /dev/null and b/images/tango/16x16/categories/applications-system.png differ diff --git a/images/tango/16x16/categories/preferences-desktop-peripherals.png b/images/tango/16x16/categories/preferences-desktop-peripherals.png new file mode 100644 index 0000000..2a63cee Binary files /dev/null and b/images/tango/16x16/categories/preferences-desktop-peripherals.png differ diff --git a/images/tango/16x16/categories/preferences-desktop.png b/images/tango/16x16/categories/preferences-desktop.png new file mode 100644 index 0000000..68f916c Binary files /dev/null and b/images/tango/16x16/categories/preferences-desktop.png differ diff --git a/images/tango/16x16/categories/preferences-system.png b/images/tango/16x16/categories/preferences-system.png new file mode 100644 index 0000000..9460dfc Binary files /dev/null and b/images/tango/16x16/categories/preferences-system.png differ diff --git a/images/tango/16x16/devices/audio-card.png b/images/tango/16x16/devices/audio-card.png new file mode 100644 index 0000000..aaa7907 Binary files /dev/null and b/images/tango/16x16/devices/audio-card.png differ diff --git a/images/tango/16x16/devices/audio-input-microphone.png b/images/tango/16x16/devices/audio-input-microphone.png new file mode 100644 index 0000000..53a0393 Binary files /dev/null and b/images/tango/16x16/devices/audio-input-microphone.png differ diff --git a/images/tango/16x16/devices/battery.png b/images/tango/16x16/devices/battery.png new file mode 100644 index 0000000..8684e2a Binary files /dev/null and b/images/tango/16x16/devices/battery.png differ diff --git a/images/tango/16x16/devices/camera-photo.png b/images/tango/16x16/devices/camera-photo.png new file mode 100644 index 0000000..1e8e886 Binary files /dev/null and b/images/tango/16x16/devices/camera-photo.png differ diff --git a/images/tango/16x16/devices/camera-video.png b/images/tango/16x16/devices/camera-video.png new file mode 100644 index 0000000..98fc211 Binary files /dev/null and b/images/tango/16x16/devices/camera-video.png differ diff --git a/images/tango/16x16/devices/computer.png b/images/tango/16x16/devices/computer.png new file mode 100644 index 0000000..d0b397b Binary files /dev/null and b/images/tango/16x16/devices/computer.png differ diff --git a/images/tango/16x16/devices/drive-harddisk.png b/images/tango/16x16/devices/drive-harddisk.png new file mode 100644 index 0000000..5c3b858 Binary files /dev/null and b/images/tango/16x16/devices/drive-harddisk.png differ diff --git a/images/tango/16x16/devices/drive-optical.png b/images/tango/16x16/devices/drive-optical.png new file mode 100644 index 0000000..4ced6fe Binary files /dev/null and b/images/tango/16x16/devices/drive-optical.png differ diff --git a/images/tango/16x16/devices/drive-removable-media.png b/images/tango/16x16/devices/drive-removable-media.png new file mode 100644 index 0000000..9153898 Binary files /dev/null and b/images/tango/16x16/devices/drive-removable-media.png differ diff --git a/images/tango/16x16/devices/input-gaming.png b/images/tango/16x16/devices/input-gaming.png new file mode 100644 index 0000000..9d040ee Binary files /dev/null and b/images/tango/16x16/devices/input-gaming.png differ diff --git a/images/tango/16x16/devices/input-keyboard.png b/images/tango/16x16/devices/input-keyboard.png new file mode 100644 index 0000000..fab414b Binary files /dev/null and b/images/tango/16x16/devices/input-keyboard.png differ diff --git a/images/tango/16x16/devices/input-mouse.png b/images/tango/16x16/devices/input-mouse.png new file mode 100644 index 0000000..eeda4db Binary files /dev/null and b/images/tango/16x16/devices/input-mouse.png differ diff --git a/images/tango/16x16/devices/media-flash.png b/images/tango/16x16/devices/media-flash.png new file mode 100644 index 0000000..bef542a Binary files /dev/null and b/images/tango/16x16/devices/media-flash.png differ diff --git a/images/tango/16x16/devices/media-floppy.png b/images/tango/16x16/devices/media-floppy.png new file mode 100644 index 0000000..f1d7a19 Binary files /dev/null and b/images/tango/16x16/devices/media-floppy.png differ diff --git a/images/tango/16x16/devices/media-optical.png b/images/tango/16x16/devices/media-optical.png new file mode 100644 index 0000000..760de93 Binary files /dev/null and b/images/tango/16x16/devices/media-optical.png differ diff --git a/images/tango/16x16/devices/multimedia-player.png b/images/tango/16x16/devices/multimedia-player.png new file mode 100644 index 0000000..461e9de Binary files /dev/null and b/images/tango/16x16/devices/multimedia-player.png differ diff --git a/images/tango/16x16/devices/network-wired.png b/images/tango/16x16/devices/network-wired.png new file mode 100644 index 0000000..3ac6b35 Binary files /dev/null and b/images/tango/16x16/devices/network-wired.png differ diff --git a/images/tango/16x16/devices/network-wireless.png b/images/tango/16x16/devices/network-wireless.png new file mode 100644 index 0000000..2dc6250 Binary files /dev/null and b/images/tango/16x16/devices/network-wireless.png differ diff --git a/images/tango/16x16/devices/printer.png b/images/tango/16x16/devices/printer.png new file mode 100644 index 0000000..12a4e39 Binary files /dev/null and b/images/tango/16x16/devices/printer.png differ diff --git a/images/tango/16x16/devices/video-display.png b/images/tango/16x16/devices/video-display.png new file mode 100644 index 0000000..226881f Binary files /dev/null and b/images/tango/16x16/devices/video-display.png differ diff --git a/images/tango/16x16/emblems/emblem-favorite.png b/images/tango/16x16/emblems/emblem-favorite.png new file mode 100644 index 0000000..3acb57d Binary files /dev/null and b/images/tango/16x16/emblems/emblem-favorite.png differ diff --git a/images/tango/16x16/emblems/emblem-important.png b/images/tango/16x16/emblems/emblem-important.png new file mode 100644 index 0000000..81e9ed2 Binary files /dev/null and b/images/tango/16x16/emblems/emblem-important.png differ diff --git a/images/tango/16x16/emblems/emblem-photos.png b/images/tango/16x16/emblems/emblem-photos.png new file mode 100644 index 0000000..ab40463 Binary files /dev/null and b/images/tango/16x16/emblems/emblem-photos.png differ diff --git a/images/tango/16x16/emblems/emblem-readonly.png b/images/tango/16x16/emblems/emblem-readonly.png new file mode 100644 index 0000000..0466619 Binary files /dev/null and b/images/tango/16x16/emblems/emblem-readonly.png differ diff --git a/images/tango/16x16/emblems/emblem-symbolic-link.png b/images/tango/16x16/emblems/emblem-symbolic-link.png new file mode 100644 index 0000000..800b9e8 Binary files /dev/null and b/images/tango/16x16/emblems/emblem-symbolic-link.png differ diff --git a/images/tango/16x16/emblems/emblem-system.png b/images/tango/16x16/emblems/emblem-system.png new file mode 100644 index 0000000..259ed26 Binary files /dev/null and b/images/tango/16x16/emblems/emblem-system.png differ diff --git a/images/tango/16x16/emblems/emblem-unreadable.png b/images/tango/16x16/emblems/emblem-unreadable.png new file mode 100644 index 0000000..5c08b05 Binary files /dev/null and b/images/tango/16x16/emblems/emblem-unreadable.png differ diff --git a/images/tango/16x16/emotes/face-angel.png b/images/tango/16x16/emotes/face-angel.png new file mode 100644 index 0000000..d2c5e94 Binary files /dev/null and b/images/tango/16x16/emotes/face-angel.png differ diff --git a/images/tango/16x16/emotes/face-crying.png b/images/tango/16x16/emotes/face-crying.png new file mode 100644 index 0000000..2620dab Binary files /dev/null and b/images/tango/16x16/emotes/face-crying.png differ diff --git a/images/tango/16x16/emotes/face-devilish.png b/images/tango/16x16/emotes/face-devilish.png new file mode 100644 index 0000000..6edf683 Binary files /dev/null and b/images/tango/16x16/emotes/face-devilish.png differ diff --git a/images/tango/16x16/emotes/face-glasses.png b/images/tango/16x16/emotes/face-glasses.png new file mode 100644 index 0000000..00c2cd4 Binary files /dev/null and b/images/tango/16x16/emotes/face-glasses.png differ diff --git a/images/tango/16x16/emotes/face-grin.png b/images/tango/16x16/emotes/face-grin.png new file mode 100644 index 0000000..0d013d5 Binary files /dev/null and b/images/tango/16x16/emotes/face-grin.png differ diff --git a/images/tango/16x16/emotes/face-kiss.png b/images/tango/16x16/emotes/face-kiss.png new file mode 100644 index 0000000..809c1cf Binary files /dev/null and b/images/tango/16x16/emotes/face-kiss.png differ diff --git a/images/tango/16x16/emotes/face-monkey.png b/images/tango/16x16/emotes/face-monkey.png new file mode 100644 index 0000000..69db8fa Binary files /dev/null and b/images/tango/16x16/emotes/face-monkey.png differ diff --git a/images/tango/16x16/emotes/face-plain.png b/images/tango/16x16/emotes/face-plain.png new file mode 100644 index 0000000..31cf984 Binary files /dev/null and b/images/tango/16x16/emotes/face-plain.png differ diff --git a/images/tango/16x16/emotes/face-sad.png b/images/tango/16x16/emotes/face-sad.png new file mode 100644 index 0000000..159c04b Binary files /dev/null and b/images/tango/16x16/emotes/face-sad.png differ diff --git a/images/tango/16x16/emotes/face-smile-big.png b/images/tango/16x16/emotes/face-smile-big.png new file mode 100644 index 0000000..9114fde Binary files /dev/null and b/images/tango/16x16/emotes/face-smile-big.png differ diff --git a/images/tango/16x16/emotes/face-smile.png b/images/tango/16x16/emotes/face-smile.png new file mode 100644 index 0000000..de862b1 Binary files /dev/null and b/images/tango/16x16/emotes/face-smile.png differ diff --git a/images/tango/16x16/emotes/face-surprise.png b/images/tango/16x16/emotes/face-surprise.png new file mode 100644 index 0000000..4b4d423 Binary files /dev/null and b/images/tango/16x16/emotes/face-surprise.png differ diff --git a/images/tango/16x16/emotes/face-wink.png b/images/tango/16x16/emotes/face-wink.png new file mode 100644 index 0000000..e2db57e Binary files /dev/null and b/images/tango/16x16/emotes/face-wink.png differ diff --git a/images/tango/16x16/mimetypes/application-certificate.png b/images/tango/16x16/mimetypes/application-certificate.png new file mode 100644 index 0000000..486913d Binary files /dev/null and b/images/tango/16x16/mimetypes/application-certificate.png differ diff --git a/images/tango/16x16/mimetypes/application-x-executable.png b/images/tango/16x16/mimetypes/application-x-executable.png new file mode 100644 index 0000000..003ded2 Binary files /dev/null and b/images/tango/16x16/mimetypes/application-x-executable.png differ diff --git a/images/tango/16x16/mimetypes/audio-x-generic.png b/images/tango/16x16/mimetypes/audio-x-generic.png new file mode 100644 index 0000000..2bd5af9 Binary files /dev/null and b/images/tango/16x16/mimetypes/audio-x-generic.png differ diff --git a/images/tango/16x16/mimetypes/font-x-generic.png b/images/tango/16x16/mimetypes/font-x-generic.png new file mode 100644 index 0000000..bdbc1a8 Binary files /dev/null and b/images/tango/16x16/mimetypes/font-x-generic.png differ diff --git a/images/tango/16x16/mimetypes/image-x-generic.png b/images/tango/16x16/mimetypes/image-x-generic.png new file mode 100644 index 0000000..68da502 Binary files /dev/null and b/images/tango/16x16/mimetypes/image-x-generic.png differ diff --git a/images/tango/16x16/mimetypes/package-x-generic.png b/images/tango/16x16/mimetypes/package-x-generic.png new file mode 100644 index 0000000..9015426 Binary files /dev/null and b/images/tango/16x16/mimetypes/package-x-generic.png differ diff --git a/images/tango/16x16/mimetypes/text-html.png b/images/tango/16x16/mimetypes/text-html.png new file mode 100644 index 0000000..53014ab Binary files /dev/null and b/images/tango/16x16/mimetypes/text-html.png differ diff --git a/images/tango/16x16/mimetypes/text-x-generic-template.png b/images/tango/16x16/mimetypes/text-x-generic-template.png new file mode 100644 index 0000000..a0cc462 Binary files /dev/null and b/images/tango/16x16/mimetypes/text-x-generic-template.png differ diff --git a/images/tango/16x16/mimetypes/text-x-generic.png b/images/tango/16x16/mimetypes/text-x-generic.png new file mode 100644 index 0000000..2d7f2d6 Binary files /dev/null and b/images/tango/16x16/mimetypes/text-x-generic.png differ diff --git a/images/tango/16x16/mimetypes/text-x-script.png b/images/tango/16x16/mimetypes/text-x-script.png new file mode 100644 index 0000000..c923098 Binary files /dev/null and b/images/tango/16x16/mimetypes/text-x-script.png differ diff --git a/images/tango/16x16/mimetypes/video-x-generic.png b/images/tango/16x16/mimetypes/video-x-generic.png new file mode 100644 index 0000000..64e7a30 Binary files /dev/null and b/images/tango/16x16/mimetypes/video-x-generic.png differ diff --git a/images/tango/16x16/mimetypes/x-office-address-book.png b/images/tango/16x16/mimetypes/x-office-address-book.png new file mode 100644 index 0000000..f3b5d9d Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-address-book.png differ diff --git a/images/tango/16x16/mimetypes/x-office-calendar.png b/images/tango/16x16/mimetypes/x-office-calendar.png new file mode 100644 index 0000000..f6978d7 Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-calendar.png differ diff --git a/images/tango/16x16/mimetypes/x-office-document-template.png b/images/tango/16x16/mimetypes/x-office-document-template.png new file mode 100644 index 0000000..d1d9e7c Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-document-template.png differ diff --git a/images/tango/16x16/mimetypes/x-office-document.png b/images/tango/16x16/mimetypes/x-office-document.png new file mode 100644 index 0000000..d18082e Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-document.png differ diff --git a/images/tango/16x16/mimetypes/x-office-drawing-template.png b/images/tango/16x16/mimetypes/x-office-drawing-template.png new file mode 100644 index 0000000..dc384db Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-drawing-template.png differ diff --git a/images/tango/16x16/mimetypes/x-office-drawing.png b/images/tango/16x16/mimetypes/x-office-drawing.png new file mode 100644 index 0000000..ffbb9e4 Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-drawing.png differ diff --git a/images/tango/16x16/mimetypes/x-office-presentation-template.png b/images/tango/16x16/mimetypes/x-office-presentation-template.png new file mode 100644 index 0000000..d90d034 Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-presentation-template.png differ diff --git a/images/tango/16x16/mimetypes/x-office-presentation.png b/images/tango/16x16/mimetypes/x-office-presentation.png new file mode 100644 index 0000000..f7ea302 Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-presentation.png differ diff --git a/images/tango/16x16/mimetypes/x-office-spreadsheet-template.png b/images/tango/16x16/mimetypes/x-office-spreadsheet-template.png new file mode 100644 index 0000000..e8bf570 Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-spreadsheet-template.png differ diff --git a/images/tango/16x16/mimetypes/x-office-spreadsheet.png b/images/tango/16x16/mimetypes/x-office-spreadsheet.png new file mode 100644 index 0000000..a6b1268 Binary files /dev/null and b/images/tango/16x16/mimetypes/x-office-spreadsheet.png differ diff --git a/images/tango/16x16/places/folder-remote.png b/images/tango/16x16/places/folder-remote.png new file mode 100644 index 0000000..5234eab Binary files /dev/null and b/images/tango/16x16/places/folder-remote.png differ diff --git a/images/tango/16x16/places/folder-saved-search.png b/images/tango/16x16/places/folder-saved-search.png new file mode 100644 index 0000000..ca24a36 Binary files /dev/null and b/images/tango/16x16/places/folder-saved-search.png differ diff --git a/images/tango/16x16/places/folder.png b/images/tango/16x16/places/folder.png new file mode 100644 index 0000000..65bd0bb Binary files /dev/null and b/images/tango/16x16/places/folder.png differ diff --git a/images/tango/16x16/places/network-server.png b/images/tango/16x16/places/network-server.png new file mode 100644 index 0000000..068ffeb Binary files /dev/null and b/images/tango/16x16/places/network-server.png differ diff --git a/images/tango/16x16/places/network-workgroup.png b/images/tango/16x16/places/network-workgroup.png new file mode 100644 index 0000000..5c140d8 Binary files /dev/null and b/images/tango/16x16/places/network-workgroup.png differ diff --git a/images/tango/16x16/places/start-here.png b/images/tango/16x16/places/start-here.png new file mode 100644 index 0000000..bd516a5 Binary files /dev/null and b/images/tango/16x16/places/start-here.png differ diff --git a/images/tango/16x16/places/user-desktop.png b/images/tango/16x16/places/user-desktop.png new file mode 100644 index 0000000..4c9787c Binary files /dev/null and b/images/tango/16x16/places/user-desktop.png differ diff --git a/images/tango/16x16/places/user-home.png b/images/tango/16x16/places/user-home.png new file mode 100644 index 0000000..7b9110d Binary files /dev/null and b/images/tango/16x16/places/user-home.png differ diff --git a/images/tango/16x16/places/user-trash.png b/images/tango/16x16/places/user-trash.png new file mode 100644 index 0000000..0e0953c Binary files /dev/null and b/images/tango/16x16/places/user-trash.png differ diff --git a/images/tango/16x16/status/audio-volume-high.png b/images/tango/16x16/status/audio-volume-high.png new file mode 100644 index 0000000..ec8f00b Binary files /dev/null and b/images/tango/16x16/status/audio-volume-high.png differ diff --git a/images/tango/16x16/status/audio-volume-low.png b/images/tango/16x16/status/audio-volume-low.png new file mode 100644 index 0000000..4d7239f Binary files /dev/null and b/images/tango/16x16/status/audio-volume-low.png differ diff --git a/images/tango/16x16/status/audio-volume-medium.png b/images/tango/16x16/status/audio-volume-medium.png new file mode 100644 index 0000000..36ca7b0 Binary files /dev/null and b/images/tango/16x16/status/audio-volume-medium.png differ diff --git a/images/tango/16x16/status/audio-volume-muted.png b/images/tango/16x16/status/audio-volume-muted.png new file mode 100644 index 0000000..af5a97b Binary files /dev/null and b/images/tango/16x16/status/audio-volume-muted.png differ diff --git a/images/tango/16x16/status/battery-caution.png b/images/tango/16x16/status/battery-caution.png new file mode 100644 index 0000000..53a27d1 Binary files /dev/null and b/images/tango/16x16/status/battery-caution.png differ diff --git a/images/tango/16x16/status/dialog-error.png b/images/tango/16x16/status/dialog-error.png new file mode 100644 index 0000000..3bbbb4a Binary files /dev/null and b/images/tango/16x16/status/dialog-error.png differ diff --git a/images/tango/16x16/status/dialog-information.png b/images/tango/16x16/status/dialog-information.png new file mode 100644 index 0000000..8851b99 Binary files /dev/null and b/images/tango/16x16/status/dialog-information.png differ diff --git a/images/tango/16x16/status/dialog-warning.png b/images/tango/16x16/status/dialog-warning.png new file mode 100644 index 0000000..a9e4ff3 Binary files /dev/null and b/images/tango/16x16/status/dialog-warning.png differ diff --git a/images/tango/16x16/status/folder-drag-accept.png b/images/tango/16x16/status/folder-drag-accept.png new file mode 100644 index 0000000..44055dc Binary files /dev/null and b/images/tango/16x16/status/folder-drag-accept.png differ diff --git a/images/tango/16x16/status/folder-open.png b/images/tango/16x16/status/folder-open.png new file mode 100644 index 0000000..b67403d Binary files /dev/null and b/images/tango/16x16/status/folder-open.png differ diff --git a/images/tango/16x16/status/folder-visiting.png b/images/tango/16x16/status/folder-visiting.png new file mode 100644 index 0000000..9002444 Binary files /dev/null and b/images/tango/16x16/status/folder-visiting.png differ diff --git a/images/tango/16x16/status/image-loading.png b/images/tango/16x16/status/image-loading.png new file mode 100644 index 0000000..174994e Binary files /dev/null and b/images/tango/16x16/status/image-loading.png differ diff --git a/images/tango/16x16/status/image-missing.png b/images/tango/16x16/status/image-missing.png new file mode 100644 index 0000000..a644f24 Binary files /dev/null and b/images/tango/16x16/status/image-missing.png differ diff --git a/images/tango/16x16/status/mail-attachment.png b/images/tango/16x16/status/mail-attachment.png new file mode 100644 index 0000000..529bb7f Binary files /dev/null and b/images/tango/16x16/status/mail-attachment.png differ diff --git a/images/tango/16x16/status/network-error.png b/images/tango/16x16/status/network-error.png new file mode 100644 index 0000000..3f18ed0 Binary files /dev/null and b/images/tango/16x16/status/network-error.png differ diff --git a/images/tango/16x16/status/network-idle.png b/images/tango/16x16/status/network-idle.png new file mode 100644 index 0000000..0efee57 Binary files /dev/null and b/images/tango/16x16/status/network-idle.png differ diff --git a/images/tango/16x16/status/network-offline.png b/images/tango/16x16/status/network-offline.png new file mode 100644 index 0000000..1f210fc Binary files /dev/null and b/images/tango/16x16/status/network-offline.png differ diff --git a/images/tango/16x16/status/network-receive.png b/images/tango/16x16/status/network-receive.png new file mode 100644 index 0000000..b57c65c Binary files /dev/null and b/images/tango/16x16/status/network-receive.png differ diff --git a/images/tango/16x16/status/network-transmit-receive.png b/images/tango/16x16/status/network-transmit-receive.png new file mode 100644 index 0000000..271d37d Binary files /dev/null and b/images/tango/16x16/status/network-transmit-receive.png differ diff --git a/images/tango/16x16/status/network-transmit.png b/images/tango/16x16/status/network-transmit.png new file mode 100644 index 0000000..08aa28b Binary files /dev/null and b/images/tango/16x16/status/network-transmit.png differ diff --git a/images/tango/16x16/status/network-wireless-encrypted.png b/images/tango/16x16/status/network-wireless-encrypted.png new file mode 100644 index 0000000..c73e33c Binary files /dev/null and b/images/tango/16x16/status/network-wireless-encrypted.png differ diff --git a/images/tango/16x16/status/printer-error.png b/images/tango/16x16/status/printer-error.png new file mode 100644 index 0000000..21d4ded Binary files /dev/null and b/images/tango/16x16/status/printer-error.png differ diff --git a/images/tango/16x16/status/software-update-available.png b/images/tango/16x16/status/software-update-available.png new file mode 100644 index 0000000..ab8d494 Binary files /dev/null and b/images/tango/16x16/status/software-update-available.png differ diff --git a/images/tango/16x16/status/software-update-urgent.png b/images/tango/16x16/status/software-update-urgent.png new file mode 100644 index 0000000..433945d Binary files /dev/null and b/images/tango/16x16/status/software-update-urgent.png differ diff --git a/images/tango/16x16/status/user-trash-full.png b/images/tango/16x16/status/user-trash-full.png new file mode 100644 index 0000000..695d215 Binary files /dev/null and b/images/tango/16x16/status/user-trash-full.png differ diff --git a/images/tango/16x16/status/weather-clear-night.png b/images/tango/16x16/status/weather-clear-night.png new file mode 100644 index 0000000..4345752 Binary files /dev/null and b/images/tango/16x16/status/weather-clear-night.png differ diff --git a/images/tango/16x16/status/weather-clear.png b/images/tango/16x16/status/weather-clear.png new file mode 100644 index 0000000..7dc15ea Binary files /dev/null and b/images/tango/16x16/status/weather-clear.png differ diff --git a/images/tango/16x16/status/weather-few-clouds-night.png b/images/tango/16x16/status/weather-few-clouds-night.png new file mode 100644 index 0000000..d69efec Binary files /dev/null and b/images/tango/16x16/status/weather-few-clouds-night.png differ diff --git a/images/tango/16x16/status/weather-few-clouds.png b/images/tango/16x16/status/weather-few-clouds.png new file mode 100644 index 0000000..0e633a3 Binary files /dev/null and b/images/tango/16x16/status/weather-few-clouds.png differ diff --git a/images/tango/16x16/status/weather-overcast.png b/images/tango/16x16/status/weather-overcast.png new file mode 100644 index 0000000..0045129 Binary files /dev/null and b/images/tango/16x16/status/weather-overcast.png differ diff --git a/images/tango/16x16/status/weather-severe-alert.png b/images/tango/16x16/status/weather-severe-alert.png new file mode 100644 index 0000000..98e9f6c Binary files /dev/null and b/images/tango/16x16/status/weather-severe-alert.png differ diff --git a/images/tango/16x16/status/weather-showers-scattered.png b/images/tango/16x16/status/weather-showers-scattered.png new file mode 100644 index 0000000..8d10d84 Binary files /dev/null and b/images/tango/16x16/status/weather-showers-scattered.png differ diff --git a/images/tango/16x16/status/weather-showers.png b/images/tango/16x16/status/weather-showers.png new file mode 100644 index 0000000..d9685d2 Binary files /dev/null and b/images/tango/16x16/status/weather-showers.png differ diff --git a/images/tango/16x16/status/weather-snow.png b/images/tango/16x16/status/weather-snow.png new file mode 100644 index 0000000..a83d855 Binary files /dev/null and b/images/tango/16x16/status/weather-snow.png differ diff --git a/images/tango/16x16/status/weather-storm.png b/images/tango/16x16/status/weather-storm.png new file mode 100644 index 0000000..feebe1d Binary files /dev/null and b/images/tango/16x16/status/weather-storm.png differ diff --git a/images/tango/22x22/actions/address-book-new.png b/images/tango/22x22/actions/address-book-new.png new file mode 100644 index 0000000..fad446c Binary files /dev/null and b/images/tango/22x22/actions/address-book-new.png differ diff --git a/images/tango/22x22/actions/appointment-new.png b/images/tango/22x22/actions/appointment-new.png new file mode 100644 index 0000000..d676ffd Binary files /dev/null and b/images/tango/22x22/actions/appointment-new.png differ diff --git a/images/tango/22x22/actions/bookmark-new.png b/images/tango/22x22/actions/bookmark-new.png new file mode 100644 index 0000000..3ec0300 Binary files /dev/null and b/images/tango/22x22/actions/bookmark-new.png differ diff --git a/images/tango/22x22/actions/contact-new.png b/images/tango/22x22/actions/contact-new.png new file mode 100644 index 0000000..c9921be Binary files /dev/null and b/images/tango/22x22/actions/contact-new.png differ diff --git a/images/tango/22x22/actions/document-new.png b/images/tango/22x22/actions/document-new.png new file mode 100644 index 0000000..e3808a1 Binary files /dev/null and b/images/tango/22x22/actions/document-new.png differ diff --git a/images/tango/22x22/actions/document-open.png b/images/tango/22x22/actions/document-open.png new file mode 100644 index 0000000..254a6b8 Binary files /dev/null and b/images/tango/22x22/actions/document-open.png differ diff --git a/images/tango/22x22/actions/document-pdf.png b/images/tango/22x22/actions/document-pdf.png new file mode 100644 index 0000000..033a703 Binary files /dev/null and b/images/tango/22x22/actions/document-pdf.png differ diff --git a/images/tango/22x22/actions/document-print-preview.png b/images/tango/22x22/actions/document-print-preview.png new file mode 100644 index 0000000..75f43aa Binary files /dev/null and b/images/tango/22x22/actions/document-print-preview.png differ diff --git a/images/tango/22x22/actions/document-print.png b/images/tango/22x22/actions/document-print.png new file mode 100644 index 0000000..52dd67e Binary files /dev/null and b/images/tango/22x22/actions/document-print.png differ diff --git a/images/tango/22x22/actions/document-properties.png b/images/tango/22x22/actions/document-properties.png new file mode 100644 index 0000000..a5ad728 Binary files /dev/null and b/images/tango/22x22/actions/document-properties.png differ diff --git a/images/tango/22x22/actions/document-revert.png b/images/tango/22x22/actions/document-revert.png new file mode 100644 index 0000000..529abcb Binary files /dev/null and b/images/tango/22x22/actions/document-revert.png differ diff --git a/images/tango/22x22/actions/document-save-as.png b/images/tango/22x22/actions/document-save-as.png new file mode 100644 index 0000000..340a87e Binary files /dev/null and b/images/tango/22x22/actions/document-save-as.png differ diff --git a/images/tango/22x22/actions/document-save.png b/images/tango/22x22/actions/document-save.png new file mode 100644 index 0000000..a94e0ea Binary files /dev/null and b/images/tango/22x22/actions/document-save.png differ diff --git a/images/tango/22x22/actions/edit-clear.png b/images/tango/22x22/actions/edit-clear.png new file mode 100644 index 0000000..bbc77eb Binary files /dev/null and b/images/tango/22x22/actions/edit-clear.png differ diff --git a/images/tango/22x22/actions/edit-copy.png b/images/tango/22x22/actions/edit-copy.png new file mode 100644 index 0000000..345b2f1 Binary files /dev/null and b/images/tango/22x22/actions/edit-copy.png differ diff --git a/images/tango/22x22/actions/edit-cut.png b/images/tango/22x22/actions/edit-cut.png new file mode 100644 index 0000000..7017d1b Binary files /dev/null and b/images/tango/22x22/actions/edit-cut.png differ diff --git a/images/tango/22x22/actions/edit-delete.png b/images/tango/22x22/actions/edit-delete.png new file mode 100644 index 0000000..3811b64 Binary files /dev/null and b/images/tango/22x22/actions/edit-delete.png differ diff --git a/images/tango/22x22/actions/edit-find-replace.png b/images/tango/22x22/actions/edit-find-replace.png new file mode 100644 index 0000000..de3a75f Binary files /dev/null and b/images/tango/22x22/actions/edit-find-replace.png differ diff --git a/images/tango/22x22/actions/edit-find.png b/images/tango/22x22/actions/edit-find.png new file mode 100644 index 0000000..4f078cb Binary files /dev/null and b/images/tango/22x22/actions/edit-find.png differ diff --git a/images/tango/22x22/actions/edit-paste.png b/images/tango/22x22/actions/edit-paste.png new file mode 100644 index 0000000..f6a625c Binary files /dev/null and b/images/tango/22x22/actions/edit-paste.png differ diff --git a/images/tango/22x22/actions/edit-redo.png b/images/tango/22x22/actions/edit-redo.png new file mode 100644 index 0000000..576cfc7 Binary files /dev/null and b/images/tango/22x22/actions/edit-redo.png differ diff --git a/images/tango/22x22/actions/edit-select-all.png b/images/tango/22x22/actions/edit-select-all.png new file mode 100644 index 0000000..e6331c6 Binary files /dev/null and b/images/tango/22x22/actions/edit-select-all.png differ diff --git a/images/tango/22x22/actions/edit-undo.png b/images/tango/22x22/actions/edit-undo.png new file mode 100644 index 0000000..f37c696 Binary files /dev/null and b/images/tango/22x22/actions/edit-undo.png differ diff --git a/images/tango/22x22/actions/folder-new.png b/images/tango/22x22/actions/folder-new.png new file mode 100644 index 0000000..1c3dc94 Binary files /dev/null and b/images/tango/22x22/actions/folder-new.png differ diff --git a/images/tango/22x22/actions/format-indent-less.png b/images/tango/22x22/actions/format-indent-less.png new file mode 100644 index 0000000..5292012 Binary files /dev/null and b/images/tango/22x22/actions/format-indent-less.png differ diff --git a/images/tango/22x22/actions/format-indent-more.png b/images/tango/22x22/actions/format-indent-more.png new file mode 100644 index 0000000..ad2b527 Binary files /dev/null and b/images/tango/22x22/actions/format-indent-more.png differ diff --git a/images/tango/22x22/actions/format-justify-center.png b/images/tango/22x22/actions/format-justify-center.png new file mode 100644 index 0000000..0777a9a Binary files /dev/null and b/images/tango/22x22/actions/format-justify-center.png differ diff --git a/images/tango/22x22/actions/format-justify-fill.png b/images/tango/22x22/actions/format-justify-fill.png new file mode 100644 index 0000000..0ce4013 Binary files /dev/null and b/images/tango/22x22/actions/format-justify-fill.png differ diff --git a/images/tango/22x22/actions/format-justify-left.png b/images/tango/22x22/actions/format-justify-left.png new file mode 100644 index 0000000..a8e1ca8 Binary files /dev/null and b/images/tango/22x22/actions/format-justify-left.png differ diff --git a/images/tango/22x22/actions/format-justify-right.png b/images/tango/22x22/actions/format-justify-right.png new file mode 100644 index 0000000..8228d81 Binary files /dev/null and b/images/tango/22x22/actions/format-justify-right.png differ diff --git a/images/tango/22x22/actions/format-text-bold.png b/images/tango/22x22/actions/format-text-bold.png new file mode 100644 index 0000000..7166e3d Binary files /dev/null and b/images/tango/22x22/actions/format-text-bold.png differ diff --git a/images/tango/22x22/actions/format-text-italic.png b/images/tango/22x22/actions/format-text-italic.png new file mode 100644 index 0000000..ef68fb3 Binary files /dev/null and b/images/tango/22x22/actions/format-text-italic.png differ diff --git a/images/tango/22x22/actions/format-text-strikethrough.png b/images/tango/22x22/actions/format-text-strikethrough.png new file mode 100644 index 0000000..e4ca573 Binary files /dev/null and b/images/tango/22x22/actions/format-text-strikethrough.png differ diff --git a/images/tango/22x22/actions/format-text-underline.png b/images/tango/22x22/actions/format-text-underline.png new file mode 100644 index 0000000..d33422b Binary files /dev/null and b/images/tango/22x22/actions/format-text-underline.png differ diff --git a/images/tango/22x22/actions/go-bottom.png b/images/tango/22x22/actions/go-bottom.png new file mode 100644 index 0000000..d81e071 Binary files /dev/null and b/images/tango/22x22/actions/go-bottom.png differ diff --git a/images/tango/22x22/actions/go-down.png b/images/tango/22x22/actions/go-down.png new file mode 100644 index 0000000..af23788 Binary files /dev/null and b/images/tango/22x22/actions/go-down.png differ diff --git a/images/tango/22x22/actions/go-first.png b/images/tango/22x22/actions/go-first.png new file mode 100644 index 0000000..bf0d8f2 Binary files /dev/null and b/images/tango/22x22/actions/go-first.png differ diff --git a/images/tango/22x22/actions/go-home.png b/images/tango/22x22/actions/go-home.png new file mode 100644 index 0000000..9d62109 Binary files /dev/null and b/images/tango/22x22/actions/go-home.png differ diff --git a/images/tango/22x22/actions/go-jump.png b/images/tango/22x22/actions/go-jump.png new file mode 100644 index 0000000..373dce9 Binary files /dev/null and b/images/tango/22x22/actions/go-jump.png differ diff --git a/images/tango/22x22/actions/go-last.png b/images/tango/22x22/actions/go-last.png new file mode 100644 index 0000000..32df45d Binary files /dev/null and b/images/tango/22x22/actions/go-last.png differ diff --git a/images/tango/22x22/actions/go-next.png b/images/tango/22x22/actions/go-next.png new file mode 100644 index 0000000..6f3f65d Binary files /dev/null and b/images/tango/22x22/actions/go-next.png differ diff --git a/images/tango/22x22/actions/go-previous.png b/images/tango/22x22/actions/go-previous.png new file mode 100644 index 0000000..93be3d1 Binary files /dev/null and b/images/tango/22x22/actions/go-previous.png differ diff --git a/images/tango/22x22/actions/go-top.png b/images/tango/22x22/actions/go-top.png new file mode 100644 index 0000000..96f98dd Binary files /dev/null and b/images/tango/22x22/actions/go-top.png differ diff --git a/images/tango/22x22/actions/go-up.png b/images/tango/22x22/actions/go-up.png new file mode 100644 index 0000000..b0a0cd7 Binary files /dev/null and b/images/tango/22x22/actions/go-up.png differ diff --git a/images/tango/22x22/actions/list-add.png b/images/tango/22x22/actions/list-add.png new file mode 100644 index 0000000..306d3d8 Binary files /dev/null and b/images/tango/22x22/actions/list-add.png differ diff --git a/images/tango/22x22/actions/list-remove.png b/images/tango/22x22/actions/list-remove.png new file mode 100644 index 0000000..45e5c2a Binary files /dev/null and b/images/tango/22x22/actions/list-remove.png differ diff --git a/images/tango/22x22/actions/mail-forward.png b/images/tango/22x22/actions/mail-forward.png new file mode 100644 index 0000000..51aa0b4 Binary files /dev/null and b/images/tango/22x22/actions/mail-forward.png differ diff --git a/images/tango/22x22/actions/mail-mark-junk.png b/images/tango/22x22/actions/mail-mark-junk.png new file mode 100644 index 0000000..f980138 Binary files /dev/null and b/images/tango/22x22/actions/mail-mark-junk.png differ diff --git a/images/tango/22x22/actions/mail-mark-not-junk.png b/images/tango/22x22/actions/mail-mark-not-junk.png new file mode 100644 index 0000000..da6fb95 Binary files /dev/null and b/images/tango/22x22/actions/mail-mark-not-junk.png differ diff --git a/images/tango/22x22/actions/mail-message-new.png b/images/tango/22x22/actions/mail-message-new.png new file mode 100644 index 0000000..96ae0e9 Binary files /dev/null and b/images/tango/22x22/actions/mail-message-new.png differ diff --git a/images/tango/22x22/actions/mail-reply-all.png b/images/tango/22x22/actions/mail-reply-all.png new file mode 100644 index 0000000..c158a72 Binary files /dev/null and b/images/tango/22x22/actions/mail-reply-all.png differ diff --git a/images/tango/22x22/actions/mail-reply-sender.png b/images/tango/22x22/actions/mail-reply-sender.png new file mode 100644 index 0000000..4f077a1 Binary files /dev/null and b/images/tango/22x22/actions/mail-reply-sender.png differ diff --git a/images/tango/22x22/actions/mail-send-receive.png b/images/tango/22x22/actions/mail-send-receive.png new file mode 100644 index 0000000..69e8272 Binary files /dev/null and b/images/tango/22x22/actions/mail-send-receive.png differ diff --git a/images/tango/22x22/actions/media-eject.png b/images/tango/22x22/actions/media-eject.png new file mode 100644 index 0000000..5a232e6 Binary files /dev/null and b/images/tango/22x22/actions/media-eject.png differ diff --git a/images/tango/22x22/actions/media-playback-pause.png b/images/tango/22x22/actions/media-playback-pause.png new file mode 100644 index 0000000..ee40fc2 Binary files /dev/null and b/images/tango/22x22/actions/media-playback-pause.png differ diff --git a/images/tango/22x22/actions/media-playback-start.png b/images/tango/22x22/actions/media-playback-start.png new file mode 100644 index 0000000..10102d8 Binary files /dev/null and b/images/tango/22x22/actions/media-playback-start.png differ diff --git a/images/tango/22x22/actions/media-playback-stop.png b/images/tango/22x22/actions/media-playback-stop.png new file mode 100644 index 0000000..d0e4733 Binary files /dev/null and b/images/tango/22x22/actions/media-playback-stop.png differ diff --git a/images/tango/22x22/actions/media-record.png b/images/tango/22x22/actions/media-record.png new file mode 100644 index 0000000..fb53e14 Binary files /dev/null and b/images/tango/22x22/actions/media-record.png differ diff --git a/images/tango/22x22/actions/media-seek-backward.png b/images/tango/22x22/actions/media-seek-backward.png new file mode 100644 index 0000000..e094d12 Binary files /dev/null and b/images/tango/22x22/actions/media-seek-backward.png differ diff --git a/images/tango/22x22/actions/media-seek-forward.png b/images/tango/22x22/actions/media-seek-forward.png new file mode 100644 index 0000000..b9c2c6c Binary files /dev/null and b/images/tango/22x22/actions/media-seek-forward.png differ diff --git a/images/tango/22x22/actions/media-skip-backward.png b/images/tango/22x22/actions/media-skip-backward.png new file mode 100644 index 0000000..2a5e703 Binary files /dev/null and b/images/tango/22x22/actions/media-skip-backward.png differ diff --git a/images/tango/22x22/actions/media-skip-forward.png b/images/tango/22x22/actions/media-skip-forward.png new file mode 100644 index 0000000..28bca3e Binary files /dev/null and b/images/tango/22x22/actions/media-skip-forward.png differ diff --git a/images/tango/22x22/actions/process-stop.png b/images/tango/22x22/actions/process-stop.png new file mode 100644 index 0000000..b68290b Binary files /dev/null and b/images/tango/22x22/actions/process-stop.png differ diff --git a/images/tango/22x22/actions/system-lock-screen.png b/images/tango/22x22/actions/system-lock-screen.png new file mode 100644 index 0000000..dc6b825 Binary files /dev/null and b/images/tango/22x22/actions/system-lock-screen.png differ diff --git a/images/tango/22x22/actions/system-log-out.png b/images/tango/22x22/actions/system-log-out.png new file mode 100644 index 0000000..28ac66f Binary files /dev/null and b/images/tango/22x22/actions/system-log-out.png differ diff --git a/images/tango/22x22/actions/system-search.png b/images/tango/22x22/actions/system-search.png new file mode 100644 index 0000000..4e522b2 Binary files /dev/null and b/images/tango/22x22/actions/system-search.png differ diff --git a/images/tango/22x22/actions/system-shutdown.png b/images/tango/22x22/actions/system-shutdown.png new file mode 100644 index 0000000..0c2a2d1 Binary files /dev/null and b/images/tango/22x22/actions/system-shutdown.png differ diff --git a/images/tango/22x22/actions/tab-new.png b/images/tango/22x22/actions/tab-new.png new file mode 100644 index 0000000..c7c7cf2 Binary files /dev/null and b/images/tango/22x22/actions/tab-new.png differ diff --git a/images/tango/22x22/actions/view-fullscreen.png b/images/tango/22x22/actions/view-fullscreen.png new file mode 100644 index 0000000..6f0f292 Binary files /dev/null and b/images/tango/22x22/actions/view-fullscreen.png differ diff --git a/images/tango/22x22/actions/view-refresh.png b/images/tango/22x22/actions/view-refresh.png new file mode 100644 index 0000000..cab4d02 Binary files /dev/null and b/images/tango/22x22/actions/view-refresh.png differ diff --git a/images/tango/22x22/actions/window-new.png b/images/tango/22x22/actions/window-new.png new file mode 100644 index 0000000..314f997 Binary files /dev/null and b/images/tango/22x22/actions/window-new.png differ diff --git a/images/tango/22x22/animations/process-working.png b/images/tango/22x22/animations/process-working.png new file mode 100644 index 0000000..9005de7 Binary files /dev/null and b/images/tango/22x22/animations/process-working.png differ diff --git a/images/tango/22x22/apps/accessories-calculator.png b/images/tango/22x22/apps/accessories-calculator.png new file mode 100644 index 0000000..e12d465 Binary files /dev/null and b/images/tango/22x22/apps/accessories-calculator.png differ diff --git a/images/tango/22x22/apps/accessories-character-map.png b/images/tango/22x22/apps/accessories-character-map.png new file mode 100644 index 0000000..e630c7e Binary files /dev/null and b/images/tango/22x22/apps/accessories-character-map.png differ diff --git a/images/tango/22x22/apps/accessories-text-editor.png b/images/tango/22x22/apps/accessories-text-editor.png new file mode 100644 index 0000000..c3d245d Binary files /dev/null and b/images/tango/22x22/apps/accessories-text-editor.png differ diff --git a/images/tango/22x22/apps/help-browser.png b/images/tango/22x22/apps/help-browser.png new file mode 100644 index 0000000..c67c7a6 Binary files /dev/null and b/images/tango/22x22/apps/help-browser.png differ diff --git a/images/tango/22x22/apps/internet-group-chat.png b/images/tango/22x22/apps/internet-group-chat.png new file mode 100644 index 0000000..3cac5df Binary files /dev/null and b/images/tango/22x22/apps/internet-group-chat.png differ diff --git a/images/tango/22x22/apps/internet-mail.png b/images/tango/22x22/apps/internet-mail.png new file mode 100644 index 0000000..68fc82e Binary files /dev/null and b/images/tango/22x22/apps/internet-mail.png differ diff --git a/images/tango/22x22/apps/internet-news-reader.png b/images/tango/22x22/apps/internet-news-reader.png new file mode 100644 index 0000000..43950eb Binary files /dev/null and b/images/tango/22x22/apps/internet-news-reader.png differ diff --git a/images/tango/22x22/apps/internet-web-browser.png b/images/tango/22x22/apps/internet-web-browser.png new file mode 100644 index 0000000..4125479 Binary files /dev/null and b/images/tango/22x22/apps/internet-web-browser.png differ diff --git a/images/tango/22x22/apps/office-calendar.png b/images/tango/22x22/apps/office-calendar.png new file mode 100644 index 0000000..60ad82b Binary files /dev/null and b/images/tango/22x22/apps/office-calendar.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-accessibility.png b/images/tango/22x22/apps/preferences-desktop-accessibility.png new file mode 100644 index 0000000..919d735 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-accessibility.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-assistive-technology.png b/images/tango/22x22/apps/preferences-desktop-assistive-technology.png new file mode 100644 index 0000000..483e4a6 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-assistive-technology.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-font.png b/images/tango/22x22/apps/preferences-desktop-font.png new file mode 100644 index 0000000..d452db7 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-font.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-keyboard-shortcuts.png b/images/tango/22x22/apps/preferences-desktop-keyboard-shortcuts.png new file mode 100644 index 0000000..c3e1328 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-keyboard-shortcuts.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-locale.png b/images/tango/22x22/apps/preferences-desktop-locale.png new file mode 100644 index 0000000..ed0480b Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-locale.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-multimedia.png b/images/tango/22x22/apps/preferences-desktop-multimedia.png new file mode 100644 index 0000000..e1bdf85 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-multimedia.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-remote-desktop.png b/images/tango/22x22/apps/preferences-desktop-remote-desktop.png new file mode 100644 index 0000000..d25792b Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-remote-desktop.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-screensaver.png b/images/tango/22x22/apps/preferences-desktop-screensaver.png new file mode 100644 index 0000000..619e196 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-screensaver.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-theme.png b/images/tango/22x22/apps/preferences-desktop-theme.png new file mode 100644 index 0000000..7b5f0ba Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-theme.png differ diff --git a/images/tango/22x22/apps/preferences-desktop-wallpaper.png b/images/tango/22x22/apps/preferences-desktop-wallpaper.png new file mode 100644 index 0000000..3389e55 Binary files /dev/null and b/images/tango/22x22/apps/preferences-desktop-wallpaper.png differ diff --git a/images/tango/22x22/apps/preferences-system-network-proxy.png b/images/tango/22x22/apps/preferences-system-network-proxy.png new file mode 100644 index 0000000..bec24de Binary files /dev/null and b/images/tango/22x22/apps/preferences-system-network-proxy.png differ diff --git a/images/tango/22x22/apps/preferences-system-session.png b/images/tango/22x22/apps/preferences-system-session.png new file mode 100644 index 0000000..9a09875 Binary files /dev/null and b/images/tango/22x22/apps/preferences-system-session.png differ diff --git a/images/tango/22x22/apps/preferences-system-windows.png b/images/tango/22x22/apps/preferences-system-windows.png new file mode 100644 index 0000000..2caa205 Binary files /dev/null and b/images/tango/22x22/apps/preferences-system-windows.png differ diff --git a/images/tango/22x22/apps/system-file-manager.png b/images/tango/22x22/apps/system-file-manager.png new file mode 100644 index 0000000..44d6310 Binary files /dev/null and b/images/tango/22x22/apps/system-file-manager.png differ diff --git a/images/tango/22x22/apps/system-installer.png b/images/tango/22x22/apps/system-installer.png new file mode 100644 index 0000000..b75c6b1 Binary files /dev/null and b/images/tango/22x22/apps/system-installer.png differ diff --git a/images/tango/22x22/apps/system-software-update.png b/images/tango/22x22/apps/system-software-update.png new file mode 100644 index 0000000..5f7a362 Binary files /dev/null and b/images/tango/22x22/apps/system-software-update.png differ diff --git a/images/tango/22x22/apps/system-users.png b/images/tango/22x22/apps/system-users.png new file mode 100644 index 0000000..bced28c Binary files /dev/null and b/images/tango/22x22/apps/system-users.png differ diff --git a/images/tango/22x22/apps/utilities-system-monitor.png b/images/tango/22x22/apps/utilities-system-monitor.png new file mode 100644 index 0000000..f2d266f Binary files /dev/null and b/images/tango/22x22/apps/utilities-system-monitor.png differ diff --git a/images/tango/22x22/apps/utilities-terminal.png b/images/tango/22x22/apps/utilities-terminal.png new file mode 100644 index 0000000..ceb0fb9 Binary files /dev/null and b/images/tango/22x22/apps/utilities-terminal.png differ diff --git a/images/tango/22x22/categories/applications-accessories.png b/images/tango/22x22/categories/applications-accessories.png new file mode 100644 index 0000000..f619403 Binary files /dev/null and b/images/tango/22x22/categories/applications-accessories.png differ diff --git a/images/tango/22x22/categories/applications-development.png b/images/tango/22x22/categories/applications-development.png new file mode 100644 index 0000000..8ef08e2 Binary files /dev/null and b/images/tango/22x22/categories/applications-development.png differ diff --git a/images/tango/22x22/categories/applications-games.png b/images/tango/22x22/categories/applications-games.png new file mode 100644 index 0000000..cc78378 Binary files /dev/null and b/images/tango/22x22/categories/applications-games.png differ diff --git a/images/tango/22x22/categories/applications-graphics.png b/images/tango/22x22/categories/applications-graphics.png new file mode 100644 index 0000000..ca883da Binary files /dev/null and b/images/tango/22x22/categories/applications-graphics.png differ diff --git a/images/tango/22x22/categories/applications-internet.png b/images/tango/22x22/categories/applications-internet.png new file mode 100644 index 0000000..d4bfb82 Binary files /dev/null and b/images/tango/22x22/categories/applications-internet.png differ diff --git a/images/tango/22x22/categories/applications-multimedia.png b/images/tango/22x22/categories/applications-multimedia.png new file mode 100644 index 0000000..ae2d28c Binary files /dev/null and b/images/tango/22x22/categories/applications-multimedia.png differ diff --git a/images/tango/22x22/categories/applications-office.png b/images/tango/22x22/categories/applications-office.png new file mode 100644 index 0000000..7e3be9b Binary files /dev/null and b/images/tango/22x22/categories/applications-office.png differ diff --git a/images/tango/22x22/categories/applications-other.png b/images/tango/22x22/categories/applications-other.png new file mode 100644 index 0000000..308acb2 Binary files /dev/null and b/images/tango/22x22/categories/applications-other.png differ diff --git a/images/tango/22x22/categories/applications-system.png b/images/tango/22x22/categories/applications-system.png new file mode 100644 index 0000000..4decc89 Binary files /dev/null and b/images/tango/22x22/categories/applications-system.png differ diff --git a/images/tango/22x22/categories/preferences-desktop-peripherals.png b/images/tango/22x22/categories/preferences-desktop-peripherals.png new file mode 100644 index 0000000..985bcde Binary files /dev/null and b/images/tango/22x22/categories/preferences-desktop-peripherals.png differ diff --git a/images/tango/22x22/categories/preferences-desktop.png b/images/tango/22x22/categories/preferences-desktop.png new file mode 100644 index 0000000..c359063 Binary files /dev/null and b/images/tango/22x22/categories/preferences-desktop.png differ diff --git a/images/tango/22x22/categories/preferences-system.png b/images/tango/22x22/categories/preferences-system.png new file mode 100644 index 0000000..cc91d65 Binary files /dev/null and b/images/tango/22x22/categories/preferences-system.png differ diff --git a/images/tango/22x22/devices/audio-card.png b/images/tango/22x22/devices/audio-card.png new file mode 100644 index 0000000..93d99aa Binary files /dev/null and b/images/tango/22x22/devices/audio-card.png differ diff --git a/images/tango/22x22/devices/audio-input-microphone.png b/images/tango/22x22/devices/audio-input-microphone.png new file mode 100644 index 0000000..496d244 Binary files /dev/null and b/images/tango/22x22/devices/audio-input-microphone.png differ diff --git a/images/tango/22x22/devices/battery.png b/images/tango/22x22/devices/battery.png new file mode 100644 index 0000000..ad45674 Binary files /dev/null and b/images/tango/22x22/devices/battery.png differ diff --git a/images/tango/22x22/devices/camera-photo.png b/images/tango/22x22/devices/camera-photo.png new file mode 100644 index 0000000..8d28baf Binary files /dev/null and b/images/tango/22x22/devices/camera-photo.png differ diff --git a/images/tango/22x22/devices/camera-video.png b/images/tango/22x22/devices/camera-video.png new file mode 100644 index 0000000..e84992c Binary files /dev/null and b/images/tango/22x22/devices/camera-video.png differ diff --git a/images/tango/22x22/devices/computer.png b/images/tango/22x22/devices/computer.png new file mode 100644 index 0000000..b6e6b39 Binary files /dev/null and b/images/tango/22x22/devices/computer.png differ diff --git a/images/tango/22x22/devices/drive-harddisk.png b/images/tango/22x22/devices/drive-harddisk.png new file mode 100644 index 0000000..da41305 Binary files /dev/null and b/images/tango/22x22/devices/drive-harddisk.png differ diff --git a/images/tango/22x22/devices/drive-optical.png b/images/tango/22x22/devices/drive-optical.png new file mode 100644 index 0000000..af2c826 Binary files /dev/null and b/images/tango/22x22/devices/drive-optical.png differ diff --git a/images/tango/22x22/devices/drive-removable-media.png b/images/tango/22x22/devices/drive-removable-media.png new file mode 100644 index 0000000..f487310 Binary files /dev/null and b/images/tango/22x22/devices/drive-removable-media.png differ diff --git a/images/tango/22x22/devices/input-gaming.png b/images/tango/22x22/devices/input-gaming.png new file mode 100644 index 0000000..18f7739 Binary files /dev/null and b/images/tango/22x22/devices/input-gaming.png differ diff --git a/images/tango/22x22/devices/input-keyboard.png b/images/tango/22x22/devices/input-keyboard.png new file mode 100644 index 0000000..6ffb232 Binary files /dev/null and b/images/tango/22x22/devices/input-keyboard.png differ diff --git a/images/tango/22x22/devices/input-mouse.png b/images/tango/22x22/devices/input-mouse.png new file mode 100644 index 0000000..c1bbc79 Binary files /dev/null and b/images/tango/22x22/devices/input-mouse.png differ diff --git a/images/tango/22x22/devices/media-flash.png b/images/tango/22x22/devices/media-flash.png new file mode 100644 index 0000000..c6a2d0c Binary files /dev/null and b/images/tango/22x22/devices/media-flash.png differ diff --git a/images/tango/22x22/devices/media-floppy.png b/images/tango/22x22/devices/media-floppy.png new file mode 100644 index 0000000..af79de8 Binary files /dev/null and b/images/tango/22x22/devices/media-floppy.png differ diff --git a/images/tango/22x22/devices/media-optical.png b/images/tango/22x22/devices/media-optical.png new file mode 100644 index 0000000..e86bfa3 Binary files /dev/null and b/images/tango/22x22/devices/media-optical.png differ diff --git a/images/tango/22x22/devices/multimedia-player.png b/images/tango/22x22/devices/multimedia-player.png new file mode 100644 index 0000000..8be0228 Binary files /dev/null and b/images/tango/22x22/devices/multimedia-player.png differ diff --git a/images/tango/22x22/devices/network-wired.png b/images/tango/22x22/devices/network-wired.png new file mode 100644 index 0000000..51c8b16 Binary files /dev/null and b/images/tango/22x22/devices/network-wired.png differ diff --git a/images/tango/22x22/devices/network-wireless.png b/images/tango/22x22/devices/network-wireless.png new file mode 100644 index 0000000..2d7851f Binary files /dev/null and b/images/tango/22x22/devices/network-wireless.png differ diff --git a/images/tango/22x22/devices/printer.png b/images/tango/22x22/devices/printer.png new file mode 100644 index 0000000..65caccf Binary files /dev/null and b/images/tango/22x22/devices/printer.png differ diff --git a/images/tango/22x22/devices/video-display.png b/images/tango/22x22/devices/video-display.png new file mode 100644 index 0000000..f244adb Binary files /dev/null and b/images/tango/22x22/devices/video-display.png differ diff --git a/images/tango/22x22/emblems/emblem-favorite.png b/images/tango/22x22/emblems/emblem-favorite.png new file mode 100644 index 0000000..9b3d7ac Binary files /dev/null and b/images/tango/22x22/emblems/emblem-favorite.png differ diff --git a/images/tango/22x22/emblems/emblem-important.png b/images/tango/22x22/emblems/emblem-important.png new file mode 100644 index 0000000..0437a0d Binary files /dev/null and b/images/tango/22x22/emblems/emblem-important.png differ diff --git a/images/tango/22x22/emblems/emblem-photos.png b/images/tango/22x22/emblems/emblem-photos.png new file mode 100644 index 0000000..b8b1c63 Binary files /dev/null and b/images/tango/22x22/emblems/emblem-photos.png differ diff --git a/images/tango/22x22/emblems/emblem-readonly.png b/images/tango/22x22/emblems/emblem-readonly.png new file mode 100644 index 0000000..33896d9 Binary files /dev/null and b/images/tango/22x22/emblems/emblem-readonly.png differ diff --git a/images/tango/22x22/emblems/emblem-symbolic-link.png b/images/tango/22x22/emblems/emblem-symbolic-link.png new file mode 100644 index 0000000..d02781d Binary files /dev/null and b/images/tango/22x22/emblems/emblem-symbolic-link.png differ diff --git a/images/tango/22x22/emblems/emblem-system.png b/images/tango/22x22/emblems/emblem-system.png new file mode 100644 index 0000000..1f2b3b3 Binary files /dev/null and b/images/tango/22x22/emblems/emblem-system.png differ diff --git a/images/tango/22x22/emblems/emblem-unreadable.png b/images/tango/22x22/emblems/emblem-unreadable.png new file mode 100644 index 0000000..6a88bdb Binary files /dev/null and b/images/tango/22x22/emblems/emblem-unreadable.png differ diff --git a/images/tango/22x22/emotes/face-angel.png b/images/tango/22x22/emotes/face-angel.png new file mode 100644 index 0000000..604bf17 Binary files /dev/null and b/images/tango/22x22/emotes/face-angel.png differ diff --git a/images/tango/22x22/emotes/face-crying.png b/images/tango/22x22/emotes/face-crying.png new file mode 100644 index 0000000..761b0e8 Binary files /dev/null and b/images/tango/22x22/emotes/face-crying.png differ diff --git a/images/tango/22x22/emotes/face-devilish.png b/images/tango/22x22/emotes/face-devilish.png new file mode 100644 index 0000000..fbd7808 Binary files /dev/null and b/images/tango/22x22/emotes/face-devilish.png differ diff --git a/images/tango/22x22/emotes/face-glasses.png b/images/tango/22x22/emotes/face-glasses.png new file mode 100644 index 0000000..5551f12 Binary files /dev/null and b/images/tango/22x22/emotes/face-glasses.png differ diff --git a/images/tango/22x22/emotes/face-grin.png b/images/tango/22x22/emotes/face-grin.png new file mode 100644 index 0000000..4513b92 Binary files /dev/null and b/images/tango/22x22/emotes/face-grin.png differ diff --git a/images/tango/22x22/emotes/face-kiss.png b/images/tango/22x22/emotes/face-kiss.png new file mode 100644 index 0000000..a5d1bdd Binary files /dev/null and b/images/tango/22x22/emotes/face-kiss.png differ diff --git a/images/tango/22x22/emotes/face-monkey.png b/images/tango/22x22/emotes/face-monkey.png new file mode 100644 index 0000000..ced7b2e Binary files /dev/null and b/images/tango/22x22/emotes/face-monkey.png differ diff --git a/images/tango/22x22/emotes/face-plain.png b/images/tango/22x22/emotes/face-plain.png new file mode 100644 index 0000000..ea0ad6a Binary files /dev/null and b/images/tango/22x22/emotes/face-plain.png differ diff --git a/images/tango/22x22/emotes/face-sad.png b/images/tango/22x22/emotes/face-sad.png new file mode 100644 index 0000000..23afcb2 Binary files /dev/null and b/images/tango/22x22/emotes/face-sad.png differ diff --git a/images/tango/22x22/emotes/face-smile-big.png b/images/tango/22x22/emotes/face-smile-big.png new file mode 100644 index 0000000..b2e8a36 Binary files /dev/null and b/images/tango/22x22/emotes/face-smile-big.png differ diff --git a/images/tango/22x22/emotes/face-smile.png b/images/tango/22x22/emotes/face-smile.png new file mode 100644 index 0000000..45ff17d Binary files /dev/null and b/images/tango/22x22/emotes/face-smile.png differ diff --git a/images/tango/22x22/emotes/face-surprise.png b/images/tango/22x22/emotes/face-surprise.png new file mode 100644 index 0000000..9bae9b6 Binary files /dev/null and b/images/tango/22x22/emotes/face-surprise.png differ diff --git a/images/tango/22x22/emotes/face-wink.png b/images/tango/22x22/emotes/face-wink.png new file mode 100644 index 0000000..cf10119 Binary files /dev/null and b/images/tango/22x22/emotes/face-wink.png differ diff --git a/images/tango/22x22/mimetypes/application-certificate.png b/images/tango/22x22/mimetypes/application-certificate.png new file mode 100644 index 0000000..9657b43 Binary files /dev/null and b/images/tango/22x22/mimetypes/application-certificate.png differ diff --git a/images/tango/22x22/mimetypes/application-x-executable.png b/images/tango/22x22/mimetypes/application-x-executable.png new file mode 100644 index 0000000..2bb2adf Binary files /dev/null and b/images/tango/22x22/mimetypes/application-x-executable.png differ diff --git a/images/tango/22x22/mimetypes/audio-x-generic.png b/images/tango/22x22/mimetypes/audio-x-generic.png new file mode 100644 index 0000000..318bebd Binary files /dev/null and b/images/tango/22x22/mimetypes/audio-x-generic.png differ diff --git a/images/tango/22x22/mimetypes/font-x-generic.png b/images/tango/22x22/mimetypes/font-x-generic.png new file mode 100644 index 0000000..bdc1814 Binary files /dev/null and b/images/tango/22x22/mimetypes/font-x-generic.png differ diff --git a/images/tango/22x22/mimetypes/image-x-generic.png b/images/tango/22x22/mimetypes/image-x-generic.png new file mode 100644 index 0000000..10f4671 Binary files /dev/null and b/images/tango/22x22/mimetypes/image-x-generic.png differ diff --git a/images/tango/22x22/mimetypes/package-x-generic.png b/images/tango/22x22/mimetypes/package-x-generic.png new file mode 100644 index 0000000..dc76287 Binary files /dev/null and b/images/tango/22x22/mimetypes/package-x-generic.png differ diff --git a/images/tango/22x22/mimetypes/text-html.png b/images/tango/22x22/mimetypes/text-html.png new file mode 100644 index 0000000..51beaff Binary files /dev/null and b/images/tango/22x22/mimetypes/text-html.png differ diff --git a/images/tango/22x22/mimetypes/text-x-generic-template.png b/images/tango/22x22/mimetypes/text-x-generic-template.png new file mode 100644 index 0000000..f13f7c9 Binary files /dev/null and b/images/tango/22x22/mimetypes/text-x-generic-template.png differ diff --git a/images/tango/22x22/mimetypes/text-x-generic.png b/images/tango/22x22/mimetypes/text-x-generic.png new file mode 100644 index 0000000..d68a56c Binary files /dev/null and b/images/tango/22x22/mimetypes/text-x-generic.png differ diff --git a/images/tango/22x22/mimetypes/text-x-script.png b/images/tango/22x22/mimetypes/text-x-script.png new file mode 100644 index 0000000..abf8f61 Binary files /dev/null and b/images/tango/22x22/mimetypes/text-x-script.png differ diff --git a/images/tango/22x22/mimetypes/video-x-generic.png b/images/tango/22x22/mimetypes/video-x-generic.png new file mode 100644 index 0000000..6e26d9c Binary files /dev/null and b/images/tango/22x22/mimetypes/video-x-generic.png differ diff --git a/images/tango/22x22/mimetypes/x-office-address-book.png b/images/tango/22x22/mimetypes/x-office-address-book.png new file mode 100644 index 0000000..2e519ce Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-address-book.png differ diff --git a/images/tango/22x22/mimetypes/x-office-calendar.png b/images/tango/22x22/mimetypes/x-office-calendar.png new file mode 100644 index 0000000..0c224e9 Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-calendar.png differ diff --git a/images/tango/22x22/mimetypes/x-office-document-template.png b/images/tango/22x22/mimetypes/x-office-document-template.png new file mode 100644 index 0000000..18c4246 Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-document-template.png differ diff --git a/images/tango/22x22/mimetypes/x-office-document.png b/images/tango/22x22/mimetypes/x-office-document.png new file mode 100644 index 0000000..c9baeda Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-document.png differ diff --git a/images/tango/22x22/mimetypes/x-office-drawing-template.png b/images/tango/22x22/mimetypes/x-office-drawing-template.png new file mode 100644 index 0000000..a7045ab Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-drawing-template.png differ diff --git a/images/tango/22x22/mimetypes/x-office-drawing.png b/images/tango/22x22/mimetypes/x-office-drawing.png new file mode 100644 index 0000000..5d84f9f Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-drawing.png differ diff --git a/images/tango/22x22/mimetypes/x-office-presentation-template.png b/images/tango/22x22/mimetypes/x-office-presentation-template.png new file mode 100644 index 0000000..1f7bc9b Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-presentation-template.png differ diff --git a/images/tango/22x22/mimetypes/x-office-presentation.png b/images/tango/22x22/mimetypes/x-office-presentation.png new file mode 100644 index 0000000..3633f53 Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-presentation.png differ diff --git a/images/tango/22x22/mimetypes/x-office-spreadsheet-template.png b/images/tango/22x22/mimetypes/x-office-spreadsheet-template.png new file mode 100644 index 0000000..ea7d467 Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-spreadsheet-template.png differ diff --git a/images/tango/22x22/mimetypes/x-office-spreadsheet.png b/images/tango/22x22/mimetypes/x-office-spreadsheet.png new file mode 100644 index 0000000..c82d574 Binary files /dev/null and b/images/tango/22x22/mimetypes/x-office-spreadsheet.png differ diff --git a/images/tango/22x22/places/folder-remote.png b/images/tango/22x22/places/folder-remote.png new file mode 100644 index 0000000..82db43b Binary files /dev/null and b/images/tango/22x22/places/folder-remote.png differ diff --git a/images/tango/22x22/places/folder-saved-search.png b/images/tango/22x22/places/folder-saved-search.png new file mode 100644 index 0000000..901f4a7 Binary files /dev/null and b/images/tango/22x22/places/folder-saved-search.png differ diff --git a/images/tango/22x22/places/folder.png b/images/tango/22x22/places/folder.png new file mode 100644 index 0000000..01f45b8 Binary files /dev/null and b/images/tango/22x22/places/folder.png differ diff --git a/images/tango/22x22/places/network-server.png b/images/tango/22x22/places/network-server.png new file mode 100644 index 0000000..a0d7118 Binary files /dev/null and b/images/tango/22x22/places/network-server.png differ diff --git a/images/tango/22x22/places/network-workgroup.png b/images/tango/22x22/places/network-workgroup.png new file mode 100644 index 0000000..f96c9db Binary files /dev/null and b/images/tango/22x22/places/network-workgroup.png differ diff --git a/images/tango/22x22/places/start-here.png b/images/tango/22x22/places/start-here.png new file mode 100644 index 0000000..fc9b049 Binary files /dev/null and b/images/tango/22x22/places/start-here.png differ diff --git a/images/tango/22x22/places/user-desktop.png b/images/tango/22x22/places/user-desktop.png new file mode 100644 index 0000000..d60b2f1 Binary files /dev/null and b/images/tango/22x22/places/user-desktop.png differ diff --git a/images/tango/22x22/places/user-home.png b/images/tango/22x22/places/user-home.png new file mode 100644 index 0000000..c7eac99 Binary files /dev/null and b/images/tango/22x22/places/user-home.png differ diff --git a/images/tango/22x22/places/user-trash.png b/images/tango/22x22/places/user-trash.png new file mode 100644 index 0000000..05ff036 Binary files /dev/null and b/images/tango/22x22/places/user-trash.png differ diff --git a/images/tango/22x22/status/audio-volume-high.png b/images/tango/22x22/status/audio-volume-high.png new file mode 100644 index 0000000..1b2f30e Binary files /dev/null and b/images/tango/22x22/status/audio-volume-high.png differ diff --git a/images/tango/22x22/status/audio-volume-low.png b/images/tango/22x22/status/audio-volume-low.png new file mode 100644 index 0000000..46bcd19 Binary files /dev/null and b/images/tango/22x22/status/audio-volume-low.png differ diff --git a/images/tango/22x22/status/audio-volume-medium.png b/images/tango/22x22/status/audio-volume-medium.png new file mode 100644 index 0000000..31883ef Binary files /dev/null and b/images/tango/22x22/status/audio-volume-medium.png differ diff --git a/images/tango/22x22/status/audio-volume-muted.png b/images/tango/22x22/status/audio-volume-muted.png new file mode 100644 index 0000000..3e74c1d Binary files /dev/null and b/images/tango/22x22/status/audio-volume-muted.png differ diff --git a/images/tango/22x22/status/battery-caution.png b/images/tango/22x22/status/battery-caution.png new file mode 100644 index 0000000..456f7a4 Binary files /dev/null and b/images/tango/22x22/status/battery-caution.png differ diff --git a/images/tango/22x22/status/dialog-error.png b/images/tango/22x22/status/dialog-error.png new file mode 100644 index 0000000..7d6aaf6 Binary files /dev/null and b/images/tango/22x22/status/dialog-error.png differ diff --git a/images/tango/22x22/status/dialog-information.png b/images/tango/22x22/status/dialog-information.png new file mode 100644 index 0000000..07cf010 Binary files /dev/null and b/images/tango/22x22/status/dialog-information.png differ diff --git a/images/tango/22x22/status/dialog-warning.png b/images/tango/22x22/status/dialog-warning.png new file mode 100644 index 0000000..45b64a7 Binary files /dev/null and b/images/tango/22x22/status/dialog-warning.png differ diff --git a/images/tango/22x22/status/folder-drag-accept.png b/images/tango/22x22/status/folder-drag-accept.png new file mode 100644 index 0000000..16a2b84 Binary files /dev/null and b/images/tango/22x22/status/folder-drag-accept.png differ diff --git a/images/tango/22x22/status/folder-open.png b/images/tango/22x22/status/folder-open.png new file mode 100644 index 0000000..f81f70c Binary files /dev/null and b/images/tango/22x22/status/folder-open.png differ diff --git a/images/tango/22x22/status/folder-visiting.png b/images/tango/22x22/status/folder-visiting.png new file mode 100644 index 0000000..b4af525 Binary files /dev/null and b/images/tango/22x22/status/folder-visiting.png differ diff --git a/images/tango/22x22/status/image-loading.png b/images/tango/22x22/status/image-loading.png new file mode 100644 index 0000000..a4be885 Binary files /dev/null and b/images/tango/22x22/status/image-loading.png differ diff --git a/images/tango/22x22/status/image-missing.png b/images/tango/22x22/status/image-missing.png new file mode 100644 index 0000000..e12439a Binary files /dev/null and b/images/tango/22x22/status/image-missing.png differ diff --git a/images/tango/22x22/status/mail-attachment.png b/images/tango/22x22/status/mail-attachment.png new file mode 100644 index 0000000..c5d9633 Binary files /dev/null and b/images/tango/22x22/status/mail-attachment.png differ diff --git a/images/tango/22x22/status/network-error.png b/images/tango/22x22/status/network-error.png new file mode 100644 index 0000000..d36ce29 Binary files /dev/null and b/images/tango/22x22/status/network-error.png differ diff --git a/images/tango/22x22/status/network-idle.png b/images/tango/22x22/status/network-idle.png new file mode 100644 index 0000000..caebd98 Binary files /dev/null and b/images/tango/22x22/status/network-idle.png differ diff --git a/images/tango/22x22/status/network-offline.png b/images/tango/22x22/status/network-offline.png new file mode 100644 index 0000000..72dd12c Binary files /dev/null and b/images/tango/22x22/status/network-offline.png differ diff --git a/images/tango/22x22/status/network-receive.png b/images/tango/22x22/status/network-receive.png new file mode 100644 index 0000000..11dfa07 Binary files /dev/null and b/images/tango/22x22/status/network-receive.png differ diff --git a/images/tango/22x22/status/network-transmit-receive.png b/images/tango/22x22/status/network-transmit-receive.png new file mode 100644 index 0000000..54d145f Binary files /dev/null and b/images/tango/22x22/status/network-transmit-receive.png differ diff --git a/images/tango/22x22/status/network-transmit.png b/images/tango/22x22/status/network-transmit.png new file mode 100644 index 0000000..97b6301 Binary files /dev/null and b/images/tango/22x22/status/network-transmit.png differ diff --git a/images/tango/22x22/status/network-wireless-encrypted.png b/images/tango/22x22/status/network-wireless-encrypted.png new file mode 100644 index 0000000..712771c Binary files /dev/null and b/images/tango/22x22/status/network-wireless-encrypted.png differ diff --git a/images/tango/22x22/status/printer-error.png b/images/tango/22x22/status/printer-error.png new file mode 100644 index 0000000..63863c2 Binary files /dev/null and b/images/tango/22x22/status/printer-error.png differ diff --git a/images/tango/22x22/status/software-update-available.png b/images/tango/22x22/status/software-update-available.png new file mode 100644 index 0000000..c1d1348 Binary files /dev/null and b/images/tango/22x22/status/software-update-available.png differ diff --git a/images/tango/22x22/status/software-update-urgent.png b/images/tango/22x22/status/software-update-urgent.png new file mode 100644 index 0000000..0ce38d9 Binary files /dev/null and b/images/tango/22x22/status/software-update-urgent.png differ diff --git a/images/tango/22x22/status/user-trash-full.png b/images/tango/22x22/status/user-trash-full.png new file mode 100644 index 0000000..ffd7cc2 Binary files /dev/null and b/images/tango/22x22/status/user-trash-full.png differ diff --git a/images/tango/22x22/status/weather-clear-night.png b/images/tango/22x22/status/weather-clear-night.png new file mode 100644 index 0000000..52ea3e9 Binary files /dev/null and b/images/tango/22x22/status/weather-clear-night.png differ diff --git a/images/tango/22x22/status/weather-clear.png b/images/tango/22x22/status/weather-clear.png new file mode 100644 index 0000000..e17ca7c Binary files /dev/null and b/images/tango/22x22/status/weather-clear.png differ diff --git a/images/tango/22x22/status/weather-few-clouds-night.png b/images/tango/22x22/status/weather-few-clouds-night.png new file mode 100644 index 0000000..69fe49a Binary files /dev/null and b/images/tango/22x22/status/weather-few-clouds-night.png differ diff --git a/images/tango/22x22/status/weather-few-clouds.png b/images/tango/22x22/status/weather-few-clouds.png new file mode 100644 index 0000000..28b1147 Binary files /dev/null and b/images/tango/22x22/status/weather-few-clouds.png differ diff --git a/images/tango/22x22/status/weather-overcast.png b/images/tango/22x22/status/weather-overcast.png new file mode 100644 index 0000000..79d7bc2 Binary files /dev/null and b/images/tango/22x22/status/weather-overcast.png differ diff --git a/images/tango/22x22/status/weather-severe-alert.png b/images/tango/22x22/status/weather-severe-alert.png new file mode 100644 index 0000000..e4d09b6 Binary files /dev/null and b/images/tango/22x22/status/weather-severe-alert.png differ diff --git a/images/tango/22x22/status/weather-showers-scattered.png b/images/tango/22x22/status/weather-showers-scattered.png new file mode 100644 index 0000000..9eddd93 Binary files /dev/null and b/images/tango/22x22/status/weather-showers-scattered.png differ diff --git a/images/tango/22x22/status/weather-showers.png b/images/tango/22x22/status/weather-showers.png new file mode 100644 index 0000000..4450fb1 Binary files /dev/null and b/images/tango/22x22/status/weather-showers.png differ diff --git a/images/tango/22x22/status/weather-snow.png b/images/tango/22x22/status/weather-snow.png new file mode 100644 index 0000000..5457799 Binary files /dev/null and b/images/tango/22x22/status/weather-snow.png differ diff --git a/images/tango/22x22/status/weather-storm.png b/images/tango/22x22/status/weather-storm.png new file mode 100644 index 0000000..3b7ca9c Binary files /dev/null and b/images/tango/22x22/status/weather-storm.png differ diff --git a/images/tango/32x32/actions/address-book-new.png b/images/tango/32x32/actions/address-book-new.png new file mode 100644 index 0000000..420139d Binary files /dev/null and b/images/tango/32x32/actions/address-book-new.png differ diff --git a/images/tango/32x32/actions/appointment-new.png b/images/tango/32x32/actions/appointment-new.png new file mode 100644 index 0000000..85daef3 Binary files /dev/null and b/images/tango/32x32/actions/appointment-new.png differ diff --git a/images/tango/32x32/actions/bookmark-new.png b/images/tango/32x32/actions/bookmark-new.png new file mode 100644 index 0000000..621312a Binary files /dev/null and b/images/tango/32x32/actions/bookmark-new.png differ diff --git a/images/tango/32x32/actions/contact-new.png b/images/tango/32x32/actions/contact-new.png new file mode 100644 index 0000000..8b10c1e Binary files /dev/null and b/images/tango/32x32/actions/contact-new.png differ diff --git a/images/tango/32x32/actions/document-new.png b/images/tango/32x32/actions/document-new.png new file mode 100644 index 0000000..e6d64bb Binary files /dev/null and b/images/tango/32x32/actions/document-new.png differ diff --git a/images/tango/32x32/actions/document-open.png b/images/tango/32x32/actions/document-open.png new file mode 100644 index 0000000..f35f258 Binary files /dev/null and b/images/tango/32x32/actions/document-open.png differ diff --git a/images/tango/32x32/actions/document-pdf.png b/images/tango/32x32/actions/document-pdf.png new file mode 100644 index 0000000..194ff27 Binary files /dev/null and b/images/tango/32x32/actions/document-pdf.png differ diff --git a/images/tango/32x32/actions/document-print-preview.png b/images/tango/32x32/actions/document-print-preview.png new file mode 100644 index 0000000..772efe5 Binary files /dev/null and b/images/tango/32x32/actions/document-print-preview.png differ diff --git a/images/tango/32x32/actions/document-print.png b/images/tango/32x32/actions/document-print.png new file mode 100644 index 0000000..3ef3930 Binary files /dev/null and b/images/tango/32x32/actions/document-print.png differ diff --git a/images/tango/32x32/actions/document-properties.png b/images/tango/32x32/actions/document-properties.png new file mode 100644 index 0000000..fa697db Binary files /dev/null and b/images/tango/32x32/actions/document-properties.png differ diff --git a/images/tango/32x32/actions/document-revert.png b/images/tango/32x32/actions/document-revert.png new file mode 100644 index 0000000..3540188 Binary files /dev/null and b/images/tango/32x32/actions/document-revert.png differ diff --git a/images/tango/32x32/actions/document-save-as.png b/images/tango/32x32/actions/document-save-as.png new file mode 100644 index 0000000..5c9f6b3 Binary files /dev/null and b/images/tango/32x32/actions/document-save-as.png differ diff --git a/images/tango/32x32/actions/document-save.png b/images/tango/32x32/actions/document-save.png new file mode 100644 index 0000000..db5c52b Binary files /dev/null and b/images/tango/32x32/actions/document-save.png differ diff --git a/images/tango/32x32/actions/edit-clear.png b/images/tango/32x32/actions/edit-clear.png new file mode 100644 index 0000000..5542948 Binary files /dev/null and b/images/tango/32x32/actions/edit-clear.png differ diff --git a/images/tango/32x32/actions/edit-copy.png b/images/tango/32x32/actions/edit-copy.png new file mode 100644 index 0000000..3348ee0 Binary files /dev/null and b/images/tango/32x32/actions/edit-copy.png differ diff --git a/images/tango/32x32/actions/edit-cut.png b/images/tango/32x32/actions/edit-cut.png new file mode 100644 index 0000000..217663b Binary files /dev/null and b/images/tango/32x32/actions/edit-cut.png differ diff --git a/images/tango/32x32/actions/edit-delete.png b/images/tango/32x32/actions/edit-delete.png new file mode 100644 index 0000000..9becb3e Binary files /dev/null and b/images/tango/32x32/actions/edit-delete.png differ diff --git a/images/tango/32x32/actions/edit-find-replace.png b/images/tango/32x32/actions/edit-find-replace.png new file mode 100644 index 0000000..0f1b117 Binary files /dev/null and b/images/tango/32x32/actions/edit-find-replace.png differ diff --git a/images/tango/32x32/actions/edit-find.png b/images/tango/32x32/actions/edit-find.png new file mode 100644 index 0000000..5594785 Binary files /dev/null and b/images/tango/32x32/actions/edit-find.png differ diff --git a/images/tango/32x32/actions/edit-paste.png b/images/tango/32x32/actions/edit-paste.png new file mode 100644 index 0000000..dd429ce Binary files /dev/null and b/images/tango/32x32/actions/edit-paste.png differ diff --git a/images/tango/32x32/actions/edit-redo.png b/images/tango/32x32/actions/edit-redo.png new file mode 100644 index 0000000..3eb7b05 Binary files /dev/null and b/images/tango/32x32/actions/edit-redo.png differ diff --git a/images/tango/32x32/actions/edit-select-all.png b/images/tango/32x32/actions/edit-select-all.png new file mode 100644 index 0000000..107fc60 Binary files /dev/null and b/images/tango/32x32/actions/edit-select-all.png differ diff --git a/images/tango/32x32/actions/edit-undo.png b/images/tango/32x32/actions/edit-undo.png new file mode 100644 index 0000000..61b2ce9 Binary files /dev/null and b/images/tango/32x32/actions/edit-undo.png differ diff --git a/images/tango/32x32/actions/folder-new.png b/images/tango/32x32/actions/folder-new.png new file mode 100644 index 0000000..fcd15c0 Binary files /dev/null and b/images/tango/32x32/actions/folder-new.png differ diff --git a/images/tango/32x32/actions/format-indent-less.png b/images/tango/32x32/actions/format-indent-less.png new file mode 100644 index 0000000..7ced16f Binary files /dev/null and b/images/tango/32x32/actions/format-indent-less.png differ diff --git a/images/tango/32x32/actions/format-indent-more.png b/images/tango/32x32/actions/format-indent-more.png new file mode 100644 index 0000000..6a18867 Binary files /dev/null and b/images/tango/32x32/actions/format-indent-more.png differ diff --git a/images/tango/32x32/actions/format-justify-center.png b/images/tango/32x32/actions/format-justify-center.png new file mode 100644 index 0000000..a0db2bb Binary files /dev/null and b/images/tango/32x32/actions/format-justify-center.png differ diff --git a/images/tango/32x32/actions/format-justify-fill.png b/images/tango/32x32/actions/format-justify-fill.png new file mode 100644 index 0000000..2a34a8f Binary files /dev/null and b/images/tango/32x32/actions/format-justify-fill.png differ diff --git a/images/tango/32x32/actions/format-justify-left.png b/images/tango/32x32/actions/format-justify-left.png new file mode 100644 index 0000000..ba0e914 Binary files /dev/null and b/images/tango/32x32/actions/format-justify-left.png differ diff --git a/images/tango/32x32/actions/format-justify-right.png b/images/tango/32x32/actions/format-justify-right.png new file mode 100644 index 0000000..2144cb9 Binary files /dev/null and b/images/tango/32x32/actions/format-justify-right.png differ diff --git a/images/tango/32x32/actions/format-text-bold.png b/images/tango/32x32/actions/format-text-bold.png new file mode 100644 index 0000000..99ed19c Binary files /dev/null and b/images/tango/32x32/actions/format-text-bold.png differ diff --git a/images/tango/32x32/actions/format-text-italic.png b/images/tango/32x32/actions/format-text-italic.png new file mode 100644 index 0000000..87ed6f9 Binary files /dev/null and b/images/tango/32x32/actions/format-text-italic.png differ diff --git a/images/tango/32x32/actions/format-text-strikethrough.png b/images/tango/32x32/actions/format-text-strikethrough.png new file mode 100644 index 0000000..b9b55ab Binary files /dev/null and b/images/tango/32x32/actions/format-text-strikethrough.png differ diff --git a/images/tango/32x32/actions/format-text-underline.png b/images/tango/32x32/actions/format-text-underline.png new file mode 100644 index 0000000..0de6b1c Binary files /dev/null and b/images/tango/32x32/actions/format-text-underline.png differ diff --git a/images/tango/32x32/actions/go-bottom.png b/images/tango/32x32/actions/go-bottom.png new file mode 100644 index 0000000..bf973fe Binary files /dev/null and b/images/tango/32x32/actions/go-bottom.png differ diff --git a/images/tango/32x32/actions/go-down.png b/images/tango/32x32/actions/go-down.png new file mode 100644 index 0000000..dce3f15 Binary files /dev/null and b/images/tango/32x32/actions/go-down.png differ diff --git a/images/tango/32x32/actions/go-first.png b/images/tango/32x32/actions/go-first.png new file mode 100644 index 0000000..5e2a6b1 Binary files /dev/null and b/images/tango/32x32/actions/go-first.png differ diff --git a/images/tango/32x32/actions/go-home.png b/images/tango/32x32/actions/go-home.png new file mode 100644 index 0000000..a3ca103 Binary files /dev/null and b/images/tango/32x32/actions/go-home.png differ diff --git a/images/tango/32x32/actions/go-jump.png b/images/tango/32x32/actions/go-jump.png new file mode 100644 index 0000000..34dc4c0 Binary files /dev/null and b/images/tango/32x32/actions/go-jump.png differ diff --git a/images/tango/32x32/actions/go-last.png b/images/tango/32x32/actions/go-last.png new file mode 100644 index 0000000..48fe95b Binary files /dev/null and b/images/tango/32x32/actions/go-last.png differ diff --git a/images/tango/32x32/actions/go-next.png b/images/tango/32x32/actions/go-next.png new file mode 100644 index 0000000..a68e2db Binary files /dev/null and b/images/tango/32x32/actions/go-next.png differ diff --git a/images/tango/32x32/actions/go-previous.png b/images/tango/32x32/actions/go-previous.png new file mode 100644 index 0000000..c37bc04 Binary files /dev/null and b/images/tango/32x32/actions/go-previous.png differ diff --git a/images/tango/32x32/actions/go-top.png b/images/tango/32x32/actions/go-top.png new file mode 100644 index 0000000..d99552b Binary files /dev/null and b/images/tango/32x32/actions/go-top.png differ diff --git a/images/tango/32x32/actions/go-up.png b/images/tango/32x32/actions/go-up.png new file mode 100644 index 0000000..afb307b Binary files /dev/null and b/images/tango/32x32/actions/go-up.png differ diff --git a/images/tango/32x32/actions/list-add.png b/images/tango/32x32/actions/list-add.png new file mode 100644 index 0000000..2acdd8f Binary files /dev/null and b/images/tango/32x32/actions/list-add.png differ diff --git a/images/tango/32x32/actions/list-remove.png b/images/tango/32x32/actions/list-remove.png new file mode 100644 index 0000000..c5524f7 Binary files /dev/null and b/images/tango/32x32/actions/list-remove.png differ diff --git a/images/tango/32x32/actions/mail-forward.png b/images/tango/32x32/actions/mail-forward.png new file mode 100644 index 0000000..bea94ab Binary files /dev/null and b/images/tango/32x32/actions/mail-forward.png differ diff --git a/images/tango/32x32/actions/mail-mark-junk.png b/images/tango/32x32/actions/mail-mark-junk.png new file mode 100644 index 0000000..0af3006 Binary files /dev/null and b/images/tango/32x32/actions/mail-mark-junk.png differ diff --git a/images/tango/32x32/actions/mail-mark-not-junk.png b/images/tango/32x32/actions/mail-mark-not-junk.png new file mode 100644 index 0000000..296e92a Binary files /dev/null and b/images/tango/32x32/actions/mail-mark-not-junk.png differ diff --git a/images/tango/32x32/actions/mail-message-new.png b/images/tango/32x32/actions/mail-message-new.png new file mode 100644 index 0000000..9f51246 Binary files /dev/null and b/images/tango/32x32/actions/mail-message-new.png differ diff --git a/images/tango/32x32/actions/mail-reply-all.png b/images/tango/32x32/actions/mail-reply-all.png new file mode 100644 index 0000000..0216e39 Binary files /dev/null and b/images/tango/32x32/actions/mail-reply-all.png differ diff --git a/images/tango/32x32/actions/mail-reply-sender.png b/images/tango/32x32/actions/mail-reply-sender.png new file mode 100644 index 0000000..3f248dc Binary files /dev/null and b/images/tango/32x32/actions/mail-reply-sender.png differ diff --git a/images/tango/32x32/actions/mail-send-receive.png b/images/tango/32x32/actions/mail-send-receive.png new file mode 100644 index 0000000..99349b9 Binary files /dev/null and b/images/tango/32x32/actions/mail-send-receive.png differ diff --git a/images/tango/32x32/actions/media-eject.png b/images/tango/32x32/actions/media-eject.png new file mode 100644 index 0000000..b218e7a Binary files /dev/null and b/images/tango/32x32/actions/media-eject.png differ diff --git a/images/tango/32x32/actions/media-playback-pause.png b/images/tango/32x32/actions/media-playback-pause.png new file mode 100644 index 0000000..1e9f4d5 Binary files /dev/null and b/images/tango/32x32/actions/media-playback-pause.png differ diff --git a/images/tango/32x32/actions/media-playback-start.png b/images/tango/32x32/actions/media-playback-start.png new file mode 100644 index 0000000..66f32d8 Binary files /dev/null and b/images/tango/32x32/actions/media-playback-start.png differ diff --git a/images/tango/32x32/actions/media-playback-stop.png b/images/tango/32x32/actions/media-playback-stop.png new file mode 100644 index 0000000..a094787 Binary files /dev/null and b/images/tango/32x32/actions/media-playback-stop.png differ diff --git a/images/tango/32x32/actions/media-record.png b/images/tango/32x32/actions/media-record.png new file mode 100644 index 0000000..43f034b Binary files /dev/null and b/images/tango/32x32/actions/media-record.png differ diff --git a/images/tango/32x32/actions/media-seek-backward.png b/images/tango/32x32/actions/media-seek-backward.png new file mode 100644 index 0000000..535c536 Binary files /dev/null and b/images/tango/32x32/actions/media-seek-backward.png differ diff --git a/images/tango/32x32/actions/media-seek-forward.png b/images/tango/32x32/actions/media-seek-forward.png new file mode 100644 index 0000000..96ebe01 Binary files /dev/null and b/images/tango/32x32/actions/media-seek-forward.png differ diff --git a/images/tango/32x32/actions/media-skip-backward.png b/images/tango/32x32/actions/media-skip-backward.png new file mode 100644 index 0000000..aa08251 Binary files /dev/null and b/images/tango/32x32/actions/media-skip-backward.png differ diff --git a/images/tango/32x32/actions/media-skip-forward.png b/images/tango/32x32/actions/media-skip-forward.png new file mode 100644 index 0000000..52be942 Binary files /dev/null and b/images/tango/32x32/actions/media-skip-forward.png differ diff --git a/images/tango/32x32/actions/process-stop.png b/images/tango/32x32/actions/process-stop.png new file mode 100644 index 0000000..e7a8d17 Binary files /dev/null and b/images/tango/32x32/actions/process-stop.png differ diff --git a/images/tango/32x32/actions/system-lock-screen.png b/images/tango/32x32/actions/system-lock-screen.png new file mode 100644 index 0000000..2c220fc Binary files /dev/null and b/images/tango/32x32/actions/system-lock-screen.png differ diff --git a/images/tango/32x32/actions/system-log-out.png b/images/tango/32x32/actions/system-log-out.png new file mode 100644 index 0000000..fddbc2b Binary files /dev/null and b/images/tango/32x32/actions/system-log-out.png differ diff --git a/images/tango/32x32/actions/system-search.png b/images/tango/32x32/actions/system-search.png new file mode 100644 index 0000000..950d792 Binary files /dev/null and b/images/tango/32x32/actions/system-search.png differ diff --git a/images/tango/32x32/actions/system-shutdown.png b/images/tango/32x32/actions/system-shutdown.png new file mode 100644 index 0000000..36acd46 Binary files /dev/null and b/images/tango/32x32/actions/system-shutdown.png differ diff --git a/images/tango/32x32/actions/tab-new.png b/images/tango/32x32/actions/tab-new.png new file mode 100644 index 0000000..294d150 Binary files /dev/null and b/images/tango/32x32/actions/tab-new.png differ diff --git a/images/tango/32x32/actions/view-fullscreen.png b/images/tango/32x32/actions/view-fullscreen.png new file mode 100644 index 0000000..00e6b83 Binary files /dev/null and b/images/tango/32x32/actions/view-fullscreen.png differ diff --git a/images/tango/32x32/actions/view-refresh.png b/images/tango/32x32/actions/view-refresh.png new file mode 100644 index 0000000..606ea9e Binary files /dev/null and b/images/tango/32x32/actions/view-refresh.png differ diff --git a/images/tango/32x32/actions/window-new.png b/images/tango/32x32/actions/window-new.png new file mode 100644 index 0000000..e091702 Binary files /dev/null and b/images/tango/32x32/actions/window-new.png differ diff --git a/images/tango/32x32/animations/process-working.png b/images/tango/32x32/animations/process-working.png new file mode 100644 index 0000000..f19c528 Binary files /dev/null and b/images/tango/32x32/animations/process-working.png differ diff --git a/images/tango/32x32/apps/accessories-calculator.png b/images/tango/32x32/apps/accessories-calculator.png new file mode 100644 index 0000000..7de1c44 Binary files /dev/null and b/images/tango/32x32/apps/accessories-calculator.png differ diff --git a/images/tango/32x32/apps/accessories-character-map.png b/images/tango/32x32/apps/accessories-character-map.png new file mode 100644 index 0000000..a86c23e Binary files /dev/null and b/images/tango/32x32/apps/accessories-character-map.png differ diff --git a/images/tango/32x32/apps/accessories-text-editor.png b/images/tango/32x32/apps/accessories-text-editor.png new file mode 100644 index 0000000..c6b6285 Binary files /dev/null and b/images/tango/32x32/apps/accessories-text-editor.png differ diff --git a/images/tango/32x32/apps/help-browser.png b/images/tango/32x32/apps/help-browser.png new file mode 100644 index 0000000..d60425f Binary files /dev/null and b/images/tango/32x32/apps/help-browser.png differ diff --git a/images/tango/32x32/apps/internet-group-chat.png b/images/tango/32x32/apps/internet-group-chat.png new file mode 100644 index 0000000..9cb1d3b Binary files /dev/null and b/images/tango/32x32/apps/internet-group-chat.png differ diff --git a/images/tango/32x32/apps/internet-mail.png b/images/tango/32x32/apps/internet-mail.png new file mode 100644 index 0000000..dc3b9dd Binary files /dev/null and b/images/tango/32x32/apps/internet-mail.png differ diff --git a/images/tango/32x32/apps/internet-news-reader.png b/images/tango/32x32/apps/internet-news-reader.png new file mode 100644 index 0000000..ebc528f Binary files /dev/null and b/images/tango/32x32/apps/internet-news-reader.png differ diff --git a/images/tango/32x32/apps/internet-web-browser.png b/images/tango/32x32/apps/internet-web-browser.png new file mode 100644 index 0000000..10d2ed4 Binary files /dev/null and b/images/tango/32x32/apps/internet-web-browser.png differ diff --git a/images/tango/32x32/apps/office-calendar.png b/images/tango/32x32/apps/office-calendar.png new file mode 100644 index 0000000..7817c12 Binary files /dev/null and b/images/tango/32x32/apps/office-calendar.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-accessibility.png b/images/tango/32x32/apps/preferences-desktop-accessibility.png new file mode 100644 index 0000000..adfe247 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-accessibility.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-assistive-technology.png b/images/tango/32x32/apps/preferences-desktop-assistive-technology.png new file mode 100644 index 0000000..70adb92 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-assistive-technology.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-font.png b/images/tango/32x32/apps/preferences-desktop-font.png new file mode 100644 index 0000000..b4ec434 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-font.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-keyboard-shortcuts.png b/images/tango/32x32/apps/preferences-desktop-keyboard-shortcuts.png new file mode 100644 index 0000000..178dd29 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-keyboard-shortcuts.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-locale.png b/images/tango/32x32/apps/preferences-desktop-locale.png new file mode 100644 index 0000000..66224ae Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-locale.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-multimedia.png b/images/tango/32x32/apps/preferences-desktop-multimedia.png new file mode 100644 index 0000000..56a5662 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-multimedia.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-remote-desktop.png b/images/tango/32x32/apps/preferences-desktop-remote-desktop.png new file mode 100644 index 0000000..6da67c6 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-remote-desktop.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-screensaver.png b/images/tango/32x32/apps/preferences-desktop-screensaver.png new file mode 100644 index 0000000..dba2455 Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-screensaver.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-theme.png b/images/tango/32x32/apps/preferences-desktop-theme.png new file mode 100644 index 0000000..7af777d Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-theme.png differ diff --git a/images/tango/32x32/apps/preferences-desktop-wallpaper.png b/images/tango/32x32/apps/preferences-desktop-wallpaper.png new file mode 100644 index 0000000..4eb744c Binary files /dev/null and b/images/tango/32x32/apps/preferences-desktop-wallpaper.png differ diff --git a/images/tango/32x32/apps/preferences-system-network-proxy.png b/images/tango/32x32/apps/preferences-system-network-proxy.png new file mode 100644 index 0000000..e75f6f7 Binary files /dev/null and b/images/tango/32x32/apps/preferences-system-network-proxy.png differ diff --git a/images/tango/32x32/apps/preferences-system-session.png b/images/tango/32x32/apps/preferences-system-session.png new file mode 100644 index 0000000..f8c2d11 Binary files /dev/null and b/images/tango/32x32/apps/preferences-system-session.png differ diff --git a/images/tango/32x32/apps/preferences-system-windows.png b/images/tango/32x32/apps/preferences-system-windows.png new file mode 100644 index 0000000..517e48a Binary files /dev/null and b/images/tango/32x32/apps/preferences-system-windows.png differ diff --git a/images/tango/32x32/apps/system-file-manager.png b/images/tango/32x32/apps/system-file-manager.png new file mode 100644 index 0000000..1d6ce31 Binary files /dev/null and b/images/tango/32x32/apps/system-file-manager.png differ diff --git a/images/tango/32x32/apps/system-installer.png b/images/tango/32x32/apps/system-installer.png new file mode 100644 index 0000000..c26576e Binary files /dev/null and b/images/tango/32x32/apps/system-installer.png differ diff --git a/images/tango/32x32/apps/system-software-update.png b/images/tango/32x32/apps/system-software-update.png new file mode 100644 index 0000000..470b5d4 Binary files /dev/null and b/images/tango/32x32/apps/system-software-update.png differ diff --git a/images/tango/32x32/apps/system-users.png b/images/tango/32x32/apps/system-users.png new file mode 100644 index 0000000..749c825 Binary files /dev/null and b/images/tango/32x32/apps/system-users.png differ diff --git a/images/tango/32x32/apps/utilities-system-monitor.png b/images/tango/32x32/apps/utilities-system-monitor.png new file mode 100644 index 0000000..b62959e Binary files /dev/null and b/images/tango/32x32/apps/utilities-system-monitor.png differ diff --git a/images/tango/32x32/apps/utilities-terminal.png b/images/tango/32x32/apps/utilities-terminal.png new file mode 100644 index 0000000..f86c784 Binary files /dev/null and b/images/tango/32x32/apps/utilities-terminal.png differ diff --git a/images/tango/32x32/categories/applications-accessories.png b/images/tango/32x32/categories/applications-accessories.png new file mode 100644 index 0000000..fd43de3 Binary files /dev/null and b/images/tango/32x32/categories/applications-accessories.png differ diff --git a/images/tango/32x32/categories/applications-development.png b/images/tango/32x32/categories/applications-development.png new file mode 100644 index 0000000..bc88a5c Binary files /dev/null and b/images/tango/32x32/categories/applications-development.png differ diff --git a/images/tango/32x32/categories/applications-games.png b/images/tango/32x32/categories/applications-games.png new file mode 100644 index 0000000..ff4044c Binary files /dev/null and b/images/tango/32x32/categories/applications-games.png differ diff --git a/images/tango/32x32/categories/applications-graphics.png b/images/tango/32x32/categories/applications-graphics.png new file mode 100644 index 0000000..36b77c2 Binary files /dev/null and b/images/tango/32x32/categories/applications-graphics.png differ diff --git a/images/tango/32x32/categories/applications-internet.png b/images/tango/32x32/categories/applications-internet.png new file mode 100644 index 0000000..096e848 Binary files /dev/null and b/images/tango/32x32/categories/applications-internet.png differ diff --git a/images/tango/32x32/categories/applications-multimedia.png b/images/tango/32x32/categories/applications-multimedia.png new file mode 100644 index 0000000..d09995a Binary files /dev/null and b/images/tango/32x32/categories/applications-multimedia.png differ diff --git a/images/tango/32x32/categories/applications-office.png b/images/tango/32x32/categories/applications-office.png new file mode 100644 index 0000000..efb850e Binary files /dev/null and b/images/tango/32x32/categories/applications-office.png differ diff --git a/images/tango/32x32/categories/applications-other.png b/images/tango/32x32/categories/applications-other.png new file mode 100644 index 0000000..1990dbb Binary files /dev/null and b/images/tango/32x32/categories/applications-other.png differ diff --git a/images/tango/32x32/categories/applications-system.png b/images/tango/32x32/categories/applications-system.png new file mode 100644 index 0000000..565f406 Binary files /dev/null and b/images/tango/32x32/categories/applications-system.png differ diff --git a/images/tango/32x32/categories/preferences-desktop-peripherals.png b/images/tango/32x32/categories/preferences-desktop-peripherals.png new file mode 100644 index 0000000..4682b36 Binary files /dev/null and b/images/tango/32x32/categories/preferences-desktop-peripherals.png differ diff --git a/images/tango/32x32/categories/preferences-desktop.png b/images/tango/32x32/categories/preferences-desktop.png new file mode 100644 index 0000000..3ec71a3 Binary files /dev/null and b/images/tango/32x32/categories/preferences-desktop.png differ diff --git a/images/tango/32x32/categories/preferences-system.png b/images/tango/32x32/categories/preferences-system.png new file mode 100644 index 0000000..6e52db7 Binary files /dev/null and b/images/tango/32x32/categories/preferences-system.png differ diff --git a/images/tango/32x32/devices/audio-card.png b/images/tango/32x32/devices/audio-card.png new file mode 100644 index 0000000..5b15dd6 Binary files /dev/null and b/images/tango/32x32/devices/audio-card.png differ diff --git a/images/tango/32x32/devices/audio-input-microphone.png b/images/tango/32x32/devices/audio-input-microphone.png new file mode 100644 index 0000000..9fe3b96 Binary files /dev/null and b/images/tango/32x32/devices/audio-input-microphone.png differ diff --git a/images/tango/32x32/devices/battery.png b/images/tango/32x32/devices/battery.png new file mode 100644 index 0000000..ef08925 Binary files /dev/null and b/images/tango/32x32/devices/battery.png differ diff --git a/images/tango/32x32/devices/camera-photo.png b/images/tango/32x32/devices/camera-photo.png new file mode 100644 index 0000000..ffbffc7 Binary files /dev/null and b/images/tango/32x32/devices/camera-photo.png differ diff --git a/images/tango/32x32/devices/camera-video.png b/images/tango/32x32/devices/camera-video.png new file mode 100644 index 0000000..7473dd7 Binary files /dev/null and b/images/tango/32x32/devices/camera-video.png differ diff --git a/images/tango/32x32/devices/computer.png b/images/tango/32x32/devices/computer.png new file mode 100644 index 0000000..e34eb4e Binary files /dev/null and b/images/tango/32x32/devices/computer.png differ diff --git a/images/tango/32x32/devices/drive-harddisk.png b/images/tango/32x32/devices/drive-harddisk.png new file mode 100644 index 0000000..b34d8b7 Binary files /dev/null and b/images/tango/32x32/devices/drive-harddisk.png differ diff --git a/images/tango/32x32/devices/drive-optical.png b/images/tango/32x32/devices/drive-optical.png new file mode 100644 index 0000000..bf2e8c8 Binary files /dev/null and b/images/tango/32x32/devices/drive-optical.png differ diff --git a/images/tango/32x32/devices/drive-removable-media.png b/images/tango/32x32/devices/drive-removable-media.png new file mode 100644 index 0000000..2d28909 Binary files /dev/null and b/images/tango/32x32/devices/drive-removable-media.png differ diff --git a/images/tango/32x32/devices/input-gaming.png b/images/tango/32x32/devices/input-gaming.png new file mode 100644 index 0000000..26e2a98 Binary files /dev/null and b/images/tango/32x32/devices/input-gaming.png differ diff --git a/images/tango/32x32/devices/input-keyboard.png b/images/tango/32x32/devices/input-keyboard.png new file mode 100644 index 0000000..788c717 Binary files /dev/null and b/images/tango/32x32/devices/input-keyboard.png differ diff --git a/images/tango/32x32/devices/input-mouse.png b/images/tango/32x32/devices/input-mouse.png new file mode 100644 index 0000000..49a923c Binary files /dev/null and b/images/tango/32x32/devices/input-mouse.png differ diff --git a/images/tango/32x32/devices/media-flash.png b/images/tango/32x32/devices/media-flash.png new file mode 100644 index 0000000..7540f3f Binary files /dev/null and b/images/tango/32x32/devices/media-flash.png differ diff --git a/images/tango/32x32/devices/media-floppy.png b/images/tango/32x32/devices/media-floppy.png new file mode 100644 index 0000000..17b1274 Binary files /dev/null and b/images/tango/32x32/devices/media-floppy.png differ diff --git a/images/tango/32x32/devices/media-optical.png b/images/tango/32x32/devices/media-optical.png new file mode 100644 index 0000000..5853a75 Binary files /dev/null and b/images/tango/32x32/devices/media-optical.png differ diff --git a/images/tango/32x32/devices/multimedia-player.png b/images/tango/32x32/devices/multimedia-player.png new file mode 100644 index 0000000..8d59208 Binary files /dev/null and b/images/tango/32x32/devices/multimedia-player.png differ diff --git a/images/tango/32x32/devices/network-wired.png b/images/tango/32x32/devices/network-wired.png new file mode 100644 index 0000000..c3ca691 Binary files /dev/null and b/images/tango/32x32/devices/network-wired.png differ diff --git a/images/tango/32x32/devices/network-wireless.png b/images/tango/32x32/devices/network-wireless.png new file mode 100644 index 0000000..aa5f9f2 Binary files /dev/null and b/images/tango/32x32/devices/network-wireless.png differ diff --git a/images/tango/32x32/devices/printer.png b/images/tango/32x32/devices/printer.png new file mode 100644 index 0000000..05b49e0 Binary files /dev/null and b/images/tango/32x32/devices/printer.png differ diff --git a/images/tango/32x32/devices/video-display.png b/images/tango/32x32/devices/video-display.png new file mode 100644 index 0000000..b95ea5d Binary files /dev/null and b/images/tango/32x32/devices/video-display.png differ diff --git a/images/tango/32x32/emblems/emblem-favorite.png b/images/tango/32x32/emblems/emblem-favorite.png new file mode 100644 index 0000000..8a9ad39 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-favorite.png differ diff --git a/images/tango/32x32/emblems/emblem-important.png b/images/tango/32x32/emblems/emblem-important.png new file mode 100644 index 0000000..263fbd5 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-important.png differ diff --git a/images/tango/32x32/emblems/emblem-photos.png b/images/tango/32x32/emblems/emblem-photos.png new file mode 100644 index 0000000..f7dfd88 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-photos.png differ diff --git a/images/tango/32x32/emblems/emblem-readonly.png b/images/tango/32x32/emblems/emblem-readonly.png new file mode 100644 index 0000000..5e972d1 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-readonly.png differ diff --git a/images/tango/32x32/emblems/emblem-symbolic-link.png b/images/tango/32x32/emblems/emblem-symbolic-link.png new file mode 100644 index 0000000..56ef039 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-symbolic-link.png differ diff --git a/images/tango/32x32/emblems/emblem-system.png b/images/tango/32x32/emblems/emblem-system.png new file mode 100644 index 0000000..abac7e9 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-system.png differ diff --git a/images/tango/32x32/emblems/emblem-unreadable.png b/images/tango/32x32/emblems/emblem-unreadable.png new file mode 100644 index 0000000..b94fc97 Binary files /dev/null and b/images/tango/32x32/emblems/emblem-unreadable.png differ diff --git a/images/tango/32x32/emotes/face-angel.png b/images/tango/32x32/emotes/face-angel.png new file mode 100644 index 0000000..abd0285 Binary files /dev/null and b/images/tango/32x32/emotes/face-angel.png differ diff --git a/images/tango/32x32/emotes/face-crying.png b/images/tango/32x32/emotes/face-crying.png new file mode 100644 index 0000000..d8bc41e Binary files /dev/null and b/images/tango/32x32/emotes/face-crying.png differ diff --git a/images/tango/32x32/emotes/face-devilish.png b/images/tango/32x32/emotes/face-devilish.png new file mode 100644 index 0000000..7a3cb08 Binary files /dev/null and b/images/tango/32x32/emotes/face-devilish.png differ diff --git a/images/tango/32x32/emotes/face-glasses.png b/images/tango/32x32/emotes/face-glasses.png new file mode 100644 index 0000000..1b25394 Binary files /dev/null and b/images/tango/32x32/emotes/face-glasses.png differ diff --git a/images/tango/32x32/emotes/face-grin.png b/images/tango/32x32/emotes/face-grin.png new file mode 100644 index 0000000..2e8268f Binary files /dev/null and b/images/tango/32x32/emotes/face-grin.png differ diff --git a/images/tango/32x32/emotes/face-kiss.png b/images/tango/32x32/emotes/face-kiss.png new file mode 100644 index 0000000..1e3fa54 Binary files /dev/null and b/images/tango/32x32/emotes/face-kiss.png differ diff --git a/images/tango/32x32/emotes/face-monkey.png b/images/tango/32x32/emotes/face-monkey.png new file mode 100644 index 0000000..fb0204a Binary files /dev/null and b/images/tango/32x32/emotes/face-monkey.png differ diff --git a/images/tango/32x32/emotes/face-plain.png b/images/tango/32x32/emotes/face-plain.png new file mode 100644 index 0000000..f8128a6 Binary files /dev/null and b/images/tango/32x32/emotes/face-plain.png differ diff --git a/images/tango/32x32/emotes/face-sad.png b/images/tango/32x32/emotes/face-sad.png new file mode 100644 index 0000000..2fbecde Binary files /dev/null and b/images/tango/32x32/emotes/face-sad.png differ diff --git a/images/tango/32x32/emotes/face-smile-big.png b/images/tango/32x32/emotes/face-smile-big.png new file mode 100644 index 0000000..28704ae Binary files /dev/null and b/images/tango/32x32/emotes/face-smile-big.png differ diff --git a/images/tango/32x32/emotes/face-smile.png b/images/tango/32x32/emotes/face-smile.png new file mode 100644 index 0000000..a52e44d Binary files /dev/null and b/images/tango/32x32/emotes/face-smile.png differ diff --git a/images/tango/32x32/emotes/face-surprise.png b/images/tango/32x32/emotes/face-surprise.png new file mode 100644 index 0000000..af7cef4 Binary files /dev/null and b/images/tango/32x32/emotes/face-surprise.png differ diff --git a/images/tango/32x32/emotes/face-wink.png b/images/tango/32x32/emotes/face-wink.png new file mode 100644 index 0000000..494d785 Binary files /dev/null and b/images/tango/32x32/emotes/face-wink.png differ diff --git a/images/tango/32x32/mimetypes/application-certificate.png b/images/tango/32x32/mimetypes/application-certificate.png new file mode 100644 index 0000000..b75ba54 Binary files /dev/null and b/images/tango/32x32/mimetypes/application-certificate.png differ diff --git a/images/tango/32x32/mimetypes/application-x-executable.png b/images/tango/32x32/mimetypes/application-x-executable.png new file mode 100644 index 0000000..8a150b8 Binary files /dev/null and b/images/tango/32x32/mimetypes/application-x-executable.png differ diff --git a/images/tango/32x32/mimetypes/audio-x-generic.png b/images/tango/32x32/mimetypes/audio-x-generic.png new file mode 100644 index 0000000..c60b595 Binary files /dev/null and b/images/tango/32x32/mimetypes/audio-x-generic.png differ diff --git a/images/tango/32x32/mimetypes/font-x-generic.png b/images/tango/32x32/mimetypes/font-x-generic.png new file mode 100644 index 0000000..b166f4b Binary files /dev/null and b/images/tango/32x32/mimetypes/font-x-generic.png differ diff --git a/images/tango/32x32/mimetypes/image-x-generic.png b/images/tango/32x32/mimetypes/image-x-generic.png new file mode 100644 index 0000000..6f118cd Binary files /dev/null and b/images/tango/32x32/mimetypes/image-x-generic.png differ diff --git a/images/tango/32x32/mimetypes/package-x-generic.png b/images/tango/32x32/mimetypes/package-x-generic.png new file mode 100644 index 0000000..4b55b50 Binary files /dev/null and b/images/tango/32x32/mimetypes/package-x-generic.png differ diff --git a/images/tango/32x32/mimetypes/text-html.png b/images/tango/32x32/mimetypes/text-html.png new file mode 100644 index 0000000..a896697 Binary files /dev/null and b/images/tango/32x32/mimetypes/text-html.png differ diff --git a/images/tango/32x32/mimetypes/text-x-generic-template.png b/images/tango/32x32/mimetypes/text-x-generic-template.png new file mode 100644 index 0000000..5b7e649 Binary files /dev/null and b/images/tango/32x32/mimetypes/text-x-generic-template.png differ diff --git a/images/tango/32x32/mimetypes/text-x-generic.png b/images/tango/32x32/mimetypes/text-x-generic.png new file mode 100644 index 0000000..928a679 Binary files /dev/null and b/images/tango/32x32/mimetypes/text-x-generic.png differ diff --git a/images/tango/32x32/mimetypes/text-x-script.png b/images/tango/32x32/mimetypes/text-x-script.png new file mode 100644 index 0000000..801dcd6 Binary files /dev/null and b/images/tango/32x32/mimetypes/text-x-script.png differ diff --git a/images/tango/32x32/mimetypes/video-x-generic.png b/images/tango/32x32/mimetypes/video-x-generic.png new file mode 100644 index 0000000..5d6c8d1 Binary files /dev/null and b/images/tango/32x32/mimetypes/video-x-generic.png differ diff --git a/images/tango/32x32/mimetypes/x-office-address-book.png b/images/tango/32x32/mimetypes/x-office-address-book.png new file mode 100644 index 0000000..53dde74 Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-address-book.png differ diff --git a/images/tango/32x32/mimetypes/x-office-calendar.png b/images/tango/32x32/mimetypes/x-office-calendar.png new file mode 100644 index 0000000..bc6db5b Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-calendar.png differ diff --git a/images/tango/32x32/mimetypes/x-office-document-template.png b/images/tango/32x32/mimetypes/x-office-document-template.png new file mode 100644 index 0000000..9619241 Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-document-template.png differ diff --git a/images/tango/32x32/mimetypes/x-office-document.png b/images/tango/32x32/mimetypes/x-office-document.png new file mode 100644 index 0000000..daf84b2 Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-document.png differ diff --git a/images/tango/32x32/mimetypes/x-office-drawing-template.png b/images/tango/32x32/mimetypes/x-office-drawing-template.png new file mode 100644 index 0000000..6fc043c Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-drawing-template.png differ diff --git a/images/tango/32x32/mimetypes/x-office-drawing.png b/images/tango/32x32/mimetypes/x-office-drawing.png new file mode 100644 index 0000000..5cd66c1 Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-drawing.png differ diff --git a/images/tango/32x32/mimetypes/x-office-presentation-template.png b/images/tango/32x32/mimetypes/x-office-presentation-template.png new file mode 100644 index 0000000..bc348f1 Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-presentation-template.png differ diff --git a/images/tango/32x32/mimetypes/x-office-presentation.png b/images/tango/32x32/mimetypes/x-office-presentation.png new file mode 100644 index 0000000..047355c Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-presentation.png differ diff --git a/images/tango/32x32/mimetypes/x-office-spreadsheet-template.png b/images/tango/32x32/mimetypes/x-office-spreadsheet-template.png new file mode 100644 index 0000000..6a81f36 Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-spreadsheet-template.png differ diff --git a/images/tango/32x32/mimetypes/x-office-spreadsheet.png b/images/tango/32x32/mimetypes/x-office-spreadsheet.png new file mode 100644 index 0000000..c0ccb7a Binary files /dev/null and b/images/tango/32x32/mimetypes/x-office-spreadsheet.png differ diff --git a/images/tango/32x32/places/folder-remote.png b/images/tango/32x32/places/folder-remote.png new file mode 100644 index 0000000..3e0d9ad Binary files /dev/null and b/images/tango/32x32/places/folder-remote.png differ diff --git a/images/tango/32x32/places/folder-saved-search.png b/images/tango/32x32/places/folder-saved-search.png new file mode 100644 index 0000000..88d4541 Binary files /dev/null and b/images/tango/32x32/places/folder-saved-search.png differ diff --git a/images/tango/32x32/places/folder.png b/images/tango/32x32/places/folder.png new file mode 100644 index 0000000..472484f Binary files /dev/null and b/images/tango/32x32/places/folder.png differ diff --git a/images/tango/32x32/places/network-server.png b/images/tango/32x32/places/network-server.png new file mode 100644 index 0000000..1d38e4f Binary files /dev/null and b/images/tango/32x32/places/network-server.png differ diff --git a/images/tango/32x32/places/network-workgroup.png b/images/tango/32x32/places/network-workgroup.png new file mode 100644 index 0000000..4137b3c Binary files /dev/null and b/images/tango/32x32/places/network-workgroup.png differ diff --git a/images/tango/32x32/places/start-here.png b/images/tango/32x32/places/start-here.png new file mode 100644 index 0000000..1e54d01 Binary files /dev/null and b/images/tango/32x32/places/start-here.png differ diff --git a/images/tango/32x32/places/user-desktop.png b/images/tango/32x32/places/user-desktop.png new file mode 100644 index 0000000..57fb177 Binary files /dev/null and b/images/tango/32x32/places/user-desktop.png differ diff --git a/images/tango/32x32/places/user-home.png b/images/tango/32x32/places/user-home.png new file mode 100644 index 0000000..a29bd69 Binary files /dev/null and b/images/tango/32x32/places/user-home.png differ diff --git a/images/tango/32x32/places/user-trash.png b/images/tango/32x32/places/user-trash.png new file mode 100644 index 0000000..9b7a462 Binary files /dev/null and b/images/tango/32x32/places/user-trash.png differ diff --git a/images/tango/32x32/status/audio-volume-high.png b/images/tango/32x32/status/audio-volume-high.png new file mode 100644 index 0000000..70ae43a Binary files /dev/null and b/images/tango/32x32/status/audio-volume-high.png differ diff --git a/images/tango/32x32/status/audio-volume-low.png b/images/tango/32x32/status/audio-volume-low.png new file mode 100644 index 0000000..34546f9 Binary files /dev/null and b/images/tango/32x32/status/audio-volume-low.png differ diff --git a/images/tango/32x32/status/audio-volume-medium.png b/images/tango/32x32/status/audio-volume-medium.png new file mode 100644 index 0000000..4d48a9a Binary files /dev/null and b/images/tango/32x32/status/audio-volume-medium.png differ diff --git a/images/tango/32x32/status/audio-volume-muted.png b/images/tango/32x32/status/audio-volume-muted.png new file mode 100644 index 0000000..a602c85 Binary files /dev/null and b/images/tango/32x32/status/audio-volume-muted.png differ diff --git a/images/tango/32x32/status/battery-caution.png b/images/tango/32x32/status/battery-caution.png new file mode 100644 index 0000000..ede9788 Binary files /dev/null and b/images/tango/32x32/status/battery-caution.png differ diff --git a/images/tango/32x32/status/dialog-error.png b/images/tango/32x32/status/dialog-error.png new file mode 100644 index 0000000..cdd95ba Binary files /dev/null and b/images/tango/32x32/status/dialog-error.png differ diff --git a/images/tango/32x32/status/dialog-information.png b/images/tango/32x32/status/dialog-information.png new file mode 100644 index 0000000..2ac5747 Binary files /dev/null and b/images/tango/32x32/status/dialog-information.png differ diff --git a/images/tango/32x32/status/dialog-warning.png b/images/tango/32x32/status/dialog-warning.png new file mode 100644 index 0000000..7233d45 Binary files /dev/null and b/images/tango/32x32/status/dialog-warning.png differ diff --git a/images/tango/32x32/status/folder-drag-accept.png b/images/tango/32x32/status/folder-drag-accept.png new file mode 100644 index 0000000..2feba85 Binary files /dev/null and b/images/tango/32x32/status/folder-drag-accept.png differ diff --git a/images/tango/32x32/status/folder-open.png b/images/tango/32x32/status/folder-open.png new file mode 100644 index 0000000..901816c Binary files /dev/null and b/images/tango/32x32/status/folder-open.png differ diff --git a/images/tango/32x32/status/folder-visiting.png b/images/tango/32x32/status/folder-visiting.png new file mode 100644 index 0000000..be02b6a Binary files /dev/null and b/images/tango/32x32/status/folder-visiting.png differ diff --git a/images/tango/32x32/status/image-loading.png b/images/tango/32x32/status/image-loading.png new file mode 100644 index 0000000..9442085 Binary files /dev/null and b/images/tango/32x32/status/image-loading.png differ diff --git a/images/tango/32x32/status/image-missing.png b/images/tango/32x32/status/image-missing.png new file mode 100644 index 0000000..27fccd5 Binary files /dev/null and b/images/tango/32x32/status/image-missing.png differ diff --git a/images/tango/32x32/status/mail-attachment.png b/images/tango/32x32/status/mail-attachment.png new file mode 100644 index 0000000..78f1e1c Binary files /dev/null and b/images/tango/32x32/status/mail-attachment.png differ diff --git a/images/tango/32x32/status/network-error.png b/images/tango/32x32/status/network-error.png new file mode 100644 index 0000000..3de26e7 Binary files /dev/null and b/images/tango/32x32/status/network-error.png differ diff --git a/images/tango/32x32/status/network-idle.png b/images/tango/32x32/status/network-idle.png new file mode 100644 index 0000000..dca03af Binary files /dev/null and b/images/tango/32x32/status/network-idle.png differ diff --git a/images/tango/32x32/status/network-offline.png b/images/tango/32x32/status/network-offline.png new file mode 100644 index 0000000..428aaa5 Binary files /dev/null and b/images/tango/32x32/status/network-offline.png differ diff --git a/images/tango/32x32/status/network-receive.png b/images/tango/32x32/status/network-receive.png new file mode 100644 index 0000000..b149c5d Binary files /dev/null and b/images/tango/32x32/status/network-receive.png differ diff --git a/images/tango/32x32/status/network-transmit-receive.png b/images/tango/32x32/status/network-transmit-receive.png new file mode 100644 index 0000000..10ad0ac Binary files /dev/null and b/images/tango/32x32/status/network-transmit-receive.png differ diff --git a/images/tango/32x32/status/network-transmit.png b/images/tango/32x32/status/network-transmit.png new file mode 100644 index 0000000..aaa91b8 Binary files /dev/null and b/images/tango/32x32/status/network-transmit.png differ diff --git a/images/tango/32x32/status/network-wireless-encrypted.png b/images/tango/32x32/status/network-wireless-encrypted.png new file mode 100644 index 0000000..0d4e368 Binary files /dev/null and b/images/tango/32x32/status/network-wireless-encrypted.png differ diff --git a/images/tango/32x32/status/printer-error.png b/images/tango/32x32/status/printer-error.png new file mode 100644 index 0000000..a6aa460 Binary files /dev/null and b/images/tango/32x32/status/printer-error.png differ diff --git a/images/tango/32x32/status/software-update-available.png b/images/tango/32x32/status/software-update-available.png new file mode 100644 index 0000000..aadcb91 Binary files /dev/null and b/images/tango/32x32/status/software-update-available.png differ diff --git a/images/tango/32x32/status/software-update-urgent.png b/images/tango/32x32/status/software-update-urgent.png new file mode 100644 index 0000000..3d67d9e Binary files /dev/null and b/images/tango/32x32/status/software-update-urgent.png differ diff --git a/images/tango/32x32/status/user-trash-full.png b/images/tango/32x32/status/user-trash-full.png new file mode 100644 index 0000000..462ef39 Binary files /dev/null and b/images/tango/32x32/status/user-trash-full.png differ diff --git a/images/tango/32x32/status/weather-clear-night.png b/images/tango/32x32/status/weather-clear-night.png new file mode 100644 index 0000000..aa2714c Binary files /dev/null and b/images/tango/32x32/status/weather-clear-night.png differ diff --git a/images/tango/32x32/status/weather-clear.png b/images/tango/32x32/status/weather-clear.png new file mode 100644 index 0000000..c84e8d3 Binary files /dev/null and b/images/tango/32x32/status/weather-clear.png differ diff --git a/images/tango/32x32/status/weather-few-clouds-night.png b/images/tango/32x32/status/weather-few-clouds-night.png new file mode 100644 index 0000000..62e21d7 Binary files /dev/null and b/images/tango/32x32/status/weather-few-clouds-night.png differ diff --git a/images/tango/32x32/status/weather-few-clouds.png b/images/tango/32x32/status/weather-few-clouds.png new file mode 100644 index 0000000..8c14e0d Binary files /dev/null and b/images/tango/32x32/status/weather-few-clouds.png differ diff --git a/images/tango/32x32/status/weather-overcast.png b/images/tango/32x32/status/weather-overcast.png new file mode 100644 index 0000000..cc22e4c Binary files /dev/null and b/images/tango/32x32/status/weather-overcast.png differ diff --git a/images/tango/32x32/status/weather-severe-alert.png b/images/tango/32x32/status/weather-severe-alert.png new file mode 100644 index 0000000..fb75808 Binary files /dev/null and b/images/tango/32x32/status/weather-severe-alert.png differ diff --git a/images/tango/32x32/status/weather-showers-scattered.png b/images/tango/32x32/status/weather-showers-scattered.png new file mode 100644 index 0000000..6e85a7b Binary files /dev/null and b/images/tango/32x32/status/weather-showers-scattered.png differ diff --git a/images/tango/32x32/status/weather-showers.png b/images/tango/32x32/status/weather-showers.png new file mode 100644 index 0000000..0074348 Binary files /dev/null and b/images/tango/32x32/status/weather-showers.png differ diff --git a/images/tango/32x32/status/weather-snow.png b/images/tango/32x32/status/weather-snow.png new file mode 100644 index 0000000..fef6e4d Binary files /dev/null and b/images/tango/32x32/status/weather-snow.png differ diff --git a/images/tango/32x32/status/weather-storm.png b/images/tango/32x32/status/weather-storm.png new file mode 100644 index 0000000..8a7db96 Binary files /dev/null and b/images/tango/32x32/status/weather-storm.png differ diff --git a/images/tango/index.theme b/images/tango/index.theme new file mode 100644 index 0000000..45b1be8 --- /dev/null +++ b/images/tango/index.theme @@ -0,0 +1,14 @@ +[Icon Theme] +Name=tango +Comment=Original tango icons +Inherits=default +Directories=16x16,22x22,32x32 + +[16x16] +Size=16 + +[22x22] +Size=22 + +[32x32] +Size=32 diff --git a/main.cpp b/main.cpp index 025da0a..dfb12ae 100644 --- a/main.cpp +++ b/main.cpp @@ -2,10 +2,55 @@ #include +#include +#include +#include + +#include "csplashscreen.h" + + int main(int argc, char *argv[]) { QApplication a(argc, argv); - cMainWindow w; - w.show(); + + a.setApplicationVersion(APP_VERSION); + a.setApplicationDisplayName("pictureConvert"); + a.setOrganizationName("WIN-DESIGN"); + a.setOrganizationDomain("windesign.at"); + a.setApplicationName("pictureConvert"); + + QSettings settings; + + QFile f(":qdarkstyle/style.qss"); + if (!f.exists()) + { + printf("Unable to set stylesheet, file not found\n"); + } + else + { + f.open(QFile::ReadOnly | QFile::Text); + QTextStream ts(&f); + a.setStyleSheet(ts.readAll()); + } + + QPixmap pixmap(":/images/splash.png"); + QFont splashFont; + cSplashScreen* lpSplash = new cSplashScreen(pixmap, splashFont); + + lpSplash->show(); + a.processEvents(); + + lpSplash->showStatusMessage(QObject::tr("
initializing...")); + + cMainWindow w(lpSplash); + + if(settings.value("main/maximized").toBool()) + w.showMaximized(); + else + w.show(); + + lpSplash->finish(&w); + delete lpSplash; + return a.exec(); } diff --git a/pictureConvert.pro b/pictureConvert.pro index 2bb9ea2..c73aea4 100644 --- a/pictureConvert.pro +++ b/pictureConvert.pro @@ -1,14 +1,42 @@ -QT += core gui +VERSION = 0.0.1.0 +QMAKE_TARGET_COMPANY = WIN-DESIGN +QMAKE_TARGET_PRODUCT = pictureConvert +QMAKE_TARGET_DESCRIPTION = pictureConvert +QMAKE_TARGET_COPYRIGHT = (c) 2019 WIN-DESIGN + +QT += core gui sql multimedia concurrent greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 +win32-msvc* { + contains(QT_ARCH, i386) { + message("msvc 32-bit") + } else { + message("msvc 64-bit") + } +} + +win32-g++ { + message("mingw") + INCLUDEPATH += C:\dev\3rdParty\exiv2\include C:\dev\3rdParty\libraw + LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll -LC:\dev\3rdParty\libraw\lib -lraw -lws2_32 +} + +unix { + message("*nix") + LIBS += -lraw -lexiv2 +} + +QMAKE_CXXFLAGS += -DLIBRAW_NODLL -DLIBRAW_NOTHREADS + # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS +DEFINES += APP_VERSION=\\\"$$VERSION\\\" # You can also make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. @@ -16,16 +44,77 @@ DEFINES += QT_DEPRECATED_WARNINGS #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ + cexif.cpp \ + cexportdialog.cpp \ + cimage.cpp \ + csplashscreen.cpp \ + ctreeview.cpp \ main.cpp \ cmainwindow.cpp HEADERS += \ - cmainwindow.h + cexif.h \ + cexportdialog.h \ + cimage.h \ + csplashscreen.h \ + cmainwindow.h \ + common.h \ + ctreeview.h FORMS += \ + cexportdialog.ui \ cmainwindow.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target + +RESOURCES += \ + pictureconvert.qrc \ + qdarkstyle/style.qrc + +DISTFILES += \ + README.md \ + LICENSE \ + qdarkstyle/rc/branch_closed-on.png \ + qdarkstyle/rc/branch_closed.png \ + qdarkstyle/rc/branch_open-on.png \ + qdarkstyle/rc/branch_open.png \ + qdarkstyle/rc/checkbox_checked.png \ + qdarkstyle/rc/checkbox_checked_disabled.png \ + qdarkstyle/rc/checkbox_checked_focus.png \ + qdarkstyle/rc/checkbox_indeterminate.png \ + qdarkstyle/rc/checkbox_indeterminate_disabled.png \ + qdarkstyle/rc/checkbox_indeterminate_focus.png \ + qdarkstyle/rc/checkbox_unchecked.png \ + qdarkstyle/rc/checkbox_unchecked_disabled.png \ + qdarkstyle/rc/checkbox_unchecked_focus.png \ + qdarkstyle/rc/close-hover.png \ + qdarkstyle/rc/close-pressed.png \ + qdarkstyle/rc/close.png \ + qdarkstyle/rc/down_arrow.png \ + qdarkstyle/rc/down_arrow_disabled.png \ + qdarkstyle/rc/Hmovetoolbar.png \ + qdarkstyle/rc/Hsepartoolbar.png \ + qdarkstyle/rc/left_arrow.png \ + qdarkstyle/rc/left_arrow_disabled.png \ + qdarkstyle/rc/radio_checked.png \ + qdarkstyle/rc/radio_checked_disabled.png \ + qdarkstyle/rc/radio_checked_focus.png \ + qdarkstyle/rc/radio_unchecked.png \ + qdarkstyle/rc/radio_unchecked_disabled.png \ + qdarkstyle/rc/radio_unchecked_focus.png \ + qdarkstyle/rc/right_arrow.png \ + qdarkstyle/rc/right_arrow_disabled.png \ + qdarkstyle/rc/sizegrip.png \ + qdarkstyle/rc/stylesheet-branch-end.png \ + qdarkstyle/rc/stylesheet-branch-more.png \ + qdarkstyle/rc/stylesheet-vline.png \ + qdarkstyle/rc/transparent.png \ + qdarkstyle/rc/undock.png \ + qdarkstyle/rc/up_arrow.png \ + qdarkstyle/rc/up_arrow_disabled.png \ + qdarkstyle/rc/Vmovetoolbar.png \ + qdarkstyle/rc/Vsepartoolbar.png \ + qdarkstyle/style.qss diff --git a/pictureconvert.qrc b/pictureconvert.qrc new file mode 100644 index 0000000..1620458 --- /dev/null +++ b/pictureconvert.qrc @@ -0,0 +1,661 @@ + + + images/splash.png + + + images/tango/16x16/actions/address-book-new.png + images/tango/16x16/actions/appointment-new.png + images/tango/16x16/actions/bookmark-new.png + images/tango/16x16/actions/contact-new.png + images/tango/16x16/actions/document-new.png + images/tango/16x16/actions/document-open.png + images/tango/16x16/actions/document-print-preview.png + images/tango/16x16/actions/document-print.png + images/tango/16x16/actions/document-pdf.png + images/tango/16x16/actions/document-properties.png + images/tango/16x16/actions/document-revert.png + images/tango/16x16/actions/document-save-as.png + images/tango/16x16/actions/document-save.png + images/tango/16x16/actions/edit-clear.png + images/tango/16x16/actions/edit-copy.png + images/tango/16x16/actions/edit-cut.png + images/tango/16x16/actions/edit-delete.png + images/tango/16x16/actions/edit-find-replace.png + images/tango/16x16/actions/edit-find.png + images/tango/16x16/actions/edit-paste.png + images/tango/16x16/actions/edit-redo.png + images/tango/16x16/actions/edit-select-all.png + images/tango/16x16/actions/edit-undo.png + images/tango/16x16/actions/folder-new.png + images/tango/16x16/actions/format-indent-less.png + images/tango/16x16/actions/format-indent-more.png + images/tango/16x16/actions/format-justify-center.png + images/tango/16x16/actions/format-justify-fill.png + images/tango/16x16/actions/format-justify-left.png + images/tango/16x16/actions/format-justify-right.png + images/tango/16x16/actions/format-text-bold.png + images/tango/16x16/actions/format-text-italic.png + images/tango/16x16/actions/format-text-strikethrough.png + images/tango/16x16/actions/format-text-underline.png + images/tango/16x16/actions/go-bottom.png + images/tango/16x16/actions/go-down.png + images/tango/16x16/actions/go-first.png + images/tango/16x16/actions/go-home.png + images/tango/16x16/actions/go-jump.png + images/tango/16x16/actions/go-last.png + images/tango/16x16/actions/go-next.png + images/tango/16x16/actions/go-previous.png + images/tango/16x16/actions/go-top.png + images/tango/16x16/actions/go-up.png + images/tango/16x16/actions/list-add.png + images/tango/16x16/actions/list-remove.png + images/tango/16x16/actions/mail-forward.png + images/tango/16x16/actions/mail-mark-junk.png + images/tango/16x16/actions/mail-mark-not-junk.png + images/tango/16x16/actions/mail-message-new.png + images/tango/16x16/actions/mail-reply-all.png + images/tango/16x16/actions/mail-reply-sender.png + images/tango/16x16/actions/mail-send-receive.png + images/tango/16x16/actions/media-eject.png + images/tango/16x16/actions/media-playback-pause.png + images/tango/16x16/actions/media-playback-start.png + images/tango/16x16/actions/media-playback-stop.png + images/tango/16x16/actions/media-record.png + images/tango/16x16/actions/media-seek-backward.png + images/tango/16x16/actions/media-seek-forward.png + images/tango/16x16/actions/media-skip-backward.png + images/tango/16x16/actions/media-skip-forward.png + images/tango/16x16/actions/process-stop.png + images/tango/16x16/actions/system-lock-screen.png + images/tango/16x16/actions/system-log-out.png + images/tango/16x16/actions/system-search.png + images/tango/16x16/actions/system-shutdown.png + images/tango/16x16/actions/tab-new.png + images/tango/16x16/actions/view-fullscreen.png + images/tango/16x16/actions/view-refresh.png + images/tango/16x16/actions/window-new.png + images/tango/16x16/animations/process-working.png + images/tango/16x16/apps/accessories-calculator.png + images/tango/16x16/apps/accessories-character-map.png + images/tango/16x16/apps/accessories-text-editor.png + images/tango/16x16/apps/help-browser.png + images/tango/16x16/apps/internet-group-chat.png + images/tango/16x16/apps/internet-mail.png + images/tango/16x16/apps/internet-news-reader.png + images/tango/16x16/apps/internet-web-browser.png + images/tango/16x16/apps/office-calendar.png + images/tango/16x16/apps/preferences-desktop-accessibility.png + images/tango/16x16/apps/preferences-desktop-assistive-technology.png + images/tango/16x16/apps/preferences-desktop-font.png + images/tango/16x16/apps/preferences-desktop-keyboard-shortcuts.png + images/tango/16x16/apps/preferences-desktop-locale.png + images/tango/16x16/apps/preferences-desktop-multimedia.png + images/tango/16x16/apps/preferences-desktop-remote-desktop.png + images/tango/16x16/apps/preferences-desktop-screensaver.png + images/tango/16x16/apps/preferences-desktop-theme.png + images/tango/16x16/apps/preferences-desktop-wallpaper.png + images/tango/16x16/apps/preferences-system-network-proxy.png + images/tango/16x16/apps/preferences-system-session.png + images/tango/16x16/apps/preferences-system-windows.png + images/tango/16x16/apps/system-file-manager.png + images/tango/16x16/apps/system-installer.png + images/tango/16x16/apps/system-software-update.png + images/tango/16x16/apps/system-users.png + images/tango/16x16/apps/utilities-system-monitor.png + images/tango/16x16/apps/utilities-terminal.png + images/tango/16x16/categories/applications-accessories.png + images/tango/16x16/categories/applications-development.png + images/tango/16x16/categories/applications-games.png + images/tango/16x16/categories/applications-graphics.png + images/tango/16x16/categories/applications-internet.png + images/tango/16x16/categories/applications-multimedia.png + images/tango/16x16/categories/applications-office.png + images/tango/16x16/categories/applications-other.png + images/tango/16x16/categories/applications-system.png + images/tango/16x16/categories/preferences-desktop-peripherals.png + images/tango/16x16/categories/preferences-desktop.png + images/tango/16x16/categories/preferences-system.png + images/tango/16x16/devices/audio-card.png + images/tango/16x16/devices/audio-input-microphone.png + images/tango/16x16/devices/battery.png + images/tango/16x16/devices/camera-photo.png + images/tango/16x16/devices/camera-video.png + images/tango/16x16/devices/computer.png + images/tango/16x16/devices/drive-harddisk.png + images/tango/16x16/devices/drive-optical.png + images/tango/16x16/devices/drive-removable-media.png + images/tango/16x16/devices/input-gaming.png + images/tango/16x16/devices/input-keyboard.png + images/tango/16x16/devices/input-mouse.png + images/tango/16x16/devices/media-flash.png + images/tango/16x16/devices/media-floppy.png + images/tango/16x16/devices/media-optical.png + images/tango/16x16/devices/multimedia-player.png + images/tango/16x16/devices/network-wired.png + images/tango/16x16/devices/network-wireless.png + images/tango/16x16/devices/printer.png + images/tango/16x16/devices/video-display.png + images/tango/16x16/emblems/emblem-favorite.png + images/tango/16x16/emblems/emblem-important.png + images/tango/16x16/emblems/emblem-photos.png + images/tango/16x16/emblems/emblem-readonly.png + images/tango/16x16/emblems/emblem-symbolic-link.png + images/tango/16x16/emblems/emblem-system.png + images/tango/16x16/emblems/emblem-unreadable.png + images/tango/16x16/emotes/face-angel.png + images/tango/16x16/emotes/face-crying.png + images/tango/16x16/emotes/face-devilish.png + images/tango/16x16/emotes/face-glasses.png + images/tango/16x16/emotes/face-grin.png + images/tango/16x16/emotes/face-kiss.png + images/tango/16x16/emotes/face-monkey.png + images/tango/16x16/emotes/face-plain.png + images/tango/16x16/emotes/face-sad.png + images/tango/16x16/emotes/face-smile-big.png + images/tango/16x16/emotes/face-smile.png + images/tango/16x16/emotes/face-surprise.png + images/tango/16x16/emotes/face-wink.png + images/tango/16x16/mimetypes/application-certificate.png + images/tango/16x16/mimetypes/application-x-executable.png + images/tango/16x16/mimetypes/audio-x-generic.png + images/tango/16x16/mimetypes/font-x-generic.png + images/tango/16x16/mimetypes/image-x-generic.png + images/tango/16x16/mimetypes/package-x-generic.png + images/tango/16x16/mimetypes/text-html.png + images/tango/16x16/mimetypes/text-x-generic-template.png + images/tango/16x16/mimetypes/text-x-generic.png + images/tango/16x16/mimetypes/text-x-script.png + images/tango/16x16/mimetypes/video-x-generic.png + images/tango/16x16/mimetypes/x-office-address-book.png + images/tango/16x16/mimetypes/x-office-calendar.png + images/tango/16x16/mimetypes/x-office-document-template.png + images/tango/16x16/mimetypes/x-office-document.png + images/tango/16x16/mimetypes/x-office-drawing-template.png + images/tango/16x16/mimetypes/x-office-drawing.png + images/tango/16x16/mimetypes/x-office-presentation-template.png + images/tango/16x16/mimetypes/x-office-presentation.png + images/tango/16x16/mimetypes/x-office-spreadsheet-template.png + images/tango/16x16/mimetypes/x-office-spreadsheet.png + images/tango/16x16/places/folder-remote.png + images/tango/16x16/places/folder-saved-search.png + images/tango/16x16/places/folder.png + images/tango/16x16/places/network-server.png + images/tango/16x16/places/network-workgroup.png + images/tango/16x16/places/start-here.png + images/tango/16x16/places/user-desktop.png + images/tango/16x16/places/user-home.png + images/tango/16x16/places/user-trash.png + images/tango/16x16/status/audio-volume-high.png + images/tango/16x16/status/audio-volume-low.png + images/tango/16x16/status/audio-volume-medium.png + images/tango/16x16/status/audio-volume-muted.png + images/tango/16x16/status/battery-caution.png + images/tango/16x16/status/dialog-error.png + images/tango/16x16/status/dialog-information.png + images/tango/16x16/status/dialog-warning.png + images/tango/16x16/status/folder-drag-accept.png + images/tango/16x16/status/folder-open.png + images/tango/16x16/status/folder-visiting.png + images/tango/16x16/status/image-loading.png + images/tango/16x16/status/image-missing.png + images/tango/16x16/status/mail-attachment.png + images/tango/16x16/status/network-error.png + images/tango/16x16/status/network-idle.png + images/tango/16x16/status/network-offline.png + images/tango/16x16/status/network-receive.png + images/tango/16x16/status/network-transmit-receive.png + images/tango/16x16/status/network-transmit.png + images/tango/16x16/status/network-wireless-encrypted.png + images/tango/16x16/status/printer-error.png + images/tango/16x16/status/software-update-available.png + images/tango/16x16/status/software-update-urgent.png + images/tango/16x16/status/user-trash-full.png + images/tango/16x16/status/weather-clear-night.png + images/tango/16x16/status/weather-clear.png + images/tango/16x16/status/weather-few-clouds-night.png + images/tango/16x16/status/weather-few-clouds.png + images/tango/16x16/status/weather-overcast.png + images/tango/16x16/status/weather-severe-alert.png + images/tango/16x16/status/weather-showers-scattered.png + images/tango/16x16/status/weather-showers.png + images/tango/16x16/status/weather-snow.png + images/tango/16x16/status/weather-storm.png + images/tango/22x22/actions/address-book-new.png + images/tango/22x22/actions/appointment-new.png + images/tango/22x22/actions/bookmark-new.png + images/tango/22x22/actions/contact-new.png + images/tango/22x22/actions/document-new.png + images/tango/22x22/actions/document-open.png + images/tango/22x22/actions/document-print-preview.png + images/tango/22x22/actions/document-print.png + images/tango/22x22/actions/document-pdf.png + images/tango/22x22/actions/document-properties.png + images/tango/22x22/actions/document-revert.png + images/tango/22x22/actions/document-save-as.png + images/tango/22x22/actions/document-save.png + images/tango/22x22/actions/edit-clear.png + images/tango/22x22/actions/edit-copy.png + images/tango/22x22/actions/edit-cut.png + images/tango/22x22/actions/edit-delete.png + images/tango/22x22/actions/edit-find-replace.png + images/tango/22x22/actions/edit-find.png + images/tango/22x22/actions/edit-paste.png + images/tango/22x22/actions/edit-redo.png + images/tango/22x22/actions/edit-select-all.png + images/tango/22x22/actions/edit-undo.png + images/tango/22x22/actions/folder-new.png + images/tango/22x22/actions/format-indent-less.png + images/tango/22x22/actions/format-indent-more.png + images/tango/22x22/actions/format-justify-center.png + images/tango/22x22/actions/format-justify-fill.png + images/tango/22x22/actions/format-justify-left.png + images/tango/22x22/actions/format-justify-right.png + images/tango/22x22/actions/format-text-bold.png + images/tango/22x22/actions/format-text-italic.png + images/tango/22x22/actions/format-text-strikethrough.png + images/tango/22x22/actions/format-text-underline.png + images/tango/22x22/actions/go-bottom.png + images/tango/22x22/actions/go-down.png + images/tango/22x22/actions/go-first.png + images/tango/22x22/actions/go-home.png + images/tango/22x22/actions/go-jump.png + images/tango/22x22/actions/go-last.png + images/tango/22x22/actions/go-next.png + images/tango/22x22/actions/go-previous.png + images/tango/22x22/actions/go-top.png + images/tango/22x22/actions/go-up.png + images/tango/22x22/actions/list-add.png + images/tango/22x22/actions/list-remove.png + images/tango/22x22/actions/mail-forward.png + images/tango/22x22/actions/mail-mark-junk.png + images/tango/22x22/actions/mail-mark-not-junk.png + images/tango/22x22/actions/mail-message-new.png + images/tango/22x22/actions/mail-reply-all.png + images/tango/22x22/actions/mail-reply-sender.png + images/tango/22x22/actions/mail-send-receive.png + images/tango/22x22/actions/media-eject.png + images/tango/22x22/actions/media-playback-pause.png + images/tango/22x22/actions/media-playback-start.png + images/tango/22x22/actions/media-playback-stop.png + images/tango/22x22/actions/media-record.png + images/tango/22x22/actions/media-seek-backward.png + images/tango/22x22/actions/media-seek-forward.png + images/tango/22x22/actions/media-skip-backward.png + images/tango/22x22/actions/media-skip-forward.png + images/tango/22x22/actions/process-stop.png + images/tango/22x22/actions/system-lock-screen.png + images/tango/22x22/actions/system-log-out.png + images/tango/22x22/actions/system-search.png + images/tango/22x22/actions/system-shutdown.png + images/tango/22x22/actions/tab-new.png + images/tango/22x22/actions/view-fullscreen.png + images/tango/22x22/actions/view-refresh.png + images/tango/22x22/actions/window-new.png + images/tango/22x22/animations/process-working.png + images/tango/22x22/apps/accessories-calculator.png + images/tango/22x22/apps/accessories-character-map.png + images/tango/22x22/apps/accessories-text-editor.png + images/tango/22x22/apps/help-browser.png + images/tango/22x22/apps/internet-group-chat.png + images/tango/22x22/apps/internet-mail.png + images/tango/22x22/apps/internet-news-reader.png + images/tango/22x22/apps/internet-web-browser.png + images/tango/22x22/apps/office-calendar.png + images/tango/22x22/apps/preferences-desktop-accessibility.png + images/tango/22x22/apps/preferences-desktop-assistive-technology.png + images/tango/22x22/apps/preferences-desktop-font.png + images/tango/22x22/apps/preferences-desktop-keyboard-shortcuts.png + images/tango/22x22/apps/preferences-desktop-locale.png + images/tango/22x22/apps/preferences-desktop-multimedia.png + images/tango/22x22/apps/preferences-desktop-remote-desktop.png + images/tango/22x22/apps/preferences-desktop-screensaver.png + images/tango/22x22/apps/preferences-desktop-theme.png + images/tango/22x22/apps/preferences-desktop-wallpaper.png + images/tango/22x22/apps/preferences-system-network-proxy.png + images/tango/22x22/apps/preferences-system-session.png + images/tango/22x22/apps/preferences-system-windows.png + images/tango/22x22/apps/system-file-manager.png + images/tango/22x22/apps/system-installer.png + images/tango/22x22/apps/system-software-update.png + images/tango/22x22/apps/system-users.png + images/tango/22x22/apps/utilities-system-monitor.png + images/tango/22x22/apps/utilities-terminal.png + images/tango/22x22/categories/applications-accessories.png + images/tango/22x22/categories/applications-development.png + images/tango/22x22/categories/applications-games.png + images/tango/22x22/categories/applications-graphics.png + images/tango/22x22/categories/applications-internet.png + images/tango/22x22/categories/applications-multimedia.png + images/tango/22x22/categories/applications-office.png + images/tango/22x22/categories/applications-other.png + images/tango/22x22/categories/applications-system.png + images/tango/22x22/categories/preferences-desktop-peripherals.png + images/tango/22x22/categories/preferences-desktop.png + images/tango/22x22/categories/preferences-system.png + images/tango/22x22/devices/audio-card.png + images/tango/22x22/devices/audio-input-microphone.png + images/tango/22x22/devices/battery.png + images/tango/22x22/devices/camera-photo.png + images/tango/22x22/devices/camera-video.png + images/tango/22x22/devices/computer.png + images/tango/22x22/devices/drive-harddisk.png + images/tango/22x22/devices/drive-optical.png + images/tango/22x22/devices/drive-removable-media.png + images/tango/22x22/devices/input-gaming.png + images/tango/22x22/devices/input-keyboard.png + images/tango/22x22/devices/input-mouse.png + images/tango/22x22/devices/media-flash.png + images/tango/22x22/devices/media-floppy.png + images/tango/22x22/devices/media-optical.png + images/tango/22x22/devices/multimedia-player.png + images/tango/22x22/devices/network-wired.png + images/tango/22x22/devices/network-wireless.png + images/tango/22x22/devices/printer.png + images/tango/22x22/devices/video-display.png + images/tango/22x22/emblems/emblem-favorite.png + images/tango/22x22/emblems/emblem-important.png + images/tango/22x22/emblems/emblem-photos.png + images/tango/22x22/emblems/emblem-readonly.png + images/tango/22x22/emblems/emblem-symbolic-link.png + images/tango/22x22/emblems/emblem-system.png + images/tango/22x22/emblems/emblem-unreadable.png + images/tango/22x22/emotes/face-angel.png + images/tango/22x22/emotes/face-crying.png + images/tango/22x22/emotes/face-devilish.png + images/tango/22x22/emotes/face-glasses.png + images/tango/22x22/emotes/face-grin.png + images/tango/22x22/emotes/face-kiss.png + images/tango/22x22/emotes/face-monkey.png + images/tango/22x22/emotes/face-plain.png + images/tango/22x22/emotes/face-sad.png + images/tango/22x22/emotes/face-smile-big.png + images/tango/22x22/emotes/face-smile.png + images/tango/22x22/emotes/face-surprise.png + images/tango/22x22/emotes/face-wink.png + images/tango/22x22/mimetypes/application-certificate.png + images/tango/22x22/mimetypes/application-x-executable.png + images/tango/22x22/mimetypes/audio-x-generic.png + images/tango/22x22/mimetypes/font-x-generic.png + images/tango/22x22/mimetypes/image-x-generic.png + images/tango/22x22/mimetypes/package-x-generic.png + images/tango/22x22/mimetypes/text-html.png + images/tango/22x22/mimetypes/text-x-generic-template.png + images/tango/22x22/mimetypes/text-x-generic.png + images/tango/22x22/mimetypes/text-x-script.png + images/tango/22x22/mimetypes/video-x-generic.png + images/tango/22x22/mimetypes/x-office-address-book.png + images/tango/22x22/mimetypes/x-office-calendar.png + images/tango/22x22/mimetypes/x-office-document-template.png + images/tango/22x22/mimetypes/x-office-document.png + images/tango/22x22/mimetypes/x-office-drawing-template.png + images/tango/22x22/mimetypes/x-office-drawing.png + images/tango/22x22/mimetypes/x-office-presentation-template.png + images/tango/22x22/mimetypes/x-office-presentation.png + images/tango/22x22/mimetypes/x-office-spreadsheet-template.png + images/tango/22x22/mimetypes/x-office-spreadsheet.png + images/tango/22x22/places/folder-remote.png + images/tango/22x22/places/folder-saved-search.png + images/tango/22x22/places/folder.png + images/tango/22x22/places/network-server.png + images/tango/22x22/places/network-workgroup.png + images/tango/22x22/places/start-here.png + images/tango/22x22/places/user-desktop.png + images/tango/22x22/places/user-home.png + images/tango/22x22/places/user-trash.png + images/tango/22x22/status/audio-volume-high.png + images/tango/22x22/status/audio-volume-low.png + images/tango/22x22/status/audio-volume-medium.png + images/tango/22x22/status/audio-volume-muted.png + images/tango/22x22/status/battery-caution.png + images/tango/22x22/status/dialog-error.png + images/tango/22x22/status/dialog-information.png + images/tango/22x22/status/dialog-warning.png + images/tango/22x22/status/folder-drag-accept.png + images/tango/22x22/status/folder-open.png + images/tango/22x22/status/folder-visiting.png + images/tango/22x22/status/image-loading.png + images/tango/22x22/status/image-missing.png + images/tango/22x22/status/mail-attachment.png + images/tango/22x22/status/network-error.png + images/tango/22x22/status/network-idle.png + images/tango/22x22/status/network-offline.png + images/tango/22x22/status/network-receive.png + images/tango/22x22/status/network-transmit-receive.png + images/tango/22x22/status/network-transmit.png + images/tango/22x22/status/network-wireless-encrypted.png + images/tango/22x22/status/printer-error.png + images/tango/22x22/status/software-update-available.png + images/tango/22x22/status/software-update-urgent.png + images/tango/22x22/status/user-trash-full.png + images/tango/22x22/status/weather-clear-night.png + images/tango/22x22/status/weather-clear.png + images/tango/22x22/status/weather-few-clouds-night.png + images/tango/22x22/status/weather-few-clouds.png + images/tango/22x22/status/weather-overcast.png + images/tango/22x22/status/weather-severe-alert.png + images/tango/22x22/status/weather-showers-scattered.png + images/tango/22x22/status/weather-showers.png + images/tango/22x22/status/weather-snow.png + images/tango/22x22/status/weather-storm.png + images/tango/32x32/actions/address-book-new.png + images/tango/32x32/actions/appointment-new.png + images/tango/32x32/actions/bookmark-new.png + images/tango/32x32/actions/contact-new.png + images/tango/32x32/actions/document-new.png + images/tango/32x32/actions/document-open.png + images/tango/32x32/actions/document-print-preview.png + images/tango/32x32/actions/document-print.png + images/tango/32x32/actions/document-pdf.png + images/tango/32x32/actions/document-properties.png + images/tango/32x32/actions/document-revert.png + images/tango/32x32/actions/document-save-as.png + images/tango/32x32/actions/document-save.png + images/tango/32x32/actions/edit-clear.png + images/tango/32x32/actions/edit-copy.png + images/tango/32x32/actions/edit-cut.png + images/tango/32x32/actions/edit-delete.png + images/tango/32x32/actions/edit-find-replace.png + images/tango/32x32/actions/edit-find.png + images/tango/32x32/actions/edit-paste.png + images/tango/32x32/actions/edit-redo.png + images/tango/32x32/actions/edit-select-all.png + images/tango/32x32/actions/edit-undo.png + images/tango/32x32/actions/folder-new.png + images/tango/32x32/actions/format-indent-less.png + images/tango/32x32/actions/format-indent-more.png + images/tango/32x32/actions/format-justify-center.png + images/tango/32x32/actions/format-justify-fill.png + images/tango/32x32/actions/format-justify-left.png + images/tango/32x32/actions/format-justify-right.png + images/tango/32x32/actions/format-text-bold.png + images/tango/32x32/actions/format-text-italic.png + images/tango/32x32/actions/format-text-strikethrough.png + images/tango/32x32/actions/format-text-underline.png + images/tango/32x32/actions/go-bottom.png + images/tango/32x32/actions/go-down.png + images/tango/32x32/actions/go-first.png + images/tango/32x32/actions/go-home.png + images/tango/32x32/actions/go-jump.png + images/tango/32x32/actions/go-last.png + images/tango/32x32/actions/go-next.png + images/tango/32x32/actions/go-previous.png + images/tango/32x32/actions/go-top.png + images/tango/32x32/actions/go-up.png + images/tango/32x32/actions/list-add.png + images/tango/32x32/actions/list-remove.png + images/tango/32x32/actions/mail-forward.png + images/tango/32x32/actions/mail-mark-junk.png + images/tango/32x32/actions/mail-mark-not-junk.png + images/tango/32x32/actions/mail-message-new.png + images/tango/32x32/actions/mail-reply-all.png + images/tango/32x32/actions/mail-reply-sender.png + images/tango/32x32/actions/mail-send-receive.png + images/tango/32x32/actions/media-eject.png + images/tango/32x32/actions/media-playback-pause.png + images/tango/32x32/actions/media-playback-start.png + images/tango/32x32/actions/media-playback-stop.png + images/tango/32x32/actions/media-record.png + images/tango/32x32/actions/media-seek-backward.png + images/tango/32x32/actions/media-seek-forward.png + images/tango/32x32/actions/media-skip-backward.png + images/tango/32x32/actions/media-skip-forward.png + images/tango/32x32/actions/process-stop.png + images/tango/32x32/actions/system-lock-screen.png + images/tango/32x32/actions/system-log-out.png + images/tango/32x32/actions/system-search.png + images/tango/32x32/actions/system-shutdown.png + images/tango/32x32/actions/tab-new.png + images/tango/32x32/actions/view-fullscreen.png + images/tango/32x32/actions/view-refresh.png + images/tango/32x32/actions/window-new.png + images/tango/32x32/animations/process-working.png + images/tango/32x32/apps/accessories-calculator.png + images/tango/32x32/apps/accessories-character-map.png + images/tango/32x32/apps/accessories-text-editor.png + images/tango/32x32/apps/help-browser.png + images/tango/32x32/apps/internet-group-chat.png + images/tango/32x32/apps/internet-mail.png + images/tango/32x32/apps/internet-news-reader.png + images/tango/32x32/apps/internet-web-browser.png + images/tango/32x32/apps/office-calendar.png + images/tango/32x32/apps/preferences-desktop-accessibility.png + images/tango/32x32/apps/preferences-desktop-assistive-technology.png + images/tango/32x32/apps/preferences-desktop-font.png + images/tango/32x32/apps/preferences-desktop-keyboard-shortcuts.png + images/tango/32x32/apps/preferences-desktop-locale.png + images/tango/32x32/apps/preferences-desktop-multimedia.png + images/tango/32x32/apps/preferences-desktop-remote-desktop.png + images/tango/32x32/apps/preferences-desktop-screensaver.png + images/tango/32x32/apps/preferences-desktop-theme.png + images/tango/32x32/apps/preferences-desktop-wallpaper.png + images/tango/32x32/apps/preferences-system-network-proxy.png + images/tango/32x32/apps/preferences-system-session.png + images/tango/32x32/apps/preferences-system-windows.png + images/tango/32x32/apps/system-file-manager.png + images/tango/32x32/apps/system-installer.png + images/tango/32x32/apps/system-software-update.png + images/tango/32x32/apps/system-users.png + images/tango/32x32/apps/utilities-system-monitor.png + images/tango/32x32/apps/utilities-terminal.png + images/tango/32x32/categories/applications-accessories.png + images/tango/32x32/categories/applications-development.png + images/tango/32x32/categories/applications-games.png + images/tango/32x32/categories/applications-graphics.png + images/tango/32x32/categories/applications-internet.png + images/tango/32x32/categories/applications-multimedia.png + images/tango/32x32/categories/applications-office.png + images/tango/32x32/categories/applications-other.png + images/tango/32x32/categories/applications-system.png + images/tango/32x32/categories/preferences-desktop-peripherals.png + images/tango/32x32/categories/preferences-desktop.png + images/tango/32x32/categories/preferences-system.png + images/tango/32x32/devices/audio-card.png + images/tango/32x32/devices/audio-input-microphone.png + images/tango/32x32/devices/battery.png + images/tango/32x32/devices/camera-photo.png + images/tango/32x32/devices/camera-video.png + images/tango/32x32/devices/computer.png + images/tango/32x32/devices/drive-harddisk.png + images/tango/32x32/devices/drive-optical.png + images/tango/32x32/devices/drive-removable-media.png + images/tango/32x32/devices/input-gaming.png + images/tango/32x32/devices/input-keyboard.png + images/tango/32x32/devices/input-mouse.png + images/tango/32x32/devices/media-flash.png + images/tango/32x32/devices/media-floppy.png + images/tango/32x32/devices/media-optical.png + images/tango/32x32/devices/multimedia-player.png + images/tango/32x32/devices/network-wired.png + images/tango/32x32/devices/network-wireless.png + images/tango/32x32/devices/printer.png + images/tango/32x32/devices/video-display.png + images/tango/32x32/emblems/emblem-favorite.png + images/tango/32x32/emblems/emblem-important.png + images/tango/32x32/emblems/emblem-photos.png + images/tango/32x32/emblems/emblem-readonly.png + images/tango/32x32/emblems/emblem-symbolic-link.png + images/tango/32x32/emblems/emblem-system.png + images/tango/32x32/emblems/emblem-unreadable.png + images/tango/32x32/emotes/face-angel.png + images/tango/32x32/emotes/face-crying.png + images/tango/32x32/emotes/face-devilish.png + images/tango/32x32/emotes/face-glasses.png + images/tango/32x32/emotes/face-grin.png + images/tango/32x32/emotes/face-kiss.png + images/tango/32x32/emotes/face-monkey.png + images/tango/32x32/emotes/face-plain.png + images/tango/32x32/emotes/face-sad.png + images/tango/32x32/emotes/face-smile-big.png + images/tango/32x32/emotes/face-smile.png + images/tango/32x32/emotes/face-surprise.png + images/tango/32x32/emotes/face-wink.png + images/tango/32x32/mimetypes/application-certificate.png + images/tango/32x32/mimetypes/application-x-executable.png + images/tango/32x32/mimetypes/audio-x-generic.png + images/tango/32x32/mimetypes/font-x-generic.png + images/tango/32x32/mimetypes/image-x-generic.png + images/tango/32x32/mimetypes/package-x-generic.png + images/tango/32x32/mimetypes/text-html.png + images/tango/32x32/mimetypes/text-x-generic-template.png + images/tango/32x32/mimetypes/text-x-generic.png + images/tango/32x32/mimetypes/text-x-script.png + images/tango/32x32/mimetypes/video-x-generic.png + images/tango/32x32/mimetypes/x-office-address-book.png + images/tango/32x32/mimetypes/x-office-calendar.png + images/tango/32x32/mimetypes/x-office-document-template.png + images/tango/32x32/mimetypes/x-office-document.png + images/tango/32x32/mimetypes/x-office-drawing-template.png + images/tango/32x32/mimetypes/x-office-drawing.png + images/tango/32x32/mimetypes/x-office-presentation-template.png + images/tango/32x32/mimetypes/x-office-presentation.png + images/tango/32x32/mimetypes/x-office-spreadsheet-template.png + images/tango/32x32/mimetypes/x-office-spreadsheet.png + images/tango/32x32/places/folder-remote.png + images/tango/32x32/places/folder-saved-search.png + images/tango/32x32/places/folder.png + images/tango/32x32/places/network-server.png + images/tango/32x32/places/network-workgroup.png + images/tango/32x32/places/start-here.png + images/tango/32x32/places/user-desktop.png + images/tango/32x32/places/user-home.png + images/tango/32x32/places/user-trash.png + images/tango/32x32/status/audio-volume-high.png + images/tango/32x32/status/audio-volume-low.png + images/tango/32x32/status/audio-volume-medium.png + images/tango/32x32/status/audio-volume-muted.png + images/tango/32x32/status/battery-caution.png + images/tango/32x32/status/dialog-error.png + images/tango/32x32/status/dialog-information.png + images/tango/32x32/status/dialog-warning.png + images/tango/32x32/status/folder-drag-accept.png + images/tango/32x32/status/folder-open.png + images/tango/32x32/status/folder-visiting.png + images/tango/32x32/status/image-loading.png + images/tango/32x32/status/image-missing.png + images/tango/32x32/status/mail-attachment.png + images/tango/32x32/status/network-error.png + images/tango/32x32/status/network-idle.png + images/tango/32x32/status/network-offline.png + images/tango/32x32/status/network-receive.png + images/tango/32x32/status/network-transmit-receive.png + images/tango/32x32/status/network-transmit.png + images/tango/32x32/status/network-wireless-encrypted.png + images/tango/32x32/status/printer-error.png + images/tango/32x32/status/software-update-available.png + images/tango/32x32/status/software-update-urgent.png + images/tango/32x32/status/user-trash-full.png + images/tango/32x32/status/weather-clear-night.png + images/tango/32x32/status/weather-clear.png + images/tango/32x32/status/weather-few-clouds-night.png + images/tango/32x32/status/weather-few-clouds.png + images/tango/32x32/status/weather-overcast.png + images/tango/32x32/status/weather-severe-alert.png + images/tango/32x32/status/weather-showers-scattered.png + images/tango/32x32/status/weather-showers.png + images/tango/32x32/status/weather-snow.png + images/tango/32x32/status/weather-storm.png + images/tango/index.theme + + + + diff --git a/qdarkstyle/rc/Hmovetoolbar.png b/qdarkstyle/rc/Hmovetoolbar.png new file mode 100644 index 0000000..cead99e Binary files /dev/null and b/qdarkstyle/rc/Hmovetoolbar.png differ diff --git a/qdarkstyle/rc/Hsepartoolbar.png b/qdarkstyle/rc/Hsepartoolbar.png new file mode 100644 index 0000000..7f183c8 Binary files /dev/null and b/qdarkstyle/rc/Hsepartoolbar.png differ diff --git a/qdarkstyle/rc/Vmovetoolbar.png b/qdarkstyle/rc/Vmovetoolbar.png new file mode 100644 index 0000000..ac6a655 Binary files /dev/null and b/qdarkstyle/rc/Vmovetoolbar.png differ diff --git a/qdarkstyle/rc/Vsepartoolbar.png b/qdarkstyle/rc/Vsepartoolbar.png new file mode 100644 index 0000000..7bf62f1 Binary files /dev/null and b/qdarkstyle/rc/Vsepartoolbar.png differ diff --git a/qdarkstyle/rc/branch_closed-on.png b/qdarkstyle/rc/branch_closed-on.png new file mode 100644 index 0000000..d081e9b Binary files /dev/null and b/qdarkstyle/rc/branch_closed-on.png differ diff --git a/qdarkstyle/rc/branch_closed.png b/qdarkstyle/rc/branch_closed.png new file mode 100644 index 0000000..d652159 Binary files /dev/null and b/qdarkstyle/rc/branch_closed.png differ diff --git a/qdarkstyle/rc/branch_open-on.png b/qdarkstyle/rc/branch_open-on.png new file mode 100644 index 0000000..ec372b2 Binary files /dev/null and b/qdarkstyle/rc/branch_open-on.png differ diff --git a/qdarkstyle/rc/branch_open.png b/qdarkstyle/rc/branch_open.png new file mode 100644 index 0000000..66f8e1a Binary files /dev/null and b/qdarkstyle/rc/branch_open.png differ diff --git a/qdarkstyle/rc/checkbox_checked.png b/qdarkstyle/rc/checkbox_checked.png new file mode 100644 index 0000000..830cfee Binary files /dev/null and b/qdarkstyle/rc/checkbox_checked.png differ diff --git a/qdarkstyle/rc/checkbox_checked_disabled.png b/qdarkstyle/rc/checkbox_checked_disabled.png new file mode 100644 index 0000000..cb63cc2 Binary files /dev/null and b/qdarkstyle/rc/checkbox_checked_disabled.png differ diff --git a/qdarkstyle/rc/checkbox_checked_focus.png b/qdarkstyle/rc/checkbox_checked_focus.png new file mode 100644 index 0000000..671be27 Binary files /dev/null and b/qdarkstyle/rc/checkbox_checked_focus.png differ diff --git a/qdarkstyle/rc/checkbox_indeterminate.png b/qdarkstyle/rc/checkbox_indeterminate.png new file mode 100644 index 0000000..41024f7 Binary files /dev/null and b/qdarkstyle/rc/checkbox_indeterminate.png differ diff --git a/qdarkstyle/rc/checkbox_indeterminate_disabled.png b/qdarkstyle/rc/checkbox_indeterminate_disabled.png new file mode 100644 index 0000000..abdc01d Binary files /dev/null and b/qdarkstyle/rc/checkbox_indeterminate_disabled.png differ diff --git a/qdarkstyle/rc/checkbox_indeterminate_focus.png b/qdarkstyle/rc/checkbox_indeterminate_focus.png new file mode 100644 index 0000000..415f9b6 Binary files /dev/null and b/qdarkstyle/rc/checkbox_indeterminate_focus.png differ diff --git a/qdarkstyle/rc/checkbox_unchecked.png b/qdarkstyle/rc/checkbox_unchecked.png new file mode 100644 index 0000000..2159aca Binary files /dev/null and b/qdarkstyle/rc/checkbox_unchecked.png differ diff --git a/qdarkstyle/rc/checkbox_unchecked_disabled.png b/qdarkstyle/rc/checkbox_unchecked_disabled.png new file mode 100644 index 0000000..ade721e Binary files /dev/null and b/qdarkstyle/rc/checkbox_unchecked_disabled.png differ diff --git a/qdarkstyle/rc/checkbox_unchecked_focus.png b/qdarkstyle/rc/checkbox_unchecked_focus.png new file mode 100644 index 0000000..e4258cc Binary files /dev/null and b/qdarkstyle/rc/checkbox_unchecked_focus.png differ diff --git a/qdarkstyle/rc/close-hover.png b/qdarkstyle/rc/close-hover.png new file mode 100644 index 0000000..657943a Binary files /dev/null and b/qdarkstyle/rc/close-hover.png differ diff --git a/qdarkstyle/rc/close-pressed.png b/qdarkstyle/rc/close-pressed.png new file mode 100644 index 0000000..937d005 Binary files /dev/null and b/qdarkstyle/rc/close-pressed.png differ diff --git a/qdarkstyle/rc/close.png b/qdarkstyle/rc/close.png new file mode 100644 index 0000000..bc0f576 Binary files /dev/null and b/qdarkstyle/rc/close.png differ diff --git a/qdarkstyle/rc/down_arrow.png b/qdarkstyle/rc/down_arrow.png new file mode 100644 index 0000000..e271f7f Binary files /dev/null and b/qdarkstyle/rc/down_arrow.png differ diff --git a/qdarkstyle/rc/down_arrow_disabled.png b/qdarkstyle/rc/down_arrow_disabled.png new file mode 100644 index 0000000..5805d98 Binary files /dev/null and b/qdarkstyle/rc/down_arrow_disabled.png differ diff --git a/qdarkstyle/rc/left_arrow.png b/qdarkstyle/rc/left_arrow.png new file mode 100644 index 0000000..f808d2d Binary files /dev/null and b/qdarkstyle/rc/left_arrow.png differ diff --git a/qdarkstyle/rc/left_arrow_disabled.png b/qdarkstyle/rc/left_arrow_disabled.png new file mode 100644 index 0000000..f5b9af8 Binary files /dev/null and b/qdarkstyle/rc/left_arrow_disabled.png differ diff --git a/qdarkstyle/rc/radio_checked.png b/qdarkstyle/rc/radio_checked.png new file mode 100644 index 0000000..235e6b0 Binary files /dev/null and b/qdarkstyle/rc/radio_checked.png differ diff --git a/qdarkstyle/rc/radio_checked_disabled.png b/qdarkstyle/rc/radio_checked_disabled.png new file mode 100644 index 0000000..bf0051e Binary files /dev/null and b/qdarkstyle/rc/radio_checked_disabled.png differ diff --git a/qdarkstyle/rc/radio_checked_focus.png b/qdarkstyle/rc/radio_checked_focus.png new file mode 100644 index 0000000..700c6b5 Binary files /dev/null and b/qdarkstyle/rc/radio_checked_focus.png differ diff --git a/qdarkstyle/rc/radio_unchecked.png b/qdarkstyle/rc/radio_unchecked.png new file mode 100644 index 0000000..9a4def6 Binary files /dev/null and b/qdarkstyle/rc/radio_unchecked.png differ diff --git a/qdarkstyle/rc/radio_unchecked_disabled.png b/qdarkstyle/rc/radio_unchecked_disabled.png new file mode 100644 index 0000000..6ece890 Binary files /dev/null and b/qdarkstyle/rc/radio_unchecked_disabled.png differ diff --git a/qdarkstyle/rc/radio_unchecked_focus.png b/qdarkstyle/rc/radio_unchecked_focus.png new file mode 100644 index 0000000..564e022 Binary files /dev/null and b/qdarkstyle/rc/radio_unchecked_focus.png differ diff --git a/qdarkstyle/rc/right_arrow.png b/qdarkstyle/rc/right_arrow.png new file mode 100644 index 0000000..9b0a4e6 Binary files /dev/null and b/qdarkstyle/rc/right_arrow.png differ diff --git a/qdarkstyle/rc/right_arrow_disabled.png b/qdarkstyle/rc/right_arrow_disabled.png new file mode 100644 index 0000000..5c0bee4 Binary files /dev/null and b/qdarkstyle/rc/right_arrow_disabled.png differ diff --git a/qdarkstyle/rc/sizegrip.png b/qdarkstyle/rc/sizegrip.png new file mode 100644 index 0000000..350583a Binary files /dev/null and b/qdarkstyle/rc/sizegrip.png differ diff --git a/qdarkstyle/rc/stylesheet-branch-end.png b/qdarkstyle/rc/stylesheet-branch-end.png new file mode 100644 index 0000000..cb5d3b5 Binary files /dev/null and b/qdarkstyle/rc/stylesheet-branch-end.png differ diff --git a/qdarkstyle/rc/stylesheet-branch-more.png b/qdarkstyle/rc/stylesheet-branch-more.png new file mode 100644 index 0000000..6271140 Binary files /dev/null and b/qdarkstyle/rc/stylesheet-branch-more.png differ diff --git a/qdarkstyle/rc/stylesheet-vline.png b/qdarkstyle/rc/stylesheet-vline.png new file mode 100644 index 0000000..87536cc Binary files /dev/null and b/qdarkstyle/rc/stylesheet-vline.png differ diff --git a/qdarkstyle/rc/transparent.png b/qdarkstyle/rc/transparent.png new file mode 100644 index 0000000..483df25 Binary files /dev/null and b/qdarkstyle/rc/transparent.png differ diff --git a/qdarkstyle/rc/undock.png b/qdarkstyle/rc/undock.png new file mode 100644 index 0000000..88691d7 Binary files /dev/null and b/qdarkstyle/rc/undock.png differ diff --git a/qdarkstyle/rc/up_arrow.png b/qdarkstyle/rc/up_arrow.png new file mode 100644 index 0000000..abcc724 Binary files /dev/null and b/qdarkstyle/rc/up_arrow.png differ diff --git a/qdarkstyle/rc/up_arrow_disabled.png b/qdarkstyle/rc/up_arrow_disabled.png new file mode 100644 index 0000000..b9c8e3b Binary files /dev/null and b/qdarkstyle/rc/up_arrow_disabled.png differ diff --git a/qdarkstyle/style.qrc b/qdarkstyle/style.qrc new file mode 100644 index 0000000..ac14bc5 --- /dev/null +++ b/qdarkstyle/style.qrc @@ -0,0 +1,46 @@ + + + rc/up_arrow_disabled.png + rc/Hmovetoolbar.png + rc/stylesheet-branch-end.png + rc/branch_closed-on.png + rc/stylesheet-vline.png + rc/branch_closed.png + rc/branch_open-on.png + rc/transparent.png + rc/right_arrow_disabled.png + rc/sizegrip.png + rc/close.png + rc/close-hover.png + rc/close-pressed.png + rc/down_arrow.png + rc/Vmovetoolbar.png + rc/left_arrow.png + rc/stylesheet-branch-more.png + rc/up_arrow.png + rc/right_arrow.png + rc/left_arrow_disabled.png + rc/Hsepartoolbar.png + rc/branch_open.png + rc/Vsepartoolbar.png + rc/down_arrow_disabled.png + rc/undock.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_focus.png + rc/checkbox_checked.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked.png + rc/radio_checked_disabled.png + rc/radio_checked_focus.png + rc/radio_checked.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_focus.png + rc/radio_unchecked.png + + + style.qss + + diff --git a/qdarkstyle/style.qss b/qdarkstyle/style.qss new file mode 100644 index 0000000..c2db066 --- /dev/null +++ b/qdarkstyle/style.qss @@ -0,0 +1,1894 @@ +/* QDarkStyleSheet -------------------------------------------------------- + +This is the main style sheet, the palette has nine main colors. +It is based on three selecting colors, three greyish (background) colors +plus three whitish (foreground) colors. Each set of widgets of the same +type have a header like this: + + ------------------ + GroupName -------- + ------------------ + +And each widget is separated with a header like this: + + QWidgetName ------ + +This makes more easy to find and change some css field. The basic +configuration is described bellow. + + SELECTION ------------ + + sel_light #179AE0 #148CD2 (selection/hover/active) + sel_normal #3375A3 #1464A0 (selected) + sel_dark #18465D #14506E (selected disabled) + + FOREGROUND ----------- + + for_light #EFF0F1 #F0F0F0 (texts/labels) + for_dark #505F69 #787878 (disabled texts) + + BACKGROUND ----------- + + bac_light #4D545B #505F69 (unpressed) + bac_normal #31363B #32414B (border, disabled, pressed, checked, toolbars, menus) + bac_dark #232629 #19232D (background) + +If a stranger configuration is required because of a bugfix or anything +else, keep the comment on that line to nobodys changed it, including the +issue number. +--------------------------------------------------------------------------- */ + + + +/* QWidget ---------------------------------------------------------------- */ + +QWidget { + background-color: #19232D; + border: 0px solid #32414B; + padding: 0px; + color: #F0F0F0; + selection-background-color: #1464A0; + selection-color: #F0F0F0; +} + +QWidget:disabled { + background-color: #19232D; + color: #787878; + selection-background-color: #14506E; + selection-color: #787878; +} + +QWidget:item:selected { + background-color: #1464A0; +} + +QWidget:item:hover { + background-color: #148CD2; + color: #32414B; +} + +/* QMainWindow ------------------------------------------------------------ */ +/* This adjusts the splitter in the dock widget, not qsplitter */ + + +QMainWindow::separator { + background-color: #32414B; + border: 0 solid #19232D; + spacing: 0; + padding: 2px; +} + +QMainWindow::separator:hover { + background-color: #505F69; + border: 0px solid #148CD2; +} + +QMainWindow::separator:horizontal { + width: 5px; + margin-top: 2px; + margin-bottom: 2px; + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QMainWindow::separator:vertical { + height: 5px; + margin-left: 2px; + margin-right: 2px; + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + +/* QToolTip --------------------------------------------------------------- */ + +QToolTip { + background-color: #148CD2; + border: 1px solid #19232D; + color: #19232D; + padding: 0; /*remove padding, for fix combo box tooltip*/ + opacity: 230; /*reducing transparency to read better*/ +} + +/* QStatusBar ------------------------------------------------------------- */ + +QStatusBar { + border: 1px solid #32414B; +} + +QStatusBar QToolTip { + background-color: #148CD2; + border: 1px solid #19232D; + color: #19232D; + padding: 0; /*remove padding, for fix combo box tooltip*/ + opacity: 230; /*reducing transparency to read better*/ +} + +/* QCheckBox -------------------------------------------------------------- */ + +QCheckBox { + background-color: #19232D; + color: #F0F0F0; + spacing: 4px; + outline: none; + padding-top: 4px; + padding-bottom: 4px; +} + +QCheckBox:focus { + border: none; +} + +QCheckBox QWidget:disabled { + background-color: #19232D; + color: #787878; +} + +QCheckBox::indicator { + margin-left: 4px; + width: 16px; + height: 16px; +} + +QCheckBox::indicator:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:hover, +QCheckBox::indicator:unchecked:focus, +QCheckBox::indicator:unchecked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QCheckBox::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +QCheckBox::indicator:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QCheckBox::indicator:checked:hover, +QCheckBox::indicator:checked:focus, +QCheckBox::indicator:checked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QCheckBox::indicator:checked:disabled{ + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +QCheckBox::indicator:indeterminate { + image: url(:/qss_icons/rc/checkbox_indeterminate.png); +} + +QCheckBox::indicator:indeterminate:disabled { + image: url(:/qss_icons/rc/checkbox_indeterminate_disabled.png); +} + +QCheckBox::indicator:indeterminate:focus, +QCheckBox::indicator:indeterminate:hover, +QCheckBox::indicator:indeterminate:pressed { + image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); +} + +/* QGroupBox -------------------------------------------------------------- */ + +QGroupBox { + font-weight: bold; + border: 1px solid #32414B; + border-radius: 4px; + padding: 4px; + margin-top: 16px; +} + + + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left: 3px; + padding-left: 3px; + padding-right: 5px; + padding-top: 8px; + padding-bottom: 16px; +} + +QGroupBox::indicator { + margin-left: 4px; + width: 16px; + height: 16px; +} + +QGroupBox::indicator { + margin-left: 2px; +} + +QGroupBox::indicator:unchecked:hover, +QGroupBox::indicator:unchecked:focus, +QGroupBox::indicator:unchecked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QGroupBox::indicator:checked:hover, +QGroupBox::indicator:checked:focus, +QGroupBox::indicator:checked:pressed { + border: none; + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QGroupBox::indicator:checked:disabled { + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +QGroupBox::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +/* QRadioButton ----------------------------------------------------------- */ + +QRadioButton { + background-color: #19232D; + color: #F0F0F0; + spacing: 0; + padding: 0; + border: none; + outline: none; +} + +QRadioButton:focus { + border: none; +} + +QRadioButton:disabled { + background-color: #19232D; + color: #787878; + border: none; + outline: none; +} + +QRadioButton QWidget { + background-color: #19232D; + color: #F0F0F0; + spacing: 0px; + padding: 0px; + outline: none; + border: none; +} + +QRadioButton::indicator { + border: none; + outline: none; + margin-bottom: 2px; + width: 25px; + height: 25px; +} + +QRadioButton::indicator:unchecked { + image: url(:/qss_icons/rc/radio_unchecked.png); +} + +QRadioButton::indicator:unchecked:hover, +QRadioButton::indicator:unchecked:focus, +QRadioButton::indicator:unchecked:pressed { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_unchecked_focus.png); +} + +QRadioButton::indicator:checked { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_checked.png); +} + +QRadioButton::indicator:checked:hover, +QRadioButton::indicator:checked:focus, +QRadioButton::indicator:checked:pressed { + border: none; + outline: none; + image: url(:/qss_icons/rc/radio_checked_focus.png); +} + +QRadioButton::indicator:checked:disabled { + outline: none; + image: url(:/qss_icons/rc/radio_checked_disabled.png); +} + +QRadioButton::indicator:unchecked:disabled { + image: url(:/qss_icons/rc/radio_unchecked_disabled.png); +} + +/* QMenuBar --------------------------------------------------------------- */ + +QMenuBar { + background-color: #32414B; + padding: 2px; + border: 1px solid #19232D; + color: #F0F0F0; +} + +QMenuBar:focus { + border: 1px solid #148CD2; +} + +QMenuBar::item { + background: transparent; + padding: 4px; +} + +QMenuBar::item:selected { + padding: 4px; + background: transparent; + border: 0px solid #32414B; +} + +QMenuBar::item:pressed { + padding: 4px; + border: 0px solid #32414B; + background-color: #148CD2; + color: #F0F0F0; + margin-bottom: 0px; + padding-bottom: 0px; +} + +/* QMenu ------------------------------------------------------------------ */ + +QMenu { + border: 0px solid #32414B; + color: #F0F0F0; + margin: 0px; +} + +QMenu::separator { + height: 2px; + background-color: #505F69; + color: #F0F0F0; + padding-left: 4px; + margin-left: 2px; + margin-right: 2px; +} + +QMenu::icon { + margin: 0px; + padding-left:4px; +} + +QMenu::item { + padding: 4px 24px 4px 24px; + border: 1px transparent #32414B; /* reserve space for selection border */ +} + +QMenu::item:selected { + color: #F0F0F0; +} + + + +QMenu::indicator { + width: 12px; + height: 12px; + padding-left:6px; +} + +/* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:non-exclusive:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QMenu::indicator:non-exclusive:unchecked:selected { + image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png); +} + +QMenu::indicator:non-exclusive:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QMenu::indicator:non-exclusive:checked:selected { + image: url(:/qss_icons/rc/checkbox_checked_disabled.png); +} + +/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ + +QMenu::indicator:exclusive:unchecked { + image: url(:/qss_icons/rc/radio_unchecked.png); +} + +QMenu::indicator:exclusive:unchecked:selected { + image: url(:/qss_icons/rc/radio_unchecked_disabled.png); +} + +QMenu::indicator:exclusive:checked { + image: url(:/qss_icons/rc/radio_checked.png); +} + +QMenu::indicator:exclusive:checked:selected { + image: url(:/qss_icons/rc/radio_checked_disabled.png); +} + +QMenu::right-arrow { + margin: 5px; + image: url(:/qss_icons/rc/right_arrow.png) +} + +/* QAbstractItemView ------------------------------------------------------ */ + +QAbstractItemView { + alternate-background-color: #19232D; + color: #F0F0F0; + border: 1px solid #32414B; + border-radius: 4px; +} + +QAbstractItemView QLineEdit { + padding: 2px; +} + +/* QAbstractScrollArea ---------------------------------------------------- */ + +QAbstractScrollArea { + background-color: #19232D; + border: 1px solid #32414B; + border-radius: 4px; + padding: 4px; + color: #F0F0F0; +} + +QAbstractScrollArea:disabled { + color: #787878; +} + +/* QScrollArea ------------------------------------------------------------ */ + +QScrollArea QWidget QWidget:disabled { + background-color: #19232D; +} + +/* QScrollBar ------------------------------------------------------------- */ + +QScrollBar:horizontal { + height: 16px; + margin: 2px 16px 2px 16px; + border: 1px solid #32414B; + border-radius: 4px; + background-color: #19232D; +} + +QScrollBar::handle:horizontal { + background-color: #787878; + border: 1px solid #32414B; + border-radius: 4px; + min-width: 8px; + +} + +QScrollBar::handle:horizontal:hover { + background-color: #148CD2; + border: 1px solid #148CD2; + border-radius: 4px; + min-width: 8px; +} + +QScrollBar::add-line:horizontal { + margin: 0px 0px 0px 0px; + border-image: url(:/qss_icons/rc/right_arrow_disabled.png); + width: 10px; + height: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal { + margin: 0px 3px 0px 3px; + border-image: url(:/qss_icons/rc/left_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::add-line:horizontal:hover, +QScrollBar::add-line:horizontal:on { + border-image: url(:/qss_icons/rc/right_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: right; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:horizontal:hover, +QScrollBar::sub-line:horizontal:on { + border-image: url(:/qss_icons/rc/left_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: left; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:horizontal, +QScrollBar::down-arrow:horizontal { + background: none; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background: none; +} + +QScrollBar:vertical { + background-color: #19232D; + width: 16px; + margin: 16px 2px 16px 2px; + border: 1px solid #32414B; + border-radius: 4px; +} + +QScrollBar::handle:vertical { + background-color: #787878; + border: 1px solid #32414B; + min-height: 8px; + border-radius: 4px; +} + +QScrollBar::handle:vertical:hover { + background-color: #148CD2; + border: 1px solid #148CD2; + border-radius: 4px; + min-height: 8px; + +} + +QScrollBar::sub-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(:/qss_icons/rc/up_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical { + margin: 3px 0px 3px 0px; + border-image: url(:/qss_icons/rc/down_arrow_disabled.png); + height: 10px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::sub-line:vertical:hover, +QScrollBar::sub-line:vertical:on { + border-image: url(:/qss_icons/rc/up_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: top; + subcontrol-origin: margin; +} + +QScrollBar::add-line:vertical:hover, +QScrollBar::add-line:vertical:on { + border-image: url(:/qss_icons/rc/down_arrow.png); + height: 10px; + width: 10px; + subcontrol-position: bottom; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, +QScrollBar::down-arrow:vertical { + background: none; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background: none; +} + +/* QTextEdit--------------------------------------------------------------- */ + +QTextEdit { + background-color: #19232D; + color: #F0F0F0; + border: 1px solid #32414B; +} + +QTextEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QTextEdit:selected { + background: #1464A0; + color: #32414B; +} + +/* QPlainTextEdit --------------------------------------------------------- */ + +QPlainTextEdit { + background-color: #19232D; + color: #F0F0F0; + border-radius: 4px; + border: 1px solid #32414B; +} + +QPlainTextEdit:hover { + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPlainTextEdit:selected { + background: #1464A0; + color: #32414B; +} + +/* QSizeGrip --------------------------------------------------------------- */ + +QSizeGrip { + image: url(:/qss_icons/rc/sizegrip.png); + width: 12px; + height: 12px; +} + +/* QStackedWidget --------------------------------------------------------- */ + +QStackedWidget { + padding: 4px; + border: 1px solid #32414B; + border: 1px solid #19232D; +} + +/* QToolBar --------------------------------------------------------------- */ + +QToolBar { + background-color: #32414B; + border-bottom: 1px solid #19232D; + padding: 2px; + font-weight: bold; +} + +QToolBar QToolButton{ + background-color: #32414B; +} + +QToolBar::handle:horizontal { + width: 6px; + image: url(:/qss_icons/rc/Hmovetoolbar.png); +} + +QToolBar::handle:vertical { + height: 6px; + image: url(:/qss_icons/rc/Vmovetoolbar.png); +} + +QToolBar::separator:horizontal { + width: 3px; + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + +QToolBar::separator:vertical { + height: 3px; + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QToolButton#qt_toolbar_ext_button { + background: #32414B; + border: 0px; + color: #F0F0F0; + image: url(:/qss_icons/rc/right_arrow.png); +} + +/* QAbstractSpinBox ------------------------------------------------------- */ + +QAbstractSpinBox { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + padding-top: 2px; /* This fix 103, 111*/ + padding-bottom: 2px; /* This fix 103, 111*/ + padding-left: 4px; + padding-right: 4px; + border-radius: 4px; + /* min-width: 5px; removed to fix 109 */ +} + +QAbstractSpinBox:up-button { + background-color: transparent #19232D; + subcontrol-origin: border; + subcontrol-position: top right; + border-left: 1px solid #32414B; + margin: 1px; +} + +QAbstractSpinBox::up-arrow, +QAbstractSpinBox::up-arrow:disabled, +QAbstractSpinBox::up-arrow:off { + image: url(:/qss_icons/rc/up_arrow_disabled.png); + width: 9px; + height: 9px; +} + +QAbstractSpinBox::up-arrow:hover { + image: url(:/qss_icons/rc/up_arrow.png); +} + +QAbstractSpinBox:down-button { + background-color: transparent #19232D; + subcontrol-origin: border; + subcontrol-position: bottom right; + border-left: 1px solid #32414B; + margin: 1px; +} + +QAbstractSpinBox::down-arrow, +QAbstractSpinBox::down-arrow:disabled, +QAbstractSpinBox::down-arrow:off { + image: url(:/qss_icons/rc/down_arrow_disabled.png); + width: 9px; + height: 9px; +} + +QAbstractSpinBox::down-arrow:hover { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QAbstractSpinBox:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QAbstractSpinBox:selected { + background: #1464A0; + color: #32414B; +} + +/* ------------------------------------------------------------------------ */ +/* DISPLAYS --------------------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ + +/* QLabel ----------------------------------------------------------------- */ + +QLabel { + background-color: #19232D; + border: 0px solid #32414B; + padding: 2px; + margin: 0px; + color: #F0F0F0 +} + +QLabel::disabled { + background-color: #19232D; + border: 0px solid #32414B; + color: #787878; +} + +/* QTextBrowser ----------------------------------------------------------- */ + +QTextBrowser { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; +} + +QTextBrowser:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; +} + +QTextBrowser:hover, +QTextBrowser:!hover, +QTextBrowser::selected, +QTextBrowser::pressed { + border: 1px solid #32414B; +} + +/* QGraphicsView --------------------------------------------------------- */ + +QGraphicsView { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; +} + +QGraphicsView:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; +} + +QGraphicsView:hover, +QGraphicsView:!hover, +QGraphicsView::selected, +QGraphicsView::pressed { + border: 1px solid #32414B; +} + +/* QCalendarWidget -------------------------------------------------------- */ + +QCalendarWidget { + border: 1px solid #32414B; + border-radius: 4px; +} + +QCalendarWidget:disabled { + background-color: #19232D; + color: #787878; +} + +/* QLCDNumber ------------------------------------------------------------- */ + +QLCDNumber { + background-color: #19232D; + color: #F0F0F0; +} + +QLCDNumber:disabled { + background-color: #19232D; + color: #787878; +} + +/* QProgressBar ----------------------------------------------------------- */ + +QProgressBar { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + text-align: center; +} + +QProgressBar:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + text-align: center; +} + +QProgressBar::chunk { + background-color: #1464A0; + color: #19232D; + border-radius: 4px; +} + +QProgressBar::chunk:disabled { + background-color: #14506E; + color: #787878; + border-radius: 4px; +} + + +/* ------------------------------------------------------------------------ */ +/* BUTTONS ---------------------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ + +/* QPushButton ------------------------------------------------------------ */ + +QPushButton { + background-color: #505F69 ; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton:disabled { + background-color: #32414B; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + padding: 3px; +} + + +QPushButton:checked { + background-color: #32414B; + border: 1px solid #32414B; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton:checked:disabled { + background-color: #19232D; + border: 1px solid #32414B; + color: #787878; + border-radius: 4px; + padding: 3px; + outline: none; +} + +QPushButton::menu-indicator { + subcontrol-origin: padding; + subcontrol-position: bottom right; + bottom: 4px; +} + +QPushButton:pressed { + background-color: #19232D; + border: 1px solid #19232D; +} + +QPushButton:hover, +QPushButton:checked:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QPushButton:selected, +QPushButton:checked:selected{ + background: #1464A0; + color: #32414B; +} + +/* QToolButton ------------------------------------------------------------ */ + +QToolButton { + background-color: transparent; + border: 1px solid #32414B; + border-radius: 4px; + margin: 0px; + padding: 2px; +} + +QToolButton:checked { + background-color: #19232D; + border: 1px solid #19232D; +} + +QToolButton:disabled { + border: 1px solid #32414B; +} + +QToolButton:hover, +QToolButton:checked:hover{ + border: 1px solid #148CD2; +} + +/* the subcontrols below are used only in the MenuButtonPopup mode */ + +QToolButton[popupMode="1"] { + padding: 2px; + padding-right: 12px; /* only for MenuButtonPopup */ + border: 1px solid #32414B; /* make way for the popup button */ + border-radius: 4px; +} + +/* The subcontrol below is used only in the InstantPopup or DelayedPopup mode */ + +QToolButton[popupMode="2"] { + padding: 2px; + padding-right: 12px; /* only for InstantPopup */ + border: 1px solid #32414B; /* make way for the popup button */ +} + +QToolButton::menu-button { + padding: 2px; + border-radius: 4px; + border: 1px solid #32414B; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + /* 16px width + 4px for border = 20px allocated above */ + width: 16px; + outline: none; +} + +QToolButton::menu-button:hover, +QToolButton::menu-button:checked:hover { + border: 1px solid #148CD2; +} + +QToolButton::menu-indicator { + image: url(:/qss_icons/rc/down_arrow.png); + top: -8px; /* shift it a bit */ + left: -4px; /* shift it a bit */ +} + +QToolButton::menu-arrow { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QToolButton::menu-arrow:open { + border: 1px solid #32414B; +} + +/* QCommandLinkButton ----------------------------------------------------- */ + +QCommandLinkButton { + background-color: transparent; + border: 1px solid #32414B; + color: #F0F0F0; + border-radius: 4px; + padding: 0px; + margin: 0px; +} + +QCommandLinkButton:disabled { + background-color: transparent; + color: #787878; +} + +/* ------------------------------------------------------------------------ */ +/* INPUTS - NO FIELDS ----------------------------------------------------- */ +/* ------------------------------------------------------------------------ */ + +/* QCombobox -------------------------------------------------------------- */ + +QComboBox { + border: 1px solid #32414B; + border-radius: 4px; + selection-background-color: #1464A0; + padding-top: 2px; /* This fix #103, #111*/ + padding-bottom: 2px; /* This fix #103, #111*/ + padding-left: 4px; + padding-right: 4px; + /* min-width: 75px; removed to fix 109 */ +} + +QComboBox:disabled { + background-color: #19232D; + color: #787878; +} + +QComboBox:hover{ + border: 1px solid #148CD2; +} + +QComboBox:on { + selection-background-color: #19232D; +} + +QComboBox QAbstractItemView { + background-color: #19232D; + border-radius: 4px; + border: 1px solid #32414B; + selection-color: #148CD2; + selection-background-color: #32414B; +} + +QComboBox::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border-left-width: 0px; + border-left-color: #32414B; + border-left-style: solid; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QComboBox::down-arrow { + image: url(:/qss_icons/rc/down_arrow_disabled.png); +} + +QComboBox::down-arrow:on, +QComboBox::down-arrow:hover, +QComboBox::down-arrow:focus { + image: url(:/qss_icons/rc/down_arrow.png); +} + +/* QSlider ---------------------------------------------------------------- */ + +QSlider:disabled { + background: #19232D; +} + +QSlider:focus { + border: none; +} + +QSlider::groove:horizontal { + background: #32414B; + border: 1px solid #32414B; + height: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:horizontal { + background: #1464A0; + border: 1px solid #32414B; + height: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:horizontal:disabled { + background: #14506E; +} + +QSlider::handle:horizontal { + background: #787878; + border: 1px solid #32414B; + width: 8px; + height: 8px; + margin: -8px 0; + border-radius: 4px; +} + +QSlider::handle:horizontal:hover { + background: #148CD2; + border: 1px solid #148CD2; +} + +QSlider::groove:vertical { + background: #32414B; + border: 1px solid #32414B; + width: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:vertical { + background: #1464A0; + border: 1px solid #32414B; + width: 4px; + margin: 0px; + border-radius: 4px; +} + +QSlider::sub-page:vertical:disabled { + background: #14506E; +} + +QSlider::handle:vertical { + background: #787878; + border: 1px solid #32414B; + width: 8px; + height: 8px; + margin: 0 -8px; + border-radius: 4px; +} + +QSlider::handle:vertical:hover { + background: #148CD2; + border: 1px solid #148CD2; +} + +/* QLine ------------------------------------------------------------------ */ + +QLineEdit { + background-color: #19232D; + padding-top: 2px; /* This QLineEdit fix 103, 111 */ + padding-bottom: 2px; /* This QLineEdit fix 103, 111 */ + padding-left: 4px; + padding-right: 4px; + border-style: solid; + border: 1px solid #32414B; + border-radius: 4px; + color: #F0F0F0; +} + +QLineEdit:disabled { + background-color: #19232D; + color: #787878; +} + +QLineEdit:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QLineEdit:selected{ + background: #1464A0; + color: #32414B; +} + +/* QTabWiget -------------------------------------------------------------- */ + +QTabWidget { + padding: 2px; + selection-background-color: #32414B; +} + +QTabWidget QFrame{ + border: 0; +} + +QTabWidget::pane { + border: 1px solid #32414B; + border-radius: 4px; + padding: 2px; + margin: 0px; +} + +QTabWidget::pane:selected { + background-color: #32414B; + border: 1px solid #1464A0; +} + +/* QTabBar ---------------------------------------------------------------- */ + +QTabBar { + qproperty-drawBase: 0; + border-radius: 4px; + margin: 0px; + padding: 2px; + border: 0; + + /* left: 5px; move to the right by 5px - removed for fix */ + } + +QTabBar::close-button { + border: 0; + margin: 2px; + padding: 0; + image: url(:/qss_icons/rc/close.png); +} + +QTabBar::close-button:hover { + image: url(:/qss_icons/rc/close-hover.png); +} + +QTabBar::close-button:pressed { + image: url(:/qss_icons/rc/close-pressed.png); +} + +/* QTabBar::tab - selected ----------------------------------------------- */ + +QTabBar::tab:top:selected:disabled { + border-bottom: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:bottom:selected:disabled { + border-top: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:left:selected:disabled { + border-left: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +QTabBar::tab:right:selected:disabled { + border-right: 3px solid #14506E; + color: #787878; + background-color: #32414B; +} + +/* QTabBar::tab - !selected and disabled ---------------------------------- */ + +QTabBar::tab:top:!selected:disabled { + border-bottom: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:bottom:!selected:disabled { + border-top: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:left:!selected:disabled { + border-right: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +QTabBar::tab:right:!selected:disabled { + border-left: 3px solid #19232D; + color: #787878; + background-color: #19232D; +} + +/* QTabBar::tab - selected ----------------------------------------------- */ + +QTabBar::tab:top:!selected { + border-bottom: 2px solid #19232D; + margin-top: 2px; +} + +QTabBar::tab:bottom:!selected { + border-top: 2px solid #19232D; + margin-bottom: 3px; +} + +QTabBar::tab:left:!selected { + border-left: 2px solid #19232D; + margin-right: 2px; +} + +QTabBar::tab:right:!selected { + border-right: 2px solid #19232D; + margin-left: 2px; +} + + +QTabBar::tab:top { + background-color: #32414B; + color: #F0F0F0; + margin-left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; + min-width: 5px; + border-bottom: 3px solid #32414B; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +QTabBar::tab:top:selected { + background-color: #505F69; + color: #F0F0F0; + border-bottom: 3px solid #1464A0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +QTabBar::tab:top:!selected:hover { + border: 1px solid #148CD2; + border-bottom: 3px solid #148CD2; +} + +QTabBar::tab:bottom { + color: #F0F0F0; + border-top: 3px solid #32414B; + background-color: #32414B; + margin-left: 2px; + padding-left: 4px; + padding-right: 4px; + padding-top: 2px; + padding-bottom: 2px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + min-width: 5px; +} + +QTabBar::tab:bottom:selected { + color: #F0F0F0; + background-color: #505F69; + border-top: 3px solid #1464A0; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +QTabBar::tab:bottom:!selected:hover { + border: 1px solid #148CD2; + border-top: 3px solid #148CD2; +} + +QTabBar::tab:left { + color: #F0F0F0; + background-color: #32414B; + margin-top: 2px; + padding-left: 2px; + padding-right: 2px; + padding-top: 4px; + padding-bottom: 4px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + min-height: 5px; +} + +QTabBar::tab:left:selected { + color: #F0F0F0; + background-color: #505F69; + border-left: 3px solid #1464A0; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QTabBar::tab:left:!selected:hover { + border: 1px solid #148CD2; + border-left: 3px solid #148CD2; +} + +QTabBar::tab:right { + color: #F0F0F0; + background-color: #32414B; + margin-top: 2px; + padding-left: 2px; + padding-right: 2px; + padding-top: 4px; + padding-bottom: 4px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + min-height: 5px; +} + +QTabBar::tab:right:selected { + color: #F0F0F0; + background-color: #505F69; + border-right: 3px solid #1464A0; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +QTabBar::tab:right:!selected:hover { + border: 1px solid #148CD2; + border-right: 3px solid #148CD2; +} + +QTabBar QToolButton::right-arrow:enabled { + image: url(:/qss_icons/rc/right_arrow.png); +} + +QTabBar QToolButton::left-arrow:enabled { + image: url(:/qss_icons/rc/left_arrow.png); +} + +QTabBar QToolButton::right-arrow:disabled { + image: url(:/qss_icons/rc/right_arrow_disabled.png); +} + +QTabBar QToolButton::left-arrow:disabled { + image: url(:/qss_icons/rc/left_arrow_disabled.png); +} + + +/* Some examples from internet to check + +QTabBar::tabButton() and QTabBar::tabIcon() +QTabBar::tear {width: 0px; border: none;} +QTabBar::tear {image: url(tear_indicator.png);} +QTabBar::scroller{width:85pix;} +QTabBar QToolbutton{background-color:"light blue";} + +But that left the buttons transparant. +Looked confusing as the tab buttons migrated behind the scroller buttons. +So we had to color the back ground of the scroller buttons +*/ + +/* QDockWiget ------------------------------------------------------------- */ + +QDockWidget { + outline: 1px solid #32414B; + background-color: #19232D; + border: 1px solid #32414B; + border-radius: 4px; + titlebar-close-icon: url(:/qss_icons/rc/close.png); + titlebar-normal-icon: url(:/qss_icons/rc/undock.png); +} + +QDockWidget::title { + padding: 6px; /* better size for title bar */ + border: none; + background-color: #32414B; +} + +QDockWidget::close-button { + background-color: #32414B; + border-radius: 4px; + border: none; +} + +QDockWidget::close-button:hover { + border: 1px solid #32414B; +} + +QDockWidget::close-button:pressed { + border: 1px solid #32414B; +} + +QDockWidget::float-button { + background-color: #32414B; + border-radius: 4px; + border: none; +} + +QDockWidget::float-button:hover { + border: 1px solid #32414B; +} + +QDockWidget::float-button:pressed { + border: 1px solid #32414B; +} + + +/* QTreeView QTableView QListView ----------------------------------------- */ + +QTreeView:branch:selected, +QTreeView:branch:hover { + background: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item { + border-image: url(:/qss_icons/rc/transparent.png); +} + +QTreeView::branch:has-children:!has-siblings:closed, +QTreeView::branch:closed:has-children:has-siblings { + image: url(:/qss_icons/rc/branch_closed.png); +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings { + image: url(:/qss_icons/rc/branch_open.png); +} + +QTreeView::branch:has-children:!has-siblings:closed:hover, +QTreeView::branch:closed:has-children:has-siblings:hover { + image: url(:/qss_icons/rc/branch_closed-on.png); +} + +QTreeView::branch:open:has-children:!has-siblings:hover, +QTreeView::branch:open:has-children:has-siblings:hover { + image: url(:/qss_icons/rc/branch_open-on.png); +} + +QListView::item:!selected:hover, +QTreeView::item:!selected:hover, +QTableView::item:!selected:hover, +QColumnView::item:!selected:hover { + outline: 0; + color: #148CD2; + background-color: #32414B; +} + +QListView::item:selected:hover, +QTreeView::item:selected:hover, +QTableView::item:selected:hover, +QColumnView::item:selected:hover { + background: #1464A0; + color: #19232D; +} + +QTreeView::indicator:checked, +QListView::indicator:checked { + image: url(:/qss_icons/rc/checkbox_checked.png); +} + +QTreeView::indicator:unchecked, +QListView::indicator:unchecked { + image: url(:/qss_icons/rc/checkbox_unchecked.png); +} + +QTreeView::indicator:checked:hover, +QTreeView::indicator:checked:focus, +QTreeView::indicator:checked:pressed, +QListView::indicator:checked:hover, +QListView::indicator:checked:focus, +QListView::indicator:checked:pressed { + image: url(:/qss_icons/rc/checkbox_checked_focus.png); +} + +QTreeView::indicator:unchecked:hover, +QTreeView::indicator:unchecked:focus, +QTreeView::indicator:unchecked:pressed, +QListView::indicator:unchecked:hover, +QListView::indicator:unchecked:focus, +QListView::indicator:unchecked:pressed { + image: url(:/qss_icons/rc/checkbox_unchecked_focus.png); +} + +QTreeView::indicator:indeterminate:hover, +QTreeView::indicator:indeterminate:focus, +QTreeView::indicator:indeterminate:pressed, +QListView::indicator:indeterminate:hover, +QListView::indicator:indeterminate:focus, +QListView::indicator:indeterminate:pressed { + image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); +} + +QTreeView::indicator:indeterminate, +QListView::indicator:indeterminate { + image: url(:/qss_icons/rc/checkbox_indeterminate.png); +} + +QListView, +QTreeView, +QTableView, +QColumnView { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + gridline-color: #32414B; + border-radius: 4px; +} + +QListView:disabled, +QTreeView:disabled, +QTableView:disabled, +QColumnView:disabled { + background-color: #19232D; + color: #787878; +} + +QListView:selected, +QTreeView:selected, +QTableView:selected, +QColumnView:selected { + background: #1464A0; + color: #32414B; +} + +QListView:hover, +QTreeView::hover, +QTableView::hover, +QColumnView::hover { + background-color: #19232D; + border: 1px solid #148CD2; +} + +QListView::item:pressed, +QTreeView::item:pressed, +QTableView::item:pressed, +QColumnView::item:pressed { + background-color: #1464A0; +} + +QListView::item:selected:active, +QTreeView::item:selected:active, +QTableView::item:selected:active, +QColumnView::item:selected:active { + background-color: #1464A0; +} + +QTableCornerButton::section { + background-color: #19232D; + border: 1px transparent #32414B; + border-radius: 0px; +} + +/* QHeaderView ------------------------------------------------------------ */ + +QHeaderView { + background-color: #32414B; + border: 0px transparent #32414B; + padding: 0px; + margin: 0px; + border-radius: 0px; +} + +QHeaderView:disabled { + background-color: #32414B; + border: 1px transparent #32414B; + padding: 2px; +} + +QHeaderView::section { + background-color: #32414B; + color: #F0F0F0; + padding: 2px; + border-radius: 0px; + text-align: left; +} + +QHeaderView::section:checked { + color: #F0F0F0; + background-color: #1464A0; +} + +QHeaderView::section:checked:disabled { + color: #787878; + background-color: #14506E; +} + +QHeaderView::section::horizontal:disabled, +QHeaderView::section::vertical:disabled { + color: #787878; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one { + border-top: 1px solid #32414B; +} + +QHeaderView::section::vertical { + border-top: 1px solid #19232D; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one { + border-left: 1px solid #32414B; +} + +QHeaderView::section::horizontal { + border-left: 1px solid #19232D; +} + +/* Those settings (border/width/height/background-color) solve bug */ +/* transparent arrow background and size */ + +QHeaderView::down-arrow { + background-color: #32414B; + width: 16px; + height: 16px; + border-right: 1px solid #19232D; + image: url(:/qss_icons/rc/down_arrow.png); +} + +QHeaderView::up-arrow { + background-color: #32414B; + width: 16px; + height: 16px; + border-right: 1px solid #19232D; + image: url(:/qss_icons/rc/up_arrow.png); +} + +/* QToolBox -------------------------------------------------------------- */ + +QToolBox { + padding: 0px; + border: 1px solid #32414B; +} + +QToolBox::selected { + padding: 0px; + border: 2px solid #1464A0; +} + +QToolBox::tab { + background-color: #19232D; + border: 1px solid #32414B; + color: #F0F0F0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +QToolBox::tab:disabled { + color: #787878; +} + +QToolBox::tab:selected { + background-color: #505F69; + border-bottom: 2px solid #1464A0; +} + +QToolBox::tab:!selected { + background-color: #32414B; + border-bottom: 2px solid #32414B; +} + +QToolBox::tab:selected:disabled { + background-color: #32414B; + border-bottom: 2px solid #14506E; +} + +QToolBox::tab:!selected:disabled { + background-color: #19232D; +} + +QToolBox::tab:hover { + border-color: #148CD2; + border-bottom: 2px solid #148CD2; +} + +QToolBox QScrollArea QWidget QWidget { + padding: 0px; + background-color: #19232D; +} + +/* QFrame ----------------------------------------------------------------- */ + +QFrame { + border-radius: 4px; + border: 1px solid #32414B; +} + +QFrame[frameShape="0"] { + border-radius: 4px; + border: 1px transparent #32414B; +} + +QFrame[height="3"], +QFrame[width="3"] { + background-color: #19232D; +} + +/* QSplitter -------------------------------------------------------------- */ + +QSplitter { + background-color: #32414B; + spacing: 0; + padding: 0; + margin: 0; +} + +QSplitter::separator { + background-color: #32414B; + border: 0 solid #19232D; + spacing: 0; + padding: 1px; + margin: 0; +} + +QSplitter::separator:hover { + background-color: #787878; +} + +QSplitter::separator:horizontal { + width: 5px; + image: url(:/qss_icons/rc/Vsepartoolbar.png); +} + +QSplitter::separator:vertical { + height: 5px; + image: url(:/qss_icons/rc/Hsepartoolbar.png); +} + + +/* QDateEdit-------------------------------------------------------------- */ + +QDateEdit { + selection-background-color: #1464A0; + border-style: solid; + border: 1px solid #32414B; + border-radius: 4px; + padding-top: 2px; /* This fix #103, #111*/ + padding-bottom: 2px; /* This fix #103, #111*/ + padding-left: 4px; + padding-right: 4px; + min-width: 10px; +} + +QDateEdit:on { + selection-background-color: #1464A0; +} + +QDateEdit::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +QDateEdit::down-arrow { + image: url(:/qss_icons/rc/down_arrow_disabled.png); +} + +QDateEdit::down-arrow:on, +QDateEdit::down-arrow:hover, +QDateEdit::down-arrow:focus { + image: url(:/qss_icons/rc/down_arrow.png); +} + +QDateEdit QAbstractItemView { + background-color: #19232D; + border-radius: 4px; + border: 1px solid #32414B; + selection-background-color: #1464A0; +} + +QAbstractView:hover{ + border: 1px solid #148CD2; + color: #F0F0F0; +} + +QAbstractView:selected { + background: #1464A0; + color: #32414B; +} + +