diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 73569a63f..33e92c23e 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -27,208 +27,223 @@ using namespace rtengine::procparams; extern Options options; Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), true, true) { - std::vector milestones; - CurveListener::setMulti(true); - nextnlevel=7.; - float r, g, b; - //from -PI to +PI (radians) convert to hsv and draw bottombar - Color::hsv2rgb01(0.4199, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.0 , r, g, b) ); // hsv: 0.4199 rad: -3.14 - Color::hsv2rgb01(0.5000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.054 , r, g, b) ); // hsv: 0.5 rad: -2.8 - Color::hsv2rgb01(0.6000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.1336, r, g, b) ); // hsv: 0.60 rad: -2.3 - Color::hsv2rgb01(0.7500, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.3567, r, g, b) ); // hsv: 0.75 rad: -0.9 - Color::hsv2rgb01(0.8560, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4363, r, g, b) ); // hsv: 0.856 rad: -0.4 - Color::hsv2rgb01(0.9200, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4841, r, g, b) ); // hsv: 0.92 rad: -0.1 - Color::hsv2rgb01(0.9300, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5000, r, g, b) ); // hsv: 0.93 rad: 0 - Color::hsv2rgb01(0.9600, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5366, r, g, b) ); // hsv: 0.96 rad: 0.25 - Color::hsv2rgb01(1.0000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5955, r, g, b) ); // hsv: 1. rad: 0.6 - Color::hsv2rgb01(0.0675, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.6911, r, g, b) ); // hsv: 0.0675 rad: 1.2 - Color::hsv2rgb01(0.0900, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7229, r, g, b) ); // hsv: 0.09 rad: 1.4 - Color::hsv2rgb01(0.1700, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7707, r, g, b) ); // hsv: 0.17 rad: 1.7 - Color::hsv2rgb01(0.2650, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8503, r, g, b) ); // hsv: 0.265 rad: 2.1 - Color::hsv2rgb01(0.3240, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8981, r, g, b) ); // hsv: 0.324 rad: 2.5 - Color::hsv2rgb01(0.4197, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(1. , r, g, b) ); // hsv: 0.419 rad: 3.14 + std::vector milestones; + CurveListener::setMulti(true); + nextnlevel=7.; + float r, g, b; + //from -PI to +PI (radians) convert to hsv and draw bottombar + Color::hsv2rgb01(0.4199, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.0 , r, g, b) ); // hsv: 0.4199 rad: -3.14 + Color::hsv2rgb01(0.5000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.054 , r, g, b) ); // hsv: 0.5 rad: -2.8 + Color::hsv2rgb01(0.6000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.1336, r, g, b) ); // hsv: 0.60 rad: -2.3 + Color::hsv2rgb01(0.7500, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.3567, r, g, b) ); // hsv: 0.75 rad: -0.9 + Color::hsv2rgb01(0.8560, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4363, r, g, b) ); // hsv: 0.856 rad: -0.4 + Color::hsv2rgb01(0.9200, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.4841, r, g, b) ); // hsv: 0.92 rad: -0.1 + Color::hsv2rgb01(0.9300, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5000, r, g, b) ); // hsv: 0.93 rad: 0 + Color::hsv2rgb01(0.9600, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5366, r, g, b) ); // hsv: 0.96 rad: 0.25 + Color::hsv2rgb01(1.0000, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.5955, r, g, b) ); // hsv: 1. rad: 0.6 + Color::hsv2rgb01(0.0675, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.6911, r, g, b) ); // hsv: 0.0675 rad: 1.2 + Color::hsv2rgb01(0.0900, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7229, r, g, b) ); // hsv: 0.09 rad: 1.4 + Color::hsv2rgb01(0.1700, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.7707, r, g, b) ); // hsv: 0.17 rad: 1.7 + Color::hsv2rgb01(0.2650, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8503, r, g, b) ); // hsv: 0.265 rad: 2.1 + Color::hsv2rgb01(0.3240, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(0.8981, r, g, b) ); // hsv: 0.324 rad: 2.5 + Color::hsv2rgb01(0.4197, 0.5, 0.5, r, g, b); milestones.push_back( GradientMilestone(1. , r, g, b) ); // hsv: 0.419 rad: 3.14 - std::vector milestones2; - milestones2.push_back( GradientMilestone(0.0, 0.0, 0.0, 0.0) ); - milestones2.push_back( GradientMilestone(1.0, 1.0, 1.0, 1.0) ); + std::vector milestones2; + milestones2.push_back( GradientMilestone(0.0, 0.0, 0.0, 0.0) ); + milestones2.push_back( GradientMilestone(1.0, 1.0, 1.0, 1.0) ); - std::vector defaultCurve; + std::vector defaultCurve; - expsettings = new MyExpander (false, M("TP_WAVELET_SETTINGS")); - expsettings->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButSettings) ); - expcontrast = new MyExpander (true, M("TP_WAVELET_LEVF")); - expcontrast->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButContrast) ); - expchroma = new MyExpander (true, M("TP_WAVELET_LEVCH")); - expchroma->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButChroma) ); - exptoning = new MyExpander (true,M("TP_WAVELET_TON")); - exptoning->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButToning) ); - expnoise = new MyExpander (true, M("TP_WAVELET_NOISE")); - expnoise->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButNoise) ); - expedge = new MyExpander (true, M("TP_WAVELET_EDGE")); - expedge->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButEdge) ); - expgamut = new MyExpander (false, M("TP_WAVELET_CONTR")); - expgamut->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButGamut) ); - expresid = new MyExpander (true, M("TP_WAVELET_RESID")); - expresid->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButResid) ); - expfinal = new MyExpander (true, M("TP_WAVELET_FINAL")); - expfinal->signal_button_release_event().connect_notify( sigc::mem_fun(this, &Wavelet::foldAllButFinal) ); + expsettings = new MyExpander (false, M("TP_WAVELET_SETTINGS")); + expsettings->signal_button_release_event().connect_notify( sigc::bind( sigc::mem_fun(this, &Wavelet::foldAllButMe), expsettings) ); + + expcontrast = new MyExpander (true, M("TP_WAVELET_LEVF")); + expcontrast->signal_button_release_event().connect_notify( sigc::bind( sigc::mem_fun(this, &Wavelet::foldAllButMe), expcontrast) ); + enableContrastConn = expcontrast->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expcontrast) ); + + expchroma = new MyExpander (true, M("TP_WAVELET_LEVCH")); + expchroma->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expchroma) ); + enableChromaConn = expchroma->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expchroma) ); + + exptoning = new MyExpander (true,M("TP_WAVELET_TON")); + exptoning->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), exptoning) ); + enableToningConn = exptoning->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), exptoning) ); + + expnoise = new MyExpander (true, M("TP_WAVELET_NOISE")); + expnoise->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expnoise) ); + enableNoiseConn = expnoise->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expnoise) ); + + expedge = new MyExpander (true, M("TP_WAVELET_EDGE")); + expedge->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expedge) ); + enableEdgeConn = expedge->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expedge) ); + + expgamut = new MyExpander (false, M("TP_WAVELET_CONTR")); + expgamut->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expgamut) ); + + expresid = new MyExpander (true, M("TP_WAVELET_RESID")); + expresid->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expresid) ); + enableResidConn = expresid->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expresid) ); + + expfinal = new MyExpander (true, M("TP_WAVELET_FINAL")); + expfinal->signal_button_release_event().connect_notify( sigc::bind ( sigc::mem_fun(this, &Wavelet::foldAllButMe), expfinal) ); + enableFinalConn = expfinal->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expfinal) ); // Wavelet Settings - settingsVBox = Gtk::manage (new Gtk::VBox()); - settingsVBox->set_border_width(4); - settingsVBox->set_spacing(2); + settingsVBox = Gtk::manage (new Gtk::VBox()); + settingsVBox->set_border_width(4); + settingsVBox->set_spacing(2); - strength = Gtk::manage (new Adjuster (M("TP_WAVELET_STRENGTH"), 0, 100, 1, 100)); - strength->setAdjusterListener (this); + strength = Gtk::manage (new Adjuster (M("TP_WAVELET_STRENGTH"), 0, 100, 1, 100)); + strength->setAdjusterListener (this); - thres = Gtk::manage (new Adjuster (M("TP_WAVELET_LEVELS"), 3, 9, 1, 7)); - thres->set_tooltip_text (M("TP_WAVELET_LEVELS_TOOLTIP")); - thres->setAdjusterListener (this); + thres = Gtk::manage (new Adjuster (M("TP_WAVELET_LEVELS"), 3, 9, 1, 7)); + thres->set_tooltip_text (M("TP_WAVELET_LEVELS_TOOLTIP")); + thres->setAdjusterListener (this); - tilesizeHBox = Gtk::manage (new Gtk::HBox()); - tilesizeLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_TILESIZE") + ":")); - //tilesizeLabel->set_alignment(Gtk::ALIGN_START); - Tilesmethod = Gtk::manage (new MyComboBoxText ()); - Tilesmethod->append_text (M("TP_WAVELET_TILESFULL")); - Tilesmethod->append_text (M("TP_WAVELET_TILESBIG")); - Tilesmethod->append_text (M("TP_WAVELET_TILESLIT")); - Tilesmethodconn = Tilesmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TilesmethodChanged) ); - Tilesmethod->set_tooltip_text (M("TP_WAVELET_TILES_TOOLTIP")); - tilesizeHBox->pack_start(*tilesizeLabel, Gtk::PACK_SHRINK, 4); - tilesizeHBox->pack_start(*Tilesmethod); + tilesizeHBox = Gtk::manage (new Gtk::HBox()); + tilesizeLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_TILESIZE") + ":")); + //tilesizeLabel->set_alignment(Gtk::ALIGN_START); + Tilesmethod = Gtk::manage (new MyComboBoxText ()); + Tilesmethod->append_text (M("TP_WAVELET_TILESFULL")); + Tilesmethod->append_text (M("TP_WAVELET_TILESBIG")); + Tilesmethod->append_text (M("TP_WAVELET_TILESLIT")); + Tilesmethodconn = Tilesmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TilesmethodChanged) ); + Tilesmethod->set_tooltip_text (M("TP_WAVELET_TILES_TOOLTIP")); + tilesizeHBox->pack_start(*tilesizeLabel, Gtk::PACK_SHRINK, 4); + tilesizeHBox->pack_start(*Tilesmethod); - daubcoeffHBox = Gtk::manage (new Gtk::HBox()); - daubcoeffLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_DAUB") + ":")); - daubcoeffmethod = Gtk::manage (new MyComboBoxText ()); - daubcoeffmethod->set_sensitive(true); - daubcoeffmethod->append_text (M("TP_WAVELET_DAUB2")); - daubcoeffmethod->append_text (M("TP_WAVELET_DAUB4")); - daubcoeffmethod->append_text (M("TP_WAVELET_DAUB6")); - daubcoeffmethod->append_text (M("TP_WAVELET_DAUB10")); - daubcoeffmethod->append_text (M("TP_WAVELET_DAUB14")); - daubcoeffmethodconn = daubcoeffmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::daubcoeffmethodChanged) ); - daubcoeffmethod->set_tooltip_text (M("TP_WAVELET_DAUB_TOOLTIP")); - daubcoeffHBox->pack_start(*daubcoeffLabel, Gtk::PACK_SHRINK, 4); - daubcoeffHBox->pack_start(*daubcoeffmethod); + daubcoeffHBox = Gtk::manage (new Gtk::HBox()); + daubcoeffLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_DAUB") + ":")); + daubcoeffmethod = Gtk::manage (new MyComboBoxText ()); + daubcoeffmethod->set_sensitive(true); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB2")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB4")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB6")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB10")); + daubcoeffmethod->append_text (M("TP_WAVELET_DAUB14")); + daubcoeffmethodconn = daubcoeffmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::daubcoeffmethodChanged) ); + daubcoeffmethod->set_tooltip_text (M("TP_WAVELET_DAUB_TOOLTIP")); + daubcoeffHBox->pack_start(*daubcoeffLabel, Gtk::PACK_SHRINK, 4); + daubcoeffHBox->pack_start(*daubcoeffmethod); - backgroundHBox = Gtk::manage (new Gtk::HBox()); - Backmethod = Gtk::manage (new MyComboBoxText ()); - Backmethod->append_text (M("TP_WAVELET_B0")); - Backmethod->append_text (M("TP_WAVELET_B1")); - Backmethod->append_text (M("TP_WAVELET_B2")); - Backmethodconn = Backmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BackmethodChanged) ); - backgroundLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BACKGROUND") + ":")); - backgroundHBox->pack_start(*backgroundLabel, Gtk::PACK_SHRINK, 4); - backgroundHBox->pack_start(*Backmethod); + backgroundHBox = Gtk::manage (new Gtk::HBox()); + Backmethod = Gtk::manage (new MyComboBoxText ()); + Backmethod->append_text (M("TP_WAVELET_B0")); + Backmethod->append_text (M("TP_WAVELET_B1")); + Backmethod->append_text (M("TP_WAVELET_B2")); + Backmethodconn = Backmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BackmethodChanged) ); + backgroundLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BACKGROUND") + ":")); + backgroundHBox->pack_start(*backgroundLabel, Gtk::PACK_SHRINK, 4); + backgroundHBox->pack_start(*Backmethod); - levdirMainHBox = Gtk::manage (new Gtk::HBox()); - CLmethod = Gtk::manage (new MyComboBoxText ()); - CLmethod->append_text (M("TP_WAVELET_LEVDIR_ONE")); - CLmethod->append_text (M("TP_WAVELET_LEVDIR_INF")); - CLmethod->append_text (M("TP_WAVELET_LEVDIR_SUP")); - CLmethod->append_text (M("TP_WAVELET_LEVDIR_ALL")); - CLmethodconn = CLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CLmethodChanged) ); - levdirMainLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_PROC") + ":")); - levdirMainHBox->pack_start(*levdirMainLabel, Gtk::PACK_SHRINK, 4); - levdirMainHBox->pack_start(*CLmethod); //same + levdirMainHBox = Gtk::manage (new Gtk::HBox()); + CLmethod = Gtk::manage (new MyComboBoxText ()); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_ONE")); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_INF")); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_SUP")); + CLmethod->append_text (M("TP_WAVELET_LEVDIR_ALL")); + CLmethodconn = CLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CLmethodChanged) ); + levdirMainLabel = Gtk::manage (new Gtk::Label (M("TP_WAVELET_PROC") + ":")); + levdirMainHBox->pack_start(*levdirMainLabel, Gtk::PACK_SHRINK, 4); + levdirMainHBox->pack_start(*CLmethod); //same - levdirSubHBox = Gtk::manage (new Gtk::HBox()); - Lmethod = Gtk::manage (new MyComboBoxText ()); - Lmethod->set_sensitive(false); - Lmethod->set_sensitive(false); - Lmethod->append_text (M("TP_WAVELET_1")); - Lmethod->append_text (M("TP_WAVELET_2")); - Lmethod->append_text (M("TP_WAVELET_3")); - Lmethod->append_text (M("TP_WAVELET_4")); - Lmethod->append_text (M("TP_WAVELET_5")); - Lmethod->append_text (M("TP_WAVELET_6")); - Lmethod->append_text (M("TP_WAVELET_7")); - Lmethod->append_text (M("TP_WAVELET_8")); - Lmethod->append_text (M("TP_WAVELET_9")); - Lmethod->append_text (M("TP_WAVELET_SUPE")); - Lmethod->append_text (M("TP_WAVELET_RESID")); - Lmethod->set_active(0); - Dirmethod = Gtk::manage (new MyComboBoxText ()); - Dirmethod->set_sensitive(false); - Dirmethod->append_text (M("TP_WAVELET_DONE")); - Dirmethod->append_text (M("TP_WAVELET_DTWO")); - Dirmethod->append_text (M("TP_WAVELET_DTHR")); - Dirmethod->append_text (M("TP_WAVELET_DALL")); - Lmethodconn = Lmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::LmethodChanged) ); - Dirmethodconn = Dirmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::DirmethodChanged) ); - levdirSubHBox->pack_start(*Lmethod); - levdirSubHBox->pack_start(*Dirmethod, Gtk::PACK_EXPAND_WIDGET, 2); // same, but 2 not 4? + levdirSubHBox = Gtk::manage (new Gtk::HBox()); + Lmethod = Gtk::manage (new MyComboBoxText ()); + Lmethod->set_sensitive(false); + Lmethod->set_sensitive(false); + Lmethod->append_text (M("TP_WAVELET_1")); + Lmethod->append_text (M("TP_WAVELET_2")); + Lmethod->append_text (M("TP_WAVELET_3")); + Lmethod->append_text (M("TP_WAVELET_4")); + Lmethod->append_text (M("TP_WAVELET_5")); + Lmethod->append_text (M("TP_WAVELET_6")); + Lmethod->append_text (M("TP_WAVELET_7")); + Lmethod->append_text (M("TP_WAVELET_8")); + Lmethod->append_text (M("TP_WAVELET_9")); + Lmethod->append_text (M("TP_WAVELET_SUPE")); + Lmethod->append_text (M("TP_WAVELET_RESID")); + Lmethod->set_active(0); + Dirmethod = Gtk::manage (new MyComboBoxText ()); + Dirmethod->set_sensitive(false); + Dirmethod->append_text (M("TP_WAVELET_DONE")); + Dirmethod->append_text (M("TP_WAVELET_DTWO")); + Dirmethod->append_text (M("TP_WAVELET_DTHR")); + Dirmethod->append_text (M("TP_WAVELET_DALL")); + Lmethodconn = Lmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::LmethodChanged) ); + Dirmethodconn = Dirmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::DirmethodChanged) ); + levdirSubHBox->pack_start(*Lmethod); + levdirSubHBox->pack_start(*Dirmethod, Gtk::PACK_EXPAND_WIDGET, 2); // same, but 2 not 4? - settingsVBox->pack_start(*strength); - settingsVBox->pack_start(*thres); - settingsVBox->pack_start(*tilesizeHBox); - settingsVBox->pack_start(*daubcoeffHBox); - settingsVBox->pack_start(*backgroundHBox); - settingsVBox->pack_start(*levdirMainHBox); - settingsVBox->pack_start(*levdirSubHBox); + settingsVBox->pack_start(*strength); + settingsVBox->pack_start(*thres); + settingsVBox->pack_start(*tilesizeHBox); + settingsVBox->pack_start(*daubcoeffHBox); + settingsVBox->pack_start(*backgroundHBox); + settingsVBox->pack_start(*levdirMainHBox); + settingsVBox->pack_start(*levdirSubHBox); // Contrast Gtk::VBox * levBox = Gtk::manage (new Gtk::VBox()); - levBox->set_border_width(4); + levBox->set_border_width(4); levBox->set_spacing(2); - Gtk::HBox * buttonBox = Gtk::manage (new Gtk::HBox(true, 10)); + Gtk::HBox * buttonBox = Gtk::manage (new Gtk::HBox(true, 10)); wavLabels = Gtk::manage(new Gtk::Label("---", Gtk::ALIGN_CENTER)); - levBox->pack_start(*buttonBox, Gtk::PACK_SHRINK, 2); + levBox->pack_start(*buttonBox, Gtk::PACK_SHRINK, 2); - Gtk::Button * contrastMinusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_MINUS"))); - buttonBox->pack_start(*contrastMinusButton); - contrastMinusPressedConn = contrastMinusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastMinusPressed)); + Gtk::Button * contrastMinusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_MINUS"))); + buttonBox->pack_start(*contrastMinusButton); + contrastMinusPressedConn = contrastMinusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastMinusPressed)); - Gtk::Button * neutralButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); - buttonBox->pack_start(*neutralButton); - neutralPressedConn = neutralButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralPressed)); + Gtk::Button * neutralButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); + buttonBox->pack_start(*neutralButton); + neutralPressedConn = neutralButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralPressed)); - Gtk::Button * contrastPlusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_PLUS"))); - buttonBox->pack_start(*contrastPlusButton); - contrastPlusPressedConn = contrastPlusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastPlusPressed)); + Gtk::Button * contrastPlusButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_CONTRAST_PLUS"))); + buttonBox->pack_start(*contrastPlusButton); + contrastPlusPressedConn = contrastPlusButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::contrastPlusPressed)); - buttonBox->show_all_children(); + buttonBox->show_all_children(); - for(int i = 0; i < 9; i++) - { - Glib::ustring ss; - switch( i ){ - case 0: - ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_FINEST"));break; - case 8: - ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_LARGEST"));break; - default: - ss =Glib::ustring::compose( "%1",(i+1)); - } + for(int i = 0; i < 9; i++) + { + Glib::ustring ss; + switch( i ){ + case 0: + ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_FINEST"));break; + case 8: + ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_LARGEST"));break; + default: + ss =Glib::ustring::compose( "%1",(i+1)); + } - correction[i] = Gtk::manage ( new Adjuster (ss, -100, 350, 1, 0) ); - correction[i]->setAdjusterListener(this); - levBox->pack_start(*correction[i]); - } + correction[i] = Gtk::manage ( new Adjuster (ss, -100, 350, 1, 0) ); + correction[i]->setAdjusterListener(this); + levBox->pack_start(*correction[i]); + } sup = Gtk::manage (new Adjuster (M("TP_WAVELET_SUPE"), -100, 350, 1, 0)); - levBox->pack_start(*sup); + levBox->pack_start(*sup); sup->setAdjusterListener (this); wavLabels->show(); levBox->pack_start (*wavLabels); - contrastSHFrame = Gtk::manage (new Gtk::Frame (M("TP_WAVELET_APPLYTO"))); - contrastSHVBox = Gtk::manage (new Gtk::VBox); - contrastSHVBox->set_border_width(4); - contrastSHVBox->set_spacing(2); + contrastSHFrame = Gtk::manage (new Gtk::Frame (M("TP_WAVELET_APPLYTO"))); + contrastSHVBox = Gtk::manage (new Gtk::VBox); + contrastSHVBox->set_border_width(4); + contrastSHVBox->set_spacing(2); HSmethod = Gtk::manage (new MyComboBoxText ()); HSmethod->append_text (M("TP_WAVELET_HS1")); HSmethod->append_text (M("TP_WAVELET_HS2")); HSmethodconn = HSmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::HSmethodChanged) ); - hllev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HIGHLIGHT"), 0., 100., 50., 75., 100., 98., 0, false)); + hllev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HIGHLIGHT"), 0., 100., 50., 75., 100., 98., 0, false)); hllev->setAdjusterListener (this); hllev->setBgGradient(milestones2); threshold = Gtk::manage (new Adjuster (M("TP_WAVELET_THRESHOLD"), 1, 9, 1, 5)); - threshold->setAdjusterListener (this); + threshold->setAdjusterListener (this); threshold->set_tooltip_text (M("TP_WAVELET_THRESHOLD_TOOLTIP")); bllev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LOWLIGHT"), 0., 100., 0., 2., 50., 25., 0, false)); @@ -236,16 +251,16 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), bllev->setBgGradient(milestones2); threshold2 = Gtk::manage (new Adjuster (M("TP_WAVELET_THRESHOLD2"), 1, 9, 1, 4)); - threshold2->setAdjusterListener (this); + threshold2->setAdjusterListener (this); threshold2->set_tooltip_text (M("TP_WAVELET_THRESHOLD2_TOOLTIP")); - contrastSHVBox->pack_start(*HSmethod); //remove 2? - contrastSHVBox->pack_start(*hllev); - contrastSHVBox->pack_start(*threshold); - contrastSHVBox->pack_start(*bllev); - contrastSHVBox->pack_start(*threshold2); - contrastSHFrame->add(*contrastSHVBox); - levBox->pack_start(*contrastSHFrame); + contrastSHVBox->pack_start(*HSmethod); //remove 2? + contrastSHVBox->pack_start(*hllev); + contrastSHVBox->pack_start(*threshold); + contrastSHVBox->pack_start(*bllev); + contrastSHVBox->pack_start(*threshold2); + contrastSHFrame->add(*contrastSHVBox); + levBox->pack_start(*contrastSHFrame); // Chromaticity Gtk::VBox * chBox = Gtk::manage (new Gtk::VBox()); @@ -261,8 +276,8 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), CHmethod->append_text (M("TP_WAVELET_CH2")); CHmethod->append_text (M("TP_WAVELET_CH3")); CHmethodconn = CHmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CHmethodChanged) ); - ctboxch->pack_start(*CHmethod); - chBox->pack_start(*ctboxch); + ctboxch->pack_start(*CHmethod); + chBox->pack_start(*ctboxch); ctboxCH = Gtk::manage (new Gtk::HBox ()); labmC = Gtk::manage (new Gtk::Label (M("TP_WAVELET_CTYPE")+":")); @@ -272,14 +287,14 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), CHSLmethod->append_text (M("TP_WAVELET_CHSL")); CHSLmethod->append_text (M("TP_WAVELET_CHCU")); CHSLmethodconn = CHSLmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::CHSLmethodChanged) ); - ctboxCH->pack_start(*CHSLmethod); + ctboxCH->pack_start(*CHSLmethod); - Gtk::HSeparator *separatorChromaMethod = Gtk::manage (new Gtk::HSeparator()); - chBox->pack_start(*separatorChromaMethod, Gtk::PACK_SHRINK, 2); + Gtk::HSeparator *separatorChromaMethod = Gtk::manage (new Gtk::HSeparator()); + chBox->pack_start(*separatorChromaMethod, Gtk::PACK_SHRINK, 2); chroma = Gtk::manage (new Adjuster (M("TP_WAVELET_CHRO"), 1, 9, 1, 5)); chroma->set_tooltip_text (M("TP_WAVELET_CHRO_TOOLTIP")); - chBox->pack_start(*chroma); + chBox->pack_start(*chroma); chroma->setAdjusterListener (this); satlev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_SAT"), 0., 130., 30., 45., 130., 100., 0, false)); @@ -289,44 +304,44 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), pastlev = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_PASTEL"), 0., 70., 0., 2., 30., 20., 0, false)); pastlev->setAdjusterListener (this); pastlev->setBgGradient(milestones2); - - chBox->pack_start(*pastlev); - chBox->pack_start(*satlev); + chBox->pack_start(*pastlev); + chBox->pack_start(*satlev); + chro = Gtk::manage (new Adjuster (M("TP_WAVELET_CHR"), 0., 100., 1., 0.)); chro->set_tooltip_text (M("TP_WAVELET_CHR_TOOLTIP")); - chBox->pack_start(*chro); + chBox->pack_start(*chro); chro->setAdjusterListener (this); - Gtk::HBox * buttonchBox = Gtk::manage (new Gtk::HBox(true, 10)); - neutralchButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); - neutralchPressedConn = neutralchButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralchPressed)); - separatorNeutral = Gtk::manage (new Gtk::HSeparator()); - chBox->pack_start(*separatorNeutral, Gtk::PACK_SHRINK, 2); - buttonchBox->pack_start(*neutralchButton); - buttonchBox->show_all_children(); - chBox->pack_start(*buttonchBox, Gtk::PACK_SHRINK, 2); + Gtk::HBox * buttonchBox = Gtk::manage (new Gtk::HBox(true, 10)); + neutralchButton = Gtk::manage (new Gtk::Button(M("TP_WAVELET_NEUTRAL"))); + neutralchPressedConn = neutralchButton->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutralchPressed)); + separatorNeutral = Gtk::manage (new Gtk::HSeparator()); + chBox->pack_start(*separatorNeutral, Gtk::PACK_SHRINK, 2); + buttonchBox->pack_start(*neutralchButton); + buttonchBox->show_all_children(); + chBox->pack_start(*buttonchBox, Gtk::PACK_SHRINK, 2); - for(int i = 0; i < 9; i++) - { - Glib::ustring ss; - switch( i ){ - case 0: - ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_FINEST"));break; - case 8: - ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_LARGEST"));break; - default: - ss =Glib::ustring::compose( "%1",(i+1)); - } + for(int i = 0; i < 9; i++) + { + Glib::ustring ss; + switch( i ){ + case 0: + ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_FINEST"));break; + case 8: + ss =Glib::ustring::compose( "%1 (%2)",(i+1), M("TP_WAVELET_LARGEST"));break; + default: + ss =Glib::ustring::compose( "%1",(i+1)); + } - correctionch[i] = Gtk::manage ( new Adjuster (ss, -100, 100, 1, 0) ); - correctionch[i]->setAdjusterListener(this); - chBox->pack_start(*correctionch[i]); - } + correctionch[i] = Gtk::manage ( new Adjuster (ss, -100, 100, 1, 0) ); + correctionch[i]->setAdjusterListener(this); + chBox->pack_start(*correctionch[i]); + } // Toning Gtk::VBox * tonBox = Gtk::manage (new Gtk::VBox()); - tonBox->set_border_width(4); + tonBox->set_border_width(4); tonBox->set_spacing(2); opaCurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_COLORT")); @@ -341,7 +356,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opaCurveEditorG->show(); tonBox->pack_start( *opaCurveEditorG, Gtk::PACK_SHRINK, 2); - + opacityCurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_OPACITY")); opacityCurveEditorG->setCurveListener (this); @@ -354,21 +369,21 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opacityCurveEditorG->show(); tonBox->pack_start( *opacityCurveEditorG, Gtk::PACK_SHRINK, 2); - + // Denoise and Refine Gtk::VBox * noiseBox = Gtk::manage (new Gtk::VBox()); noiseBox->set_border_width(4); noiseBox->set_spacing(2); linkedg = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_LINKEDG"))); - linkedg->set_active (true); - linkedgConn = linkedg->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::linkedgToggled) ); + linkedg->set_active (true); + linkedgConn = linkedg->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::linkedgToggled) ); noiseBox->pack_start(*linkedg); level0noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVZERO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., NULL, false)); level0noise->setAdjusterListener (this); level0noise->setUpdatePolicy(RTUP_DYNAMIC); - + level1noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVONE"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., NULL, false)); level1noise->setAdjusterListener (this); level1noise->setUpdatePolicy(RTUP_DYNAMIC); @@ -376,141 +391,141 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), level2noise = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_LEVTWO"), -30., 100., 0., M("TP_WAVELET_STREN"), 1., 0., 100., 0., M("TP_WAVELET_NOIS"), 1., NULL, false)); level2noise->setAdjusterListener (this); level2noise->setUpdatePolicy(RTUP_DYNAMIC); - + noiseBox->pack_start( *level0noise, Gtk::PACK_SHRINK, 0); noiseBox->pack_start( *level1noise, Gtk::PACK_SHRINK, 0); noiseBox->pack_start( *level2noise, Gtk::PACK_SHRINK, 0); // Edge Sharpness Gtk::VBox * edgBox = Gtk::manage (new Gtk::VBox()); - edgBox->set_border_width(4); + edgBox->set_border_width(4); edgBox->set_spacing(2); - edgval = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDVAL"), 0, 100, 1, 0) ); - edgval->setAdjusterListener(this); - edgBox->pack_start(*edgval); + edgval = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDVAL"), 0, 100, 1, 0) ); + edgval->setAdjusterListener(this); + edgBox->pack_start(*edgval); - edgrad = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDRAD"), 0, 100, 1, 15) ); - edgrad->setAdjusterListener(this); - edgBox->pack_start(*edgrad); - edgrad->set_tooltip_markup (M("TP_WAVELET_EDRAD_TOOLTIP")); + edgrad = Gtk::manage ( new Adjuster (M("TP_WAVELET_EDRAD"), 0, 100, 1, 15) ); + edgrad->setAdjusterListener(this); + edgBox->pack_start(*edgrad); + edgrad->set_tooltip_markup (M("TP_WAVELET_EDRAD_TOOLTIP")); - edgthresh = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGTHRESH"), -50, 100, 1, 10 )); + edgthresh = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGTHRESH"), -50, 100, 1, 10 )); edgthresh->setAdjusterListener (this); - edgthresh->set_tooltip_markup (M("TP_WAVELET_EDGTHRESH_TOOLTIP")); + edgthresh->set_tooltip_markup (M("TP_WAVELET_EDGTHRESH_TOOLTIP")); edgBox->pack_start (*edgthresh); edbox = Gtk::manage (new Gtk::HBox ()); labmedgr = Gtk::manage (new Gtk::Label (M("TP_WAVELET_MEDGREINF")+":")); edbox->pack_start (*labmedgr, Gtk::PACK_SHRINK, 1); - + Medgreinf = Gtk::manage (new MyComboBoxText ()); Medgreinf->append_text (M("TP_WAVELET_RE1")); Medgreinf->append_text (M("TP_WAVELET_RE2")); Medgreinf->append_text (M("TP_WAVELET_RE3")); MedgreinfConn = Medgreinf->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::MedgreinfChanged) ); - Medgreinf->set_tooltip_markup (M("TP_WAVELET_EDGREINF_TOOLTIP")); - edbox->pack_start(*Medgreinf); - edgBox->pack_start(*edbox); + Medgreinf->set_tooltip_markup (M("TP_WAVELET_EDGREINF_TOOLTIP")); + edbox->pack_start(*Medgreinf); + edgBox->pack_start(*edbox); + + Gtk::HSeparator *separatorlc = Gtk::manage (new Gtk::HSeparator()); + edgBox->pack_start(*separatorlc, Gtk::PACK_SHRINK, 2); - Gtk::HSeparator *separatorlc = Gtk::manage (new Gtk::HSeparator()); - edgBox->pack_start(*separatorlc, Gtk::PACK_SHRINK, 2); - ctboxED = Gtk::manage (new Gtk::HBox ()); labmED = Gtk::manage (new Gtk::Label (M("TP_WAVELET_EDTYPE")+":")); ctboxED->pack_start (*labmED, Gtk::PACK_SHRINK, 1); - + EDmethod = Gtk::manage (new MyComboBoxText ()); EDmethod->append_text (M("TP_WAVELET_EDSL")); EDmethod->append_text (M("TP_WAVELET_EDCU")); EDmethodconn = EDmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::EDmethodChanged) ); - ctboxED->pack_start(*EDmethod); + ctboxED->pack_start(*EDmethod); edgBox->pack_start (*ctboxED); tr=options.rtSettings.top_right; br=options.rtSettings.bot_right; tl=options.rtSettings.top_left; bl=options.rtSettings.bot_left; - - edgcont = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_EDGCONT"), 0., 100., bl, tl, br, tr, 0., false)); + + edgcont = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_EDGCONT"), 0., 100., bl, tl, br, tr, 0., false)); edgcont->setAdjusterListener (this); edgcont->setBgGradient(milestones2); - edgcont->set_tooltip_markup (M("TP_WAVELET_EDGCONT_TOOLTIP")); + edgcont->set_tooltip_markup (M("TP_WAVELET_EDGCONT_TOOLTIP")); - // <-- Edge Sharpness Local Contrast curve + // <-- Edge Sharpness Local Contrast curve CCWcurveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir, M("TP_WAVELET_CCURVE")); CCWcurveEditorG->setCurveListener (this); - + rtengine::WaveletParams::getDefaultCCWCurve(defaultCurve); ccshape = static_cast(CCWcurveEditorG->addCurve(CT_Flat, "", NULL, false)); - + ccshape->setIdentityValue(0.); ccshape->setResetCurve(FlatCurveType(defaultCurve.at(0)), defaultCurve); ccshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_CC_TOOLTIP")); CCWcurveEditorG->curveListComplete(); CCWcurveEditorG->show(); - // --> - + // --> + edgBox->pack_start (*edgcont); edgBox->pack_start(*CCWcurveEditorG, Gtk::PACK_SHRINK, 4); - - medianlev = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_MEDILEV"))); - medianlev->set_active (true); - medianlevConn = medianlev->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianlevToggled) ); - Gtk::HSeparator *separatored1 = Gtk::manage (new Gtk::HSeparator()); - edgBox->pack_start(*separatored1, Gtk::PACK_SHRINK, 2); - + medianlev = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_MEDILEV"))); + medianlev->set_active (true); + medianlevConn = medianlev->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianlevToggled) ); + + Gtk::HSeparator *separatored1 = Gtk::manage (new Gtk::HSeparator()); + edgBox->pack_start(*separatored1, Gtk::PACK_SHRINK, 2); + eddebox = Gtk::manage (new Gtk::HBox ()); - + edgBox->pack_start (*eddebox); edgBox->pack_start(*medianlev); - + edgedetect = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECT"), 0, 100, 1, 80)); - edgedetect->setAdjusterListener (this); + edgedetect->setAdjusterListener (this); edgedetect->set_tooltip_text (M("TP_WAVELET_EDGEDETECT_TOOLTIP")); edgBox->pack_start(*edgedetect); edgedetectthr = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECTTHR"), 0, 100, 1, 20)); - edgedetectthr->setAdjusterListener (this); + edgedetectthr->setAdjusterListener (this); edgedetectthr->set_tooltip_text (M("TP_WAVELET_EDGEDETECTTHR_TOOLTIP")); edgBox->pack_start(*edgedetectthr); - + edgedetectthr2 = Gtk::manage (new Adjuster (M("TP_WAVELET_EDGEDETECTTHR2"), -10, 100, 1, 0)); - edgedetectthr2->setAdjusterListener (this); + edgedetectthr2->setAdjusterListener (this); edgBox->pack_start(*edgedetectthr2); - - lipst = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_LIPST"))); - lipst->set_active (true); - lipstConn = lipst->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::lipstToggled) ); + + lipst = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_LIPST"))); + lipst->set_active (true); + lipstConn = lipst->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::lipstToggled) ); lipst->set_tooltip_text (M("TP_WAVELET_LIPST_TOOLTIP")); // Gamut Gtk::VBox * conBox = Gtk::manage (new Gtk::VBox()); - conBox->set_border_width(4); + conBox->set_border_width(4); conBox->set_spacing(2); - - median = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_MEDI"))); - median->set_active (true); - medianConn = median->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianToggled) ); - conBox->pack_start(*median); - hueskin = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HUESKIN"), -314., 314., -5., 25., 170., 120., 0, false)); - hueskin->set_tooltip_markup (M("TP_WAVELET_HUESKIN_TOOLTIP")); + median = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_MEDI"))); + median->set_active (true); + medianConn = median->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianToggled) ); + conBox->pack_start(*median); - hueskin->setBgGradient(milestones); - conBox->pack_start(*hueskin); - hueskin->setAdjusterListener (this); + hueskin = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HUESKIN"), -314., 314., -5., 25., 170., 120., 0, false)); + hueskin->set_tooltip_markup (M("TP_WAVELET_HUESKIN_TOOLTIP")); - skinprotect = Gtk::manage ( new Adjuster (M("TP_WAVELET_SKIN"), -100, 100, 1, 0.) ); - skinprotect->setAdjusterListener(this); - conBox->pack_start(*skinprotect); - skinprotect->set_tooltip_markup (M("TP_WAVELET_SKIN_TOOLTIP")); + hueskin->setBgGradient(milestones); + conBox->pack_start(*hueskin); + hueskin->setAdjusterListener (this); + + skinprotect = Gtk::manage ( new Adjuster (M("TP_WAVELET_SKIN"), -100, 100, 1, 0.) ); + skinprotect->setAdjusterListener(this); + conBox->pack_start(*skinprotect); + skinprotect->set_tooltip_markup (M("TP_WAVELET_SKIN_TOOLTIP")); curveEditorGAM = new CurveEditorGroup (options.lastWaveletCurvesDir); curveEditorGAM->setCurveListener (this); - + Chshape = static_cast(curveEditorGAM->addCurve(CT_Flat, M("TP_WAVELET_CURVEEDITOR_CH"))); Chshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_CH_TOOLTIP")); Chshape->setCurveColorProvider(this, 5); @@ -519,39 +534,39 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), conBox->pack_start (*curveEditorGAM, Gtk::PACK_SHRINK, 4); - avoid = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_AVOID"))); - avoid->set_active (true); - avoidConn = avoid->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::avoidToggled) ); - conBox->pack_start(*avoid); + avoid = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_AVOID"))); + avoid->set_active (true); + avoidConn = avoid->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::avoidToggled) ); + conBox->pack_start(*avoid); // Residual Image Gtk::VBox * resBox = Gtk::manage (new Gtk::VBox()); - resBox->set_border_width(4); + resBox->set_border_width(4); resBox->set_spacing(2); rescon = Gtk::manage (new Adjuster (M("TP_WAVELET_RESCON"), -100, 100, 1, 0)); rescon->setAdjusterListener (this); - resBox->pack_start(*rescon, Gtk::PACK_SHRINK); - + resBox->pack_start(*rescon, Gtk::PACK_SHRINK); + thr = Gtk::manage (new Adjuster (M("TP_WAVELET_THR"), 0, 100, 1, 35)); - resBox->pack_start(*thr); + resBox->pack_start(*thr); thr->setAdjusterListener (this); resconH = Gtk::manage (new Adjuster (M("TP_WAVELET_RESCONH"), -100, 100, 1, 0)); resconH->setAdjusterListener (this); - resBox->pack_start(*resconH, Gtk::PACK_SHRINK); - + resBox->pack_start(*resconH, Gtk::PACK_SHRINK); + thrH = Gtk::manage (new Adjuster (M("TP_WAVELET_THRH"), 0, 100, 1, 65)); thrH->setAdjusterListener (this); - resBox->pack_start(*thrH,Gtk::PACK_SHRINK); + resBox->pack_start(*thrH,Gtk::PACK_SHRINK); contrast = Gtk::manage (new Adjuster (M("TP_WAVELET_CONTRA"), -100, 100, 1, 0)); contrast->set_tooltip_text (M("TP_WAVELET_CONTRA_TOOLTIP")); - contrast->setAdjusterListener (this); - resBox->pack_start(*contrast); //keep the possibility to reinstall + contrast->setAdjusterListener (this); + resBox->pack_start(*contrast); //keep the possibility to reinstall reschro = Gtk::manage (new Adjuster (M("TP_WAVELET_RESCHRO"), -100, 100, 1, 0)); - reschro->setAdjusterListener (this); + reschro->setAdjusterListener (this); resBox->pack_start(*reschro); @@ -559,41 +574,41 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), labmTM = Gtk::manage (new Gtk::Label (M("TP_WAVELET_TMTYPE")+":")); ctboxTM->pack_start (*labmTM, Gtk::PACK_SHRINK, 1); - Gtk::HSeparator *separatorR0 = Gtk::manage (new Gtk::HSeparator()); - resBox->pack_start(*separatorR0, Gtk::PACK_SHRINK, 2); - + Gtk::HSeparator *separatorR0 = Gtk::manage (new Gtk::HSeparator()); + resBox->pack_start(*separatorR0, Gtk::PACK_SHRINK, 2); + TMmethod = Gtk::manage (new MyComboBoxText ()); TMmethod->append_text (M("TP_WAVELET_COMPCONT")); TMmethod->append_text (M("TP_WAVELET_COMPTM")); TMmethodconn = TMmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::TMmethodChanged) ); - ctboxTM->pack_start(*TMmethod); + ctboxTM->pack_start(*TMmethod); resBox->pack_start (*ctboxTM); tmrs = Gtk::manage(new Adjuster (M("TP_WAVELET_TMSTRENGTH"), -1.0, 2.0, 0.01, 0.0)); tmrs->set_tooltip_text (M("TP_WAVELET_TMSTRENGTH_TOOLTIP")); - - resBox->pack_start(*tmrs); + + resBox->pack_start(*tmrs); tmrs->setAdjusterListener (this); gamma = Gtk::manage(new Adjuster (M("TP_WAVELET_COMPGAMMA"), 0.4, 2.0, 0.01, 1.0)); gamma->set_tooltip_text (M("TP_WAVELET_COMPGAMMA_TOOLTIP")); - resBox->pack_start(*gamma); + resBox->pack_start(*gamma); gamma->setAdjusterListener (this); - - Gtk::HSeparator *separatorR1 = Gtk::manage (new Gtk::HSeparator()); - resBox->pack_start(*separatorR1, Gtk::PACK_SHRINK, 2); - - hueskin2 = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HUESKY"), -314., 314., -260., -250, -130., -140., 0, false)); - hueskin2->set_tooltip_markup (M("TP_WAVELET_HUESKY_TOOLTIP")); - hueskin2->setBgGradient(milestones); + + Gtk::HSeparator *separatorR1 = Gtk::manage (new Gtk::HSeparator()); + resBox->pack_start(*separatorR1, Gtk::PACK_SHRINK, 2); + + hueskin2 = Gtk::manage (new ThresholdAdjuster (M("TP_WAVELET_HUESKY"), -314., 314., -260., -250, -130., -140., 0, false)); + hueskin2->set_tooltip_markup (M("TP_WAVELET_HUESKY_TOOLTIP")); + hueskin2->setBgGradient(milestones); resBox->pack_start(*hueskin2); - hueskin2->setAdjusterListener (this); - + hueskin2->setAdjusterListener (this); + sky = Gtk::manage (new Adjuster (M("TP_WAVELET_SKY"), -100., 100.0, 1., 0.)); sky->set_tooltip_text (M("TP_WAVELET_SKY_TOOLTIP")); sky->setAdjusterListener (this); - - resBox->pack_start(*sky); + + resBox->pack_start(*sky); // whole hue range milestones.clear(); @@ -603,10 +618,10 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } - + curveEditorRES = new CurveEditorGroup (options.lastWaveletCurvesDir); curveEditorRES->setCurveListener (this); - + hhshape = static_cast(curveEditorRES->addCurve(CT_Flat, M("TP_WAVELET_CURVEEDITOR_HH"))); hhshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_HH_TOOLTIP")); hhshape->setCurveColorProvider(this, 5); @@ -614,17 +629,17 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), hhshape->setBottomBarBgGradient(milestones); resBox->pack_start (*curveEditorRES, Gtk::PACK_SHRINK, 4); - + // Toning and Color Balance - Gtk::HSeparator *separatorCB = Gtk::manage (new Gtk::HSeparator()); + Gtk::HSeparator *separatorCB = Gtk::manage (new Gtk::HSeparator()); Gtk::VBox *chanMixerHLBox = Gtk::manage (new Gtk::VBox()); Gtk::VBox *chanMixerMidBox = Gtk::manage (new Gtk::VBox()); Gtk::VBox *chanMixerShadowsBox = Gtk::manage (new Gtk::VBox()); cbenab = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_CBENAB"))); - cbenab->set_active (true); - cbenabConn = cbenab->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::cbenabToggled) ); + cbenab->set_active (true); + cbenabConn = cbenab->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::cbenabToggled) ); cbenab->set_tooltip_text (M("TP_WAVELET_CB_TOOLTIP")); Gtk::Image* iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); @@ -650,7 +665,7 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), greenlow = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., igreenR, imagL)); bluelow = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., iblueR , iyelL)); - + chanMixerHLBox->pack_start (*greenhigh); chanMixerHLBox->pack_start (*bluehigh); chanMixerMidBox->pack_start (*greenmed); @@ -664,18 +679,18 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), bluemed->setAdjusterListener (this); greenhigh->setAdjusterListener (this); bluehigh->setAdjusterListener (this); - + resBox->pack_start(*separatorCB, Gtk::PACK_SHRINK); - + chanMixerHLFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_HIGHLIGHT"))); chanMixerMidFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_MIDTONES"))); chanMixerShadowsFrame = Gtk::manage (new Gtk::Frame(M("TP_COLORTONING_SHADOWS"))); - + chanMixerHLFrame->add(*chanMixerHLBox); chanMixerMidFrame->add(*chanMixerMidBox); chanMixerShadowsFrame->add(*chanMixerShadowsBox); resBox->pack_start(*cbenab); - + resBox->pack_start(*chanMixerHLFrame, Gtk::PACK_SHRINK); resBox->pack_start(*chanMixerMidFrame, Gtk::PACK_SHRINK); resBox->pack_start(*chanMixerShadowsFrame, Gtk::PACK_SHRINK); @@ -685,8 +700,8 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), neutrHBox->set_border_width (2); neutral = Gtk::manage (new Gtk::Button (M("TP_COLORTONING_NEUTRAL"))); - RTImage *resetImg = Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png")); - neutral->set_image(*resetImg); + //RTImage *resetImg = Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png")); + //neutral->set_image(*resetImg); neutral->set_tooltip_text (M("TP_COLORTONING_NEUTRAL_TIP")); neutralconn = neutral->signal_pressed().connect( sigc::mem_fun(*this, &Wavelet::neutral_pressed) ); neutral->show(); @@ -697,29 +712,29 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // Final Touchup Gtk::VBox * ctboxBA = Gtk::manage (new Gtk::VBox()); - ctboxBA->set_border_width(4); + ctboxBA->set_border_width(4); ctboxBA->set_spacing(2); //Gtk::HSeparator *separatorfin = Gtk::manage (new Gtk::HSeparator()); - //ctboxBA->pack_start(*separatorfin, Gtk::PACK_SHRINK, 2); - ctboxFI = Gtk::manage (new Gtk::HBox()); - + //ctboxBA->pack_start(*separatorfin, Gtk::PACK_SHRINK, 2); + ctboxFI = Gtk::manage (new Gtk::HBox()); + labmBA = Gtk::manage (new Gtk::Label (M("TP_WAVELET_BATYPE")+":")); ctboxFI->pack_start (*labmBA, Gtk::PACK_SHRINK, 1); - + BAmethod = Gtk::manage (new MyComboBoxText ()); BAmethod->append_text (M("TP_WAVELET_BANONE")); BAmethod->append_text (M("TP_WAVELET_BASLI")); BAmethod->append_text (M("TP_WAVELET_BACUR")); BAmethodconn = BAmethod->signal_changed().connect ( sigc::mem_fun(*this, &Wavelet::BAmethodChanged) ); - ctboxFI->pack_start(*BAmethod); + ctboxFI->pack_start(*BAmethod); ctboxBA->pack_start(*ctboxFI); - - balance = Gtk::manage (new Adjuster (M("TP_WAVELET_BALANCE"), -30, 100, 1, 0)); - balance->setAdjusterListener (this); + + balance = Gtk::manage (new Adjuster (M("TP_WAVELET_BALANCE"), -30, 100, 1, 0)); + balance->setAdjusterListener (this); balance->set_tooltip_text (M("TP_WAVELET_BALANCE_TOOLTIP")); std::vector milestonesW; - + milestonesW.clear(); milestonesW.push_back( GradientMilestone(0., 0., 0., 0.) ); milestonesW.push_back( GradientMilestone(1., 1., 1., 1.) ); @@ -737,8 +752,8 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), opacityCurveEditorW->curveListComplete(); opacityCurveEditorW->show(); - iter = Gtk::manage (new Adjuster (M("TP_WAVELET_ITER"), -3, 3, 1, 0)); - iter->setAdjusterListener (this); + iter = Gtk::manage (new Adjuster (M("TP_WAVELET_ITER"), -3, 3, 1, 0)); + iter->setAdjusterListener (this); iter->set_tooltip_text (M("TP_WAVELET_ITER_TOOLTIP")); Gtk::HSeparator *separatorbalend = Gtk::manage (new Gtk::HSeparator()); @@ -755,10 +770,10 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), // This will add the reset button at the end of the curveType buttons opacityCurveEditorWL->curveListComplete(); opacityCurveEditorWL->show(); - + curveEditorG = new CurveEditorGroup (options.lastWaveletCurvesDir,M("TP_WAVELET_CONTEDIT")); curveEditorG->setCurveListener (this); - + clshape = static_cast(curveEditorG->addCurve(CT_Diagonal, M("TP_WAVELET_CURVEEDITOR_CL"))); clshape->setTooltip(M("TP_WAVELET_CURVEEDITOR_CL_TOOLTIP")); std::vector milestones22; @@ -769,56 +784,57 @@ Wavelet::Wavelet () : FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), clshape->setLeftBarBgGradient(milestones22); curveEditorG->curveListComplete(); - - tmr = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_BALCHRO"))); - tmr->set_active (true); + + tmr = Gtk::manage (new Gtk::CheckButton (M("TP_WAVELET_BALCHRO"))); + tmr->set_active (true); tmr->set_tooltip_text (M("TP_WAVELET_BALCHRO_TOOLTIP")); - tmrConn = tmr->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::tmrToggled) ); + tmrConn = tmr->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::tmrToggled) ); Gtk::VBox * finalBox = Gtk::manage (new Gtk::VBox()); finalBox->set_border_width(4); finalBox->set_spacing(2); finalBox->pack_start (*ctboxBA); - finalBox->pack_start(*balance); + finalBox->pack_start(*balance); finalBox->pack_start( *opacityCurveEditorW, Gtk::PACK_SHRINK, 2); - finalBox->pack_start(*iter); + finalBox->pack_start(*iter); - finalBox->pack_start(*tmr); - finalBox->pack_start(*separatorbalend, Gtk::PACK_SHRINK, 2); + finalBox->pack_start(*tmr); + finalBox->pack_start(*separatorbalend, Gtk::PACK_SHRINK, 2); finalBox->pack_start( *opacityCurveEditorWL, Gtk::PACK_SHRINK, 2); finalBox->pack_start (*curveEditorG, Gtk::PACK_SHRINK, 4); //----------------------------- - expsettings->add(*settingsVBox); - pack_start (*expsettings); - expcontrast->add(*levBox); - pack_start (*expcontrast); + expsettings->add(*settingsVBox); + pack_start (*expsettings); - expchroma->add(*chBox); - pack_start (*expchroma); + expcontrast->add(*levBox); + pack_start (*expcontrast); - exptoning->add(*tonBox); - pack_start (*exptoning); + expchroma->add(*chBox); + pack_start (*expchroma); - expnoise->add(*noiseBox); - pack_start (*expnoise); + exptoning->add(*tonBox); + pack_start (*exptoning); - expedge->add(*edgBox); - pack_start (*expedge); + expnoise->add(*noiseBox); + pack_start (*expnoise); - expgamut->add(*conBox); - pack_start (*expgamut); + expedge->add(*edgBox); + pack_start (*expedge); - expresid->add(*resBox); - pack_start(*expresid); + expgamut->add(*conBox); + pack_start (*expgamut); - expfinal->add(*finalBox); - pack_start(*expfinal); + expresid->add(*resBox); + pack_start(*expresid); + + expfinal->add(*finalBox); + pack_start(*expfinal); } Wavelet::~Wavelet () { @@ -830,39 +846,39 @@ Wavelet::~Wavelet () { delete curveEditorG; delete opacityCurveEditorW; delete opacityCurveEditorWL; - } -int wavChangedUI (void* data) { - GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected - (static_cast(data))->wavComputed_ (); - return 0; + +int wavUpdateUI (void* data) { + GThreadLock lock; // All GUI acces from idle_add callbacks or separate thread HAVE to be protected + (static_cast(data))->wavComputed_ (); + return 0; } void Wavelet::wavChanged (double nlevel) { nextnlevel=nlevel; - g_idle_add (wavChangedUI, this); + g_idle_add (wavUpdateUI, this); } bool Wavelet::wavComputed_ () { - disableListener (); - enableListener (); + disableListener (); + enableListener (); updatewavLabel (); - return false; + return false; } void Wavelet::updatewavLabel () { if (!batchMode) { float lv; lv=nextnlevel; - { wavLabels->set_text( Glib::ustring::compose(M("TP_WAVELET_LEVLABEL"), - Glib::ustring::format(std::fixed, std::setprecision(0), lv)) - ); - } + Glib::ustring::format(std::fixed, std::setprecision(0), lv)) + ); } } + // Will only reset the chanel mixer +// WARNING! In mutiImage mode, and for sliders in ADD mode, this will reset the slider to 0, but not to the default value as in SET mode. void Wavelet::neutral_pressed () { disableListener(); greenlow->resetValue(false); @@ -879,177 +895,286 @@ void Wavelet::neutral_pressed () { void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); - Lmethodconn.block(true); - CLmethodconn.block(true); - Backmethodconn.block(true); - Tilesmethodconn.block(true); - daubcoeffmethodconn.block(true); - Dirmethodconn.block(true); - CHmethodconn.block(true); - CHSLmethodconn.block(true); - EDmethodconn.block(true); - BAmethodconn.block(true); - TMmethodconn.block(true); - HSmethodconn.block(true); - MedgreinfConn.block(true); - cbenabConn.block(true); - HSmethod->set_active (1); - - if (pp->wavelet.HSmethod=="without") - HSmethod->set_active (0); - else if (pp->wavelet.HSmethod=="with") - HSmethod->set_active (1); - HSmethodChanged(); - - CHmethod->set_active (1); - if (pp->wavelet.CHmethod=="without") - CHmethod->set_active (0); - else if (pp->wavelet.CHmethod=="with") - CHmethod->set_active (1); - else if (pp->wavelet.CHmethod=="link") - CHmethod->set_active (2); - CHmethodChanged(); + /***************************************************************************************************** + * + * Disable listeners and signals + * + *****************************************************************************************************/ - Medgreinf->set_active (1); - if (pp->wavelet.Medgreinf=="more") - Medgreinf->set_active (0); - else if (pp->wavelet.Medgreinf=="none") - Medgreinf->set_active (1); - else if (pp->wavelet.Medgreinf=="less") - Medgreinf->set_active (2); - MedgreinfChanged(); - - CHSLmethod->set_active (1); - if (pp->wavelet.CHSLmethod=="SL") - CHSLmethod->set_active (0); - else if (pp->wavelet.CHSLmethod=="CU") - CHSLmethod->set_active (1); - CHSLmethodChanged(); + disableListener (); + Lmethodconn.block(true); + CLmethodconn.block(true); + Backmethodconn.block(true); + Tilesmethodconn.block(true); + daubcoeffmethodconn.block(true); + Dirmethodconn.block(true); + CHmethodconn.block(true); + CHSLmethodconn.block(true); + EDmethodconn.block(true); + BAmethodconn.block(true); + TMmethodconn.block(true); + HSmethodconn.block(true); + MedgreinfConn.block(true); + cbenabConn.block(true); + enableChromaConn.block(true); + enableContrastConn.block(true); + enableEdgeConn.block(true); + enableFinalConn.block(true); + enableNoiseConn.block(true); + enableResidConn.block(true); + enableToningConn.block(true); - EDmethod->set_active (1); - if (pp->wavelet.EDmethod=="SL") - EDmethod->set_active (0); - else if (pp->wavelet.EDmethod=="CU") - EDmethod->set_active (1); - EDmethodChanged(); + /***************************************************************************************************** + * + * Set the GUI reflecting the given ProcParams + * + *****************************************************************************************************/ - BAmethod->set_active (0); - if (pp->wavelet.BAmethod=="none") - BAmethod->set_active (0); - else if (pp->wavelet.BAmethod=="sli") - BAmethod->set_active (1); - else if (pp->wavelet.BAmethod=="cur") - BAmethod->set_active (2); - BAmethodChanged(); - - TMmethod->set_active (1); - if (pp->wavelet.TMmethod=="cont") - TMmethod->set_active (0); - else if (pp->wavelet.TMmethod=="tm") - TMmethod->set_active (1); - // else if (pp->wavelet.TMmethod=="both") - // TMmethod->set_active (2); - - TMmethodChanged(); - - - Backmethod->set_active (3); - if (pp->wavelet.Backmethod=="black") { - Backmethod->set_active (0); - } - else if (pp->wavelet.Backmethod=="grey") { - Backmethod->set_active (1); - } - else if (pp->wavelet.Backmethod=="resid") { - Backmethod->set_active (2); - } - BackmethodChanged(); - - CLmethod->set_active (3); - if (pp->wavelet.CLmethod=="one") { - CLmethod->set_active (0); - } - else if (pp->wavelet.CLmethod=="inf") { - CLmethod->set_active (1); - } - else if (pp->wavelet.CLmethod=="sup") { - CLmethod->set_active (2); - } - else if (pp->wavelet.CLmethod=="all") { - CLmethod->set_active (3); - } - CLmethodChanged(); + //HSmethod->set_active (1); // Note: default values are controlled in rtengine::ProcParams::SetDefaults + if (pp->wavelet.HSmethod=="without") + HSmethod->set_active (0); + else if (pp->wavelet.HSmethod=="with") + HSmethod->set_active (1); - Tilesmethod->set_active (2); - if (pp->wavelet.Tilesmethod=="full") - Tilesmethod->set_active (0); - else if (pp->wavelet.Tilesmethod=="big") - Tilesmethod->set_active (1); - else if (pp->wavelet.Tilesmethod=="lit") - Tilesmethod->set_active (2); - TilesmethodChanged(); + //CHmethod->set_active (1); + if (pp->wavelet.CHmethod=="without") + CHmethod->set_active (0); + else if (pp->wavelet.CHmethod=="with") + CHmethod->set_active (1); + else if (pp->wavelet.CHmethod=="link") + CHmethod->set_active (2); - daubcoeffmethod->set_active (4); - if (pp->wavelet.daubcoeffmethod=="2_") - daubcoeffmethod->set_active (0); - else if (pp->wavelet.daubcoeffmethod=="4_") - daubcoeffmethod->set_active (1); - else if (pp->wavelet.daubcoeffmethod=="6_") - daubcoeffmethod->set_active (2); - else if (pp->wavelet.daubcoeffmethod=="10_") - daubcoeffmethod->set_active (3); - else if (pp->wavelet.daubcoeffmethod=="14_") - daubcoeffmethod->set_active (4); - daubcoeffmethodChanged(); - - Dirmethod->set_active (3); - if (pp->wavelet.Dirmethod=="one") - Dirmethod->set_active (0); - else if (pp->wavelet.Dirmethod=="two") - Dirmethod->set_active (1); - else if (pp->wavelet.Dirmethod=="thr") - Dirmethod->set_active (2); - else if (pp->wavelet.Dirmethod=="all") - Dirmethod->set_active (3); - DirmethodChanged(); + //Medgreinf->set_active (1); + if (pp->wavelet.Medgreinf=="more") + Medgreinf->set_active (0); + else if (pp->wavelet.Medgreinf=="none") + Medgreinf->set_active (1); + else if (pp->wavelet.Medgreinf=="less") + Medgreinf->set_active (2); - int selectedLevel = atoi(pp->wavelet.Lmethod.data())-1; - Lmethod->set_active (selectedLevel == -1 ? 4 :selectedLevel); + //CHSLmethod->set_active (1); + if (pp->wavelet.CHSLmethod=="SL") + CHSLmethod->set_active (0); + else if (pp->wavelet.CHSLmethod=="CU") + CHSLmethod->set_active (1); - LmethodChanged(); - if (pedited) { - if (!pedited->wavelet.Lmethod) - Lmethod->set_active (8); - if (!pedited->wavelet.CLmethod) - CLmethod->set_active (3); - if (!pedited->wavelet.Backmethod) - Backmethod->set_active (2); - if (!pedited->wavelet.Tilesmethod) - Tilesmethod->set_active (2); - if (!pedited->wavelet.daubcoeffmethod) - daubcoeffmethod->set_active (4); - if (!pedited->wavelet.Dirmethod) - Dirmethod->set_active (3); - if (!pedited->wavelet.CHmethod) - CHmethod->set_active (1); - if (!pedited->wavelet.CHSLmethod) - CHSLmethod->set_active (1); - if (!pedited->wavelet.EDmethod) - EDmethod->set_active (1); - if (!pedited->wavelet.BAmethod) - BAmethod->set_active (1); - if (!pedited->wavelet.TMmethod) - TMmethod->set_active (1); - if (!pedited->wavelet.HSmethod) - HSmethod->set_active (1); - if (!pedited->wavelet.Medgreinf) - Medgreinf->set_active (2); + //EDmethod->set_active (1); + if (pp->wavelet.EDmethod=="SL") + EDmethod->set_active (0); + else if (pp->wavelet.EDmethod=="CU") + EDmethod->set_active (1); - - - set_inconsistent (multiImage && !pedited->wavelet.enabled); - ccshape->setUnChanged (!pedited->wavelet.ccwcurve); + //BAmethod->set_active (0); + if (pp->wavelet.BAmethod=="none") + BAmethod->set_active (0); + else if (pp->wavelet.BAmethod=="sli") + BAmethod->set_active (1); + else if (pp->wavelet.BAmethod=="cur") + BAmethod->set_active (2); + + //TMmethod->set_active (1); + if (pp->wavelet.TMmethod=="cont") + TMmethod->set_active (0); + else if (pp->wavelet.TMmethod=="tm") + TMmethod->set_active (1); +// else if (pp->wavelet.TMmethod=="both") +// TMmethod->set_active (2); + + //Backmethod->set_active (3); + if (pp->wavelet.Backmethod=="black") { + Backmethod->set_active (0); + } + else if (pp->wavelet.Backmethod=="grey") { + Backmethod->set_active (1); + } + else if (pp->wavelet.Backmethod=="resid") { + Backmethod->set_active (2); + } + + //CLmethod->set_active (3); + if (pp->wavelet.CLmethod=="one") { + CLmethod->set_active (0); + } + else if (pp->wavelet.CLmethod=="inf") { + CLmethod->set_active (1); + } + else if (pp->wavelet.CLmethod=="sup") { + CLmethod->set_active (2); + } + else if (pp->wavelet.CLmethod=="all") { + CLmethod->set_active (3); + } + + //Tilesmethod->set_active (2); + if (pp->wavelet.Tilesmethod=="full") + Tilesmethod->set_active (0); + else if (pp->wavelet.Tilesmethod=="big") + Tilesmethod->set_active (1); + else if (pp->wavelet.Tilesmethod=="lit") + Tilesmethod->set_active (2); + + //daubcoeffmethod->set_active (4); + if (pp->wavelet.daubcoeffmethod=="2_") + daubcoeffmethod->set_active (0); + else if (pp->wavelet.daubcoeffmethod=="4_") + daubcoeffmethod->set_active (1); + else if (pp->wavelet.daubcoeffmethod=="6_") + daubcoeffmethod->set_active (2); + else if (pp->wavelet.daubcoeffmethod=="10_") + daubcoeffmethod->set_active (3); + else if (pp->wavelet.daubcoeffmethod=="14_") + daubcoeffmethod->set_active (4); + + //Dirmethod->set_active (3); + if (pp->wavelet.Dirmethod=="one") + Dirmethod->set_active (0); + else if (pp->wavelet.Dirmethod=="two") + Dirmethod->set_active (1); + else if (pp->wavelet.Dirmethod=="thr") + Dirmethod->set_active (2); + else if (pp->wavelet.Dirmethod=="all") + Dirmethod->set_active (3); + + int selectedLevel = atoi(pp->wavelet.Lmethod.data())-1; + Lmethod->set_active (selectedLevel == -1 ? 4 :selectedLevel); + + ccshape->setCurve (pp->wavelet.ccwcurve); + opacityShapeRG->setCurve (pp->wavelet.opacityCurveRG); + opacityShapeBY->setCurve (pp->wavelet.opacityCurveBY); + opacityShape->setCurve (pp->wavelet.opacityCurveW); + opacityShapeWL->setCurve (pp->wavelet.opacityCurveWL); + hhshape->setCurve (pp->wavelet.hhcurve); + Chshape->setCurve (pp->wavelet.Chcurve); + clshape->setCurve (pp->wavelet.wavclCurve); + expcontrast->setEnabled (pp->wavelet.expcontrast); + expchroma->setEnabled (pp->wavelet.expchroma); + expedge->setEnabled (pp->wavelet.expedge); + expresid->setEnabled (pp->wavelet.expresid); + expfinal->setEnabled (pp->wavelet.expfinal); + exptoning->setEnabled (pp->wavelet.exptoning); + expnoise->setEnabled (pp->wavelet.expnoise); + + setEnabled(pp->wavelet.enabled); + avoidConn.block (true); + avoid->set_active (pp->wavelet.avoid); + avoidConn.block (false); + tmrConn.block (true); + tmr->set_active (pp->wavelet.tmr); + tmrConn.block (false); + medianConn.block (true); + median->set_active (pp->wavelet.median); + medianConn.block (false); + medianlevConn.block (true); + medianlev->set_active (pp->wavelet.medianlev); + medianlevConn.block (false); + linkedgConn.block (true); + linkedg->set_active (pp->wavelet.linkedg); + linkedgConn.block (false); + cbenabConn.block (true); + cbenab->set_active (pp->wavelet.cbenab); + cbenabConn.block (false); + + lipstConn.block (true); + lipst->set_active (pp->wavelet.lipst); + lipstConn.block (false); + //edgreinfConn.block (true); + //edgreinf->set_active (pp->wavelet.edgreinf); + //edgreinfConn.block (false); + //lastedgreinf = pp->wavelet.edgreinf; + lastmedian = pp->wavelet.median; + lastmedianlev = pp->wavelet.medianlev; + lastlinkedg = pp->wavelet.linkedg; + lastcbenab = pp->wavelet.cbenab; + lastlipst = pp->wavelet.lipst; + lastavoid = pp->wavelet.avoid; + lasttmr = pp->wavelet.tmr; + rescon->setValue (pp->wavelet.rescon); + resconH->setValue (pp->wavelet.resconH); + reschro->setValue (pp->wavelet.reschro); + tmrs->setValue (pp->wavelet.tmrs); + gamma->setValue (pp->wavelet.gamma); + sup->setValue (pp->wavelet.sup); + sky->setValue (pp->wavelet.sky); + thres->setValue (pp->wavelet.thres); + chroma->setValue (pp->wavelet.chroma); + chro->setValue (pp->wavelet.chro); + contrast->setValue (pp->wavelet.contrast); + edgrad->setValue (pp->wavelet.edgrad); + edgval->setValue (pp->wavelet.edgval); + edgthresh->setValue (pp->wavelet.edgthresh); + thr->setValue (pp->wavelet.thr); + thrH->setValue (pp->wavelet.thrH); + skinprotect->setValue(pp->wavelet.skinprotect); + hueskin->setValue(pp->wavelet.hueskin); + hueskin2->setValue(pp->wavelet.hueskin2); + threshold->setValue(pp->wavelet.threshold); + threshold2->setValue(pp->wavelet.threshold2); + edgedetect->setValue(pp->wavelet.edgedetect); + edgedetectthr->setValue(pp->wavelet.edgedetectthr); + edgedetectthr2->setValue(pp->wavelet.edgedetectthr2); + hllev->setValue(pp->wavelet.hllev); + bllev->setValue(pp->wavelet.bllev); + pastlev->setValue(pp->wavelet.pastlev); + satlev->setValue(pp->wavelet.satlev); + edgcont->setValue(pp->wavelet.edgcont); + + greenlow->setValue (pp->wavelet.greenlow); + bluelow->setValue (pp->wavelet.bluelow); + greenmed->setValue (pp->wavelet.greenmed); + bluemed->setValue (pp->wavelet.bluemed); + greenhigh->setValue (pp->wavelet.greenhigh); + bluehigh->setValue (pp->wavelet.bluehigh); + + level0noise->setValue(pp->wavelet.level0noise); + level1noise->setValue(pp->wavelet.level1noise); + level2noise->setValue(pp->wavelet.level2noise); + strength->setValue(pp->wavelet.strength); + balance->setValue(pp->wavelet.balance); + iter->setValue(pp->wavelet.iter); + for (int i = 0; i < 9; i++) { + correction[i]->setValue(pp->wavelet.c[i]); + } + + for (int i = 0; i < 9; i++) { + correctionch[i]->setValue(pp->wavelet.ch[i]); + } + + /***************************************************************************************************** + * + * Set the inconsistent state (for combobox, select the "GENERAL_UNCHANGED" entry) + * + *****************************************************************************************************/ + + if (pedited) { + if (!pedited->wavelet.Lmethod) + Lmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.CLmethod) + CLmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.Backmethod) + Backmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.Tilesmethod) + Tilesmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.daubcoeffmethod) + daubcoeffmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.Dirmethod) + Dirmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.CHmethod) + CHmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.CHSLmethod) + CHSLmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.EDmethod) + EDmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.BAmethod) + BAmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.TMmethod) + TMmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.HSmethod) + HSmethod->set_active_text(M("GENERAL_UNCHANGED")); + if (!pedited->wavelet.Medgreinf) + Medgreinf->set_active_text(M("GENERAL_UNCHANGED")); + + set_inconsistent (multiImage && !pedited->wavelet.enabled); + ccshape->setUnChanged (!pedited->wavelet.ccwcurve); expcontrast->set_inconsistent (!pedited->wavelet.expcontrast); expchroma->set_inconsistent (!pedited->wavelet.expchroma); expedge->set_inconsistent (!pedited->wavelet.expedge); @@ -1058,12 +1183,12 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { exptoning->set_inconsistent (!pedited->wavelet.exptoning); expnoise->set_inconsistent (!pedited->wavelet.expnoise); opacityShapeRG->setCurve (pp->wavelet.opacityCurveRG); - opacityShapeBY->setCurve (pp->wavelet.opacityCurveBY); + opacityShapeBY->setCurve (pp->wavelet.opacityCurveBY); opacityShape->setCurve (pp->wavelet.opacityCurveW); opacityShapeWL->setCurve (pp->wavelet.opacityCurveWL); - hhshape->setUnChanged (!pedited->wavelet.hhcurve); - Chshape->setUnChanged (!pedited->wavelet.Chcurve); - clshape->setUnChanged (!pedited->wavelet.wavclCurve); + hhshape->setUnChanged (!pedited->wavelet.hhcurve); + Chshape->setUnChanged (!pedited->wavelet.Chcurve); + clshape->setUnChanged (!pedited->wavelet.wavclCurve); avoid->set_inconsistent (!pedited->wavelet.avoid); tmr->set_inconsistent (!pedited->wavelet.tmr); edgthresh->setEditedState (pedited->wavelet.edgthresh ? Edited : UnEdited); @@ -1091,368 +1216,283 @@ void Wavelet::read (const ProcParams* pp, const ParamsEdited* pedited) { bluemed->setEditedState (pedited->wavelet.bluemed ? Edited : UnEdited); greenhigh->setEditedState (pedited->wavelet.greenhigh ? Edited : UnEdited); bluehigh->setEditedState (pedited->wavelet.bluehigh ? Edited : UnEdited); - - - median->set_inconsistent (!pedited->wavelet.median); - medianlev->set_inconsistent (!pedited->wavelet.medianlev); - linkedg->set_inconsistent (!pedited->wavelet.linkedg); - // edgreinf->set_inconsistent (!pedited->wavelet.edgreinf); - cbenab->set_inconsistent (!pedited->wavelet.cbenab); + + median->set_inconsistent (!pedited->wavelet.median); + medianlev->set_inconsistent (!pedited->wavelet.medianlev); + linkedg->set_inconsistent (!pedited->wavelet.linkedg); +// edgreinf->set_inconsistent (!pedited->wavelet.edgreinf); + cbenab->set_inconsistent (!pedited->wavelet.cbenab); lipst->set_inconsistent (!pedited->wavelet.lipst); contrast->setEditedState (pedited->wavelet.contrast ? Edited : UnEdited); edgrad->setEditedState (pedited->wavelet.edgrad ? Edited : UnEdited); edgval->setEditedState (pedited->wavelet.edgval ? Edited : UnEdited); thr->setEditedState (pedited->wavelet.thr ? Edited : UnEdited); thrH->setEditedState (pedited->wavelet.thrH ? Edited : UnEdited); - skinprotect->setEditedState (pedited->wavelet.skinprotect ? Edited : UnEdited); - hueskin->setEditedState (pedited->wavelet.hueskin ? Edited : UnEdited); - hueskin2->setEditedState (pedited->wavelet.hueskin2 ? Edited : UnEdited); - hllev->setEditedState (pedited->wavelet.hllev ? Edited : UnEdited); - bllev->setEditedState (pedited->wavelet.bllev ? Edited : UnEdited); - pastlev->setEditedState (pedited->wavelet.pastlev ? Edited : UnEdited); - satlev->setEditedState (pedited->wavelet.satlev ? Edited : UnEdited); - strength->setEditedState(pedited->wavelet.strength ? Edited : UnEdited); - edgcont->setEditedState (pedited->wavelet.edgcont ? Edited : UnEdited); - level0noise->setEditedState (pedited->wavelet.level0noise ? Edited : UnEdited); - level1noise->setEditedState (pedited->wavelet.level1noise ? Edited : UnEdited); - level2noise->setEditedState (pedited->wavelet.level2noise ? Edited : UnEdited); - - for(int i = 0; i < 9; i++) { - correction[i]->setEditedState (pedited->wavelet.c[i] ? Edited : UnEdited); - } - for(int i = 0; i < 9; i++) { - correctionch[i]->setEditedState (pedited->wavelet.ch[i] ? Edited : UnEdited); - } - - - } - ccshape->setCurve (pp->wavelet.ccwcurve); - opacityShapeRG->setCurve (pp->wavelet.opacityCurveRG); - opacityShapeBY->setCurve (pp->wavelet.opacityCurveBY); - opacityShape->setCurve (pp->wavelet.opacityCurveW); - opacityShapeWL->setCurve (pp->wavelet.opacityCurveWL); - hhshape->setCurve (pp->wavelet.hhcurve); - Chshape->setCurve (pp->wavelet.Chcurve); - clshape->setCurve (pp->wavelet.wavclCurve); - expcontrast->setEnabled (pp->wavelet.expcontrast); - expchroma->setEnabled (pp->wavelet.expchroma); - expedge->setEnabled (pp->wavelet.expedge); - expresid->setEnabled (pp->wavelet.expresid); - expfinal->setEnabled (pp->wavelet.expfinal); - exptoning->setEnabled (pp->wavelet.exptoning); - expnoise->setEnabled (pp->wavelet.expnoise); + skinprotect->setEditedState (pedited->wavelet.skinprotect ? Edited : UnEdited); + hueskin->setEditedState (pedited->wavelet.hueskin ? Edited : UnEdited); + hueskin2->setEditedState (pedited->wavelet.hueskin2 ? Edited : UnEdited); + hllev->setEditedState (pedited->wavelet.hllev ? Edited : UnEdited); + bllev->setEditedState (pedited->wavelet.bllev ? Edited : UnEdited); + pastlev->setEditedState (pedited->wavelet.pastlev ? Edited : UnEdited); + satlev->setEditedState (pedited->wavelet.satlev ? Edited : UnEdited); + strength->setEditedState(pedited->wavelet.strength ? Edited : UnEdited); + edgcont->setEditedState (pedited->wavelet.edgcont ? Edited : UnEdited); + level0noise->setEditedState (pedited->wavelet.level0noise ? Edited : UnEdited); + level1noise->setEditedState (pedited->wavelet.level1noise ? Edited : UnEdited); + level2noise->setEditedState (pedited->wavelet.level2noise ? Edited : UnEdited); - setEnabled(pp->wavelet.enabled); - avoidConn.block (true); - avoid->set_active (pp->wavelet.avoid); - avoidConn.block (false); - tmrConn.block (true); - tmr->set_active (pp->wavelet.tmr); - tmrConn.block (false); - medianConn.block (true); - median->set_active (pp->wavelet.median); - medianConn.block (false); - medianlevConn.block (true); - medianlev->set_active (pp->wavelet.medianlev); - medianlevConn.block (false); - linkedgConn.block (true); - linkedg->set_active (pp->wavelet.linkedg); - linkedgConn.block (false); - cbenabConn.block (true); - cbenab->set_active (pp->wavelet.cbenab); - cbenabConn.block (false); - - lipstConn.block (true); - lipst->set_active (pp->wavelet.lipst); - lipstConn.block (false); - //edgreinfConn.block (true); - //edgreinf->set_active (pp->wavelet.edgreinf); - //edgreinfConn.block (false); - //lastedgreinf = pp->wavelet.edgreinf; - lastmedian = pp->wavelet.median; - lastmedianlev = pp->wavelet.medianlev; - lastlinkedg = pp->wavelet.linkedg; - lastcbenab = pp->wavelet.cbenab; - lastlipst = pp->wavelet.lipst; - lastavoid = pp->wavelet.avoid; - lasttmr = pp->wavelet.tmr; - rescon->setValue (pp->wavelet.rescon); - resconH->setValue (pp->wavelet.resconH); - reschro->setValue (pp->wavelet.reschro); - tmrs->setValue (pp->wavelet.tmrs); - gamma->setValue (pp->wavelet.gamma); - sup->setValue (pp->wavelet.sup); - sky->setValue (pp->wavelet.sky); - thres->setValue (pp->wavelet.thres); - chroma->setValue (pp->wavelet.chroma); - chro->setValue (pp->wavelet.chro); - contrast->setValue (pp->wavelet.contrast); - edgrad->setValue (pp->wavelet.edgrad); - edgval->setValue (pp->wavelet.edgval); - edgthresh->setValue (pp->wavelet.edgthresh); - thr->setValue (pp->wavelet.thr); - thrH->setValue (pp->wavelet.thrH); - skinprotect->setValue(pp->wavelet.skinprotect); - hueskin->setValue(pp->wavelet.hueskin); - hueskin2->setValue(pp->wavelet.hueskin2); - threshold->setValue(pp->wavelet.threshold); - threshold2->setValue(pp->wavelet.threshold2); - edgedetect->setValue(pp->wavelet.edgedetect); - edgedetectthr->setValue(pp->wavelet.edgedetectthr); - edgedetectthr2->setValue(pp->wavelet.edgedetectthr2); - hllev->setValue(pp->wavelet.hllev); - bllev->setValue(pp->wavelet.bllev); - pastlev->setValue(pp->wavelet.pastlev); - satlev->setValue(pp->wavelet.satlev); - edgcont->setValue(pp->wavelet.edgcont); - - greenlow->setValue (pp->wavelet.greenlow); - bluelow->setValue (pp->wavelet.bluelow); - greenmed->setValue (pp->wavelet.greenmed); - bluemed->setValue (pp->wavelet.bluemed); - greenhigh->setValue (pp->wavelet.greenhigh); - bluehigh->setValue (pp->wavelet.bluehigh); - - level0noise->setValue(pp->wavelet.level0noise); - level1noise->setValue(pp->wavelet.level1noise); - level2noise->setValue(pp->wavelet.level2noise); - strength->setValue(pp->wavelet.strength); - balance->setValue(pp->wavelet.balance); - iter->setValue(pp->wavelet.iter); - for (int i = 0; i < 9; i++) { - correction[i]->setValue(pp->wavelet.c[i]); - } - - for (int i = 0; i < 9; i++) { - correctionch[i]->setValue(pp->wavelet.ch[i]); - } + for(int i = 0; i < 9; i++) { + correction[i]->setEditedState (pedited->wavelet.c[i] ? Edited : UnEdited); + } + for(int i = 0; i < 9; i++) { + correctionch[i]->setEditedState (pedited->wavelet.ch[i] ? Edited : UnEdited); + } + } - int y; - y=thres->getValue(); - int z; - for(z=y;z<9;z++) correction[z]->hide(); - for(z=0;zshow(); - if (pp->wavelet.CHSLmethod=="SL") { - for(z=y;z<9;z++) correctionch[z]->hide(); - for(z=0;zshow(); - } - float tm; -/* tm=tmrs->getValue(); - if(tm==0.f) tmr->hide(); - else tmr->show(); -*/ - CHmethodChanged(); - CHSLmethodChanged(); - EDmethodChanged(); - BAmethodChanged(); - TMmethodChanged(); - MedgreinfChanged(); - if(z==9) sup->show(); else sup->hide(); - Lmethodconn.block(false); - CLmethodconn.block(false); - Backmethodconn.block(false); - Tilesmethodconn.block(false); - daubcoeffmethodconn.block(false); - CHmethodconn.block(false); - CHSLmethodconn.block(false); - EDmethodconn.block(false); - BAmethodconn.block(false); - TMmethodconn.block(false); - HSmethodconn.block(false); - Dirmethodconn.block(false); + /***************************************************************************************************** + * + * Update the GUI, all at once if not in Batch editing (in this case, display EVERYTHING) + * + *****************************************************************************************************/ + + if (!batchMode) { + int y; + y=thres->getValue(); + int z; + for(z=y;z<9;z++) correction[z]->hide(); + for(z=0;zshow(); + if (pp->wavelet.CHSLmethod=="SL") { + for(z=y;z<9;z++) correctionch[z]->hide(); + for(z=0;zshow(); + } + + //adjusterUpdateUI(tmrs); + HSmethodUpdateUI(); + CHmethodUpdateUI(); + //MedgreinfUpdateUI(); + //CHSLmethodUpdateUI(); + EDmethodUpdateUI(); + BAmethodUpdateUI(); + TMmethodUpdateUI(); + //BackmethodUpdateUI(); + CLmethodUpdateUI(); + //TilesmethodUpdateUI(); + //daubcoeffmethodUpdateUI(); + //DirmethodUpdateUI(); + //LmethodUpdateUI(); + enabledUpdateUI (); + medianlevUpdateUI (); + cbenabUpdateUI (); + if(z==9) sup->show(); else sup->hide(); + } + + /***************************************************************************************************** + * + * Enable listeners and signals + * + *****************************************************************************************************/ + + Lmethodconn.block(false); + CLmethodconn.block(false); + Backmethodconn.block(false); + Tilesmethodconn.block(false); + daubcoeffmethodconn.block(false); + CHmethodconn.block(false); + CHSLmethodconn.block(false); + EDmethodconn.block(false); + BAmethodconn.block(false); + TMmethodconn.block(false); + HSmethodconn.block(false); + Dirmethodconn.block(false); MedgreinfConn.block(false); - - medianlevToggled () ; - linkedgToggled () ; - lipstToggled () ; - cbenabToggled () ; + enableChromaConn.block(false); + enableContrastConn.block(false); + enableEdgeConn.block(false); + enableFinalConn.block(false); + enableNoiseConn.block(false); + enableResidConn.block(false); + enableToningConn.block(false); - enableListener (); + enableListener (); } void Wavelet::setEditProvider (EditDataProvider *provider) { - ccshape->setEditProvider(provider); - opacityShapeRG->setEditProvider(provider); - opacityShapeBY->setEditProvider(provider); - opacityShape->setEditProvider(provider); - opacityShapeWL->setEditProvider(provider); - hhshape->setEditProvider(provider); - Chshape->setEditProvider(provider); - clshape->setEditProvider(provider); - + ccshape->setEditProvider(provider); + opacityShapeRG->setEditProvider(provider); + opacityShapeBY->setEditProvider(provider); + opacityShape->setEditProvider(provider); + opacityShapeWL->setEditProvider(provider); + hhshape->setEditProvider(provider); + Chshape->setEditProvider(provider); + clshape->setEditProvider(provider); } void Wavelet::autoOpenCurve () { - ccshape->openIfNonlinear(); + ccshape->openIfNonlinear(); //opacityShapeRG->openIfNonlinear(); //opacityShapeBY->openIfNonlinear(); } void Wavelet::write (ProcParams* pp, ParamsEdited* pedited) { - pp->wavelet.enabled = getEnabled(); - pp->wavelet.avoid = avoid->get_active (); - pp->wavelet.tmr = tmr->get_active (); - pp->wavelet.rescon = rescon->getValue(); - pp->wavelet.resconH = resconH->getValue(); - pp->wavelet.reschro = reschro->getValue(); - pp->wavelet.tmrs = tmrs->getValue(); - pp->wavelet.gamma = gamma->getValue(); - pp->wavelet.sup = sup->getValue(); - pp->wavelet.sky = sky->getValue(); - pp->wavelet.thres = thres->getValue(); - pp->wavelet.chroma = chroma->getValue(); - pp->wavelet.chro = chro->getValue(); - pp->wavelet.median = median->get_active (); - pp->wavelet.medianlev = medianlev->get_active (); - pp->wavelet.linkedg = linkedg->get_active (); - //pp->wavelet.edgreinf = edgreinf->get_active (); - pp->wavelet.cbenab = cbenab->get_active (); - pp->wavelet.lipst = lipst->get_active (); - pp->wavelet.contrast = contrast->getValue(); - pp->wavelet.edgrad = edgrad->getValue(); - pp->wavelet.edgval = edgval->getValue(); - pp->wavelet.edgthresh = edgthresh->getValue(); - pp->wavelet.thr = thr->getValue(); - pp->wavelet.thrH = thrH->getValue(); - pp->wavelet.hueskin = hueskin->getValue (); - pp->wavelet.hueskin2 = hueskin2->getValue (); - pp->wavelet.skinprotect = skinprotect->getValue(); - pp->wavelet.threshold = threshold->getValue(); - pp->wavelet.threshold2 = threshold2->getValue(); - pp->wavelet.edgedetect = edgedetect->getValue(); - pp->wavelet.edgedetectthr = edgedetectthr->getValue(); - pp->wavelet.edgedetectthr2 = edgedetectthr2->getValue(); - pp->wavelet.hllev = hllev->getValue (); - pp->wavelet.bllev = bllev->getValue (); - pp->wavelet.edgcont = edgcont->getValue (); - pp->wavelet.level0noise = level0noise->getValue (); - pp->wavelet.level1noise = level1noise->getValue (); - pp->wavelet.level2noise = level2noise->getValue (); - pp->wavelet.ccwcurve = ccshape->getCurve (); - pp->wavelet.opacityCurveRG = opacityShapeRG->getCurve (); - pp->wavelet.opacityCurveBY = opacityShapeBY->getCurve (); - pp->wavelet.opacityCurveW = opacityShape->getCurve (); - pp->wavelet.opacityCurveWL = opacityShapeWL->getCurve (); - pp->wavelet.hhcurve = hhshape->getCurve (); - pp->wavelet.Chcurve = Chshape->getCurve (); - pp->wavelet.pastlev = pastlev->getValue (); - pp->wavelet.satlev = satlev->getValue (); - pp->wavelet.strength = (int) strength->getValue(); - pp->wavelet.balance = (int) balance->getValue(); - - pp->wavelet.greenlow = greenlow->getValue (); - pp->wavelet.bluelow = bluelow->getValue (); - pp->wavelet.greenmed = greenmed->getValue (); - pp->wavelet.bluemed = bluemed->getValue (); - pp->wavelet.greenhigh = greenhigh->getValue (); - pp->wavelet.bluehigh = bluehigh->getValue (); - pp->wavelet.expcontrast = expcontrast->getEnabled(); - pp->wavelet.expchroma = expchroma->getEnabled(); - pp->wavelet.expedge = expedge->getEnabled(); - pp->wavelet.expresid = expresid->getEnabled(); - pp->wavelet.expfinal = expfinal->getEnabled(); - pp->wavelet.exptoning = exptoning->getEnabled(); - pp->wavelet.expnoise = expnoise->getEnabled(); - + pp->wavelet.enabled = getEnabled(); + pp->wavelet.avoid = avoid->get_active (); + pp->wavelet.tmr = tmr->get_active (); + pp->wavelet.rescon = rescon->getValue(); + pp->wavelet.resconH = resconH->getValue(); + pp->wavelet.reschro = reschro->getValue(); + pp->wavelet.tmrs = tmrs->getValue(); + pp->wavelet.gamma = gamma->getValue(); + pp->wavelet.sup = sup->getValue(); + pp->wavelet.sky = sky->getValue(); + pp->wavelet.thres = thres->getValue(); + pp->wavelet.chroma = chroma->getValue(); + pp->wavelet.chro = chro->getValue(); + pp->wavelet.median = median->get_active (); + pp->wavelet.medianlev = medianlev->get_active (); + pp->wavelet.linkedg = linkedg->get_active (); +// pp->wavelet.edgreinf = edgreinf->get_active (); + pp->wavelet.cbenab = cbenab->get_active (); + pp->wavelet.lipst = lipst->get_active (); + pp->wavelet.contrast = contrast->getValue(); + pp->wavelet.edgrad = edgrad->getValue(); + pp->wavelet.edgval = edgval->getValue(); + pp->wavelet.edgthresh = edgthresh->getValue(); + pp->wavelet.thr = thr->getValue(); + pp->wavelet.thrH = thrH->getValue(); + pp->wavelet.hueskin = hueskin->getValue (); + pp->wavelet.hueskin2 = hueskin2->getValue (); + pp->wavelet.skinprotect = skinprotect->getValue(); + pp->wavelet.threshold = threshold->getValue(); + pp->wavelet.threshold2 = threshold2->getValue(); + pp->wavelet.edgedetect = edgedetect->getValue(); + pp->wavelet.edgedetectthr = edgedetectthr->getValue(); + pp->wavelet.edgedetectthr2 = edgedetectthr2->getValue(); + pp->wavelet.hllev = hllev->getValue (); + pp->wavelet.bllev = bllev->getValue (); + pp->wavelet.edgcont = edgcont->getValue (); + pp->wavelet.level0noise = level0noise->getValue (); + pp->wavelet.level1noise = level1noise->getValue (); + pp->wavelet.level2noise = level2noise->getValue (); + pp->wavelet.ccwcurve = ccshape->getCurve (); + pp->wavelet.opacityCurveRG = opacityShapeRG->getCurve (); + pp->wavelet.opacityCurveBY = opacityShapeBY->getCurve (); + pp->wavelet.opacityCurveW = opacityShape->getCurve (); + pp->wavelet.opacityCurveWL = opacityShapeWL->getCurve (); + pp->wavelet.hhcurve = hhshape->getCurve (); + pp->wavelet.Chcurve = Chshape->getCurve (); + pp->wavelet.pastlev = pastlev->getValue (); + pp->wavelet.satlev = satlev->getValue (); + pp->wavelet.strength = (int) strength->getValue(); + pp->wavelet.balance = (int) balance->getValue(); + + pp->wavelet.greenlow = greenlow->getValue (); + pp->wavelet.bluelow = bluelow->getValue (); + pp->wavelet.greenmed = greenmed->getValue (); + pp->wavelet.bluemed = bluemed->getValue (); + pp->wavelet.greenhigh = greenhigh->getValue (); + pp->wavelet.bluehigh = bluehigh->getValue (); + pp->wavelet.expcontrast = expcontrast->getEnabled(); + pp->wavelet.expchroma = expchroma->getEnabled(); + pp->wavelet.expedge = expedge->getEnabled(); + pp->wavelet.expresid = expresid->getEnabled(); + pp->wavelet.expfinal = expfinal->getEnabled(); + pp->wavelet.exptoning = exptoning->getEnabled(); + pp->wavelet.expnoise = expnoise->getEnabled(); + pp->wavelet.iter = (int) iter->getValue(); - pp->wavelet.wavclCurve = clshape->getCurve (); + pp->wavelet.wavclCurve = clshape->getCurve (); - for (int i = 0; i < 9; i++) { - pp->wavelet.c[i] = (int) correction[i]->getValue(); - } - for (int i = 0; i < 9; i++) { - pp->wavelet.ch[i] = (int) correctionch[i]->getValue(); - } - - if (pedited) { - pedited->wavelet.enabled = !get_inconsistent(); - pedited->wavelet.avoid = !avoid->get_inconsistent(); - pedited->wavelet.tmr = !tmr->get_inconsistent(); - pedited->wavelet.median = !median->get_inconsistent(); - pedited->wavelet.medianlev = !medianlev->get_inconsistent(); - pedited->wavelet.linkedg = !linkedg->get_inconsistent(); - pedited->wavelet.cbenab = !cbenab->get_inconsistent(); - pedited->wavelet.lipst = !lipst->get_inconsistent(); - pedited->wavelet.Medgreinf = Medgreinf->get_active_row_number() != 2; - pedited->wavelet.Lmethod = Lmethod->get_active_row_number() != 8; - pedited->wavelet.CLmethod = CLmethod->get_active_row_number() != 3; - pedited->wavelet.Backmethod = Backmethod->get_active_row_number() != 2; - pedited->wavelet.Tilesmethod = Tilesmethod->get_active_row_number() != 2; - pedited->wavelet.daubcoeffmethod = daubcoeffmethod->get_active_row_number() != 4; - pedited->wavelet.CHmethod = CHmethod->get_active_row_number() != 2; - pedited->wavelet.CHSLmethod = CHSLmethod->get_active_row_number() != 1; - pedited->wavelet.EDmethod = EDmethod->get_active_row_number() != 1; - pedited->wavelet.BAmethod = BAmethod->get_active_row_number() != 3; - pedited->wavelet.TMmethod = TMmethod->get_active_row_number() != 2; - pedited->wavelet.HSmethod = HSmethod->get_active_row_number() != 1; - pedited->wavelet.Dirmethod = Dirmethod->get_active_row_number() != 3; - pedited->wavelet.edgthresh = edgthresh->getEditedState(); - pedited->wavelet.rescon = rescon->getEditedState(); - pedited->wavelet.resconH = resconH->getEditedState(); - pedited->wavelet.reschro = reschro->getEditedState(); - pedited->wavelet.tmrs = tmrs->getEditedState(); - pedited->wavelet.gamma = gamma->getEditedState(); - pedited->wavelet.sup = sup->getEditedState(); - pedited->wavelet.sky = sky->getEditedState(); - pedited->wavelet.thres = thres->getEditedState(); - pedited->wavelet.threshold = threshold->getEditedState(); - pedited->wavelet.threshold2 = threshold2->getEditedState(); - pedited->wavelet.edgedetect = edgedetect->getEditedState(); - pedited->wavelet.edgedetectthr = edgedetectthr->getEditedState(); - pedited->wavelet.edgedetectthr2 = edgedetectthr2->getEditedState(); - pedited->wavelet.chroma = chroma->getEditedState(); - pedited->wavelet.chro = chro->getEditedState(); - pedited->wavelet.contrast = contrast->getEditedState(); - pedited->wavelet.edgrad = edgrad->getEditedState(); - pedited->wavelet.edgval = edgval->getEditedState(); - pedited->wavelet.thr = thr->getEditedState(); - pedited->wavelet.thrH = thrH->getEditedState(); - pedited->wavelet.hueskin = hueskin->getEditedState (); - pedited->wavelet.hueskin2 = hueskin2->getEditedState (); - pedited->wavelet.skinprotect = skinprotect->getEditedState(); - pedited->wavelet.hllev = hllev->getEditedState (); - pedited->wavelet.ccwcurve = !ccshape->isUnChanged (); - pedited->wavelet.edgcont = edgcont->getEditedState (); - pedited->wavelet.level0noise = level0noise->getEditedState (); - pedited->wavelet.level1noise = level1noise->getEditedState (); - pedited->wavelet.level2noise = level2noise->getEditedState (); - pedited->wavelet.opacityCurveRG = !opacityShapeRG->isUnChanged (); - pedited->wavelet.opacityCurveBY = !opacityShapeBY->isUnChanged (); - pedited->wavelet.opacityCurveW = !opacityShape->isUnChanged (); - pedited->wavelet.opacityCurveWL = !opacityShapeWL->isUnChanged (); - pedited->wavelet.hhcurve = !hhshape->isUnChanged (); - pedited->wavelet.Chcurve = !Chshape->isUnChanged (); - pedited->wavelet.bllev = bllev->getEditedState (); - pedited->wavelet.pastlev = pastlev->getEditedState (); - pedited->wavelet.satlev = satlev->getEditedState (); - pedited->wavelet.strength = strength->getEditedState (); - pedited->wavelet.greenlow = greenlow->getEditedState (); - pedited->wavelet.bluelow = bluelow->getEditedState (); - pedited->wavelet.greenmed = greenmed->getEditedState (); - pedited->wavelet.bluemed = bluemed->getEditedState (); - pedited->wavelet.greenhigh = greenhigh->getEditedState (); - pedited->wavelet.bluehigh = bluehigh->getEditedState (); - - pedited->wavelet.balance = balance->getEditedState (); - pedited->wavelet.iter = iter->getEditedState (); - pedited->wavelet.wavclCurve = !clshape->isUnChanged (); - pedited->wavelet.expcontrast = !expcontrast->get_inconsistent(); - pedited->wavelet.expchroma = !expchroma->get_inconsistent(); - pedited->wavelet.expedge = !expedge->get_inconsistent(); - pedited->wavelet.expresid = !expresid->get_inconsistent(); - pedited->wavelet.expfinal = !expfinal->get_inconsistent(); - pedited->wavelet.exptoning = !exptoning->get_inconsistent(); - pedited->wavelet.expnoise = !expnoise->get_inconsistent(); + for (int i = 0; i < 9; i++) + pp->wavelet.c[i] = (int) correction[i]->getValue(); + for (int i = 0; i < 9; i++) + pp->wavelet.ch[i] = (int) correctionch[i]->getValue(); - for(int i = 0; i < 9; i++) { - pedited->wavelet.c[i] = correction[i]->getEditedState(); - } - for(int i = 0; i < 9; i++) { - pedited->wavelet.ch[i] = correctionch[i]->getEditedState(); - } + if (pedited) { + pedited->wavelet.enabled = !get_inconsistent(); + pedited->wavelet.avoid = !avoid->get_inconsistent(); + pedited->wavelet.tmr = !tmr->get_inconsistent(); + pedited->wavelet.median = !median->get_inconsistent(); + pedited->wavelet.medianlev = !medianlev->get_inconsistent(); + pedited->wavelet.linkedg = !linkedg->get_inconsistent(); + pedited->wavelet.cbenab = !cbenab->get_inconsistent(); + pedited->wavelet.lipst = !lipst->get_inconsistent(); + pedited->wavelet.Medgreinf = Medgreinf->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.Lmethod = Lmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.CLmethod = CLmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.Backmethod = Backmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.Tilesmethod = Tilesmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.daubcoeffmethod = daubcoeffmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.CHmethod = CHmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.CHSLmethod = CHSLmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.EDmethod = EDmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.BAmethod = BAmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.TMmethod = TMmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.HSmethod = HSmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.Dirmethod = Dirmethod->get_active_text() != M("GENERAL_UNCHANGED"); + pedited->wavelet.edgthresh = edgthresh->getEditedState(); + pedited->wavelet.rescon = rescon->getEditedState(); + pedited->wavelet.resconH = resconH->getEditedState(); + pedited->wavelet.reschro = reschro->getEditedState(); + pedited->wavelet.tmrs = tmrs->getEditedState(); + pedited->wavelet.gamma = gamma->getEditedState(); + pedited->wavelet.sup = sup->getEditedState(); + pedited->wavelet.sky = sky->getEditedState(); + pedited->wavelet.thres = thres->getEditedState(); + pedited->wavelet.threshold = threshold->getEditedState(); + pedited->wavelet.threshold2 = threshold2->getEditedState(); + pedited->wavelet.edgedetect = edgedetect->getEditedState(); + pedited->wavelet.edgedetectthr = edgedetectthr->getEditedState(); + pedited->wavelet.edgedetectthr2 = edgedetectthr2->getEditedState(); + pedited->wavelet.chroma = chroma->getEditedState(); + pedited->wavelet.chro = chro->getEditedState(); + pedited->wavelet.contrast = contrast->getEditedState(); + pedited->wavelet.edgrad = edgrad->getEditedState(); + pedited->wavelet.edgval = edgval->getEditedState(); + pedited->wavelet.thr = thr->getEditedState(); + pedited->wavelet.thrH = thrH->getEditedState(); + pedited->wavelet.hueskin = hueskin->getEditedState (); + pedited->wavelet.hueskin2 = hueskin2->getEditedState (); + pedited->wavelet.skinprotect = skinprotect->getEditedState(); + pedited->wavelet.hllev = hllev->getEditedState (); + pedited->wavelet.ccwcurve = !ccshape->isUnChanged (); + pedited->wavelet.edgcont = edgcont->getEditedState (); + pedited->wavelet.level0noise = level0noise->getEditedState (); + pedited->wavelet.level1noise = level1noise->getEditedState (); + pedited->wavelet.level2noise = level2noise->getEditedState (); + pedited->wavelet.opacityCurveRG = !opacityShapeRG->isUnChanged (); + pedited->wavelet.opacityCurveBY = !opacityShapeBY->isUnChanged (); + pedited->wavelet.opacityCurveW = !opacityShape->isUnChanged (); + pedited->wavelet.opacityCurveWL = !opacityShapeWL->isUnChanged (); + pedited->wavelet.hhcurve = !hhshape->isUnChanged (); + pedited->wavelet.Chcurve = !Chshape->isUnChanged (); + pedited->wavelet.bllev = bllev->getEditedState (); + pedited->wavelet.pastlev = pastlev->getEditedState (); + pedited->wavelet.satlev = satlev->getEditedState (); + pedited->wavelet.strength = strength->getEditedState (); + pedited->wavelet.greenlow = greenlow->getEditedState (); + pedited->wavelet.bluelow = bluelow->getEditedState (); + pedited->wavelet.greenmed = greenmed->getEditedState (); + pedited->wavelet.bluemed = bluemed->getEditedState (); + pedited->wavelet.greenhigh = greenhigh->getEditedState (); + pedited->wavelet.bluehigh = bluehigh->getEditedState (); + pedited->wavelet.balance = balance->getEditedState (); + pedited->wavelet.iter = iter->getEditedState (); + pedited->wavelet.wavclCurve = !clshape->isUnChanged (); + pedited->wavelet.expcontrast = !expcontrast->get_inconsistent(); + pedited->wavelet.expchroma = !expchroma->get_inconsistent(); + pedited->wavelet.expedge = !expedge->get_inconsistent(); + pedited->wavelet.expresid = !expresid->get_inconsistent(); + pedited->wavelet.expfinal = !expfinal->get_inconsistent(); + pedited->wavelet.exptoning = !exptoning->get_inconsistent(); + pedited->wavelet.expnoise = !expnoise->get_inconsistent(); + + for(int i = 0; i < 9; i++) + pedited->wavelet.c[i] = correction[i]->getEditedState(); + for(int i = 0; i < 9; i++) + pedited->wavelet.ch[i] = correctionch[i]->getEditedState(); - } + } if (CHmethod->get_active_row_number()==0) pp->wavelet.CHmethod = "without"; else if (CHmethod->get_active_row_number()==1) @@ -1542,15 +1582,13 @@ void Wavelet::write (ProcParams* pp, ParamsEdited* pedited) { char lMethod[3]; // one additional char to avoid buffer overrun if someone increases number of levels > 9 sprintf(lMethod, "%d", Lmethod->get_active_row_number()+1); pp->wavelet.Lmethod = lMethod; - - } void Wavelet::curveChanged (CurveEditor* ce) { - if (listener && getEnabled()) { - if (ce == ccshape) - listener->panelChanged (EvWavCCCurve, M("HISTORY_CUSTOMCURVE")); + if (listener && getEnabled()) { + if (ce == ccshape) + listener->panelChanged (EvWavCCCurve, M("HISTORY_CUSTOMCURVE")); else if (ce == opacityShapeRG) listener->panelChanged (EvWavColor, M("HISTORY_CUSTOMCURVE")); else if (ce == opacityShapeBY) @@ -1559,27 +1597,26 @@ void Wavelet::curveChanged (CurveEditor* ce) { listener->panelChanged (EvWavopacity, M("HISTORY_CUSTOMCURVE")); else if (ce == opacityShapeWL) listener->panelChanged (EvWavopacityWL, M("HISTORY_CUSTOMCURVE")); - else if (ce == hhshape) - listener->panelChanged (EvWavHHCurve, M("HISTORY_CUSTOMCURVE")); - else if (ce == Chshape) - listener->panelChanged (EvWavCHCurve, M("HISTORY_CUSTOMCURVE")); - else if (ce == clshape) - listener->panelChanged (EvWavCLCurve, M("HISTORY_CUSTOMCURVE")); - - } + else if (ce == hhshape) + listener->panelChanged (EvWavHHCurve, M("HISTORY_CUSTOMCURVE")); + else if (ce == Chshape) + listener->panelChanged (EvWavCHCurve, M("HISTORY_CUSTOMCURVE")); + else if (ce == clshape) + listener->panelChanged (EvWavCLCurve, M("HISTORY_CUSTOMCURVE")); + } } void Wavelet::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) { - for (int i = 0; i < 9; i++) { - correction[i]->setDefault(defParams->wavelet.c[i]); - } - for (int i = 0; i < 9; i++) { - correctionch[i]->setDefault(defParams->wavelet.ch[i]); - } - strength->setDefault(defParams->wavelet.strength ); - balance->setDefault(defParams->wavelet.balance ); - iter->setDefault(defParams->wavelet.iter ); + for (int i = 0; i < 9; i++) { + correction[i]->setDefault(defParams->wavelet.c[i]); + } + for (int i = 0; i < 9; i++) { + correctionch[i]->setDefault(defParams->wavelet.ch[i]); + } + strength->setDefault(defParams->wavelet.strength ); + balance->setDefault(defParams->wavelet.balance ); + iter->setDefault(defParams->wavelet.iter ); rescon->setDefault (defParams->wavelet.rescon); resconH->setDefault (defParams->wavelet.resconH); reschro->setDefault (defParams->wavelet.reschro); @@ -1601,97 +1638,97 @@ void Wavelet::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi edgthresh->setDefault (defParams->wavelet.edgthresh); thr->setDefault (defParams->wavelet.thr); thrH->setDefault (defParams->wavelet.thrH); - hueskin->setDefault (defParams->wavelet.hueskin); - hueskin2->setDefault (defParams->wavelet.hueskin2); - hllev->setDefault (defParams->wavelet.hllev); - bllev->setDefault (defParams->wavelet.bllev); - pastlev->setDefault (defParams->wavelet.pastlev); - satlev->setDefault (defParams->wavelet.satlev); - edgcont->setDefault (defParams->wavelet.edgcont); - level0noise->setDefault (defParams->wavelet.level0noise); - level1noise->setDefault (defParams->wavelet.level1noise); - level2noise->setDefault (defParams->wavelet.level2noise); - + hueskin->setDefault (defParams->wavelet.hueskin); + hueskin2->setDefault (defParams->wavelet.hueskin2); + hllev->setDefault (defParams->wavelet.hllev); + bllev->setDefault (defParams->wavelet.bllev); + pastlev->setDefault (defParams->wavelet.pastlev); + satlev->setDefault (defParams->wavelet.satlev); + edgcont->setDefault (defParams->wavelet.edgcont); + level0noise->setDefault (defParams->wavelet.level0noise); + level1noise->setDefault (defParams->wavelet.level1noise); + level2noise->setDefault (defParams->wavelet.level2noise); + greenlow->setDefault (defParams->wavelet.greenlow); bluelow->setDefault (defParams->wavelet.bluelow); greenmed->setDefault (defParams->wavelet.greenmed); bluemed->setDefault (defParams->wavelet.bluemed); greenhigh->setDefault (defParams->wavelet.greenhigh); bluehigh->setDefault (defParams->wavelet.bluehigh); - - if (pedited) { - greenlow->setDefaultEditedState (pedited->wavelet.greenlow ? Edited : UnEdited); - bluelow->setDefaultEditedState (pedited->wavelet.bluelow ? Edited : UnEdited); - greenmed->setDefaultEditedState (pedited->wavelet.greenmed ? Edited : UnEdited); - bluemed->setDefaultEditedState (pedited->wavelet.bluemed ? Edited : UnEdited); - greenhigh->setDefaultEditedState (pedited->wavelet.greenhigh ? Edited : UnEdited); - bluehigh->setDefaultEditedState (pedited->wavelet.bluehigh ? Edited : UnEdited); - - rescon->setDefault (defParams->wavelet.rescon); - resconH->setDefault (defParams->wavelet.resconH); - reschro->setDefault (defParams->wavelet.reschro); - tmrs->setDefault (defParams->wavelet.tmrs); - gamma->setDefault (defParams->wavelet.gamma); - sup->setDefault (defParams->wavelet.sup); - sky->setDefaultEditedState(pedited->wavelet.sky ? Edited : UnEdited); - thres->setDefaultEditedState(pedited->wavelet.thres ? Edited : UnEdited); - threshold->setDefaultEditedState(pedited->wavelet.threshold ? Edited : UnEdited); - threshold2->setDefaultEditedState(pedited->wavelet.threshold2 ? Edited : UnEdited); - edgedetect->setDefaultEditedState(pedited->wavelet.edgedetect ? Edited : UnEdited); - edgedetectthr->setDefaultEditedState(pedited->wavelet.edgedetectthr ? Edited : UnEdited); - edgedetectthr2->setDefaultEditedState(pedited->wavelet.edgedetectthr2 ? Edited : UnEdited); - chroma->setDefaultEditedState(pedited->wavelet.chroma ? Edited : UnEdited); - chro->setDefaultEditedState(pedited->wavelet.chro ? Edited : UnEdited); - contrast->setDefaultEditedState(pedited->wavelet.contrast ? Edited : UnEdited); - edgrad->setDefaultEditedState(pedited->wavelet.edgrad ? Edited : UnEdited); - edgval->setDefaultEditedState(pedited->wavelet.edgval ? Edited : UnEdited); - edgthresh->setDefault (defParams->wavelet.edgthresh); - thr->setDefaultEditedState(pedited->wavelet.thr ? Edited : UnEdited); - thrH->setDefaultEditedState(pedited->wavelet.thrH ? Edited : UnEdited); - skinprotect->setDefaultEditedState(pedited->wavelet.skinprotect ? Edited : UnEdited); - hueskin->setDefaultEditedState (pedited->wavelet.hueskin ? Edited : UnEdited); - hueskin2->setDefaultEditedState (pedited->wavelet.hueskin2 ? Edited : UnEdited); - hllev->setDefaultEditedState (pedited->wavelet.hllev ? Edited : UnEdited); - bllev->setDefaultEditedState (pedited->wavelet.bllev ? Edited : UnEdited); - pastlev->setDefaultEditedState (pedited->wavelet.pastlev ? Edited : UnEdited); - satlev->setDefaultEditedState (pedited->wavelet.satlev ? Edited : UnEdited); - edgcont->setDefaultEditedState (pedited->wavelet.edgcont ? Edited : UnEdited); - strength->setDefaultEditedState (pedited->wavelet.strength ? Edited : UnEdited); - balance->setDefaultEditedState (pedited->wavelet.balance ? Edited : UnEdited); - iter->setDefaultEditedState (pedited->wavelet.iter ? Edited : UnEdited); - level0noise->setDefaultEditedState (pedited->wavelet.level0noise ? Edited : UnEdited); - level1noise->setDefaultEditedState (pedited->wavelet.level1noise ? Edited : UnEdited); - level2noise->setDefaultEditedState (pedited->wavelet.level2noise ? Edited : UnEdited); - - for (int i = 0; i < 9; i++) { - correction[i]->setDefaultEditedState(pedited->wavelet.c[i] ? Edited : UnEdited); + + if (pedited) { + greenlow->setDefaultEditedState (pedited->wavelet.greenlow ? Edited : UnEdited); + bluelow->setDefaultEditedState (pedited->wavelet.bluelow ? Edited : UnEdited); + greenmed->setDefaultEditedState (pedited->wavelet.greenmed ? Edited : UnEdited); + bluemed->setDefaultEditedState (pedited->wavelet.bluemed ? Edited : UnEdited); + greenhigh->setDefaultEditedState (pedited->wavelet.greenhigh ? Edited : UnEdited); + bluehigh->setDefaultEditedState (pedited->wavelet.bluehigh ? Edited : UnEdited); + + rescon->setDefault (defParams->wavelet.rescon); + resconH->setDefault (defParams->wavelet.resconH); + reschro->setDefault (defParams->wavelet.reschro); + tmrs->setDefault (defParams->wavelet.tmrs); + gamma->setDefault (defParams->wavelet.gamma); + sup->setDefault (defParams->wavelet.sup); + sky->setDefaultEditedState(pedited->wavelet.sky ? Edited : UnEdited); + thres->setDefaultEditedState(pedited->wavelet.thres ? Edited : UnEdited); + threshold->setDefaultEditedState(pedited->wavelet.threshold ? Edited : UnEdited); + threshold2->setDefaultEditedState(pedited->wavelet.threshold2 ? Edited : UnEdited); + edgedetect->setDefaultEditedState(pedited->wavelet.edgedetect ? Edited : UnEdited); + edgedetectthr->setDefaultEditedState(pedited->wavelet.edgedetectthr ? Edited : UnEdited); + edgedetectthr2->setDefaultEditedState(pedited->wavelet.edgedetectthr2 ? Edited : UnEdited); + chroma->setDefaultEditedState(pedited->wavelet.chroma ? Edited : UnEdited); + chro->setDefaultEditedState(pedited->wavelet.chro ? Edited : UnEdited); + contrast->setDefaultEditedState(pedited->wavelet.contrast ? Edited : UnEdited); + edgrad->setDefaultEditedState(pedited->wavelet.edgrad ? Edited : UnEdited); + edgval->setDefaultEditedState(pedited->wavelet.edgval ? Edited : UnEdited); + edgthresh->setDefault (defParams->wavelet.edgthresh); + thr->setDefaultEditedState(pedited->wavelet.thr ? Edited : UnEdited); + thrH->setDefaultEditedState(pedited->wavelet.thrH ? Edited : UnEdited); + skinprotect->setDefaultEditedState(pedited->wavelet.skinprotect ? Edited : UnEdited); + hueskin->setDefaultEditedState(pedited->wavelet.hueskin ? Edited : UnEdited); + hueskin2->setDefaultEditedState(pedited->wavelet.hueskin2 ? Edited : UnEdited); + hllev->setDefaultEditedState(pedited->wavelet.hllev ? Edited : UnEdited); + bllev->setDefaultEditedState(pedited->wavelet.bllev ? Edited : UnEdited); + pastlev->setDefaultEditedState(pedited->wavelet.pastlev ? Edited : UnEdited); + satlev->setDefaultEditedState(pedited->wavelet.satlev ? Edited : UnEdited); + edgcont->setDefaultEditedState(pedited->wavelet.edgcont ? Edited : UnEdited); + strength->setDefaultEditedState(pedited->wavelet.strength ? Edited : UnEdited); + balance->setDefaultEditedState(pedited->wavelet.balance ? Edited : UnEdited); + iter->setDefaultEditedState(pedited->wavelet.iter ? Edited : UnEdited); + level0noise->setDefaultEditedState(pedited->wavelet.level0noise ? Edited : UnEdited); + level1noise->setDefaultEditedState(pedited->wavelet.level1noise ? Edited : UnEdited); + level2noise->setDefaultEditedState(pedited->wavelet.level2noise ? Edited : UnEdited); + + for (int i = 0; i < 9; i++) { + correction[i]->setDefaultEditedState(pedited->wavelet.c[i] ? Edited : UnEdited); + } + for (int i = 0; i < 9; i++) { + correctionch[i]->setDefaultEditedState(pedited->wavelet.ch[i] ? Edited : UnEdited); + } } - for (int i = 0; i < 9; i++) { - correctionch[i]->setDefaultEditedState(pedited->wavelet.ch[i] ? Edited : UnEdited); - } - } - else { - rescon->setDefaultEditedState(Irrelevant); - resconH->setDefaultEditedState(Irrelevant); - reschro->setDefaultEditedState(Irrelevant); - tmrs->setDefaultEditedState(Irrelevant); - gamma->setDefaultEditedState(Irrelevant); - sup->setDefaultEditedState(Irrelevant); - sky->setDefaultEditedState(Irrelevant); - thres->setDefaultEditedState(Irrelevant); - threshold->setDefaultEditedState(Irrelevant); - threshold2->setDefaultEditedState(Irrelevant); - edgedetect->setDefaultEditedState(Irrelevant); - edgedetectthr->setDefaultEditedState(Irrelevant); - edgedetectthr2->setDefaultEditedState(Irrelevant); + else { + rescon->setDefaultEditedState(Irrelevant); + resconH->setDefaultEditedState(Irrelevant); + reschro->setDefaultEditedState(Irrelevant); + tmrs->setDefaultEditedState(Irrelevant); + gamma->setDefaultEditedState(Irrelevant); + sup->setDefaultEditedState(Irrelevant); + sky->setDefaultEditedState(Irrelevant); + thres->setDefaultEditedState(Irrelevant); + threshold->setDefaultEditedState(Irrelevant); + threshold2->setDefaultEditedState(Irrelevant); + edgedetect->setDefaultEditedState(Irrelevant); + edgedetectthr->setDefaultEditedState(Irrelevant); + edgedetectthr2->setDefaultEditedState(Irrelevant); chroma->setDefaultEditedState(Irrelevant); - chro->setDefaultEditedState(Irrelevant); - contrast->setDefaultEditedState(Irrelevant); - edgrad->setDefaultEditedState(Irrelevant); - edgval->setDefaultEditedState(Irrelevant); - edgthresh->setDefaultEditedState(Irrelevant); - thr->setDefaultEditedState(Irrelevant); - thrH->setDefaultEditedState(Irrelevant); + chro->setDefaultEditedState(Irrelevant); + contrast->setDefaultEditedState(Irrelevant); + edgrad->setDefaultEditedState(Irrelevant); + edgval->setDefaultEditedState(Irrelevant); + edgthresh->setDefaultEditedState(Irrelevant); + thr->setDefaultEditedState(Irrelevant); + thrH->setDefaultEditedState(Irrelevant); skinprotect->setDefaultEditedState(Irrelevant); hueskin->setDefaultEditedState (Irrelevant); hueskin2->setDefaultEditedState (Irrelevant); @@ -1706,18 +1743,15 @@ void Wavelet::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi strength->setDefaultEditedState (Irrelevant); balance->setDefaultEditedState (Irrelevant); iter->setDefaultEditedState (Irrelevant); - - for (int i = 0; i < 9; i++) { + + for (int i = 0; i < 9; i++) correction[i]->setDefaultEditedState(Irrelevant); - } - for (int i = 0; i < 9; i++) { + for (int i = 0; i < 9; i++) correctionch[i]->setDefaultEditedState(Irrelevant); - } - - } + } } void Wavelet::adjusterChanged (ThresholdAdjuster* a, double newBottom, double newTop) { - if (listener && getEnabled()) { + if (listener && (multiImage||getEnabled()) ) { if(a==level0noise) { listener->panelChanged (EvWavlev0nois, Glib::ustring::compose(Glib::ustring(M("TP_WAVELET_NOIS")+": %1"+"\n"+M("TP_WAVELET_STREN")+": %2"), int(newTop), int(newBottom))); @@ -1736,102 +1770,102 @@ void Wavelet::adjusterChanged (ThresholdAdjuster* a, double newBottom, double ne void Wavelet::adjusterChanged2 (ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) { - if (listener && (multiImage||getEnabled()) ) { - if(a==hueskin) { - listener->panelChanged (EvWavHueskin,hueskin->getHistoryString()); - } - else if(a==hueskin2) { - listener->panelChanged (EvWavHueskin2,hueskin2->getHistoryString()); - } - else if(a==hllev) { - listener->panelChanged (EvWavlhl,hllev->getHistoryString()); - } - else if(a==bllev) { - listener->panelChanged (EvWavlbl,bllev->getHistoryString()); - } - else if(a==pastlev) { - listener->panelChanged (EvWavpast,pastlev->getHistoryString()); - } - else if(a==satlev) { - listener->panelChanged (EvWavsat,satlev->getHistoryString()); - } - else if(a==edgcont) { - listener->panelChanged (EvWavedgcont,edgcont->getHistoryString()); - } - - } + if (listener && (multiImage||getEnabled()) ) { + if(a==hueskin) + listener->panelChanged (EvWavHueskin,hueskin->getHistoryString()); + else if(a==hueskin2) + listener->panelChanged (EvWavHueskin2,hueskin2->getHistoryString()); + else if(a==hllev) + listener->panelChanged (EvWavlhl,hllev->getHistoryString()); + else if(a==bllev) + listener->panelChanged (EvWavlbl,bllev->getHistoryString()); + else if(a==pastlev) + listener->panelChanged (EvWavpast,pastlev->getHistoryString()); + else if(a==satlev) + listener->panelChanged (EvWavsat,satlev->getHistoryString()); + else if(a==edgcont) + listener->panelChanged (EvWavedgcont,edgcont->getHistoryString()); + } } -void Wavelet::HSmethodChanged() { + +void Wavelet::HSmethodUpdateUI() { if (!batchMode) { if(HSmethod->get_active_row_number()==0) {//without - hllev->hide(); - bllev->hide(); - threshold->hide(); - threshold2->hide(); + hllev->hide(); + bllev->hide(); + threshold->hide(); + threshold2->hide(); } else {//with - hllev->show(); - bllev->show(); - threshold->show(); - threshold2->show(); - } + hllev->show(); + bllev->show(); + threshold->show(); + threshold2->show(); + } } - +} + +void Wavelet::HSmethodChanged() { + HSmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavHSmet, HSmethod->get_active_text ()); - } + } +} + +void Wavelet::CHmethodUpdateUI() { + if (!batchMode) { + if(CHmethod->get_active_row_number()==0) { + CHSLmethod->show(); + pastlev->hide(); + satlev->hide(); + chroma->hide(); + chro->hide(); + labmC->show(); + separatorNeutral->hide(); + neutralchButton->show(); + int y=thres->getValue(); + int z; + for(z=y;z<9;z++) correctionch[z]->hide(); + for(z=0;zshow(); + } else if(CHmethod->get_active_row_number()==1) { + CHSLmethod->show(); + pastlev->show(); + satlev->show(); + chroma->show(); + chro->hide(); + labmC->show(); + separatorNeutral->show(); + neutralchButton->show(); + int y=thres->getValue(); + int z; + for(z=y;z<9;z++) correctionch[z]->hide(); + for(z=0;zshow(); + } else { + chro->show(); + pastlev->hide(); + satlev->hide(); + chroma->hide(); + CHSLmethod->hide(); + labmC->hide(); + separatorNeutral->hide(); + neutralchButton->hide(); + for (int i = 0; i < 9; i++) { + correctionch[i]->hide(); + } + } + } } void Wavelet::CHmethodChanged() { - if (!batchMode) { - if(CHmethod->get_active_row_number()==0) { - CHSLmethod->show(); - pastlev->hide(); - satlev->hide(); - chroma->hide(); - chro->hide(); - labmC->show(); - separatorNeutral->hide(); - neutralchButton->show(); - int y=thres->getValue(); - int z; - for(z=y;z<9;z++) correctionch[z]->hide(); - for(z=0;zshow(); - } else if(CHmethod->get_active_row_number()==1) { - CHSLmethod->show(); - pastlev->show(); - satlev->show(); - chroma->show(); - chro->hide(); - labmC->show(); - separatorNeutral->show(); - neutralchButton->show(); - int y=thres->getValue(); - int z; - for(z=y;z<9;z++) correctionch[z]->hide(); - for(z=0;zshow(); - } else { - chro->show(); - pastlev->hide(); - satlev->hide(); - chroma->hide(); - CHSLmethod->hide(); - labmC->hide(); - separatorNeutral->hide(); - neutralchButton->hide(); - for (int i = 0; i < 9; i++) { - correctionch[i]->hide(); - } - } - } + CHmethodUpdateUI(); - if (listener && (multiImage||getEnabled()) ) { - listener->panelChanged (EvWavCHmet, CHmethod->get_active_text ()); - } + if (listener && (multiImage||getEnabled()) ) { + listener->panelChanged (EvWavCHmet, CHmethod->get_active_text ()); + } } -void Wavelet::CHSLmethodChanged() { - /* +/* +void Wavelet::CHSLmethodChangedUI() { if (!batchMode) { if(CHSLmethod->get_active_row_number()==0 && CHmethod->get_active_row_number() != 2) {//SL //CLVcurveEditorG->hide(); @@ -1839,40 +1873,47 @@ void Wavelet::CHSLmethodChanged() { int y=thres->getValue(); int z; for(z=y;z<9;z++) correctionch[z]->hide(); - for(z=0;zshow(); + for(z=0;zshow(); } else if(CHSLmethod->get_active_row_number()==1) {//CU //CLVcurveEditorG->show(); neutralchButton->hide(); for (int i = 0; i < 9; i++) { correctionch[i]->hide(); - } + } } } - +} +*/ + +void Wavelet::CHSLmethodChanged() { +/* + CHSLmethodChangedUI(); if (listener && (multiImage||enabled->get_active()) ) { listener->panelChanged (EvWavCHSLmet, CHSLmethod->get_active_text ()); - } - */ + } +*/ } -void Wavelet::EDmethodChanged() { +void Wavelet::EDmethodUpdateUI() { if (!batchMode) { if(EDmethod->get_active_row_number()==0 ) {//SL - CCWcurveEditorG->hide(); + CCWcurveEditorG->hide(); edgcont->show(); } else if(EDmethod->get_active_row_number()==1) {//CU - CCWcurveEditorG->show(); + CCWcurveEditorG->show(); edgcont->hide(); } - } - if (listener && (multiImage||getEnabled()) ) { + } +} +void Wavelet::EDmethodChanged() { + EDmethodUpdateUI(); + if (listener && (multiImage||getEnabled()) ) listener->panelChanged (EvWavEDmet, EDmethod->get_active_text ()); - } } -void Wavelet::BAmethodChanged() { +void Wavelet::BAmethodUpdateUI() { if (!batchMode) { if(BAmethod->get_active_row_number()==0 ) {//none balance->hide(); @@ -1881,138 +1922,175 @@ void Wavelet::BAmethodChanged() { } else if(BAmethod->get_active_row_number()==1) {//sli - opacityCurveEditorW->hide(); + opacityCurveEditorW->hide(); balance->show(); iter->show(); } - else if(BAmethod->get_active_row_number()==2) {//CU - opacityCurveEditorW->show(); + opacityCurveEditorW->show(); balance->hide(); iter->show(); - } - - } + } +} +void Wavelet::BAmethodChanged() { + BAmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavBAmet, BAmethod->get_active_text ()); - } + } } -void Wavelet::TMmethodChanged() { +void Wavelet::TMmethodUpdateUI() { + /* if (!batchMode) { - /* if(TMmethod->get_active_row_number()==0 ) {// tmr->hide(); } else { tmr->show(); } - */ - } + } + */ +} + +void Wavelet::TMmethodChanged() { + TMmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavTMmet, TMmethod->get_active_text ()); } } -void Wavelet::BackmethodChanged() { +/* +void Wavelet::BackmethodUpdateUI() { if (!batchMode) { } +} +*/ + +void Wavelet::BackmethodChanged() { + //BackmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavBackmet, Backmethod->get_active_text ()); } } - +void Wavelet::CLmethodUpdateUI() { + if (!batchMode) { + if (CLmethod->get_active_row_number()==0) { + CLmethod->set_active (0); + Lmethod->set_sensitive(true); + Dirmethod->set_sensitive(true); + } + else if (CLmethod->get_active_row_number()==1) { + CLmethod->set_active (1); + Lmethod->set_sensitive(true); + Dirmethod->set_sensitive(true); + } + else if (CLmethod->get_active_row_number()==2) { + CLmethod->set_active (2); + Lmethod->set_sensitive(true); + Dirmethod->set_sensitive(true); + } + else if (CLmethod->get_active_row_number()==3) { + CLmethod->set_active (3); + Lmethod->set_sensitive(false); + Dirmethod->set_sensitive(false); + } + } +} void Wavelet::CLmethodChanged() { - if (!batchMode) { - } + CLmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavCLmet, CLmethod->get_active_text ()); - } - if (CLmethod->get_active_row_number()==0) { - CLmethod->set_active (0); - Lmethod->set_sensitive(true); - Dirmethod->set_sensitive(true); - } - else if (CLmethod->get_active_row_number()==1) { - CLmethod->set_active (1); - Lmethod->set_sensitive(true); - Dirmethod->set_sensitive(true); - } - else if (CLmethod->get_active_row_number()==2) { - CLmethod->set_active (2); - Lmethod->set_sensitive(true); - Dirmethod->set_sensitive(true); - } - else if (CLmethod->get_active_row_number()==3) { - CLmethod->set_active (3); - Lmethod->set_sensitive(false); - Dirmethod->set_sensitive(false); - } + } } +/* +void Wavelet::TilesmethodUpdateUI() { + if (!batchMode) { + } +} +*/ + void Wavelet::TilesmethodChanged() { - if (!batchMode) { - } + //TilesmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavTilesmet, Tilesmethod->get_active_text ()); - } + } } -void Wavelet::daubcoeffmethodChanged() { +/* +void Wavelet::daubcoeffmethodUpdateUI() { if (!batchMode) { - } + }} +*/ +void Wavelet::daubcoeffmethodChanged() { + //daubcoeffmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavdaubcoeffmet, daubcoeffmethod->get_active_text ()); - } + } } -void Wavelet::MedgreinfChanged() { +/* +void Wavelet::MedgreinfUpdateUI() { if (!batchMode) { } +} +*/ +void Wavelet::MedgreinfChanged() { + //MedgreinfUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavedgreinf, Medgreinf->get_active_text ()); } } -void Wavelet::DirmethodChanged() { +/* +void Wavelet::DirmethodUpdateUI() { if (!batchMode) { } +} +*/ +void Wavelet::DirmethodChanged() { + //DirmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavDirmeto, Dirmethod->get_active_text ()); } } -void Wavelet::LmethodChanged() { +/* +void Wavelet::LmethodUpdateUI() { if (!batchMode) { } +} +*/ +void Wavelet::LmethodChanged() { + //LmethodUpdateUI(); if (listener && (multiImage||getEnabled()) ) { listener->panelChanged (EvWavLmet, Lmethod->get_active_text ()); - } + } } void Wavelet::setBatchMode (bool batchMode) { - Lmethod->append_text (M("GENERAL_UNCHANGED")); - CLmethod->append_text (M("GENERAL_UNCHANGED")); - Backmethod->append_text (M("GENERAL_UNCHANGED")); - Tilesmethod->append_text (M("GENERAL_UNCHANGED")); - daubcoeffmethod->append_text (M("GENERAL_UNCHANGED")); - CHmethod->append_text (M("GENERAL_UNCHANGED")); - Medgreinf->append_text (M("GENERAL_UNCHANGED")); - CHSLmethod->append_text (M("GENERAL_UNCHANGED")); - EDmethod->append_text (M("GENERAL_UNCHANGED")); - BAmethod->append_text (M("GENERAL_UNCHANGED")); - TMmethod->append_text (M("GENERAL_UNCHANGED")); - HSmethod->append_text (M("GENERAL_UNCHANGED")); - Dirmethod->append_text (M("GENERAL_UNCHANGED")); + Lmethod->append_text (M("GENERAL_UNCHANGED")); + CLmethod->append_text (M("GENERAL_UNCHANGED")); + Backmethod->append_text (M("GENERAL_UNCHANGED")); + Tilesmethod->append_text (M("GENERAL_UNCHANGED")); + daubcoeffmethod->append_text (M("GENERAL_UNCHANGED")); + CHmethod->append_text (M("GENERAL_UNCHANGED")); + Medgreinf->append_text (M("GENERAL_UNCHANGED")); + CHSLmethod->append_text (M("GENERAL_UNCHANGED")); + EDmethod->append_text (M("GENERAL_UNCHANGED")); + BAmethod->append_text (M("GENERAL_UNCHANGED")); + TMmethod->append_text (M("GENERAL_UNCHANGED")); + HSmethod->append_text (M("GENERAL_UNCHANGED")); + Dirmethod->append_text (M("GENERAL_UNCHANGED")); CCWcurveEditorG->setBatchMode (batchMode); - opaCurveEditorG->setBatchMode (batchMode); - opacityCurveEditorG->setBatchMode (batchMode); - opacityCurveEditorW->setBatchMode (batchMode); - opacityCurveEditorWL->setBatchMode (batchMode); + opaCurveEditorG->setBatchMode (batchMode); + opacityCurveEditorG->setBatchMode (batchMode); + opacityCurveEditorW->setBatchMode (batchMode); + opacityCurveEditorWL->setBatchMode (batchMode); curveEditorRES->setBatchMode (batchMode); curveEditorGAM->setBatchMode (batchMode); rescon->showEditedCB (); @@ -2021,557 +2099,447 @@ void Wavelet::setBatchMode (bool batchMode) { tmrs->showEditedCB (); gamma->showEditedCB (); sup->showEditedCB (); - sky->showEditedCB (); - thres->showEditedCB (); - threshold->showEditedCB (); - threshold2->showEditedCB (); - edgedetect->showEditedCB (); - edgedetectthr->showEditedCB (); - edgedetectthr2->showEditedCB (); - chroma->showEditedCB (); - chro->showEditedCB (); - contrast->showEditedCB (); - edgrad->showEditedCB (); - edgval->showEditedCB (); - edgthresh->showEditedCB (); - thr->showEditedCB (); - thrH->showEditedCB (); - skinprotect->showEditedCB(); - hueskin->showEditedCB (); - hueskin2->showEditedCB (); - hllev->showEditedCB (); - bllev->showEditedCB (); - pastlev->showEditedCB (); - satlev->showEditedCB (); - edgcont->showEditedCB (); - strength->showEditedCB (); - balance->showEditedCB (); - iter->showEditedCB (); - level0noise->showEditedCB (); - level1noise->showEditedCB (); - level2noise->showEditedCB (); - - ToolPanel::setBatchMode (batchMode); - - for (int i = 0; i < 9; i++) { - correction[i]->showEditedCB(); - } - for (int i = 0; i < 9; i++) { - correctionch[i]->showEditedCB(); - } + sky->showEditedCB (); + thres->showEditedCB (); + threshold->showEditedCB (); + threshold2->showEditedCB (); + edgedetect->showEditedCB (); + edgedetectthr->showEditedCB (); + edgedetectthr2->showEditedCB (); + chroma->showEditedCB (); + chro->showEditedCB (); + contrast->showEditedCB (); + edgrad->showEditedCB (); + edgval->showEditedCB (); + edgthresh->showEditedCB (); + thr->showEditedCB (); + thrH->showEditedCB (); + skinprotect->showEditedCB(); + hueskin->showEditedCB (); + hueskin2->showEditedCB (); + hllev->showEditedCB (); + bllev->showEditedCB (); + pastlev->showEditedCB (); + satlev->showEditedCB (); + edgcont->showEditedCB (); + strength->showEditedCB (); + balance->showEditedCB (); + iter->showEditedCB (); + level0noise->showEditedCB (); + level1noise->showEditedCB (); + level2noise->showEditedCB (); + + ToolPanel::setBatchMode (batchMode); + + for (int i = 0; i < 9; i++) { + correction[i]->showEditedCB(); + } + for (int i = 0; i < 9; i++) { + correctionch[i]->showEditedCB(); + } +} + +void Wavelet::adjusterUpdateUI (Adjuster* a) { +/* + if (!batchMode) { + if (a == tmrs ) { + float tm; + tm=tmrs->getValue(); + if(tm==0.f) tmr->hide(); + else tmr->show(); + } + else if (a == gamma ) { + float tm; + tm=tmrs->getValue(); + if(tm==0.f) tmr->hide(); + else tmr->show(); + ); + } + } +*/ } void Wavelet::adjusterChanged (Adjuster* a, double newval) { - if (listener && getEnabled()) { - if (a == edgthresh) { - listener->panelChanged (EvWavtiles, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), edgthresh->getValue())) - ); - } - else if (a == rescon ) { - listener->panelChanged (EvWavrescon, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), rescon->getValue())) - ); - } - else if (a == resconH ) { - listener->panelChanged (EvWavresconH, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), resconH->getValue())) - ); - } - - else if (a == reschro ) { - listener->panelChanged (EvWavreschro, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), reschro->getValue())) - ); - } - else if (a == tmrs ) { - float tm; - /* - tm=tmrs->getValue(); - if(tm==0.f) tmr->hide(); - else tmr->show(); - */ - listener->panelChanged (EvWavtmrs, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), tmrs->getValue())) - ); - } - else if (a == gamma ) { - float tm; - /* - tm=tmrs->getValue(); - if(tm==0.f) tmr->hide(); - else tmr->show(); - */ - listener->panelChanged (EvWavgamma, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), gamma->getValue())) - ); - } - - else if (a == sky ) { - listener->panelChanged (EvWavsky, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(2), sky->getValue())) - ); - } - else if (a == sup ) { - listener->panelChanged (EvWavsup, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), sup->getValue())) - ); - } - - else if (a == chroma ) { - listener->panelChanged (EvWavchroma, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), chroma->getValue())) - ); - } - else if (a == chro ) { - listener->panelChanged (EvWavchro, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), chro->getValue())) - ); - } - else if (a == contrast ) { - listener->panelChanged (EvWavunif, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), contrast->getValue())) - ); - } - else if (a == thr ) { - listener->panelChanged (EvWavthr, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), thr->getValue())) - ); - } - else if (a == thrH ) { - listener->panelChanged (EvWavthrH, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), thrH->getValue())) - ); - } - else if (a == threshold ) { - listener->panelChanged (EvWavThreshold, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), threshold->getValue())) - ); - } - else if (a == threshold2 ) { - listener->panelChanged (EvWavThreshold2, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), threshold2->getValue())) - ); - } - else if (a == edgedetect ) { - listener->panelChanged (EvWavedgedetect, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), edgedetect->getValue())) - ); - } - else if (a == edgedetectthr ) { - listener->panelChanged (EvWavedgedetectthr, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), edgedetectthr->getValue())) - ); - } - else if (a == edgedetectthr2 ) { - listener->panelChanged (EvWavedgedetectthr2, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), edgedetectthr2->getValue())) - ); - } - - else if (a == edgrad ) { - listener->panelChanged (EvWavedgrad, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), edgrad->getValue())) - ); - } - else if (a == edgval ) { - listener->panelChanged (EvWavedgval, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), edgval->getValue())) - ); - } - - else if (a == thres ) { - int y; - y=thres->getValue(); + if (listener && (multiImage||getEnabled()) ) { + if (a == edgthresh) + listener->panelChanged (EvWavtiles, edgthresh->getTextValue()); + else if (a == rescon ) + listener->panelChanged (EvWavrescon, rescon->getTextValue()); + else if (a == resconH ) + listener->panelChanged (EvWavresconH, resconH->getTextValue()); + else if (a == reschro ) + listener->panelChanged (EvWavreschro, reschro->getTextValue()); + else if (a == tmrs ) { + adjusterUpdateUI(a); + listener->panelChanged (EvWavtmrs, tmrs->getTextValue()); + } + else if (a == gamma ) { + adjusterUpdateUI(a); + listener->panelChanged (EvWavgamma, gamma->getTextValue()); + } + else if (a == sky ) + listener->panelChanged (EvWavsky, sky->getTextValue()); + else if (a == sup ) + listener->panelChanged (EvWavsup, sup->getTextValue()); + else if (a == chroma ) + listener->panelChanged (EvWavchroma, chroma->getTextValue()); + else if (a == chro ) + listener->panelChanged (EvWavchro, chro->getTextValue()); + else if (a == contrast ) + listener->panelChanged (EvWavunif, contrast->getTextValue()); + else if (a == thr ) + listener->panelChanged (EvWavthr, thr->getTextValue()); + else if (a == thrH ) + listener->panelChanged (EvWavthrH, thrH->getTextValue()); + else if (a == threshold ) + listener->panelChanged (EvWavThreshold, threshold->getTextValue()); + else if (a == threshold2 ) + listener->panelChanged (EvWavThreshold2, threshold2->getTextValue()); + else if (a == edgedetect ) + listener->panelChanged (EvWavedgedetect, edgedetect->getTextValue()); + else if (a == edgedetectthr ) + listener->panelChanged (EvWavedgedetectthr, edgedetectthr->getTextValue()); + else if (a == edgedetectthr2 ) + listener->panelChanged (EvWavedgedetectthr2, edgedetectthr2->getTextValue()); + else if (a == edgrad ) + listener->panelChanged (EvWavedgrad, edgrad->getTextValue()); + else if (a == edgval ) + listener->panelChanged (EvWavedgval, edgval->getTextValue()); + else if (a == thres ) { + int y=thres->getValue(); int z; for(z=y;z<9;z++) correction[z]->hide(); for(z=0;zshow(); for(z=y;z<9;z++) correctionch[z]->hide(); for(z=0;zshow(); if(z==9) sup->show(); else sup->hide(); - - listener->panelChanged (EvWavthres, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), thres->getValue())) - ); - } - else if (a == skinprotect) { - listener->panelChanged (EvWavSkin, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(2), skinprotect->getValue())) - ); - } - else if (a == strength) { - listener->panelChanged (EvWavStrength, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(2), strength->getValue())) - ); - } - else if (a == balance) { - listener->panelChanged (EvWavbalance, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(2), balance->getValue())) - ); - } - else if (a == iter) { - listener->panelChanged (EvWaviter, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(2), iter->getValue())) - ); - } - else if (a == greenhigh ) { - listener->panelChanged (EvWavgreenhigh, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), greenhigh->getValue())) - ); - } - else if (a == bluehigh ) { - listener->panelChanged (EvWavbluehigh, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), bluehigh->getValue())) - ); - } - else if (a == greenmed ) { - listener->panelChanged (EvWavgreenmed, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), greenmed->getValue())) - ); - } - else if (a == bluemed ) { - listener->panelChanged (EvWavbluemed, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), bluemed->getValue())) - ); - } - else if (a == greenlow ) { - listener->panelChanged (EvWavgreenlow, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), greenlow->getValue())) - ); - } - else if (a == bluelow ) { - listener->panelChanged (EvWavbluelow, - Glib::ustring::compose("%1", - Glib::ustring::format(std::fixed, std::setprecision(0), bluelow->getValue())) - ); + listener->panelChanged (EvWavthres, thres->getTextValue()); } - + else if (a == skinprotect) + listener->panelChanged (EvWavSkin, skinprotect->getTextValue()); + else if (a == strength) + listener->panelChanged (EvWavStrength, strength->getTextValue()); + else if (a == balance) + listener->panelChanged (EvWavbalance, balance->getTextValue()); + else if (a == iter) + listener->panelChanged (EvWaviter, iter->getTextValue()); + else if (a == greenhigh ) + listener->panelChanged (EvWavgreenhigh, greenhigh->getTextValue()); + else if (a == bluehigh ) + listener->panelChanged (EvWavbluehigh, bluehigh->getTextValue()); + else if (a == greenmed ) + listener->panelChanged (EvWavgreenmed, greenmed->getTextValue()); + else if (a == bluemed ) + listener->panelChanged (EvWavbluemed, bluemed->getTextValue()); + else if (a == greenlow ) + listener->panelChanged (EvWavgreenlow, greenlow->getTextValue()); + else if (a == bluelow ) + listener->panelChanged (EvWavbluelow, bluelow->getTextValue()); + if ((a == correction[0] || a == correction[1] || a == correction[2] || a == correction[3] || a == correction[4] || a == correction[5] || a == correction[6] || a == correction[7] || a == correction[8])) { - listener->panelChanged (EvWavelet, - Glib::ustring::compose("%1, %2, %3, %4, %5, %6, %7, %8, %9", - Glib::ustring::format(std::fixed, std::setprecision(0), correction[0]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[1]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[2]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[3]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[4]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[5]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[6]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[7]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correction[8]->getValue())) - ); + listener->panelChanged (EvWavelet, + Glib::ustring::compose("%1, %2, %3, %4, %5, %6, %7, %8, %9", + Glib::ustring::format(std::fixed, std::setprecision(0), correction[0]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[1]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[2]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[3]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[4]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[5]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[6]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[7]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correction[8]->getValue())) + ); } - else if (a == correctionch[0] || a == correctionch[1] || a == correctionch[2] || a == correctionch[3] || a == correctionch[4] || a == correctionch[5] || a == correctionch[6] || a == correctionch[7] || a == correctionch[8] ) { - listener->panelChanged (EvWaveletch, - Glib::ustring::compose("%1, %2, %3, %4, %5, %6, %7, %8, %9", - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[0]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[1]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[2]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[3]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[4]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[5]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[6]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[7]->getValue()), - Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[8]->getValue())) - ); + else if (a == correctionch[0] || a == correctionch[1] || a == correctionch[2] || a == correctionch[3] || a == correctionch[4] || a == correctionch[5] || a == correctionch[6] || a == correctionch[7] || a == correctionch[8] ) { + listener->panelChanged (EvWaveletch, + Glib::ustring::compose("%1, %2, %3, %4, %5, %6, %7, %8, %9", + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[0]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[1]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[2]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[3]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[4]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[5]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[6]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[7]->getValue()), + Glib::ustring::format(std::fixed, std::setprecision(0), correctionch[8]->getValue())) + ); } - } + } +} + +void Wavelet::enabledUpdateUI () { + if (!batchMode) { + int y=thres->getValue(); + int z; + for(z=y;z<9;z++) correction[z]->hide(); + for(z=0;zshow(); + if(z==9) sup->show(); else sup->hide(); + +// adjusterUpdateUI(tmrs); + } } void Wavelet::enabledChanged () { - if (!batchMode) { - int y=thres->getValue(); - int z; - for(z=y;z<9;z++) correction[z]->hide(); - for(z=0;zshow(); - if(z==9) sup->show(); else sup->hide(); - - float tm; - /* tm=tmrs->getValue(); - if(tm==0.f) tmr->hide(); - else tmr->show(); - */ - - } - if (listener) { - if (get_inconsistent()) - listener->panelChanged (EvWavEnabled, M("GENERAL_UNCHANGED")); - else if (getEnabled()) - listener->panelChanged (EvWavEnabled, M("GENERAL_ENABLED")); - else - listener->panelChanged (EvWavEnabled, M("GENERAL_DISABLED")); - } + enabledUpdateUI(); + if (listener) { + if (get_inconsistent()) + listener->panelChanged (EvWavEnabled, M("GENERAL_UNCHANGED")); + else if (getEnabled()) + listener->panelChanged (EvWavEnabled, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavEnabled, M("GENERAL_DISABLED")); + } } void Wavelet::medianToggled () { - if (batchMode) { - if (median->get_inconsistent()) { - median->set_inconsistent (false); - medianConn.block (true); - median->set_active (false); - medianConn.block (false); - } - else if (lastmedian) - median->set_inconsistent (true); - - lastmedian = median->get_active (); - } - - if (listener && getEnabled()) { - if (median->get_active ()) - {listener->panelChanged (EvWavmedian, M("GENERAL_ENABLED")); - + if (multiImage) { + if (median->get_inconsistent()) { + median->set_inconsistent (false); + medianConn.block (true); + median->set_active (false); + medianConn.block (false); } - else { - listener->panelChanged (EvWavmedian, M("GENERAL_DISABLED")); - - } - } + else if (lastmedian) + median->set_inconsistent (true); + + lastmedian = median->get_active (); + } + + if (listener && (multiImage || getEnabled ())) { + if (median->get_inconsistent()) + listener->panelChanged (EvWavmedian, M("GENERAL_UNCHANGED")); + else if (median->get_active ()) + listener->panelChanged (EvWavmedian, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavmedian, M("GENERAL_DISABLED")); + } } -void Wavelet::medianlevToggled () { - - if (batchMode) { - if (medianlev->get_inconsistent()) { - medianlev->set_inconsistent (false); - medianlevConn.block (true); - medianlev->set_active (false); - medianlevConn.block (false); - } - else if (lastmedianlev) - medianlev->set_inconsistent (true); - - lastmedianlev = medianlev->get_active (); - } - if (medianlev->get_active ()){ +void Wavelet::medianlevUpdateUI () { + if (!batchMode) { + if (medianlev->get_active ()){ edgedetect->show(); //lipst->show(); edgedetectthr->show(); - edgedetectthr2->show(); - // if (lipst->get_active ()) edgedetectthr2->show(); - // else edgedetectthr2->hide(); - } - else { + edgedetectthr2->show(); + //if (lipst->get_active ()) edgedetectthr2->show(); + //else edgedetectthr2->hide(); + } + else { edgedetect->hide(); //lipst->hide(); edgedetectthr->hide(); edgedetectthr2->hide(); - } - + } + } +} - if (listener && getEnabled()) { - if (medianlev->get_active () ){ - - listener->panelChanged (EvWavmedianlev, M("GENERAL_ENABLED")); +void Wavelet::medianlevToggled () { + + if (multiImage) { + if (medianlev->get_inconsistent()) { + medianlev->set_inconsistent (false); + medianlevConn.block (true); + medianlev->set_active (false); + medianlevConn.block (false); } - else { - - listener->panelChanged (EvWavmedianlev, M("GENERAL_DISABLED")); - } - } + else if (lastmedianlev) + medianlev->set_inconsistent (true); + + lastmedianlev = medianlev->get_active (); + } + medianlevUpdateUI(); + + if (listener && (multiImage || getEnabled ())) { + if (medianlev->get_inconsistent()) + listener->panelChanged (EvWavmedianlev, M("GENERAL_UNCHANGED")); + else if (medianlev->get_active () ) + listener->panelChanged (EvWavmedianlev, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavmedianlev, M("GENERAL_DISABLED")); + } } void Wavelet::linkedgToggled () { - if (batchMode) { - if (linkedg->get_inconsistent()) { - linkedg->set_inconsistent (false); - linkedgConn.block (true); - linkedg->set_active (false); - linkedgConn.block (false); - } - else if (lastlinkedg) - linkedg->set_inconsistent (true); - - lastlinkedg = linkedg->get_active (); - } - - - if (listener && getEnabled()) { - if (linkedg->get_active () ){ - - listener->panelChanged (EvWavlinkedg, M("GENERAL_ENABLED")); + if (multiImage) { + if (linkedg->get_inconsistent()) { + linkedg->set_inconsistent (false); + linkedgConn.block (true); + linkedg->set_active (false); + linkedgConn.block (false); } - else { - - listener->panelChanged (EvWavlinkedg, M("GENERAL_DISABLED")); + else if (lastlinkedg) + linkedg->set_inconsistent (true); + + lastlinkedg = linkedg->get_active (); + } + + if (listener && (multiImage || getEnabled ())) { + if (linkedg->get_inconsistent()) + listener->panelChanged (EvWavlinkedg, M("GENERAL_UNCHANGED")); + else if (linkedg->get_active () ) + listener->panelChanged (EvWavlinkedg, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavlinkedg, M("GENERAL_DISABLED")); + } +} + +void Wavelet::cbenabUpdateUI () { + if (!batchMode) { + if(cbenab->get_active ()) { + chanMixerHLFrame->show(); + chanMixerMidFrame->show(); + chanMixerShadowsFrame->show(); + neutrHBox->show(); } - } + else { + chanMixerHLFrame->hide(); + chanMixerMidFrame->hide(); + chanMixerShadowsFrame->hide(); + neutrHBox->hide(); + } + } } void Wavelet::cbenabToggled () { - if(cbenab->get_active ()) { - chanMixerHLFrame->show(); - chanMixerMidFrame->show(); - chanMixerShadowsFrame->show(); - neutrHBox->show(); + if (multiImage) { + if (cbenab->get_inconsistent()) { + cbenab->set_inconsistent (false); + cbenabConn.block (true); + cbenab->set_active (false); + cbenabConn.block (false); + } + else if (lastcbenab) + cbenab->set_inconsistent (true); + + lastcbenab = cbenab->get_active (); } - else { - chanMixerHLFrame->hide(); - chanMixerMidFrame->hide(); - chanMixerShadowsFrame->hide(); - neutrHBox->hide(); - } + cbenabUpdateUI(); - if (batchMode) { - if (cbenab->get_inconsistent()) { - cbenab->set_inconsistent (false); - cbenabConn.block (true); - cbenab->set_active (false); - cbenabConn.block (false); - } - else if (lastcbenab) - cbenab->set_inconsistent (true); - - lastcbenab = cbenab->get_active (); - } - - - if (listener && getEnabled()) { - if (cbenab->get_active () ){ - - listener->panelChanged (EvWavcbenab, M("GENERAL_ENABLED")); - } - else { - - listener->panelChanged (EvWavcbenab, M("GENERAL_DISABLED")); - } - } - + if (listener && (multiImage || getEnabled ())) { + if (cbenab->get_inconsistent() ) + listener->panelChanged (EvWavcbenab, M("GENERAL_UNCHANGED")); + else if (cbenab->get_active () ) + listener->panelChanged (EvWavcbenab, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavcbenab, M("GENERAL_DISABLED")); + } } +/* +void Wavelet::lipstUpdateUI () { + if (!batchMode) { + if (lipst->get_active ()) + edgedetectthr2->show(); + else + edgedetectthr2->hide(); + } +} +*/ + void Wavelet::lipstToggled () { - if (batchMode) { - if (lipst->get_inconsistent()) { - lipst->set_inconsistent (false); - lipstConn.block (true); - lipst->set_active (false); - lipstConn.block (false); - } - else if (lastlipst) - lipst->set_inconsistent (true); + if (multiImage) { + if (lipst->get_inconsistent()) { + lipst->set_inconsistent (false); + lipstConn.block (true); + lipst->set_active (false); + lipstConn.block (false); + } + else if (lastlipst) + lipst->set_inconsistent (true); - lastlipst = lipst->get_active (); - } -/* - if (lipst->get_active ()){ - edgedetectthr2->show(); - } - else { - edgedetectthr2->hide(); - } -*/ - if (listener && getEnabled()) { - if (lipst->get_active ()){ - - listener->panelChanged (EvWavlipst, M("GENERAL_ENABLED")); - } - else { - - listener->panelChanged (EvWavlipst, M("GENERAL_DISABLED")); - } - } + lastlipst = lipst->get_active (); + } + //lipstUpdateUI(); + + if (listener && (multiImage || getEnabled ())) { + if (lipst->get_inconsistent()) + listener->panelChanged (EvWavlipst, M("GENERAL_UNCHANGED")); + else if (lipst->get_active ()) + listener->panelChanged (EvWavlipst, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavlipst, M("GENERAL_DISABLED")); + } } /* void Wavelet::edgreinfToggled () { - if (batchMode) { - if (edgreinf->get_inconsistent()) { - edgreinf->set_inconsistent (false); - edgreinfConn.block (true); - edgreinf->set_active (false); - edgreinfConn.block (false); - } - else if (lastedgreinf) - edgreinf->set_inconsistent (true); + if (batchMode) { + if (edgreinf->get_inconsistent()) { + edgreinf->set_inconsistent (false); + edgreinfConn.block (true); + edgreinf->set_active (false); + edgreinfConn.block (false); + } + else if (lastedgreinf) + edgreinf->set_inconsistent (true); - lastedgreinf = edgreinf->get_active (); - } + lastedgreinf = edgreinf->get_active (); + } - if (listener) { - if (enabled->get_active ()) - listener->panelChanged (EvWavedgreinf, M("GENERAL_ENABLED")); - else - listener->panelChanged (EvWavedgreinf, M("GENERAL_DISABLED")); - } + if (listener) { + if (enabled->get_inconsistent ()) + listener->panelChanged (EvWavedgreinf, M("GENERAL_UNCHANGED")); + else if (enabled->get_active ()) + listener->panelChanged (EvWavedgreinf, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavedgreinf, M("GENERAL_DISABLED")); + } } */ void Wavelet::avoidToggled () { - if (batchMode) { - if (avoid->get_inconsistent()) { - avoid->set_inconsistent (false); - avoidConn.block (true); - avoid->set_active (false); - avoidConn.block (false); - } - else if (lastavoid) - avoid->set_inconsistent (true); + if (multiImage) { + if (avoid->get_inconsistent()) { + avoid->set_inconsistent (false); + avoidConn.block (true); + avoid->set_active (false); + avoidConn.block (false); + } + else if (lastavoid) + avoid->set_inconsistent (true); - lastavoid = avoid->get_active (); - } - if (listener && getEnabled ()) { - if (avoid->get_active ()) - listener->panelChanged (EvWavavoid, M("GENERAL_ENABLED")); - else - listener->panelChanged (EvWavavoid, M("GENERAL_DISABLED")); - } + lastavoid = avoid->get_active (); + } + if (listener && (multiImage || getEnabled ())) { + if (avoid->get_inconsistent()) + listener->panelChanged (EvWavavoid, M("GENERAL_UNCHANGED")); + else if (avoid->get_active ()) + listener->panelChanged (EvWavavoid, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavavoid, M("GENERAL_DISABLED")); + } } void Wavelet::tmrToggled () { - if (batchMode) { - if (tmr->get_inconsistent()) { - tmr->set_inconsistent (false); - tmrConn.block (true); - tmr->set_active (false); - tmrConn.block (false); - } - else if (lasttmr) - tmr->set_inconsistent (true); + if (multiImage) { + if (tmr->get_inconsistent()) { + tmr->set_inconsistent (false); + tmrConn.block (true); + tmr->set_active (false); + tmrConn.block (false); + } + else if (lasttmr) + tmr->set_inconsistent (true); - lasttmr = tmr->get_active (); - } - if (listener && getEnabled ()) { - if (tmr->get_active ()) - listener->panelChanged (EvWavtmr, M("GENERAL_ENABLED")); - else - listener->panelChanged (EvWavtmr, M("GENERAL_DISABLED")); - } + lasttmr = tmr->get_active (); + } + + if (listener && (multiImage || getEnabled ())) { + if (tmr->get_inconsistent()) + listener->panelChanged (EvWavtmr, M("GENERAL_UNCHANGED")); + else if (tmr->get_active ()) + listener->panelChanged (EvWavtmr, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvWavtmr, M("GENERAL_DISABLED")); + } } @@ -2621,214 +2589,127 @@ void Wavelet::setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool t chro->setAddMode(chroadd); chroma->setAddMode(chromaadd); contrast->setAddMode(contrastadd); - rescon->setAddMode(resconadd); - resconH->setAddMode(resconHadd); - reschro->setAddMode(reschroadd); - tmrs->setAddMode(tmrsadd); - thr->setAddMode(thradd); - thrH->setAddMode(thrHadd); - sky->setAddMode(skyadd); - edgrad->setAddMode(edgradadd); - edgval->setAddMode(edgvaladd); - strength->setAddMode(strengthadd); - gamma->setAddMode(gammaadd); - edgedetect->setAddMode(edgedetectadd); - edgedetectthr->setAddMode(edgedetectthradd); - edgedetectthr2->setAddMode(edgedetectthr2add); + rescon->setAddMode(resconadd); + resconH->setAddMode(resconHadd); + reschro->setAddMode(reschroadd); + tmrs->setAddMode(tmrsadd); + thr->setAddMode(thradd); + thrH->setAddMode(thrHadd); + sky->setAddMode(skyadd); + edgrad->setAddMode(edgradadd); + edgval->setAddMode(edgvaladd); + strength->setAddMode(strengthadd); + gamma->setAddMode(gammaadd); + edgedetect->setAddMode(edgedetectadd); + edgedetectthr->setAddMode(edgedetectthradd); + edgedetectthr2->setAddMode(edgedetectthr2add); } void Wavelet::neutralPressed () { - for (int i = 0; i < 9; i++) { - correction[i]->setValue(0); + for (int i = 0; i < 9; i++) { + correction[i]->setValue(0); adjusterChanged(correction[i], 0); - } + } } void Wavelet::neutralchPressed () { - for (int i = 0; i < 9; i++) { - correctionch[i]->setValue(0); + for (int i = 0; i < 9; i++) { + correctionch[i]->setValue(0); adjusterChanged(correctionch[i], 0); - } + } } void Wavelet::contrastPlusPressed () { - for (int i = 0; i < 9; i++) { - int inc = 1 * (9 - i); - correction[i]->setValue(correction[i]->getValue() + inc); - adjusterChanged(correction[i], correction[i]->getValue()); - } + for (int i = 0; i < 9; i++) { + int inc = 1 * (9 - i); + correction[i]->setValue(correction[i]->getValue() + inc); + adjusterChanged(correction[i], correction[i]->getValue()); + } } void Wavelet::contrastMinusPressed () { - for (int i = 0; i < 9; i++) { - int inc = -1 * (9 - i); - correction[i]->setValue(correction[i]->getValue() + inc); - adjusterChanged(correction[i], correction[i]->getValue()); - } + for (int i = 0; i < 9; i++) { + int inc = -1 * (9 - i); + correction[i]->setValue(correction[i]->getValue() + inc); + adjusterChanged(correction[i], correction[i]->getValue()); + } } -void Wavelet::foldAllButSettings (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expsettings); - } +void Wavelet::foldAllButMe (GdkEventButton* event, MyExpander *expander) { + if (event->button == 3) { + expsettings->set_expanded(expsettings == expander); + expcontrast->set_expanded(expcontrast == expander); + expchroma->set_expanded(expchroma == expander); + exptoning->set_expanded(exptoning == expander); + expnoise->set_expanded(expnoise == expander); + expedge->set_expanded(expedge == expander); + expgamut->set_expanded(expgamut == expander); + expresid->set_expanded(expresid == expander); + expfinal->set_expanded(expfinal == expander); + } } -void Wavelet::foldAllButContrast (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expcontrast); - - - } - if (listener) { - if (expcontrast->getEnabled ()) - { listener->panelChanged (EvWavenacont, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenacont, M("GENERAL_DISABLED")); - } - } - -} +void Wavelet::enableToggled(MyExpander *expander) { + if (listener) { + rtengine::ProcEvent event = NUMOFEVENTS; -void Wavelet::foldAllButChroma (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expchroma); - } - if (listener) { - if (expchroma->getEnabled ()) - { listener->panelChanged (EvWavenachrom, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenachrom, M("GENERAL_DISABLED")); - } - } - -} + if (expander == expcontrast) + event = EvWavenacont; + else if (expander == expchroma) + event = EvWavenachrom; + else if (expander == exptoning) + event = EvWavenatoning; + else if (expander == expnoise) + event = EvWavenanoise; + else if (expander == expedge) + event = EvWavenaedge; + else if (expander == expresid) + event = EvWavenares; + else if (expander == expfinal) + event = EvWavenafin; + else + // unknown expander, returning ! + return; -void Wavelet::foldAllButToning (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(exptoning); - } - if (listener) { - if (exptoning->getEnabled ()) - { listener->panelChanged (EvWavenatoning, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenatoning, M("GENERAL_DISABLED")); - } - } - -} - -void Wavelet::foldAllButNoise (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expnoise); - } - if (listener) { - if (expnoise->getEnabled ()) - { listener->panelChanged (EvWavenanoise, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenanoise, M("GENERAL_DISABLED")); - } - } - -} - -void Wavelet::foldAllButEdge (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expedge); - } - if (listener) { - if (expedge->getEnabled ()) - { listener->panelChanged (EvWavenaedge, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenaedge, M("GENERAL_DISABLED")); - } - } - -} - -void Wavelet::foldAllButGamut (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expgamut); - } -} - -void Wavelet::foldAllButResid (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expresid); - } - if (listener) { - if (expresid->getEnabled ()) - { listener->panelChanged (EvWavenares, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenares, M("GENERAL_DISABLED")); - } - } - - -} - -void Wavelet::foldAllButFinal (GdkEventButton* event) { - if (event->button == 3) { - foldAllButOne(expfinal); - } - if (listener) { - if (expfinal->getEnabled ()) - { listener->panelChanged (EvWavenafin, M("GENERAL_ENABLED")); - } - else - { listener->panelChanged (EvWavenafin, M("GENERAL_DISABLED")); - } - } - -} - -void Wavelet::foldAllButOne (MyExpander * whichOne) { - expsettings->set_expanded(expsettings == whichOne); - expcontrast->set_expanded(expcontrast == whichOne); - expchroma->set_expanded(expchroma == whichOne); - exptoning->set_expanded(exptoning == whichOne); - expnoise->set_expanded(expnoise == whichOne); - expedge->set_expanded(expedge == whichOne); - expgamut->set_expanded(expgamut == whichOne); - expresid->set_expanded(expresid == whichOne); - expfinal->set_expanded(expfinal == whichOne); + if (expander->get_inconsistent()) + listener->panelChanged (event, M("GENERAL_UNCHANGED")); + else if (expander->getEnabled()) + listener->panelChanged (event, M("GENERAL_ENABLED")); + else + listener->panelChanged (event, M("GENERAL_DISABLED")); + } } void Wavelet::writeOptions(std::vector &tpOpen) { - tpOpen.push_back (expsettings->get_expanded ()); - tpOpen.push_back (expcontrast->get_expanded ()); - tpOpen.push_back (expchroma->get_expanded ()); - tpOpen.push_back (exptoning->get_expanded ()); - tpOpen.push_back (expnoise->get_expanded ()); - tpOpen.push_back (expedge->get_expanded ()); - tpOpen.push_back (expgamut->get_expanded ()); - tpOpen.push_back (expresid->get_expanded ()); - tpOpen.push_back (expfinal->get_expanded ()); + tpOpen.push_back (expsettings->get_expanded ()); + tpOpen.push_back (expcontrast->get_expanded ()); + tpOpen.push_back (expchroma->get_expanded ()); + tpOpen.push_back (exptoning->get_expanded ()); + tpOpen.push_back (expnoise->get_expanded ()); + tpOpen.push_back (expedge->get_expanded ()); + tpOpen.push_back (expgamut->get_expanded ()); + tpOpen.push_back (expresid->get_expanded ()); + tpOpen.push_back (expfinal->get_expanded ()); } void Wavelet::updateToolState(std::vector &tpOpen) { - if(tpOpen.size() == 9) { - expsettings->set_expanded(tpOpen.at(0)); - expcontrast->set_expanded(tpOpen.at(1)); - expchroma->set_expanded(tpOpen.at(2)); - exptoning->set_expanded(tpOpen.at(3)); - expnoise->set_expanded(tpOpen.at(4)); - expedge->set_expanded(tpOpen.at(5)); - expgamut->set_expanded(tpOpen.at(6)); - expresid->set_expanded(tpOpen.at(7)); - expfinal->set_expanded(tpOpen.at(8)); - } + if(tpOpen.size() == 9) { + expsettings->set_expanded(tpOpen.at(0)); + expcontrast->set_expanded(tpOpen.at(1)); + expchroma->set_expanded(tpOpen.at(2)); + exptoning->set_expanded(tpOpen.at(3)); + expnoise->set_expanded(tpOpen.at(4)); + expedge->set_expanded(tpOpen.at(5)); + expgamut->set_expanded(tpOpen.at(6)); + expresid->set_expanded(tpOpen.at(7)); + expfinal->set_expanded(tpOpen.at(8)); + } } diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index e773ba672..f96f4b1fd 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -33,120 +33,120 @@ class Wavelet : public ToolParamBlock, public ThresholdAdjusterListener, public AdjusterListener, public CurveListener, public ColorProvider, public rtengine::WaveletListener, public FoldableToolPanel { protected: - Glib::RefPtr bgTTips; - Glib::RefPtr srTTips; - Glib::RefPtr bgPixbuf; - Glib::RefPtr srPixbuf; - CurveEditorGroup* curveEditorG; + Glib::RefPtr bgTTips; + Glib::RefPtr srTTips; + Glib::RefPtr bgPixbuf; + Glib::RefPtr srPixbuf; + CurveEditorGroup* curveEditorG; - CurveEditorGroup* CCWcurveEditorG; - CurveEditorGroup* curveEditorRES; - CurveEditorGroup* curveEditorGAM; - Gtk::HSeparator* colorSep; - Gtk::HSeparator* separator3; - Gtk::HSeparator* separatorCB; - Gtk::HSeparator* separatorNeutral; - - CurveEditorGroup* opaCurveEditorG; - FlatCurveEditor* opacityShapeRG; - CurveEditorGroup* opacityCurveEditorG; - FlatCurveEditor* opacityShapeBY; - CurveEditorGroup* opacityCurveEditorW; - CurveEditorGroup* opacityCurveEditorWL; - FlatCurveEditor* opacityShape; - FlatCurveEditor* opacityShapeWL; - FlatCurveEditor* hhshape; - FlatCurveEditor* Chshape; - DiagonalCurveEditor* clshape; - Gtk::VBox* chanMixerBox; - - FlatCurveEditor* ccshape; - Gtk::CheckButton * display; - Gtk::CheckButton * displaylevel; - Gtk::CheckButton * displaychro; - Gtk::CheckButton * displaygam; - Gtk::CheckButton * displayres; - Gtk::CheckButton * median; - Gtk::CheckButton * medianlev; - Gtk::CheckButton * linkedg; - Gtk::CheckButton * cbenab; - Gtk::CheckButton * lipst; - Gtk::CheckButton * avoid; - Gtk::CheckButton * tmr; + CurveEditorGroup* CCWcurveEditorG; + CurveEditorGroup* curveEditorRES; + CurveEditorGroup* curveEditorGAM; + Gtk::HSeparator* colorSep; + Gtk::HSeparator* separator3; + Gtk::HSeparator* separatorCB; + Gtk::HSeparator* separatorNeutral; + + CurveEditorGroup* opaCurveEditorG; + FlatCurveEditor* opacityShapeRG; + CurveEditorGroup* opacityCurveEditorG; + FlatCurveEditor* opacityShapeBY; + CurveEditorGroup* opacityCurveEditorW; + CurveEditorGroup* opacityCurveEditorWL; + FlatCurveEditor* opacityShape; + FlatCurveEditor* opacityShapeWL; + FlatCurveEditor* hhshape; + FlatCurveEditor* Chshape; + DiagonalCurveEditor* clshape; + Gtk::VBox* chanMixerBox; + + FlatCurveEditor* ccshape; + Gtk::CheckButton * display; + Gtk::CheckButton * displaylevel; + Gtk::CheckButton * displaychro; + Gtk::CheckButton * displaygam; + Gtk::CheckButton * displayres; + Gtk::CheckButton * median; + Gtk::CheckButton * medianlev; + Gtk::CheckButton * linkedg; + Gtk::CheckButton * cbenab; + Gtk::CheckButton * lipst; + Gtk::CheckButton * avoid; + Gtk::CheckButton * tmr; Gtk::Button * neutralchButton; - Adjuster* correction[9]; - Adjuster* correctionch[9]; - Adjuster* rescon; - Adjuster* resconH; - Adjuster* reschro; - Adjuster* tmrs; - Adjuster* gamma; - Adjuster* sup; - Adjuster* sky; - Adjuster* thres; - Adjuster* chroma; - Adjuster* chro; - Adjuster* contrast; - Adjuster* thr; - Adjuster* thrH; - Adjuster* skinprotect; - Adjuster* edgrad; - Adjuster* edgval; - Adjuster* edgthresh; - Adjuster* strength; - Adjuster* balance; - Adjuster* iter; - Adjuster* greenlow; - Adjuster* bluelow; - Adjuster* greenmed; - Adjuster* bluemed; - Adjuster* greenhigh; - Adjuster* bluehigh; + Adjuster* correction[9]; + Adjuster* correctionch[9]; + Adjuster* rescon; + Adjuster* resconH; + Adjuster* reschro; + Adjuster* tmrs; + Adjuster* gamma; + Adjuster* sup; + Adjuster* sky; + Adjuster* thres; + Adjuster* chroma; + Adjuster* chro; + Adjuster* contrast; + Adjuster* thr; + Adjuster* thrH; + Adjuster* skinprotect; + Adjuster* edgrad; + Adjuster* edgval; + Adjuster* edgthresh; + Adjuster* strength; + Adjuster* balance; + Adjuster* iter; + Adjuster* greenlow; + Adjuster* bluelow; + Adjuster* greenmed; + Adjuster* bluemed; + Adjuster* greenhigh; + Adjuster* bluehigh; - ThresholdAdjuster* hueskin; - ThresholdAdjuster* hueskin2; - ThresholdAdjuster* hllev; - ThresholdAdjuster* bllev; - ThresholdAdjuster* pastlev; - ThresholdAdjuster* satlev; - ThresholdAdjuster* edgcont; - ThresholdAdjuster* level0noise; - ThresholdAdjuster* level1noise; - ThresholdAdjuster* level2noise; + ThresholdAdjuster* hueskin; + ThresholdAdjuster* hueskin2; + ThresholdAdjuster* hllev; + ThresholdAdjuster* bllev; + ThresholdAdjuster* pastlev; + ThresholdAdjuster* satlev; + ThresholdAdjuster* edgcont; + ThresholdAdjuster* level0noise; + ThresholdAdjuster* level1noise; + ThresholdAdjuster* level2noise; - Adjuster* threshold; - Adjuster* threshold2; - Adjuster* edgedetect; - Adjuster* edgedetectthr; - Adjuster* edgedetectthr2; - MyComboBoxText* Lmethod; - sigc::connection Lmethodconn; - MyComboBoxText* CHmethod; - sigc::connection CHmethodconn; - MyComboBoxText* CHSLmethod; - sigc::connection CHSLmethodconn; - MyComboBoxText* EDmethod; - sigc::connection EDmethodconn; - MyComboBoxText* BAmethod; - sigc::connection BAmethodconn; - MyComboBoxText* TMmethod; - sigc::connection TMmethodconn; - MyComboBoxText* HSmethod; - sigc::connection HSmethodconn; - MyComboBoxText* CLmethod; - sigc::connection CLmethodconn; - MyComboBoxText* Backmethod; - sigc::connection Backmethodconn; - MyComboBoxText* Tilesmethod; - sigc::connection Tilesmethodconn; - MyComboBoxText* daubcoeffmethod; - sigc::connection daubcoeffmethodconn; - MyComboBoxText* Dirmethod; - sigc::connection Dirmethodconn; - MyComboBoxText* Medgreinf; - sigc::connection MedgreinfConn; - Gtk::Frame* settingsFrame; + Adjuster* threshold; + Adjuster* threshold2; + Adjuster* edgedetect; + Adjuster* edgedetectthr; + Adjuster* edgedetectthr2; + MyComboBoxText* Lmethod; + sigc::connection Lmethodconn; + MyComboBoxText* CHmethod; + sigc::connection CHmethodconn; + MyComboBoxText* CHSLmethod; + sigc::connection CHSLmethodconn; + MyComboBoxText* EDmethod; + sigc::connection EDmethodconn; + MyComboBoxText* BAmethod; + sigc::connection BAmethodconn; + MyComboBoxText* TMmethod; + sigc::connection TMmethodconn; + MyComboBoxText* HSmethod; + sigc::connection HSmethodconn; + MyComboBoxText* CLmethod; + sigc::connection CLmethodconn; + MyComboBoxText* Backmethod; + sigc::connection Backmethodconn; + MyComboBoxText* Tilesmethod; + sigc::connection Tilesmethodconn; + MyComboBoxText* daubcoeffmethod; + sigc::connection daubcoeffmethodconn; + MyComboBoxText* Dirmethod; + sigc::connection Dirmethodconn; + MyComboBoxText* Medgreinf; + sigc::connection MedgreinfConn; + Gtk::Frame* settingsFrame; Gtk::Frame* toningFrame; Gtk::Frame* residualFrame; Gtk::Frame* dispFrame; @@ -155,17 +155,17 @@ protected: Gtk::Frame* controlFrame; Gtk::Frame* edgeFrame; Gtk::Frame* noiseFrame; - Gtk::Frame* contrastSHFrame; + Gtk::Frame* contrastSHFrame; Gtk::Frame* finalFrame; Gtk::Frame *chanMixerHLFrame; Gtk::Frame *chanMixerMidFrame; Gtk::Frame *chanMixerShadowsFrame; Gtk::Frame *dFrame; - - Gtk::Label* colLabel; - Gtk::Label* interLabel; + + Gtk::Label* colLabel; + Gtk::Label* interLabel; Gtk::Label* wavLabels; - Gtk::Label* hsmethodLabel; + Gtk::Label* hsmethodLabel; Gtk::Label* daubcoeffLabel; Gtk::Label* ColorBalanceLabel; Gtk::Label* labmC; @@ -174,48 +174,50 @@ protected: Gtk::Label* labmTM; Gtk::Label* labmBA; Gtk::Label* labmedgr; - Gtk::Label* labmednois; - MyExpander* expchroma; - MyExpander* expcontrast; - MyExpander* expedge; - MyExpander* expfinal; - MyExpander* expgamut; - MyExpander* expnoise; + Gtk::Label* labmednois; + MyExpander* expchroma; + MyExpander* expcontrast; + MyExpander* expedge; + MyExpander* expfinal; + MyExpander* expgamut; + MyExpander* expnoise; MyExpander* expresid; - MyExpander* expsettings; - MyExpander* exptoning; + MyExpander* expsettings; + MyExpander* exptoning; Gtk::HBox* ctboxCB; Gtk::HBox* ctboxCH; Gtk::HBox* ctboxED; Gtk::HBox* ctboxTM; Gtk::HBox* hbresid; - Gtk::HBox* backgroundHBox; - Gtk::HBox* daubcoeffHBox; - Gtk::HBox* hsmethodHBox; - Gtk::HBox* levdirMainHBox; - Gtk::HBox* levdirSubHBox; - Gtk::HBox* tilesizeHBox; + Gtk::HBox* backgroundHBox; + Gtk::HBox* daubcoeffHBox; + Gtk::HBox* hsmethodHBox; + Gtk::HBox* levdirMainHBox; + Gtk::HBox* levdirSubHBox; + Gtk::HBox* tilesizeHBox; Gtk::HBox* ctboxFI; Gtk::HBox* ctboxch; Gtk::HBox* edbox; Gtk::HBox* ednoisbox; Gtk::HBox* eddebox; - Gtk::VBox* settingsVBox; - Gtk::VBox* contrastSHVBox; - Gtk::Label* tilesizeLabel; - Gtk::Label* levdirMainLabel; - Gtk::Label* backgroundLabel; - Gtk::Button* neutral; - Gtk::HBox* neutrHBox; - - sigc::connection expConn, medianConn, avoidConn, tmrConn, medianlevConn, linkedgConn, lipstConn, cbenabConn, neutralconn; - sigc::connection neutralPressedConn; - sigc::connection contrastPlusPressedConn; - sigc::connection contrastMinusPressedConn; - sigc::connection neutralchPressedConn; + Gtk::VBox* settingsVBox; + Gtk::VBox* contrastSHVBox; + Gtk::Label* tilesizeLabel; + Gtk::Label* levdirMainLabel; + Gtk::Label* backgroundLabel; + Gtk::Button* neutral; + Gtk::HBox* neutrHBox; - bool lastdisplay, lastdisplaygam,lastdisplayres,lastdisplaychro, lastdisplaylevel,lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab; + sigc::connection enableChromaConn, enableContrastConn, enableEdgeConn, enableFinalConn; + sigc::connection enableNoiseConn, enableResidConn, enableToningConn; + sigc::connection expConn, medianConn, avoidConn, tmrConn, medianlevConn, linkedgConn, lipstConn, cbenabConn, neutralconn; + sigc::connection neutralPressedConn; + sigc::connection contrastPlusPressedConn; + sigc::connection contrastMinusPressedConn; + sigc::connection neutralchPressedConn; + + bool lastdisplay, lastdisplaygam,lastdisplayres,lastdisplaychro, lastdisplaylevel,lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab; int nextnlevel; double tr; double br; @@ -223,65 +225,79 @@ protected: double bl; public: - Wavelet (); - virtual ~Wavelet (); + Wavelet (); + virtual ~Wavelet (); + + bool wavComputed_ (); + void adjusterChanged (ThresholdAdjuster* a, double newBottom, double newTop); + void adjusterChanged (Adjuster* a, double newval); + void adjusterChanged2 (ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void autoOpenCurve (); + void curveChanged (CurveEditor* ce); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL); + void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd,bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add); + void setBatchMode (bool batchMode); + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); + void setEditProvider (EditDataProvider *provider); + void updateToolState (std::vector &tpOpen); + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL); + void writeOptions (std::vector &tpOpen); - bool wavComputed_ (); - void adjusterChanged (ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged (Adjuster* a, double newval); - void adjusterChanged2 (ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); - void autoOpenCurve (); - void curveChanged (CurveEditor* ce); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL); - void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd,bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); - void setEditProvider (EditDataProvider *provider); - void updateToolState(std::vector &tpOpen); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL); - void writeOptions(std::vector &tpOpen); private: - void foldAllButSettings (GdkEventButton* event); - void foldAllButContrast (GdkEventButton* event); - void foldAllButChroma (GdkEventButton* event); - void foldAllButToning (GdkEventButton* event); - void foldAllButNoise (GdkEventButton* event); - void foldAllButEdge (GdkEventButton* event); - void foldAllButGamut (GdkEventButton* event); - void foldAllButResid (GdkEventButton* event); - void foldAllButFinal (GdkEventButton* event); - void foldAllButOne (MyExpander * whichOne); + void foldAllButMe (GdkEventButton* event, MyExpander *expander); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); - void BAmethodChanged (); - void BackmethodChanged (); - void CHSLmethodChanged (); - void CHmethodChanged (); - void CLmethodChanged (); - void DirmethodChanged (); - void EDmethodChanged (); - void HSmethodChanged (); - void LmethodChanged (); - void MedgreinfChanged (); - void TMmethodChanged (); - void TilesmethodChanged (); - void avoidToggled (); - void cbenabToggled (); - void contrastMinusPressed (); - void contrastPlusPressed (); - void daubcoeffmethodChanged (); - void enabledChanged (); - void linkedgToggled (); - void lipstToggled (); - void medianToggled (); - void medianlevToggled (); - void neutralPressed (); - void neutral_pressed (); - void neutralchPressed (); - void tmrToggled (); - void updatewavLabel (); - void wavChanged (double nlevel); + virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void BAmethodChanged (); + void BackmethodChanged (); + void CHSLmethodChanged (); + void CHmethodChanged (); + void CLmethodChanged (); + void DirmethodChanged (); + void EDmethodChanged (); + void HSmethodChanged (); + void LmethodChanged (); + void MedgreinfChanged (); + void TMmethodChanged (); + void TilesmethodChanged (); + void avoidToggled (); + void cbenabToggled (); + void contrastMinusPressed (); + void contrastPlusPressed (); + void daubcoeffmethodChanged (); + void enabledChanged (); + void linkedgToggled (); + void lipstToggled (); + void medianToggled (); + void medianlevToggled (); + void neutralPressed (); + void neutral_pressed (); + void neutralchPressed (); + void tmrToggled (); + void updatewavLabel (); + void wavChanged (double nlevel); + + void HSmethodUpdateUI(); + void CHmethodUpdateUI(); +// void CHSLmethodChangedUI(); + void EDmethodUpdateUI(); + void BAmethodUpdateUI(); + void TMmethodUpdateUI(); +// void BackmethodUpdateUI(); + void CLmethodUpdateUI(); +// void TilesmethodUpdateUI(); +// void daubcoeffmethodUpdateUI(); +// void MedgreinfUpdateUI(); +// void DirmethodUpdateUI(); +// void LmethodUpdateUI(); + void adjusterUpdateUI (Adjuster* a); + void enabledUpdateUI (); + void medianlevUpdateUI (); + void cbenabUpdateUI (); +// void lipstUpdateUI (); + + + void enableToggled(MyExpander *expander); }; #endif