Add ability to manage partial copy/paste or profile with Locallab

This commit is contained in:
Pandagrapher 2018-10-21 19:24:38 +02:00
parent bf2b7905d3
commit ce63383676
3 changed files with 63 additions and 44 deletions

View File

@ -1054,6 +1054,7 @@ NAVIGATOR_XY_NA;x: --, y: --
OPTIONS_BUNDLED_MISSING;The bundled profile "<b>%1</b>" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
OPTIONS_DEFIMG_MISSING;The default profile for <b>non-raw photos</b> could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"<b>%1</b>" will be used instead.
OPTIONS_DEFRAW_MISSING;The default profile for <b>raw photos</b> could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"<b>%1</b>" will be used instead.
PARTIALPASTE_LOCALLABGROUP;Local L*a*b Settings
PARTIALPASTE_ADVANCEDGROUP;Advanced Settings
PARTIALPASTE_BASICGROUP;Basic Settings
PARTIALPASTE_CACORRECTION;Chromatic aberration correction

View File

@ -45,6 +45,8 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
raw ->set_name("PartialPasteHeader");
advanced = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_ADVANCEDGROUP")));
advanced ->set_name("PartialPasteHeader");
locallab = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LOCALLABGROUP")));
locallab ->set_name("PartialPasteHeader");
// Basic Settings:
wb = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WHITEBALANCE")));
@ -135,10 +137,10 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
raw_caredblue = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CAREDBLUE")));
raw_ca_avoid_colourshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT")));
Gtk::VBox* vboxes[8];
Gtk::HSeparator* hseps[8];
Gtk::VBox* vboxes[9];
Gtk::HSeparator* hseps[9];
for (int i = 0; i < 8; i++) {
for (int i = 0; i < 9; i++) {
vboxes[i] = Gtk::manage (new Gtk::VBox ());
vboxes[i]->set_name("PartialPasteGroupContainer");
hseps[i] = Gtk::manage (new Gtk::HSeparator ());
@ -208,47 +210,51 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
vboxes[5]->pack_start (*colorappearance, Gtk::PACK_SHRINK, 2);
vboxes[5]->pack_start (*wavelet, Gtk::PACK_SHRINK, 2);
//META
vboxes[6]->pack_start (*meta, Gtk::PACK_SHRINK, 2);
//LOCALLAB
vboxes[6]->pack_start(*locallab, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*hseps[6], Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start(*metadata, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*exifch, Gtk::PACK_SHRINK, 2);
vboxes[6]->pack_start (*iptc, Gtk::PACK_SHRINK, 2);
//META
vboxes[7]->pack_start (*meta, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*hseps[7], Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start(*metadata, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*exifch, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*iptc, Gtk::PACK_SHRINK, 2);
//RAW
vboxes[7]->pack_start (*raw, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*hseps[7], Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_method, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_border, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_imagenum, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_pixelshift, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_ccSteps, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_dcb_iterations, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_dcb_enhance, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_lmmse_iterations, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[7]->pack_start (*raw_linenoise, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_greenthresh, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_hotpix_filt, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_deadpix_filt, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_pdaf_lines_filter, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[7]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[7]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*df_AutoSelect, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[7]->pack_start (*ff_file, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*ff_AutoSelect, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*ff_BlurType, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*ff_BlurRadius, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*ff_ClipControl, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[7]->pack_start (*raw_ca_autocorrect, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_caredblue, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_ca_avoid_colourshift, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*hseps[8], Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_method, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_border, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_imagenum, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_pixelshift, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_ccSteps, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_dcb_iterations, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_dcb_enhance, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_lmmse_iterations, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[8]->pack_start (*raw_linenoise, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_greenthresh, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_hotpix_filt, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_deadpix_filt, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_pdaf_lines_filter, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[8]->pack_start (*raw_expos, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_preser, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_black, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[8]->pack_start (*df_file, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*df_AutoSelect, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[8]->pack_start (*ff_file, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*ff_AutoSelect, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*ff_BlurType, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*ff_BlurRadius, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*ff_ClipControl, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0);
vboxes[8]->pack_start (*raw_ca_autocorrect, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_caredblue, Gtk::PACK_SHRINK, 2);
vboxes[8]->pack_start (*raw_ca_avoid_colourshift, Gtk::PACK_SHRINK, 2);
Gtk::VBox* vbCol1 = Gtk::manage (new Gtk::VBox ());
Gtk::VBox* vbCol2 = Gtk::manage (new Gtk::VBox ());
@ -258,11 +264,11 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
vbCol1->pack_start (*vboxes[i], Gtk::PACK_SHRINK, 2);
}
for (int i = 3; i < 7; i++) {
for (int i = 3; i < 8; i++) {
vbCol2->pack_start (*vboxes[i], Gtk::PACK_SHRINK, 2);
}
for (int i = 7; i < 8; i++) {
for (int i = 8; i < 9; i++) {
vbCol3->pack_start (*vboxes[i], Gtk::PACK_SHRINK, 2);
}
@ -307,6 +313,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
metaConn = meta->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::metaToggled));
rawConn = raw->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::rawToggled));
advancedConn = advanced->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::advancedToggled));
locallabConn = locallab->signal_toggled().connect (sigc::mem_fun(*this, &PartialPasteDlg::locallabToggled));
// Basic Settings
wbConn = wb->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
@ -639,6 +646,11 @@ void PartialPasteDlg::metaToggled ()
iptc->set_active (meta->get_active ());
}
void PartialPasteDlg::locallabToggled()
{
locallab->set_inconsistent (false);
}
/*
* Copies the selected items from the source ProcParams+ParamsEdited(optional)
@ -963,6 +975,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
filterPE.raw.ff_AutoClipControl = falsePE.raw.ff_AutoClipControl;
}
if (!locallab->get_active ()) {
filterPE.locallab = falsePE.locallab;
}
if (dstPE) {
*dstPE = filterPE;
}

View File

@ -40,6 +40,7 @@ public:
Gtk::CheckButton* meta;
Gtk::CheckButton* raw;
Gtk::CheckButton* advanced;
Gtk::CheckButton* locallab;
// options in basic:
Gtk::CheckButton* wb;
@ -128,7 +129,7 @@ public:
Gtk::CheckButton* ff_BlurType;
Gtk::CheckButton* ff_ClipControl;
sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, advancedConn;
sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, advancedConn, locallabConn;
sigc::connection wbConn, exposureConn, localcontrastConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn;
sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn;
@ -153,6 +154,7 @@ public:
void metaToggled ();
void rawToggled ();
void advancedToggled ();
void locallabToggled ();
};
#endif