diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 363feacb9..144837411 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1022,6 +1022,7 @@ PARTIALPASTE_SHARPENEDGE;Bords PARTIALPASTE_SHARPENING;Netteté PARTIALPASTE_SHARPENMICRO;Microcontraste PARTIALPASTE_SOFTLIGHT;Lumière douce +PARTIALPASTE_SPOT;Retrait de taches PARTIALPASTE_TM_FATTAL;Compression de plage dynamique PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Correction du vignettage diff --git a/rtdata/languages/default b/rtdata/languages/default index e0e65ea0c..8fdfa205c 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1044,6 +1044,7 @@ PARTIALPASTE_SHARPENEDGE;Edges PARTIALPASTE_SHARPENING;Sharpening (USM/RL) PARTIALPASTE_SHARPENMICRO;Microcontrast PARTIALPASTE_SOFTLIGHT;Soft light +PARTIALPASTE_SPOT;Spot removal PARTIALPASTE_TM_FATTAL;Dynamic range compression PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Vignetting correction diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 22f608ae4..569f39435 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -57,6 +57,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren labcurve = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LABCURVE"))); // Detail Settings: + spot = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SPOT"))); sharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENING"))); localcontrast = Gtk::manage(new Gtk::CheckButton(M("PARTIALPASTE_LOCALCONTRAST"))); sharpenedge = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENEDGE"))); @@ -164,6 +165,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren //DETAIL vboxes[1]->pack_start (*detail, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*hseps[1], Gtk::PACK_SHRINK, 2); + vboxes[1]->pack_start (*spot, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*sharpen, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*localcontrast, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*sharpenedge, Gtk::PACK_SHRINK, 2); @@ -326,6 +328,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren labcurveConn = labcurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); // Detail Settings: + spotConn = spot->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); sharpenConn = sharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); localcontrastConn = localcontrast->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); gradsharpenConn = sharpenedge->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); @@ -539,6 +542,7 @@ void PartialPasteDlg::basicToggled () void PartialPasteDlg::detailToggled () { + ConnectionBlocker spotBlocker(spotConn); ConnectionBlocker sharpenBlocker(sharpenConn); ConnectionBlocker localcontrastBlocker(localcontrastConn); ConnectionBlocker gradsharpenBlocker(gradsharpenConn); @@ -551,6 +555,7 @@ void PartialPasteDlg::detailToggled () detail->set_inconsistent (false); + spot->set_active (detail->get_active ()); sharpen->set_active (detail->get_active ()); localcontrast->set_active(detail->get_active()); sharpenedge->set_active (detail->get_active ()); @@ -717,6 +722,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.colorappearance = falsePE.colorappearance; } + if (!spot->get_active ()) { + filterPE.spot = falsePE.spot; + } + if (!sharpen->get_active ()) { filterPE.sharpening = falsePE.sharpening; } diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 1403e7c1b..8089c0677 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -67,6 +67,7 @@ public: Gtk::CheckButton* colorappearance; // options in detail: + Gtk::CheckButton* spot; Gtk::CheckButton* sharpen; Gtk::CheckButton* sharpenedge; Gtk::CheckButton* sharpenmicro; @@ -146,7 +147,7 @@ public: sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, advancedConn; sigc::connection wbConn, exposureConn, localcontrastConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn; - sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn, dehazeConn; + sigc::connection spotConn, sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn, dehazeConn; sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn, softlightConn; sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn; sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn; diff --git a/rtgui/spot.cc b/rtgui/spot.cc index 31f5a138e..a90c495d0 100644 --- a/rtgui/spot.cc +++ b/rtgui/spot.cc @@ -131,11 +131,16 @@ void Spot::read (const ProcParams* pp, const ParamsEdited* pedited) activeSpot = -1; lastObject = -1; - if (spots.size() != oldSize) { - createGeometry(); + if (batchMode) { + editedCheckBox->set_label(Glib::ustring::compose (M ("TP_SPOT_COUNTLABEL"), spots.size())); } + else { + if (spots.size() != oldSize) { + createGeometry(); + } - updateGeometry(); + updateGeometry(); + } enableListener (); } @@ -147,7 +152,7 @@ void Spot::write (ProcParams* pp, ParamsEdited* pedited) if (pedited) { pedited->spot.enabled = !get_inconsistent(); - pedited->spot.entries = !editedCheckBox->get_active(); + pedited->spot.entries = editedCheckBox->get_active(); } } @@ -160,8 +165,10 @@ void Spot::resetPressed() editedCheckBox->set_active (true); editedConn.block (false); + editedCheckBox->set_label(Glib::ustring::compose (M ("TP_SPOT_COUNTLABEL"), spots.size())); + if (listener) { - listener->panelChanged (EvSpotEntry, Glib::ustring::compose (M ("TP_SPOT_COUNTLABEL"), spots.size())); + listener->panelChanged (EvSpotEntry, Glib::ustring::compose (M ("TP_SPOT_COUNTLABEL"), 0)); } } else { if (!spots.empty()) { @@ -783,7 +790,7 @@ void Spot::tweakParams(procparams::ProcParams& pparams) //params->raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); // -> disabling all transform - //params->coarse = CoarseTransformParams(); + //pparams.coarse = CoarseTransformParams(); pparams.lensProf = LensProfParams(); pparams.cacorrection = CACorrParams(); pparams.distortion = DistortionParams();