File browser filter: Exposure Compensation (see issue 1003)
In order to use this new filter with previously browsed thumbnails there are 2 options: Option 1. Global fix: clear cache/data folder Option 2. Local Fix: select thumbs, right click, Cache /Clear from cache - partial reload folder in file browser
This commit is contained in:
@@ -30,6 +30,7 @@ EDITWINDOW_TITLE;Image Edit
|
|||||||
EXIFFILTER_APERTURE;Aperture
|
EXIFFILTER_APERTURE;Aperture
|
||||||
EXIFFILTER_CAMERA;Camera
|
EXIFFILTER_CAMERA;Camera
|
||||||
EXIFFILTER_DIALOGLABEL;Exif Filter
|
EXIFFILTER_DIALOGLABEL;Exif Filter
|
||||||
|
EXIFFILTER_EXPOSURECOMPENSATION;Exposure Compensation (EV)
|
||||||
EXIFFILTER_FILETYPE;File Type
|
EXIFFILTER_FILETYPE;File Type
|
||||||
EXIFFILTER_FOCALLEN;Focal Length
|
EXIFFILTER_FOCALLEN;Focal Length
|
||||||
EXIFFILTER_ISO;ISO
|
EXIFFILTER_ISO;ISO
|
||||||
|
|||||||
@@ -338,15 +338,21 @@ std::string ImageMetaData::shutterToString (double shutter) {
|
|||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ImageMetaData::expcompToString (double expcomp) {
|
std::string ImageMetaData::expcompToString (double expcomp, bool maskZeroexpcomp) {
|
||||||
|
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
|
if (maskZeroexpcomp==true){
|
||||||
if (expcomp!=0.0){
|
if (expcomp!=0.0){
|
||||||
sprintf (buffer, "%0.1f", expcomp);
|
sprintf (buffer, "%0.2f", expcomp);
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return "";
|
return "";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
sprintf (buffer, "%0.2f", expcomp);
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double ImageMetaData::shutterFromString (std::string s) {
|
double ImageMetaData::shutterFromString (std::string s) {
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ namespace rtengine {
|
|||||||
/** Functions to convert between floating point and string representation of shutter and aperture */
|
/** Functions to convert between floating point and string representation of shutter and aperture */
|
||||||
static double shutterFromString (std::string shutter);
|
static double shutterFromString (std::string shutter);
|
||||||
/** Functions to convert between floating point and string representation of exposure compensation */
|
/** Functions to convert between floating point and string representation of exposure compensation */
|
||||||
static std::string expcompToString (double expcomp);
|
static std::string expcompToString (double expcomp, bool maskZeroexpcomp);
|
||||||
|
|
||||||
/** Reads metadata from file.
|
/** Reads metadata from file.
|
||||||
* @param fname is the name of the file
|
* @param fname is the name of the file
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ int CacheImageData::load (const Glib::ustring& fname) {
|
|||||||
if (keyFile.has_key ("ExifInfo", "Shutter")) shutter = keyFile.get_double ("ExifInfo", "Shutter");
|
if (keyFile.has_key ("ExifInfo", "Shutter")) shutter = keyFile.get_double ("ExifInfo", "Shutter");
|
||||||
if (keyFile.has_key ("ExifInfo", "FocalLen")) focalLen = keyFile.get_double ("ExifInfo", "FocalLen");
|
if (keyFile.has_key ("ExifInfo", "FocalLen")) focalLen = keyFile.get_double ("ExifInfo", "FocalLen");
|
||||||
if (keyFile.has_key ("ExifInfo", "ISO")) iso = keyFile.get_integer ("ExifInfo", "ISO");
|
if (keyFile.has_key ("ExifInfo", "ISO")) iso = keyFile.get_integer ("ExifInfo", "ISO");
|
||||||
|
if (keyFile.has_key ("ExifInfo", "ExpComp")) expcomp = keyFile.get_string ("ExifInfo", "ExpComp");
|
||||||
}
|
}
|
||||||
if (keyFile.has_key ("ExifInfo", "Lens")) lens = keyFile.get_string ("ExifInfo", "Lens");
|
if (keyFile.has_key ("ExifInfo", "Lens")) lens = keyFile.get_string ("ExifInfo", "Lens");
|
||||||
if (keyFile.has_key ("ExifInfo", "Camera")) camera = keyFile.get_string ("ExifInfo", "Camera");
|
if (keyFile.has_key ("ExifInfo", "Camera")) camera = keyFile.get_string ("ExifInfo", "Camera");
|
||||||
@@ -126,6 +127,7 @@ int CacheImageData::save (const Glib::ustring& fname) {
|
|||||||
keyFile.set_double ("ExifInfo", "Shutter", shutter);
|
keyFile.set_double ("ExifInfo", "Shutter", shutter);
|
||||||
keyFile.set_double ("ExifInfo", "FocalLen", focalLen);
|
keyFile.set_double ("ExifInfo", "FocalLen", focalLen);
|
||||||
keyFile.set_integer ("ExifInfo", "ISO", iso);
|
keyFile.set_integer ("ExifInfo", "ISO", iso);
|
||||||
|
keyFile.set_string ("ExifInfo", "ExpComp", expcomp);
|
||||||
}
|
}
|
||||||
keyFile.set_string ("ExifInfo", "Lens", lens);
|
keyFile.set_string ("ExifInfo", "Lens", lens);
|
||||||
keyFile.set_string ("ExifInfo", "Camera", camera);
|
keyFile.set_string ("ExifInfo", "Camera", camera);
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ class CacheImageData {
|
|||||||
Glib::ustring lens;
|
Glib::ustring lens;
|
||||||
Glib::ustring camera;
|
Glib::ustring camera;
|
||||||
Glib::ustring filetype;
|
Glib::ustring filetype;
|
||||||
|
Glib::ustring expcomp;
|
||||||
|
|
||||||
// additional info on raw images
|
// additional info on raw images
|
||||||
int rotate;
|
int rotate;
|
||||||
|
|||||||
@@ -681,11 +681,11 @@ void EditorPanel::info_toggled () {
|
|||||||
M("QINFO_ISO"), idata->getISOSpeed(),
|
M("QINFO_ISO"), idata->getISOSpeed(),
|
||||||
idata->getFocalLen());
|
idata->getFocalLen());
|
||||||
|
|
||||||
expcomp = Glib::ustring(idata->expcompToString(idata->getExpComp()));
|
expcomp = Glib::ustring(idata->expcompToString(idata->getExpComp(),true)); // maskZeroexpcomp
|
||||||
if (expcomp!=""){
|
if (expcomp!=""){
|
||||||
infoString2 = Glib::ustring::compose("%1 <span size=\"large\">%2</span><span size=\"small\">EV</span>",
|
infoString2 = Glib::ustring::compose("%1 <span size=\"large\">%2</span><span size=\"small\">EV</span>",
|
||||||
infoString2,
|
infoString2,
|
||||||
Glib::ustring(idata->expcompToString(idata->getExpComp())));
|
expcomp /*Glib::ustring(idata->expcompToString(idata->getExpComp()))*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
infoString3 = Glib::ustring::compose ("<span size=\"small\">%1</span><span>%2</span>",
|
infoString3 = Glib::ustring::compose ("<span size=\"small\">%1</span><span>%2</span>",
|
||||||
|
|||||||
@@ -34,12 +34,14 @@ void ExifFilterSettings::clear () {
|
|||||||
focalTo = 0;
|
focalTo = 0;
|
||||||
lenses.clear ();
|
lenses.clear ();
|
||||||
cameras.clear ();
|
cameras.clear ();
|
||||||
|
expcomp.clear ();
|
||||||
filetypes.clear ();
|
filetypes.clear ();
|
||||||
|
|
||||||
filterFNumber = false;
|
filterFNumber = false;
|
||||||
filterShutter = false;
|
filterShutter = false;
|
||||||
filterFocalLen = false;
|
filterFocalLen = false;
|
||||||
filterISO = false;
|
filterISO = false;
|
||||||
|
filterExpComp = false;
|
||||||
filterCamera = false;
|
filterCamera = false;
|
||||||
filterLens = false;
|
filterLens = false;
|
||||||
filterFiletype = false;
|
filterFiletype = false;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class ExifFilterSettings {
|
|||||||
std::set<std::string> filetypes;
|
std::set<std::string> filetypes;
|
||||||
std::set<std::string> cameras;
|
std::set<std::string> cameras;
|
||||||
std::set<std::string> lenses;
|
std::set<std::string> lenses;
|
||||||
|
std::set<std::string> expcomp;
|
||||||
double fnumberFrom;
|
double fnumberFrom;
|
||||||
double fnumberTo;
|
double fnumberTo;
|
||||||
double shutterFrom;
|
double shutterFrom;
|
||||||
@@ -41,6 +42,7 @@ class ExifFilterSettings {
|
|||||||
bool filterShutter;
|
bool filterShutter;
|
||||||
bool filterFocalLen;
|
bool filterFocalLen;
|
||||||
bool filterISO;
|
bool filterISO;
|
||||||
|
bool filterExpComp;
|
||||||
bool filterCamera;
|
bool filterCamera;
|
||||||
bool filterLens;
|
bool filterLens;
|
||||||
bool filterFiletype;
|
bool filterFiletype;
|
||||||
|
|||||||
@@ -824,13 +824,15 @@ bool FileBrowser::checkFilter (ThumbBrowserEntryBase* entryb) { // true -> entry
|
|||||||
if (!cfs->exifValid)
|
if (!cfs->exifValid)
|
||||||
return (!filter.exifFilter.filterCamera || filter.exifFilter.cameras.count(cfs->camera)>0)
|
return (!filter.exifFilter.filterCamera || filter.exifFilter.cameras.count(cfs->camera)>0)
|
||||||
&& (!filter.exifFilter.filterLens || filter.exifFilter.lenses.count(cfs->lens)>0)
|
&& (!filter.exifFilter.filterLens || filter.exifFilter.lenses.count(cfs->lens)>0)
|
||||||
&& (!filter.exifFilter.filterFiletype || filter.exifFilter.filetypes.count(cfs->filetype)>0);
|
&& (!filter.exifFilter.filterFiletype || filter.exifFilter.filetypes.count(cfs->filetype)>0)
|
||||||
|
&& (!filter.exifFilter.filterExpComp || filter.exifFilter.expcomp.count(cfs->expcomp)>0);
|
||||||
|
|
||||||
return
|
return
|
||||||
(!filter.exifFilter.filterShutter || (rtengine::ImageMetaData::shutterFromString(rtengine::ImageMetaData::shutterToString(cfs->shutter)) >= filter.exifFilter.shutterFrom-tol2 && rtengine::ImageMetaData::shutterFromString(rtengine::ImageMetaData::shutterToString(cfs->shutter)) <= filter.exifFilter.shutterTo+tol2))
|
(!filter.exifFilter.filterShutter || (rtengine::ImageMetaData::shutterFromString(rtengine::ImageMetaData::shutterToString(cfs->shutter)) >= filter.exifFilter.shutterFrom-tol2 && rtengine::ImageMetaData::shutterFromString(rtengine::ImageMetaData::shutterToString(cfs->shutter)) <= filter.exifFilter.shutterTo+tol2))
|
||||||
&& (!filter.exifFilter.filterFNumber || (rtengine::ImageMetaData::apertureFromString(rtengine::ImageMetaData::apertureToString(cfs->fnumber)) >= filter.exifFilter.fnumberFrom-tol2 && rtengine::ImageMetaData::apertureFromString(rtengine::ImageMetaData::apertureToString(cfs->fnumber)) <= filter.exifFilter.fnumberTo+tol2))
|
&& (!filter.exifFilter.filterFNumber || (rtengine::ImageMetaData::apertureFromString(rtengine::ImageMetaData::apertureToString(cfs->fnumber)) >= filter.exifFilter.fnumberFrom-tol2 && rtengine::ImageMetaData::apertureFromString(rtengine::ImageMetaData::apertureToString(cfs->fnumber)) <= filter.exifFilter.fnumberTo+tol2))
|
||||||
&& (!filter.exifFilter.filterFocalLen || (cfs->focalLen >= filter.exifFilter.focalFrom-tol && cfs->focalLen <= filter.exifFilter.focalTo+tol))
|
&& (!filter.exifFilter.filterFocalLen || (cfs->focalLen >= filter.exifFilter.focalFrom-tol && cfs->focalLen <= filter.exifFilter.focalTo+tol))
|
||||||
&& (!filter.exifFilter.filterISO || (cfs->iso >= filter.exifFilter.isoFrom && cfs->iso <= filter.exifFilter.isoTo))
|
&& (!filter.exifFilter.filterISO || (cfs->iso >= filter.exifFilter.isoFrom && cfs->iso <= filter.exifFilter.isoTo))
|
||||||
|
&& (!filter.exifFilter.filterExpComp || filter.exifFilter.expcomp.count(cfs->expcomp)>0)
|
||||||
&& (!filter.exifFilter.filterCamera || filter.exifFilter.cameras.count(cfs->camera)>0)
|
&& (!filter.exifFilter.filterCamera || filter.exifFilter.cameras.count(cfs->camera)>0)
|
||||||
&& (!filter.exifFilter.filterLens || filter.exifFilter.lenses.count(cfs->lens)>0)
|
&& (!filter.exifFilter.filterLens || filter.exifFilter.lenses.count(cfs->lens)>0)
|
||||||
&& (!filter.exifFilter.filterFiletype || filter.exifFilter.filetypes.count(cfs->filetype)>0);
|
&& (!filter.exifFilter.filterFiletype || filter.exifFilter.filetypes.count(cfs->filetype)>0);
|
||||||
|
|||||||
@@ -600,6 +600,7 @@ void FileCatalog::previewReadyUI (int dir_id, FileBrowserEntry* fdn) {
|
|||||||
dirEFS.filetypes.insert (cfs->filetype);
|
dirEFS.filetypes.insert (cfs->filetype);
|
||||||
dirEFS.cameras.insert (cfs->camera);
|
dirEFS.cameras.insert (cfs->camera);
|
||||||
dirEFS.lenses.insert (cfs->lens);
|
dirEFS.lenses.insert (cfs->lens);
|
||||||
|
dirEFS.expcomp.insert (cfs->expcomp);
|
||||||
previewsLoaded++;
|
previewsLoaded++;
|
||||||
|
|
||||||
g_idle_add (refreshProgressBarUI, this);
|
g_idle_add (refreshProgressBarUI, this);
|
||||||
|
|||||||
@@ -78,6 +78,17 @@ FilterPanel::FilterPanel () : listener (NULL) {
|
|||||||
fvb->pack_start (*fhb, Gtk::PACK_SHRINK, 0);
|
fvb->pack_start (*fhb, Gtk::PACK_SHRINK, 0);
|
||||||
pack_start (*fvb, Gtk::PACK_SHRINK, 4);
|
pack_start (*fvb, Gtk::PACK_SHRINK, 4);
|
||||||
|
|
||||||
|
enaExpComp = Gtk::manage(new Gtk::CheckButton(M("EXIFFILTER_EXPOSURECOMPENSATION")+":"));
|
||||||
|
Gtk::VBox* evb = Gtk::manage(new Gtk::VBox ());
|
||||||
|
evb->pack_start (*enaExpComp, Gtk::PACK_SHRINK, 0);
|
||||||
|
expcomp = Gtk::manage(new Gtk::ListViewText (1, false, Gtk::SELECTION_MULTIPLE));
|
||||||
|
expcomp->set_headers_visible (false);
|
||||||
|
Gtk::ScrolledWindow* sexpcomp = Gtk::manage(new Gtk::ScrolledWindow());
|
||||||
|
sexpcomp->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_ALWAYS);
|
||||||
|
sexpcomp->add(*expcomp);
|
||||||
|
evb->pack_start (*sexpcomp, Gtk::PACK_SHRINK, 0);
|
||||||
|
pack_start (*evb, Gtk::PACK_SHRINK, 4);
|
||||||
|
|
||||||
enaCamera = Gtk::manage(new Gtk::CheckButton(M("EXIFFILTER_CAMERA")+":"));
|
enaCamera = Gtk::manage(new Gtk::CheckButton(M("EXIFFILTER_CAMERA")+":"));
|
||||||
Gtk::VBox* cvb = Gtk::manage(new Gtk::VBox ());
|
Gtk::VBox* cvb = Gtk::manage(new Gtk::VBox ());
|
||||||
cvb->pack_start (*enaCamera, Gtk::PACK_SHRINK, 0);
|
cvb->pack_start (*enaCamera, Gtk::PACK_SHRINK, 0);
|
||||||
@@ -120,6 +131,7 @@ FilterPanel::FilterPanel () : listener (NULL) {
|
|||||||
sChange[conns++] = isoTo->signal_changed().connect (sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
sChange[conns++] = isoTo->signal_changed().connect (sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
sChange[conns++] = focalFrom->signal_changed().connect (sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
sChange[conns++] = focalFrom->signal_changed().connect (sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
sChange[conns++] = focalTo->signal_changed().connect (sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
sChange[conns++] = focalTo->signal_changed().connect (sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
|
sChange[conns++] = expcomp->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
sChange[conns++] = filetype->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
sChange[conns++] = filetype->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
sChange[conns++] = camera->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
sChange[conns++] = camera->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
sChange[conns++] = lens->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
sChange[conns++] = lens->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &FilterPanel::valueChanged));
|
||||||
@@ -127,6 +139,7 @@ FilterPanel::FilterPanel () : listener (NULL) {
|
|||||||
sChange[conns++] = enaShutter->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
sChange[conns++] = enaShutter->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
sChange[conns++] = enaFocalLen->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
sChange[conns++] = enaFocalLen->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
sChange[conns++] = enaISO->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
sChange[conns++] = enaISO->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
|
sChange[conns++] = enaExpComp->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
sChange[conns++] = enaCamera->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
sChange[conns++] = enaCamera->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
sChange[conns++] = enaLens->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
sChange[conns++] = enaLens->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
sChange[conns++] = enabled->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
sChange[conns++] = enabled->signal_toggled().connect( sigc::mem_fun(*this, &FilterPanel::valueChanged) );
|
||||||
@@ -167,6 +180,9 @@ void FilterPanel::setFilter (ExifFilterSettings& defefs, bool updateLists) {
|
|||||||
focalTo->set_text (Glib::ustring::format (defefs.focalTo));
|
focalTo->set_text (Glib::ustring::format (defefs.focalTo));
|
||||||
curefs.focalTo = defefs.focalTo;
|
curefs.focalTo = defefs.focalTo;
|
||||||
|
|
||||||
|
// enaCompExp->set_active (curefs.filterExpComp);
|
||||||
|
Glib::RefPtr<Gtk::TreeSelection> eselection = expcomp->get_selection ();
|
||||||
|
|
||||||
// enaFiletype->set_active (curefs.filterFiletype);
|
// enaFiletype->set_active (curefs.filterFiletype);
|
||||||
Glib::RefPtr<Gtk::TreeSelection> ftselection = filetype->get_selection ();
|
Glib::RefPtr<Gtk::TreeSelection> ftselection = filetype->get_selection ();
|
||||||
|
|
||||||
@@ -176,6 +192,14 @@ void FilterPanel::setFilter (ExifFilterSettings& defefs, bool updateLists) {
|
|||||||
// enaLens->set_active (curefs.filterLens);
|
// enaLens->set_active (curefs.filterLens);
|
||||||
Glib::RefPtr<Gtk::TreeSelection> lselection = lens->get_selection ();
|
Glib::RefPtr<Gtk::TreeSelection> lselection = lens->get_selection ();
|
||||||
if( updateLists ){
|
if( updateLists ){
|
||||||
|
expcomp->clear_items();
|
||||||
|
curefs.expcomp.clear();
|
||||||
|
for (std::set<std::string>::iterator i = defefs.expcomp.begin(); i!=defefs.expcomp.end(); i++) {
|
||||||
|
expcomp->append_text (*i);
|
||||||
|
curefs.expcomp.insert(*i);
|
||||||
|
}
|
||||||
|
eselection->select_all();
|
||||||
|
|
||||||
lens->clear_items();
|
lens->clear_items();
|
||||||
curefs.lenses.clear();
|
curefs.lenses.clear();
|
||||||
for (std::set<std::string>::iterator i = defefs.lenses.begin(); i!=defefs.lenses.end(); i++) {
|
for (std::set<std::string>::iterator i = defefs.lenses.begin(); i!=defefs.lenses.end(); i++) {
|
||||||
@@ -200,6 +224,14 @@ void FilterPanel::setFilter (ExifFilterSettings& defefs, bool updateLists) {
|
|||||||
}
|
}
|
||||||
ftselection->select_all();
|
ftselection->select_all();
|
||||||
}else{
|
}else{
|
||||||
|
for( Gtk::TreeModel::Children::iterator iter = expcomp->get_model()->children().begin(); iter != expcomp->get_model()->children().end();iter++){
|
||||||
|
Glib::ustring v;
|
||||||
|
iter->get_value(0,v);
|
||||||
|
if( defefs.expcomp.find( v ) != defefs.expcomp.end() )
|
||||||
|
eselection->select( iter );
|
||||||
|
else
|
||||||
|
eselection->unselect( iter );
|
||||||
|
}
|
||||||
for( Gtk::TreeModel::Children::iterator iter = lens->get_model()->children().begin(); iter != lens->get_model()->children().end();iter++){
|
for( Gtk::TreeModel::Children::iterator iter = lens->get_model()->children().begin(); iter != lens->get_model()->children().end();iter++){
|
||||||
Glib::ustring v;
|
Glib::ustring v;
|
||||||
iter->get_value(0,v);
|
iter->get_value(0,v);
|
||||||
@@ -253,6 +285,7 @@ ExifFilterSettings FilterPanel::getFilter () {
|
|||||||
efs.filterShutter = enaShutter->get_active ();
|
efs.filterShutter = enaShutter->get_active ();
|
||||||
efs.filterFocalLen = enaFocalLen->get_active ();
|
efs.filterFocalLen = enaFocalLen->get_active ();
|
||||||
efs.filterISO = enaISO->get_active ();
|
efs.filterISO = enaISO->get_active ();
|
||||||
|
efs.filterExpComp = enaExpComp->get_active ();
|
||||||
efs.filterCamera = enaCamera->get_active ();
|
efs.filterCamera = enaCamera->get_active ();
|
||||||
efs.filterLens = enaLens->get_active ();
|
efs.filterLens = enaLens->get_active ();
|
||||||
efs.filterFiletype = enaFiletype->get_active ();
|
efs.filterFiletype = enaFiletype->get_active ();
|
||||||
@@ -260,9 +293,15 @@ ExifFilterSettings FilterPanel::getFilter () {
|
|||||||
std::vector<int> sel = camera->get_selected ();
|
std::vector<int> sel = camera->get_selected ();
|
||||||
for (int i=0; i<sel.size(); i++)
|
for (int i=0; i<sel.size(); i++)
|
||||||
efs.cameras.insert (camera->get_text (sel[i]));
|
efs.cameras.insert (camera->get_text (sel[i]));
|
||||||
|
|
||||||
|
sel = expcomp->get_selected ();
|
||||||
|
for (int i=0; i<sel.size(); i++)
|
||||||
|
efs.expcomp.insert (expcomp->get_text (sel[i]));
|
||||||
|
|
||||||
sel = lens->get_selected ();
|
sel = lens->get_selected ();
|
||||||
for (int i=0; i<sel.size(); i++)
|
for (int i=0; i<sel.size(); i++)
|
||||||
efs.lenses.insert (lens->get_text (sel[i]));
|
efs.lenses.insert (lens->get_text (sel[i]));
|
||||||
|
|
||||||
sel = filetype->get_selected ();
|
sel = filetype->get_selected ();
|
||||||
for (int i=0; i<sel.size(); i++)
|
for (int i=0; i<sel.size(); i++)
|
||||||
efs.filetypes.insert (filetype->get_text (sel[i]));
|
efs.filetypes.insert (filetype->get_text (sel[i]));
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class FilterPanel : public Gtk::VBox {
|
|||||||
Gtk::ListViewText* filetype;
|
Gtk::ListViewText* filetype;
|
||||||
Gtk::ListViewText* camera;
|
Gtk::ListViewText* camera;
|
||||||
Gtk::ListViewText* lens;
|
Gtk::ListViewText* lens;
|
||||||
|
Gtk::ListViewText* expcomp;
|
||||||
Gtk::Entry* fnumberFrom;
|
Gtk::Entry* fnumberFrom;
|
||||||
Gtk::Entry* fnumberTo;
|
Gtk::Entry* fnumberTo;
|
||||||
Gtk::Entry* shutterFrom;
|
Gtk::Entry* shutterFrom;
|
||||||
@@ -47,12 +48,13 @@ class FilterPanel : public Gtk::VBox {
|
|||||||
Gtk::CheckButton* enaShutter;
|
Gtk::CheckButton* enaShutter;
|
||||||
Gtk::CheckButton* enaFocalLen;
|
Gtk::CheckButton* enaFocalLen;
|
||||||
Gtk::CheckButton* enaISO;
|
Gtk::CheckButton* enaISO;
|
||||||
|
Gtk::CheckButton* enaExpComp;
|
||||||
Gtk::CheckButton* enaCamera;
|
Gtk::CheckButton* enaCamera;
|
||||||
Gtk::CheckButton* enaLens;
|
Gtk::CheckButton* enaLens;
|
||||||
Gtk::CheckButton* enaFiletype;
|
Gtk::CheckButton* enaFiletype;
|
||||||
|
|
||||||
int conns;
|
int conns;
|
||||||
sigc::connection sChange[20];
|
sigc::connection sChange[22];
|
||||||
|
|
||||||
ExifFilterSettings curefs;
|
ExifFilterSettings curefs;
|
||||||
FilterPanelListener* listener;
|
FilterPanelListener* listener;
|
||||||
|
|||||||
@@ -548,6 +548,7 @@ int Thumbnail::infoFromImage (const Glib::ustring& fname, rtengine::RawMetaDataL
|
|||||||
cfs.fnumber = idata->getFNumber ();
|
cfs.fnumber = idata->getFNumber ();
|
||||||
cfs.focalLen = idata->getFocalLen ();
|
cfs.focalLen = idata->getFocalLen ();
|
||||||
cfs.iso = idata->getISOSpeed ();
|
cfs.iso = idata->getISOSpeed ();
|
||||||
|
cfs.expcomp = idata->expcompToString (idata->getExpComp(), false); // do not mask Zero expcomp
|
||||||
cfs.year = 1900 + idata->getDateTime().tm_year;
|
cfs.year = 1900 + idata->getDateTime().tm_year;
|
||||||
cfs.month = idata->getDateTime().tm_mon + 1;
|
cfs.month = idata->getDateTime().tm_mon + 1;
|
||||||
cfs.day = idata->getDateTime().tm_mday;
|
cfs.day = idata->getDateTime().tm_mday;
|
||||||
|
|||||||
Reference in New Issue
Block a user