used new CheckBox class in bayerrawexposure.*

This commit is contained in:
heckflosse 2017-03-16 15:09:56 +01:00
parent bb518eeef8
commit df37ab6b4c
3 changed files with 24 additions and 48 deletions

View File

@ -18,7 +18,6 @@
*/
#include "bayerrawexposure.h"
#include "guiutils.h"
#include <sstream>
using namespace rtengine;
using namespace rtengine::procparams;
@ -57,9 +56,9 @@ BayerRAWExposure::BayerRAWExposure () : FoldableToolPanel(this, "bayerrawexposur
}
PexBlack0->show();
PextwoGreen = Gtk::manage(new Gtk::CheckButton((M("TP_RAWEXPOS_TWOGREEN"))));// two green
PextwoGreen = Gtk::manage(new CheckBox(M("TP_RAWEXPOS_TWOGREEN"), multiImage));// two green
PextwoGreen->set_active (true);
greenconn = PextwoGreen->signal_toggled().connect ( sigc::mem_fun(*this, &BayerRAWExposure::GreenChanged));
PextwoGreen->setCheckBoxListener (this);
pack_start( *PexBlack1, Gtk::PACK_SHRINK, 0);//black R
pack_start( *PexBlack0, Gtk::PACK_SHRINK, 0);//black G1
@ -79,16 +78,13 @@ void BayerRAWExposure::read(const rtengine::procparams::ProcParams* pp, const Pa
PexBlack3->setEditedState( pedited->raw.bayersensor.exBlack3 ? Edited : UnEdited );
}
greenconn.block (true);
PextwoGreen->set_active (pp->raw.bayersensor.twogreen);
greenconn.block (false);
lastPextwoGreen = pp->raw.bayersensor.twogreen;
PextwoGreen->setValue (pp->raw.bayersensor.twogreen);
PexBlack0->setValue (pp->raw.bayersensor.black0);//black
PexBlack1->setValue (pp->raw.bayersensor.black1);//black
PexBlack2->setValue (pp->raw.bayersensor.black2);//black
if(!PextwoGreen->get_active()) {
if(!PextwoGreen->getLastActive()) {
PexBlack3->setValue (pp->raw.bayersensor.black3);
} else {
PexBlack3->setValue (PexBlack0->getValue());
@ -102,9 +98,9 @@ void BayerRAWExposure::write( rtengine::procparams::ProcParams* pp, ParamsEdited
pp->raw.bayersensor.black0 = PexBlack0->getValue();// black
pp->raw.bayersensor.black1 = PexBlack1->getValue();// black
pp->raw.bayersensor.black2 = PexBlack2->getValue();// black
pp->raw.bayersensor.twogreen = PextwoGreen->get_active();
pp->raw.bayersensor.twogreen = PextwoGreen->getLastActive();
if(PextwoGreen->get_active()) {
if(PextwoGreen->getLastActive()) {
pp->raw.bayersensor.black3 = pp->raw.bayersensor.black0; // active or desactive 2 green together
} else {
pp->raw.bayersensor.black3 = PexBlack3->getValue();
@ -126,7 +122,7 @@ void BayerRAWExposure::adjusterChanged (Adjuster* a, double newval)
Glib::ustring value = a->getTextValue();
if (a == PexBlack0) {
if(!PextwoGreen->get_active()) {
if(!PextwoGreen->getLastActive()) {
listener->panelChanged (EvPreProcessExpBlackzero, value );
} else {
listener->panelChanged (EvPreProcessExpBlackzero, value );
@ -137,7 +133,7 @@ void BayerRAWExposure::adjusterChanged (Adjuster* a, double newval)
} else if (a == PexBlack2) {
listener->panelChanged (EvPreProcessExpBlacktwo, value );
} else if (a == PexBlack3) {
if(!PextwoGreen->get_active()) {
if(!PextwoGreen->getLastActive()) {
listener->panelChanged (EvPreProcessExpBlackthree, value );
} else {
listener->panelChanged (EvPreProcessExpBlackthree, value );
@ -146,33 +142,17 @@ void BayerRAWExposure::adjusterChanged (Adjuster* a, double newval)
}
}
}
void BayerRAWExposure::GreenChanged()
void BayerRAWExposure::checkBoxToggled (CheckBox* c, CheckValue newval)
{
if (batchMode) {
if (PextwoGreen->get_inconsistent()) {
PextwoGreen->set_inconsistent (false);
greenconn.block (true);
PextwoGreen->set_active (false);
greenconn.block (false);
} else if (lastPextwoGreen) {
PextwoGreen->set_inconsistent (true);
if (c == PextwoGreen) {
if (listener) {
listener->panelChanged (EvPreProcessExptwoGreen, PextwoGreen->getLastActive() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED"));
if (PextwoGreen->getLastActive()) {
PexBlack3->setValue (PexBlack0->getValue());//two green together
}
}
lastPextwoGreen = PextwoGreen->get_active ();
}
if (listener) {
if (PextwoGreen->get_active()) {
listener->panelChanged (EvPreProcessExptwoGreen, M("GENERAL_ENABLED"));
PexBlack3->setValue (PexBlack0->getValue());//two green together
}
else {
listener->panelChanged (EvPreProcessExptwoGreen, M("GENERAL_DISABLED"));
}
}
}
void BayerRAWExposure::setBatchMode(bool batchMode)

View File

@ -21,10 +21,10 @@
#include <gtkmm.h>
#include "adjuster.h"
#include "checkbox.h"
#include "toolpanel.h"
#include "../rtengine/rawimage.h"
class BayerRAWExposure : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel
class BayerRAWExposure : public ToolParamBlock, public AdjusterListener, public CheckBoxListener, public FoldableToolPanel
{
protected:
@ -32,12 +32,8 @@ protected:
Adjuster* PexBlack1;
Adjuster* PexBlack2;
Adjuster* PexBlack3;
bool lastPextwoGreen;
sigc::connection greenconn;
Gtk::CheckButton* PextwoGreen;
CheckBox* PextwoGreen;
private:
// Gtk::CheckButton* PextwoGreen;
public:
BayerRAWExposure ();
@ -46,8 +42,8 @@ public:
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
void setBatchMode (bool batchMode);
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
void GreenChanged() ;
void adjusterChanged (Adjuster* a, double newval);
void checkBoxToggled (CheckBox* c, CheckValue newval);
void setAdjusterBehavior (bool pexblackadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};

View File

@ -124,13 +124,13 @@ void RAWCACorr::checkBoxToggled (CheckBox* c, CheckValue newval)
{
if (c == caAutocorrect) {
if (!batchMode) {
caStrength->set_sensitive(caAutocorrect->get_active ());
caStrength->set_sensitive(caAutocorrect->getLastActive ());
// disable Red and Blue sliders when caAutocorrect is enabled
caRed->set_sensitive(!caAutocorrect->get_active ());
caBlue->set_sensitive(!caAutocorrect->get_active ());
caRed->set_sensitive(!caAutocorrect->getLastActive ());
caBlue->set_sensitive(!caAutocorrect->getLastActive ());
}
if (listener) {
listener->panelChanged (EvPreProcessAutoCA, caAutocorrect->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED"));
listener->panelChanged (EvPreProcessAutoCA, caAutocorrect->getLastActive() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED"));
}
}
}