Flatfield tool.
This commit is contained in:
@@ -24,12 +24,15 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
set_modal (true);
|
||||
set_title (M("PARTIALPASTE_DIALOGLABEL"));
|
||||
|
||||
everything = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EVERYTHING")));
|
||||
|
||||
basic = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_BASICGROUP")));
|
||||
luminance = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMINANCEGROUP")));
|
||||
color = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORGROUP")));
|
||||
lens = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LENSGROUP")));
|
||||
composition = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COMPOSITIONGROUP")));
|
||||
metaicm = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_METAICMGROUP")));
|
||||
raw = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWGROUP")));
|
||||
|
||||
// options in basic:
|
||||
wb = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WHITEBALANCE")));
|
||||
@@ -38,7 +41,7 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
|
||||
// options in luminance:
|
||||
sharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENING")));
|
||||
impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE")));
|
||||
impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE")));
|
||||
lumaden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMADENOISE")));
|
||||
labcurve = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LABCURVE")));
|
||||
sh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHADOWSHIGHLIGHTS")));
|
||||
@@ -69,9 +72,18 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
iptc = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IPTCINFO")));
|
||||
icm = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_ICMSETTINGS")));
|
||||
|
||||
Gtk::VBox* vboxes[6];
|
||||
Gtk::HSeparator* hseps[6];
|
||||
for (int i=0; i<6; i++) {
|
||||
// options in raw:
|
||||
df_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEFILE")));
|
||||
df_AutoSelect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DARKFRAMEAUTOSELECT")));
|
||||
ff_file = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDFILE")));
|
||||
ff_AutoSelect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDAUTOSELECT")));
|
||||
ff_BlurRadius = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDBLURRADIUS")));
|
||||
ff_BlurType = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FLATFIELDBLURTYPE")));
|
||||
|
||||
Gtk::VBox* vboxes[7];
|
||||
Gtk::HSeparator* hseps[7];
|
||||
for (int i=0; i<7; i++) {
|
||||
|
||||
vboxes[i] = Gtk::manage (new Gtk::VBox ());
|
||||
vboxes[i]->set_border_width (16);
|
||||
hseps[i] = Gtk::manage (new Gtk::HSeparator ());
|
||||
@@ -86,7 +98,7 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
vboxes[1]->pack_start (*luminance, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*hseps[1], Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*sharpen, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*impden, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*impden, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*lumaden, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*labcurve, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[1]->pack_start (*sh, Gtk::PACK_SHRINK, 2);
|
||||
@@ -98,7 +110,7 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
vboxes[2]->pack_start (*colormixer, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[2]->pack_start (*colorshift, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[2]->pack_start (*colorboost, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[2]->pack_start (*hsveq, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[2]->pack_start (*hsveq, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[2]->pack_start (*colorden, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[2]->pack_start (*dirpyrden, Gtk::PACK_SHRINK, 2);
|
||||
|
||||
@@ -116,54 +128,80 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
vboxes[4]->pack_start (*crop, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[4]->pack_start (*resize, Gtk::PACK_SHRINK, 2);
|
||||
|
||||
vboxes[5]->pack_start (*metaicm, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*raw, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*hseps[5], Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*exifch, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*iptc, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*icm, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*df_AutoSelect, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*ff_file, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*ff_AutoSelect, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*ff_BlurType, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[5]->pack_start (*ff_BlurRadius, Gtk::PACK_SHRINK, 2);
|
||||
|
||||
Gtk::VBox* vbleft = Gtk::manage (new Gtk::VBox ());
|
||||
Gtk::VBox* vbright = Gtk::manage (new Gtk::VBox ());
|
||||
vboxes[6]->pack_start (*metaicm, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[6]->pack_start (*hseps[6], Gtk::PACK_SHRINK, 2);
|
||||
vboxes[6]->pack_start (*exifch, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[6]->pack_start (*iptc, Gtk::PACK_SHRINK, 2);
|
||||
vboxes[6]->pack_start (*icm, Gtk::PACK_SHRINK, 2);
|
||||
|
||||
vbleft->set_border_width (16);
|
||||
vbright->set_border_width (16);
|
||||
Gtk::VBox* vbCol1 = Gtk::manage (new Gtk::VBox ());
|
||||
Gtk::VBox* vbCol2 = Gtk::manage (new Gtk::VBox ());
|
||||
Gtk::VBox* vbCol3 = Gtk::manage (new Gtk::VBox ());
|
||||
|
||||
vbCol1->set_border_width (16);
|
||||
vbCol2->set_border_width (16);
|
||||
vbCol3->set_border_width (16);
|
||||
|
||||
for (int i=0; i<3; i++)
|
||||
vbleft->pack_start (*vboxes[i]);
|
||||
vbCol1->pack_start (*vboxes[i]);
|
||||
for (int i=3; i<6; i++)
|
||||
vbright->pack_start (*vboxes[i]);
|
||||
vbCol2->pack_start (*vboxes[i]);
|
||||
for (int i=6; i<7; i++)
|
||||
vbCol3->pack_start (*vboxes[i]);
|
||||
|
||||
Gtk::VBox* vbtop = Gtk::manage (new Gtk::VBox ());
|
||||
vbtop->pack_start (*everything, Gtk::PACK_SHRINK, 2);
|
||||
vbtop->pack_start (*(Gtk::manage (new Gtk::HSeparator ())));
|
||||
vbtop->set_border_width (8);
|
||||
|
||||
get_vbox()->pack_start (*vbtop);
|
||||
|
||||
Gtk::HBox* hbmain = Gtk::manage (new Gtk::HBox ());
|
||||
hbmain->pack_start (*vbleft);
|
||||
hbmain->pack_start (*vbCol1);
|
||||
hbmain->pack_start (*(Gtk::manage (new Gtk::VSeparator ())));
|
||||
hbmain->pack_start (*vbright);
|
||||
hbmain->pack_start (*vbCol2);
|
||||
hbmain->pack_start (*(Gtk::manage (new Gtk::VSeparator ())));
|
||||
hbmain->pack_start (*vbCol3);
|
||||
|
||||
get_vbox()->pack_start (*hbmain);
|
||||
|
||||
// This can be improved
|
||||
// there is currently no binding of subsettings to CheckButton 'everything' for its inconsistent status
|
||||
everythingConn = everything->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::everythingToggled));
|
||||
basicConn = basic->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::basicToggled));
|
||||
luminanceConn = luminance->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::luminanceToggled));
|
||||
colorConn = color->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::colorToggled));
|
||||
lensConn = lens->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::lensToggled));
|
||||
compositionConn = composition->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::compositionToggled));
|
||||
metaicmConn = metaicm->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::metaicmToggled));
|
||||
metaicmConn = metaicm->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::metaicmToggled));
|
||||
rawConn = raw->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::rawToggled));
|
||||
|
||||
wbConn = wb->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
|
||||
exposureConn = exposure->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
|
||||
hlrecConn = hlrec->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
|
||||
|
||||
sharpenConn = sharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
impdenConn = impden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
impdenConn = impden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
lumadenConn = lumaden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
labcurveConn = labcurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
labcurveConn = labcurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
shConn = sh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
waveqConn = waveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
waveqConn = waveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
|
||||
|
||||
colormixerConn = colormixer->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
colorshiftConn = colorshift->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
colorboostConn = colorboost->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
hsveqConn = hsveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
colordenConn = colorden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
hsveqConn = hsveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
colordenConn = colorden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
dirpyrdenConn = dirpyrden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
|
||||
|
||||
distortionConn = distortion->signal_toggled().connect (sigc::bind (sigc::mem_fun(*lens, &Gtk::CheckButton::set_inconsistent), true));
|
||||
@@ -179,6 +217,13 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
iptcConn = iptc->signal_toggled().connect (sigc::bind (sigc::mem_fun(*metaicm, &Gtk::CheckButton::set_inconsistent), true));
|
||||
icmConn = icm->signal_toggled().connect (sigc::bind (sigc::mem_fun(*metaicm, &Gtk::CheckButton::set_inconsistent), true));
|
||||
|
||||
df_fileConn = df_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
df_AutoSelectConn = df_AutoSelect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
ff_fileConn = ff_file->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
ff_AutoSelectConn = ff_AutoSelect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
ff_BlurRadiusConn = ff_BlurRadius->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
ff_BlurTypeConn = ff_BlurType->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
|
||||
|
||||
add_button (Gtk::StockID("gtk-ok"), 1);
|
||||
add_button (Gtk::StockID("gtk-cancel"), 0);
|
||||
set_response_sensitive (1);
|
||||
@@ -186,6 +231,71 @@ PartialPasteDlg::PartialPasteDlg () {
|
||||
show_all_children ();
|
||||
}
|
||||
|
||||
void PartialPasteDlg::everythingToggled () {
|
||||
|
||||
basicConn.block (true);
|
||||
luminanceConn.block (true);
|
||||
colorConn.block (true);
|
||||
lensConn.block (true);
|
||||
compositionConn.block (true);
|
||||
metaicmConn.block (true);
|
||||
rawConn.block (true);
|
||||
|
||||
everything->set_inconsistent (false);
|
||||
|
||||
//toggle group headings
|
||||
basic->set_active(everything->get_active());
|
||||
luminance->set_active(everything->get_active());
|
||||
color->set_active(everything->get_active());
|
||||
lens->set_active(everything->get_active());
|
||||
composition->set_active(everything->get_active());
|
||||
metaicm->set_active(everything->get_active());
|
||||
raw->set_active(everything->get_active());
|
||||
|
||||
//toggle group children
|
||||
PartialPasteDlg::basicToggled ();
|
||||
PartialPasteDlg::luminanceToggled ();
|
||||
PartialPasteDlg::colorToggled ();
|
||||
PartialPasteDlg::lensToggled ();
|
||||
PartialPasteDlg::compositionToggled ();
|
||||
PartialPasteDlg::metaicmToggled ();
|
||||
PartialPasteDlg::rawToggled ();
|
||||
|
||||
basicConn.block (false);
|
||||
luminanceConn.block (false);
|
||||
colorConn.block (false);
|
||||
lensConn.block (false);
|
||||
compositionConn.block (false);
|
||||
metaicmConn.block (false);
|
||||
rawConn.block (false);
|
||||
}
|
||||
|
||||
void PartialPasteDlg::rawToggled () {
|
||||
|
||||
df_fileConn.block (true);
|
||||
df_AutoSelectConn.block (true);
|
||||
ff_fileConn.block (true);
|
||||
ff_AutoSelectConn.block (true);
|
||||
ff_BlurRadiusConn.block (true);
|
||||
ff_BlurTypeConn.block (true);
|
||||
|
||||
raw->set_inconsistent (false);
|
||||
|
||||
df_file->set_active (raw->get_active ());
|
||||
df_AutoSelect->set_active (raw->get_active ());
|
||||
ff_file->set_active (raw->get_active ());
|
||||
ff_AutoSelect->set_active (raw->get_active ());
|
||||
ff_BlurRadius->set_active (raw->get_active ());
|
||||
ff_BlurType->set_active (raw->get_active ());
|
||||
|
||||
df_fileConn.block (false);
|
||||
df_AutoSelectConn.block (false);
|
||||
ff_fileConn.block (false);
|
||||
ff_AutoSelectConn.block (false);
|
||||
ff_BlurRadiusConn.block (false);
|
||||
ff_BlurTypeConn.block (false);
|
||||
}
|
||||
|
||||
void PartialPasteDlg::basicToggled () {
|
||||
|
||||
wbConn.block (true);
|
||||
@@ -206,7 +316,7 @@ void PartialPasteDlg::basicToggled () {
|
||||
void PartialPasteDlg::luminanceToggled () {
|
||||
|
||||
sharpenConn.block (true);
|
||||
impdenConn.block (true);
|
||||
impdenConn.block (true);
|
||||
lumadenConn.block (true);
|
||||
labcurveConn.block (true);
|
||||
shConn.block (true);
|
||||
@@ -216,7 +326,7 @@ void PartialPasteDlg::luminanceToggled () {
|
||||
luminance->set_inconsistent (false);
|
||||
|
||||
sharpen->set_active (luminance->get_active ());
|
||||
impden->set_active (luminance->get_active ());
|
||||
impden->set_active (luminance->get_active ());
|
||||
lumaden->set_active (luminance->get_active ());
|
||||
labcurve->set_active (luminance->get_active ());
|
||||
sh->set_active (luminance->get_active ());
|
||||
@@ -237,6 +347,7 @@ void PartialPasteDlg::colorToggled () {
|
||||
colormixerConn.block (true);
|
||||
colorshiftConn.block (true);
|
||||
colorboostConn.block (true);
|
||||
hsveqConn.block (true);
|
||||
colordenConn.block (true);
|
||||
dirpyrdenConn.block (true);
|
||||
|
||||
@@ -245,15 +356,16 @@ void PartialPasteDlg::colorToggled () {
|
||||
colormixer->set_active (color->get_active ());
|
||||
colorshift->set_active (color->get_active ());
|
||||
colorboost->set_active (color->get_active ());
|
||||
hsveq->set_active (color->get_active ());
|
||||
hsveq->set_active (color->get_active ());
|
||||
colorden->set_active (color->get_active ());
|
||||
dirpyrden->set_active (color->get_active ());
|
||||
|
||||
colormixerConn.block (false);
|
||||
colorshiftConn.block (false);
|
||||
colorboostConn.block (false);
|
||||
hsveqConn.block (false);
|
||||
colordenConn.block (false);
|
||||
dirpyrdenConn.block (false);
|
||||
dirpyrdenConn.block (false);
|
||||
}
|
||||
|
||||
void PartialPasteDlg::lensToggled () {
|
||||
@@ -328,7 +440,7 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const r
|
||||
if (colormixer->get_active ()) dst->chmixer = src->chmixer;
|
||||
if (colorshift->get_active ()) dst->colorShift = src->colorShift;
|
||||
if (colorboost->get_active ()) dst->colorBoost = src->colorBoost;
|
||||
if (hsveq->get_active ()) dst->hsvequalizer = src->hsvequalizer;
|
||||
if (hsveq->get_active ()) dst->hsvequalizer = src->hsvequalizer;
|
||||
if (colorden->get_active ()) dst->colorDenoise = src->colorDenoise;
|
||||
if (dirpyrden->get_active ()) dst->dirpyrDenoise = src->dirpyrDenoise;
|
||||
|
||||
@@ -343,6 +455,13 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const r
|
||||
|
||||
if (exifch->get_active ()) dst->exif = src->exif;
|
||||
if (iptc->get_active ()) dst->iptc = src->iptc;
|
||||
if (icm->get_active ()) dst->icm = src->icm;
|
||||
if (icm->get_active ()) dst->icm = src->icm;
|
||||
|
||||
if (df_file->get_active ()) dst->raw.dark_frame = src->raw.dark_frame;
|
||||
if (df_AutoSelect->get_active ()) dst->raw.df_autoselect = src->raw.df_autoselect;
|
||||
if (ff_file->get_active ()) dst->raw.ff_file = src->raw.ff_file;
|
||||
if (ff_AutoSelect->get_active ()) dst->raw.ff_AutoSelect = src->raw.ff_AutoSelect;
|
||||
if (ff_BlurRadius->get_active ()) dst->raw.ff_BlurRadius = src->raw.ff_BlurRadius;
|
||||
if (ff_BlurType->get_active ()) dst->raw.ff_BlurType = src->raw.ff_BlurType;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user