Enhancement: Before/After lock-unlock (see issue 1017)

Lock: keep the Before view unchanged -
useful to evaluate the cumulative effect of multiple tools.
Additionally, comparison can be made to any state in the History

Unlock: the Before view will follow the After view 1 step behind,
showing image before the effect of the currently used tool
This commit is contained in:
michael
2011-09-26 22:45:00 -04:00
parent 73e8f043ee
commit ea5a0dfb72
7 changed files with 40 additions and 7 deletions

View File

@@ -82,6 +82,8 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
beforeAfter->set_relief(Gtk::RELIEF_NONE);
beforeAfter->set_tooltip_markup (M("MAIN_TOOLTIP_TOGGLE"));
iBeforeLockON = new Gtk::Image(argv0+"/images/lock_on.png");
iBeforeLockOFF = new Gtk::Image(argv0+"/images/lock_off.png");
Gtk::VSeparator* vsept = Gtk::manage (new Gtk::VSeparator ());
Gtk::VSeparator* vsepz = Gtk::manage (new Gtk::VSeparator ());
@@ -1221,7 +1223,7 @@ void EditorPanel::beforeAfterToggled () {
return;
removeIfThere (beforeAfterBox, beforeBox, false);
removeIfThere (afterBox, afterLabel, false);
removeIfThere (afterBox, afterHeaderBox, false);
if (beforeIarea) {
if (beforeIpc)
@@ -1246,16 +1248,32 @@ void EditorPanel::beforeAfterToggled () {
beforeIarea = new ImageAreaPanel ();
int HeaderBoxHeight = 15;
beforeLabel = Gtk::manage (new Gtk::Label ());
beforeLabel->set_markup (Glib::ustring("<b>") + M("GENERAL_BEFORE") + "</b>");
tbBeforeLock = Gtk::manage (new Gtk::ToggleButton ());
tbBeforeLock->set_tooltip_markup (M("MAIN_TOOLTIP_BEFOREAFTERLOCK"));
tbBeforeLock->signal_toggled().connect( sigc::mem_fun(*this, &EditorPanel::tbBeforeLock_toggled) );
beforeHeaderBox = Gtk::manage (new Gtk::HBox ());
beforeHeaderBox->pack_end (*tbBeforeLock, Gtk::PACK_SHRINK, 2);
beforeHeaderBox->pack_end (*beforeLabel, Gtk::PACK_SHRINK, 2);
beforeHeaderBox->set_size_request(0, HeaderBoxHeight);
history->blistenerLock ? tbBeforeLock->set_image (*iBeforeLockON):tbBeforeLock->set_image (*iBeforeLockOFF);
tbBeforeLock->set_active(history->blistenerLock);
beforeBox = Gtk::manage (new Gtk::VBox ());
beforeBox->pack_start (*beforeLabel, Gtk::PACK_SHRINK, 2);
beforeBox->pack_start (*beforeHeaderBox, Gtk::PACK_SHRINK, 2);
beforeBox->pack_start (*beforeIarea);
afterLabel = Gtk::manage (new Gtk::Label ());
afterLabel->set_markup (Glib::ustring("<b>") + M("GENERAL_AFTER") + "</b>");
afterBox->pack_start (*afterLabel, Gtk::PACK_SHRINK, 2);
afterBox->reorder_child (*afterLabel, 0);
afterHeaderBox = Gtk::manage (new Gtk::HBox ());
afterHeaderBox->set_size_request(0, HeaderBoxHeight);
afterHeaderBox->pack_end (*afterLabel, Gtk::PACK_SHRINK, 2);
afterBox->pack_start (*afterHeaderBox, Gtk::PACK_SHRINK, 2);
afterBox->reorder_child (*afterHeaderBox, 0);
beforeAfterBox->pack_start (*beforeBox);
beforeAfterBox->reorder_child (*beforeBox, 0);
@@ -1278,6 +1296,11 @@ void EditorPanel::beforeAfterToggled () {
}
}
void EditorPanel::tbBeforeLock_toggled () {
history->blistenerLock = tbBeforeLock->get_active();
tbBeforeLock->get_active()? tbBeforeLock->set_image (*iBeforeLockON) : tbBeforeLock->set_image (*iBeforeLockOFF);
}
void EditorPanel::histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve,
LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw) {