Suppressing redundant tools.

This commit is contained in:
Emil Martinec
2011-02-03 03:02:33 -06:00
parent 32b0f0480b
commit 3ff0eb3580
19 changed files with 354 additions and 154 deletions

View File

@@ -53,14 +53,31 @@ LCurve::LCurve () : ToolPanel(), brAdd(false), contrAdd(false), satAdd(false) {
pack_start (*curveEditorG, Gtk::PACK_SHRINK, 4);
//curveEditorG->show();
brightness->setAdjusterListener (this);
contrast->setAdjusterListener (this);
saturation->setAdjusterListener (this);
//channel->signal_changed().connect( sigc::mem_fun(*this, &LCurve::channel) );
//%%%%%%%%%%%%%%%%%%
pack_start (*Gtk::manage (new Gtk::HSeparator()));
avoidclip = Gtk::manage (new Gtk::CheckButton (M("TP_LABCURVE_AVOIDCOLORCLIP")));
pack_start (*avoidclip);
pack_start (*Gtk::manage (new Gtk::HSeparator()));
enablelimiter = Gtk::manage (new Gtk::CheckButton (M("TP_LABCURVE_ENABLESATLIMITER")));
pack_start (*enablelimiter);
saturationlimiter = new Adjuster (M("TP_LABCURVE_SATLIMIT"), 0, 200, 0.1, 100);
saturationlimiter->show ();
saturationlimiter->reference ();
//saturation->setAdjusterListener (this);
saturationlimiter->setAdjusterListener (this);
acconn = avoidclip->signal_toggled().connect( sigc::mem_fun(*this, &LCurve::avoidclip_toggled) );
elconn = enablelimiter->signal_toggled().connect( sigc::mem_fun(*this, &LCurve::enablelimiter_toggled) );
//%%%%%%%%%%%%%%%%%%%
}
@@ -76,6 +93,12 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) {
brightness->setEditedState (pedited->labCurve.brightness ? Edited : UnEdited);
contrast->setEditedState (pedited->labCurve.contrast ? Edited : UnEdited);
saturation->setEditedState (pedited->labCurve.saturation ? Edited : UnEdited);
//%%%%%%%%%%%%%%%%%%%%%%
saturationlimiter->setEditedState (pedited->labCurve.saturationlimit ? Edited : UnEdited);
avoidclip->set_inconsistent (!pedited->labCurve.avoidclip);
enablelimiter->set_inconsistent (!pedited->labCurve.enable_saturationlimiter);
//%%%%%%%%%%%%%%%%%%%%%%
lshape->setUnChanged (!pedited->labCurve.lcurve);
ashape->setUnChanged (!pedited->labCurve.acurve);
@@ -86,6 +109,23 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) {
brightness->setValue (pp->labCurve.brightness);
contrast->setValue (pp->labCurve.contrast);
saturation->setValue (pp->labCurve.saturation);
//%%%%%%%%%%%%%%%%%%%%%%
saturationlimiter->setValue (pp->labCurve.saturationlimit);
acconn.block (true);
avoidclip->set_active (pp->labCurve.avoidclip);
acconn.block (false);
elconn.block (true);
enablelimiter->set_active (pp->labCurve.enable_saturationlimiter);
elconn.block (false);
removeIfThere (this, saturationlimiter, false);
if (enablelimiter->get_active () || enablelimiter->get_inconsistent())
pack_start (*saturationlimiter);
lastACVal = pp->labCurve.avoidclip;
lastELVal = pp->labCurve.enable_saturationlimiter;
//%%%%%%%%%%%%%%%%%%%%%%
lshape->setCurve (pp->labCurve.lcurve);
ashape->setCurve (pp->labCurve.acurve);
@@ -100,6 +140,12 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) {
pp->labCurve.brightness = brightness->getValue ();
pp->labCurve.contrast = (int)contrast->getValue ();
pp->labCurve.saturation = (int)saturation->getValue ();
//%%%%%%%%%%%%%%%%%%%%%%
pp->labCurve.avoidclip = avoidclip->get_active ();
pp->labCurve.enable_saturationlimiter = enablelimiter->get_active ();
pp->labCurve.saturationlimit = saturationlimiter->getValue ();
//%%%%%%%%%%%%%%%%%%%%%%
pp->labCurve.lcurve = lshape->getCurve ();
pp->labCurve.acurve = ashape->getCurve ();
@@ -109,6 +155,12 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) {
pedited->labCurve.brightness = brightness->getEditedState ();
pedited->labCurve.contrast = contrast->getEditedState ();
pedited->labCurve.saturation = saturation->getEditedState ();
//%%%%%%%%%%%%%%%%%%%%%%
pedited->labCurve.avoidclip = !avoidclip->get_inconsistent();
pedited->labCurve.enable_saturationlimiter = !enablelimiter->get_inconsistent();
pedited->labCurve.saturationlimit = saturationlimiter->getEditedState ();
//%%%%%%%%%%%%%%%%%%%%%%
pedited->labCurve.lcurve = !lshape->isUnChanged ();
pedited->labCurve.acurve = !ashape->isUnChanged ();
@@ -121,20 +173,77 @@ void LCurve::setDefaults (const ProcParams* defParams, const ParamsEdited* pedit
brightness->setDefault (defParams->labCurve.brightness);
contrast->setDefault (defParams->labCurve.contrast);
saturation->setDefault (defParams->labCurve.saturation);
saturationlimiter->setDefault (defParams->labCurve.saturationlimit);
if (pedited) {
brightness->setDefaultEditedState (pedited->labCurve.brightness ? Edited : UnEdited);
contrast->setDefaultEditedState (pedited->labCurve.contrast ? Edited : UnEdited);
saturation->setDefaultEditedState (pedited->labCurve.saturation ? Edited : UnEdited);
saturationlimiter->setDefaultEditedState (pedited->labCurve.saturationlimit ? Edited : UnEdited);
}
else {
brightness->setDefaultEditedState (Irrelevant);
contrast->setDefaultEditedState (Irrelevant);
saturation->setDefaultEditedState (Irrelevant);
saturationlimiter->setDefaultEditedState (Irrelevant);
}
}
//%%%%%%%%%%%%%%%%%%%%%%
//Clipping control changed
void LCurve::avoidclip_toggled () {
if (batchMode) {
if (avoidclip->get_inconsistent()) {
avoidclip->set_inconsistent (false);
acconn.block (true);
avoidclip->set_active (false);
acconn.block (false);
}
else if (lastACVal)
avoidclip->set_inconsistent (true);
lastACVal = avoidclip->get_active ();
}
if (listener) {
if (avoidclip->get_active ())
listener->panelChanged (EvLAvoidClip, M("GENERAL_ENABLED"));
else
listener->panelChanged (EvLAvoidClip, M("GENERAL_DISABLED"));
}
}
void LCurve::enablelimiter_toggled () {
if (batchMode) {
if (enablelimiter->get_inconsistent()) {
enablelimiter->set_inconsistent (false);
elconn.block (true);
enablelimiter->set_active (false);
elconn.block (false);
}
else if (lastELVal)
enablelimiter->set_inconsistent (true);
lastELVal = enablelimiter->get_active ();
}
removeIfThere (this, saturationlimiter, false);
if (enablelimiter->get_active () || enablelimiter->get_inconsistent())
pack_start (*saturationlimiter);
if (listener) {
if (enablelimiter->get_active ())
listener->panelChanged (EvLSatLimiter, M("GENERAL_ENABLED"));
else
listener->panelChanged (EvLSatLimiter, M("GENERAL_DISABLED"));
}
}
//%%%%%%%%%%%%%%%%%%%%%%
/*
* Curve listener
*
@@ -170,6 +279,8 @@ void LCurve::adjusterChanged (Adjuster* a, double newval) {
listener->panelChanged (EvLContrast, costr);
else if (a==saturation)
listener->panelChanged (EvLSaturation, costr);
else if (a==saturationlimiter)
listener->panelChanged (EvLSatLimiter, costr);
}
//attempt to hide unused channels
@@ -198,6 +309,7 @@ void LCurve::setBatchMode (bool batchMode) {
brightness->showEditedCB ();
contrast->showEditedCB ();
saturation->showEditedCB ();
saturationlimiter->showEditedCB ();
curveEditorG->setBatchMode (batchMode);
}
@@ -210,6 +322,7 @@ void LCurve::setAdjusterBehavior (bool bradd, bool contradd, bool satadd) {
contrast->setLimits (-100, 100, 1, 0);
if ((!satAdd && satadd) || (satAdd && !satadd))
saturation->setLimits (-100, 100, 1, 0);
brAdd = bradd;
contrAdd = contradd;