From 0ffc7d9617de17cfc69c82b79db8c5cdf29838e7 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 25 Nov 2018 08:47:39 +0100 Subject: [PATCH 1/5] Add frames to lensprofile.cc --- rtgui/lensprofile.cc | 48 +++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index e110792ec..b2043963a 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -65,18 +65,19 @@ LensProfilePanel::LensProfilePanel() : } // Main containers: + + Gtk::Frame *nodesFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_MODE_HEADER"))); modesGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Frame *distFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_USE_HEADER"))); distGrid->get_style_context()->add_class("grid-spacing"); setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); // Mode choice widgets: - Gtk::Label* const corrHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_MODE_HEADER"))); - setExpandAlignProperties(corrHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - corrUnchangedRB->hide(); corrGroup = corrUnchangedRB->get_group(); @@ -133,37 +134,34 @@ LensProfilePanel::LensProfilePanel() : // Choice of properties to correct, applicable to all modes: - Gtk::Label* const useHeaderLbl = Gtk::manage(new Gtk::Label(M("TP_LENSPROFILE_USE_HEADER"))); - setExpandAlignProperties(useHeaderLbl, true, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - // Populate modes grid: - modesGrid->attach(*corrHeaderLbl, 0, 0, 2, 1); - modesGrid->attach(*corrUnchangedRB, 0, 1, 2, 1); - modesGrid->attach(*corrOffRB, 0, 2, 2, 1); - modesGrid->attach(*corrLensfunAutoRB, 0, 3, 2, 1); - modesGrid->attach(*corrLensfunManualRB, 0, 4, 2, 1); + modesGrid->attach(*corrUnchangedRB, 0, 0, 3, 1); + modesGrid->attach(*corrOffRB, 0, 1, 3, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 2, 3, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 3, 3, 1); - modesGrid->attach(*lensfunCamerasLbl, 0, 5, 1, 1); - modesGrid->attach(*lensfunCameras, 1, 5, 1, 1); - modesGrid->attach(*lensfunLensesLbl, 0, 6, 1, 1); - modesGrid->attach(*lensfunLenses, 1, 6, 1, 1); - modesGrid->attach(*warning, 2, 6, 1, 1); + modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); + modesGrid->attach(*warning, 2, 4, 1, 2); - modesGrid->attach(*corrLcpFileRB, 0, 7, 1, 1); - modesGrid->attach(*corrLcpFileChooser, 1, 7, 1, 1); + modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 6, 2, 1); // Populate distortions grid: - distGrid->attach(*useHeaderLbl, 0, 0, 1, 1); - distGrid->attach(*ckbUseDist, 0, 1, 1, 1); - distGrid->attach(*ckbUseVign, 0, 2, 1, 1); - distGrid->attach(*ckbUseCA, 0, 3, 1, 1); + distGrid->attach(*ckbUseDist, 0, 0, 1, 1); + distGrid->attach(*ckbUseVign, 0, 1, 1, 1); + distGrid->attach(*ckbUseCA, 0, 2, 1, 1); // Attach grids: - - pack_start(*modesGrid); - pack_start(*distGrid); + nodesFrame->add(*modesGrid); + distFrame->add(*distGrid); + + pack_start(*nodesFrame, Gtk::PACK_EXPAND_WIDGET); + pack_start(*distFrame, Gtk::PACK_EXPAND_WIDGET); // Signals: From 0f6edfe8ddbf4cf9e4ac5bf826f2e995179ab37b Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sun, 25 Nov 2018 18:06:45 +0100 Subject: [PATCH 2/5] Profiled Lens Correction Buf fix Fixed bug https://github.com/Beep6581/RawTherapee/issues/5002 Profiled Lens Correction does not seem to use (Unchanged) mode in Batch Edit --- rtgui/lensprofile.cc | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index b2043963a..66857dc79 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -78,9 +78,6 @@ LensProfilePanel::LensProfilePanel() : // Mode choice widgets: - corrUnchangedRB->hide(); - corrGroup = corrUnchangedRB->get_group(); - setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); // Manually-selected profile widgets: @@ -136,19 +133,18 @@ LensProfilePanel::LensProfilePanel() : // Populate modes grid: - modesGrid->attach(*corrUnchangedRB, 0, 0, 3, 1); - modesGrid->attach(*corrOffRB, 0, 1, 3, 1); - modesGrid->attach(*corrLensfunAutoRB, 0, 2, 3, 1); - modesGrid->attach(*corrLensfunManualRB, 0, 3, 3, 1); + modesGrid->attach(*corrOffRB, 0, 0, 3, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 1, 3, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 2, 3, 1); - modesGrid->attach(*lensfunCamerasLbl, 0, 4, 1, 1); - modesGrid->attach(*lensfunCameras, 1, 4, 1, 1); - modesGrid->attach(*lensfunLensesLbl, 0, 5, 1, 1); - modesGrid->attach(*lensfunLenses, 1, 5, 1, 1); - modesGrid->attach(*warning, 2, 4, 1, 2); + modesGrid->attach(*lensfunCamerasLbl, 0, 3, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 3, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 4, 1, 1); + modesGrid->attach(*warning, 2, 3, 1, 2); - modesGrid->attach(*corrLcpFileRB, 0, 6, 1, 1); - modesGrid->attach(*corrLcpFileChooser, 1, 6, 2, 1); + modesGrid->attach(*corrLcpFileRB, 0, 5, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 5, 1, 1); // Populate distortions grid: @@ -183,10 +179,6 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa disableListener(); conUseDist.block(true); - if (!batchMode) { - corrUnchangedRB->hide(); - } - corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { @@ -397,10 +389,9 @@ void LensProfilePanel::setBatchMode(bool yes) FoldableToolPanel::setBatchMode(yes); if (yes) { - corrUnchangedRB->show(); + corrUnchangedRB->set_group(corrGroup); + modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); corrUnchangedRB->set_active(true); - } else { - corrUnchangedRB->hide(); } } From 66e90142389b0bc5fbfd8fa9d815bfec18866cb2 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Mon, 26 Nov 2018 23:15:21 +0100 Subject: [PATCH 3/5] Batch mode fixed --- rtgui/lensprofile.cc | 55 ++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 66857dc79..787cb2cad 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -179,7 +179,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa disableListener(); conUseDist.block(true); - corrLensfunAutoRB->set_sensitive(true); + // corrLensfunAutoRB->set_sensitive(true); switch (pp->lensProf.lcMode) { case procparams::LensProfParams::LcMode::LCP: { @@ -190,6 +190,9 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH: { corrLensfunAutoRB->set_active(true); + if (batchMode) { + setManualParamsVisibility(false); + } break; } @@ -204,6 +207,10 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa break; } } + + if (multiImage) { + corrUnchangedRB->set_active(true); + } if (pp->lensProf.lcpFile.empty()) { const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); @@ -227,24 +234,29 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa const LFDatabase* const db = LFDatabase::getInstance(); LFCamera c; - if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { + if (pp->lensProf.lfAutoMatch()) { if (metadata) { c = db->findCamera(metadata->getMake(), metadata->getModel()); setLensfunCamera(c.getMake(), c.getModel()); } + } else if (pp->lensProf.lfManual()) { + setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel); } - if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { + if (pp->lensProf.lfAutoMatch()) { if (metadata) { const LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } + } else if (pp->lensProf.lfManual()) { + setLensfunLens(pp->lensProf.lfLens); } lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; - if (!batchMode && !checkLensfunCanCorrect(true)) { + /* + if (!batchMode && !checkLensfunCanCorrect(true)) { if (corrLensfunAutoRB->get_active()) { corrOffRB->set_active(true); } @@ -252,9 +264,10 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAutoRB->set_sensitive(false); } - if (corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { + if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(true)) { corrOffRB->set_active(true); - } + } + */ updateLensfunWarning(); @@ -293,7 +306,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* const auto itc = lensfunCameras->get_active(); - if (itc) { + if (itc && !corrLensfunAutoRB->get_active()) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; pp->lensProf.lfCameraModel = (*itc)[lf->lensfunModelCam.model]; } else { @@ -303,7 +316,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* const auto itl = lensfunLenses->get_active(); - if (itl) { + if (itl && !corrLensfunAutoRB->get_active()) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; } else { pp->lensProf.lfLens = ""; @@ -386,13 +399,13 @@ void LensProfilePanel::onUseCAChanged() void LensProfilePanel::setBatchMode(bool yes) { - FoldableToolPanel::setBatchMode(yes); - if (yes) { - corrUnchangedRB->set_group(corrGroup); - modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); - corrUnchangedRB->set_active(true); - } + FoldableToolPanel::setBatchMode(yes); + + corrUnchangedRB->set_group(corrGroup); + modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); + corrUnchangedRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrUnchangedRB)); + corrUnchangedRB->set_active(true); } void LensProfilePanel::onLensfunCameraChanged() @@ -454,15 +467,21 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) } else if (rbChanged == corrLensfunAutoRB) { useLensfunChanged = true; lensfunAutoChanged = true; + lensfunCameraChanged = true; + lensfunLensChanged = true; lcpFileChanged = true; useDistChanged = true; useVignChanged = true; ckbUseDist->set_sensitive(true); ckbUseVign->set_sensitive(true); - ckbUseCA->set_sensitive(false); + ckbUseCA->set_sensitive(true); - if (metadata) { + + if (batchMode) { + setLensfunCamera("", ""); + setLensfunLens(""); + } else if (metadata) { const bool disabled = disableListener(); const LFDatabase* const db = LFDatabase::getInstance(); const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); @@ -479,6 +498,8 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) } else if (rbChanged == corrLensfunManualRB) { useLensfunChanged = true; lensfunAutoChanged = true; + lensfunCameraChanged = true; + lensfunLensChanged = true; lcpFileChanged = true; useDistChanged = true; useVignChanged = true; @@ -515,7 +536,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) lcModeChanged = true; updateLensfunWarning(); - if (rbChanged == corrLensfunManualRB || rbChanged == corrLensfunAutoRB) { + if (rbChanged == corrLensfunManualRB || (!batchMode && rbChanged == corrLensfunAutoRB)) { setManualParamsVisibility(true); } else { setManualParamsVisibility(false); From 90122c419eb21ab9aca41f7947f2cf1b7a5f9d28 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Tue, 27 Nov 2018 20:17:52 +0100 Subject: [PATCH 4/5] Added inconsitent status to checkboxes and radio buttons --- rtgui/lensprofile.cc | 68 +++++++++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 787cb2cad..544093984 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -207,10 +207,6 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa break; } } - - if (multiImage) { - corrUnchangedRB->set_active(true); - } if (pp->lensProf.lcpFile.empty()) { const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); @@ -264,17 +260,34 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa corrLensfunAutoRB->set_sensitive(false); } - if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(true)) { + if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { corrOffRB->set_active(true); } */ + + ckbUseDist->set_active(pp->lensProf.useDist); + ckbUseVign->set_active(pp->lensProf.useVign); + ckbUseCA->set_active(pp->lensProf.useCA); + + if (pedited) { + corrUnchangedRB->set_active(!pedited->lensProf.lcMode); + ckbUseDist->set_inconsistent(!pedited->lensProf.useDist); + ckbUseVign->set_inconsistent(!pedited->lensProf.useVign); + ckbUseCA->set_inconsistent(!pedited->lensProf.useCA); + + if (!pedited->lensProf.lfCameraMake || !pedited->lensProf.lfCameraModel) { + setLensfunCamera("", ""); + } + if (!pedited->lensProf.lfLens) { + setLensfunLens(""); + } + + ckbUseDist->set_sensitive(true); + ckbUseVign->set_sensitive(true); + ckbUseCA->set_sensitive(true); + } updateLensfunWarning(); - - ckbUseDist->set_active(pp->lensProf.useDist); - ckbUseVign->set_active(pp->lensProf.useVign && isRaw); - ckbUseCA->set_active(pp->lensProf.useCA && isRaw && ckbUseCA->get_sensitive()); - enableListener(); conUseDist.block(false); } @@ -338,7 +351,7 @@ void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) { - if (!raw || pMeta->getFocusDist() <= 0) { + if ((!raw || pMeta->getFocusDist() <= 0) && !batchMode) { disableListener(); // CA is very focus layer dependent, otherwise it might even worsen things @@ -373,6 +386,10 @@ void LensProfilePanel::onLCPFileChanged() void LensProfilePanel::onUseDistChanged() { useDistChanged = true; + if (ckbUseDist->get_inconsistent()) { + ckbUseDist->set_inconsistent(false); + ckbUseDist->set_active(false); + } if (listener) { listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); @@ -382,6 +399,10 @@ void LensProfilePanel::onUseDistChanged() void LensProfilePanel::onUseVignChanged() { useVignChanged = true; + if (ckbUseVign->get_inconsistent()) { + ckbUseVign->set_inconsistent(false); + ckbUseVign->set_active(false); + } if (listener) { listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); @@ -391,6 +412,10 @@ void LensProfilePanel::onUseVignChanged() void LensProfilePanel::onUseCAChanged() { useCAChanged = true; + if (ckbUseCA->get_inconsistent()) { + ckbUseCA->set_inconsistent(false); + ckbUseCA->set_active(false); + } if (listener) { listener->panelChanged(EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); @@ -464,6 +489,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(false); mode = M("GENERAL_NONE"); + } else if (rbChanged == corrLensfunAutoRB) { useLensfunChanged = true; lensfunAutoChanged = true; @@ -478,23 +504,21 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(true); + disableListener(); if (batchMode) { setLensfunCamera("", ""); setLensfunLens(""); } else if (metadata) { - const bool disabled = disableListener(); const LFDatabase* const db = LFDatabase::getInstance(); const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); const LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); - - if (disabled) { - enableListener(); - } } - + enableListener(); + mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); + } else if (rbChanged == corrLensfunManualRB) { useLensfunChanged = true; lensfunAutoChanged = true; @@ -509,6 +533,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(false); mode = M("TP_LENSPROFILE_CORRECTION_MANUAL"); + } else if (rbChanged == corrLcpFileRB) { useLensfunChanged = true; lensfunAutoChanged = true; @@ -519,6 +544,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) updateDisabled(true); mode = M("TP_LENSPROFILE_CORRECTION_LCPFILE"); + } else if (rbChanged == corrUnchangedRB) { useLensfunChanged = false; lensfunAutoChanged = false; @@ -644,9 +670,11 @@ void LensProfilePanel::LFDbHelper::fillLensfunLenses() void LensProfilePanel::updateDisabled(bool enable) { - ckbUseDist->set_sensitive(enable); - ckbUseVign->set_sensitive(enable && isRaw); - ckbUseCA->set_sensitive(enable && allowFocusDep); + if (!batchMode) { + ckbUseDist->set_sensitive(enable); + ckbUseVign->set_sensitive(enable && isRaw); + ckbUseCA->set_sensitive(enable && allowFocusDep); + } } bool LensProfilePanel::setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model) From 6b0558c9e3e0329c09bacc8f06556b83bfa2160c Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Wed, 28 Nov 2018 07:44:28 +0100 Subject: [PATCH 5/5] Listener fix --- rtgui/lensprofile.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index 544093984..ae8bbb7fe 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -424,7 +424,6 @@ void LensProfilePanel::onUseCAChanged() void LensProfilePanel::setBatchMode(bool yes) { - FoldableToolPanel::setBatchMode(yes); corrUnchangedRB->set_group(corrGroup); @@ -504,7 +503,7 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) ckbUseCA->set_sensitive(true); - disableListener(); + const bool disabled = disableListener(); if (batchMode) { setLensfunCamera("", ""); setLensfunLens(""); @@ -515,7 +514,9 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); } - enableListener(); + if (disabled) { + enableListener(); + } mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH");