Enhancement to Channel Mixer UI on behalf of Philippe goo...@hupe.me; (issue 958)
BIN
rtdata/images/Chanmixer_BB.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_BG.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_BR.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_GB.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_GG.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_GR.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_RB.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_RG.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
rtdata/images/Chanmixer_RR.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
@@ -735,10 +735,10 @@ TOOLBAR_TOOLTIP_WB;Spot white balance <b>W</b>
|
|||||||
TP_CACORRECTION_BLUE;Blue
|
TP_CACORRECTION_BLUE;Blue
|
||||||
TP_CACORRECTION_LABEL;C/A Correction
|
TP_CACORRECTION_LABEL;C/A Correction
|
||||||
TP_CACORRECTION_RED;Red
|
TP_CACORRECTION_RED;Red
|
||||||
TP_CHMIXER_BLUE;Blue
|
TP_CHMIXER_BLUE;Blue channel
|
||||||
TP_CHMIXER_GREEN;Green
|
TP_CHMIXER_GREEN;Green channel
|
||||||
TP_CHMIXER_LABEL;Channel Mixer
|
TP_CHMIXER_LABEL;Channel Mixer
|
||||||
TP_CHMIXER_RED;Red
|
TP_CHMIXER_RED;Red channel
|
||||||
TP_CHROMATABERR_LABEL;Chromatic Aberration
|
TP_CHROMATABERR_LABEL;Chromatic Aberration
|
||||||
TP_SHARPENEDGE_AMOUNT;Quantity
|
TP_SHARPENEDGE_AMOUNT;Quantity
|
||||||
TP_SHARPENEDGE_LABEL;Edges
|
TP_SHARPENEDGE_LABEL;Edges
|
||||||
|
@@ -91,6 +91,71 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep
|
|||||||
show_all ();
|
show_all ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Adjuster::Adjuster (Gtk::Image *imgIcon, double vmin, double vmax, double vstep, double vdefault, bool editedcb) {
|
||||||
|
|
||||||
|
adjusterListener = NULL;
|
||||||
|
afterReset = false;
|
||||||
|
blocked = false;
|
||||||
|
|
||||||
|
vMin = vmin;
|
||||||
|
vMax = vmax;
|
||||||
|
vStep = vstep;
|
||||||
|
initialDefaultVal = vdefault;
|
||||||
|
addMode = false;
|
||||||
|
|
||||||
|
// TODO: let the user chose the default value of Adjuster::delay, for slow machines
|
||||||
|
delay = options.adjusterDelay; // delay is no more static, so we can set the delay individually (useful for the RAW editor tab)
|
||||||
|
|
||||||
|
set_border_width (2);
|
||||||
|
|
||||||
|
hbox = Gtk::manage (new Gtk::HBox ());
|
||||||
|
|
||||||
|
|
||||||
|
if (editedcb) {
|
||||||
|
editedCheckBox = Gtk::manage (new Gtk::CheckButton ());
|
||||||
|
editedChange = editedCheckBox->signal_toggled().connect( sigc::mem_fun(*this, &Adjuster::editedToggled) );
|
||||||
|
hbox->pack_start (*editedCheckBox);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
editedCheckBox = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
reset = Gtk::manage (new Gtk::Button ());
|
||||||
|
reset->add (*Gtk::manage (new Gtk::Image (argv0+"/images/undo.png")));
|
||||||
|
reset->set_relief (Gtk::RELIEF_NONE);
|
||||||
|
reset->set_border_width (0);
|
||||||
|
reset->set_tooltip_text (M("ADJUSTER_RESET_TO_DEFAULT"));
|
||||||
|
|
||||||
|
hbox->pack_start (*imgIcon, Gtk::PACK_SHRINK);
|
||||||
|
|
||||||
|
hbox->pack_end (*reset, Gtk::PACK_SHRINK, 0);
|
||||||
|
|
||||||
|
spin = Gtk::manage (new MySpinButton ());
|
||||||
|
|
||||||
|
reset->set_size_request (-1, spin->get_height());
|
||||||
|
|
||||||
|
slider = Gtk::manage (new MyHScale ());
|
||||||
|
slider->set_draw_value (false);
|
||||||
|
|
||||||
|
hbox->pack_end (*spin, Gtk::PACK_SHRINK, 0);
|
||||||
|
hbox->pack_start (*slider);
|
||||||
|
|
||||||
|
pack_start (*hbox, false, false);
|
||||||
|
|
||||||
|
setLimits (vmin, vmax, vstep, vdefault);
|
||||||
|
|
||||||
|
defaultVal = shapeValue (vdefault);
|
||||||
|
initialDefaultVal = shapeValue (vdefault);
|
||||||
|
editedState = defEditedState = Irrelevant;
|
||||||
|
|
||||||
|
sliderChange = slider->signal_value_changed().connect( sigc::mem_fun(*this, &Adjuster::sliderChanged) );
|
||||||
|
spinChange = spin->signal_value_changed().connect ( sigc::mem_fun(*this, &Adjuster::spinChanged), true);
|
||||||
|
reset->signal_button_release_event().connect_notify( sigc::mem_fun(*this, &Adjuster::resetPressed) );
|
||||||
|
slider->set_update_policy (Gtk::UPDATE_CONTINUOUS);
|
||||||
|
|
||||||
|
show_all ();
|
||||||
|
}
|
||||||
|
|
||||||
Adjuster::~Adjuster () {
|
Adjuster::~Adjuster () {
|
||||||
|
|
||||||
sliderChange.block (true);
|
sliderChange.block (true);
|
||||||
|
@@ -66,6 +66,7 @@ class Adjuster : public Gtk::VBox {
|
|||||||
int delay;
|
int delay;
|
||||||
|
|
||||||
Adjuster (Glib::ustring label, double vmin, double vmax, double vstep, double vdefault, bool editedCheckBox=false);
|
Adjuster (Glib::ustring label, double vmin, double vmax, double vstep, double vdefault, bool editedCheckBox=false);
|
||||||
|
Adjuster (Gtk::Image *imgIcon, double vmin, double vmax, double vstep, double vdefault, bool editedCheckBox=false);
|
||||||
virtual ~Adjuster ();
|
virtual ~Adjuster ();
|
||||||
void setAdjusterListener (AdjusterListener* alistener);
|
void setAdjusterListener (AdjusterListener* alistener);
|
||||||
|
|
||||||
|
@@ -21,14 +21,27 @@
|
|||||||
using namespace rtengine;
|
using namespace rtengine;
|
||||||
using namespace rtengine::procparams;
|
using namespace rtengine::procparams;
|
||||||
|
|
||||||
|
extern Glib::ustring argv0;
|
||||||
|
|
||||||
ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
|
ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
|
||||||
|
|
||||||
Gtk::Label* rlabel = Gtk::manage (new Gtk::Label ());
|
imgIcon[0] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RR.png"));
|
||||||
rlabel->set_markup (Glib::ustring("<span foreground=\"red\"><b>") + M("TP_CHMIXER_RED") + Glib::ustring(":</b></span>"));
|
imgIcon[1] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RG.png"));
|
||||||
|
imgIcon[2] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RB.png"));
|
||||||
|
imgIcon[3] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_GR.png"));
|
||||||
|
imgIcon[4] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_GG.png"));
|
||||||
|
imgIcon[5] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_GB.png"));
|
||||||
|
imgIcon[6] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_BR.png"));
|
||||||
|
imgIcon[7] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_BG.png"));
|
||||||
|
imgIcon[8] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_BB.png"));
|
||||||
|
|
||||||
red[0] = Gtk::manage (new Adjuster (M("TP_CHMIXER_RED"), -200, 200, 1, 100));
|
Gtk::Label* rlabel = Gtk::manage (new Gtk::Label ());
|
||||||
red[1] = Gtk::manage (new Adjuster (M("TP_CHMIXER_GREEN"), -200, 200, 1, 0));
|
rlabel->set_markup (Glib::ustring("\t<span foreground=\"#b00000\"><b>") + M("TP_CHMIXER_RED") + Glib::ustring(":</b></span>"));
|
||||||
red[2] = Gtk::manage (new Adjuster (M("TP_CHMIXER_BLUE"), -200, 200, 1, 0));
|
rlabel->set_alignment(Gtk::ALIGN_LEFT);
|
||||||
|
|
||||||
|
red[0] = Gtk::manage (new Adjuster (imgIcon[0], -200, 200, 1, 100));
|
||||||
|
red[1] = Gtk::manage (new Adjuster (imgIcon[1], -200, 200, 1, 0));
|
||||||
|
red[2] = Gtk::manage (new Adjuster (imgIcon[2], -200, 200, 1, 0));
|
||||||
|
|
||||||
Gtk::HSeparator* rsep = Gtk::manage (new Gtk::HSeparator ());
|
Gtk::HSeparator* rsep = Gtk::manage (new Gtk::HSeparator ());
|
||||||
|
|
||||||
@@ -38,11 +51,13 @@ ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
|
|||||||
pack_start (*rsep);
|
pack_start (*rsep);
|
||||||
|
|
||||||
Gtk::Label* glabel = Gtk::manage (new Gtk::Label ());
|
Gtk::Label* glabel = Gtk::manage (new Gtk::Label ());
|
||||||
glabel->set_markup (Glib::ustring("<span foreground=\"darkgreen\"><b>") + M("TP_CHMIXER_GREEN") + Glib::ustring(":</b></span>"));
|
glabel->set_markup (Glib::ustring("\t<span foreground=\"#0b8c21\"><b>") + M("TP_CHMIXER_GREEN") + Glib::ustring(":</b></span>"));
|
||||||
|
glabel->set_alignment(Gtk::ALIGN_LEFT);
|
||||||
|
|
||||||
green[0] = Gtk::manage (new Adjuster (M("TP_CHMIXER_RED"), -200, 200, 1, 0));
|
|
||||||
green[1] = Gtk::manage (new Adjuster (M("TP_CHMIXER_GREEN"), -200, 200, 1, 100));
|
green[0] = Gtk::manage (new Adjuster (imgIcon[3], -200, 200, 1, 0));
|
||||||
green[2] = Gtk::manage (new Adjuster (M("TP_CHMIXER_BLUE"), -200, 200, 1, 0));
|
green[1] = Gtk::manage (new Adjuster (imgIcon[4], -200, 200, 1, 100));
|
||||||
|
green[2] = Gtk::manage (new Adjuster (imgIcon[5], -200, 200, 1, 0));
|
||||||
|
|
||||||
Gtk::HSeparator* gsep = Gtk::manage (new Gtk::HSeparator ());
|
Gtk::HSeparator* gsep = Gtk::manage (new Gtk::HSeparator ());
|
||||||
|
|
||||||
@@ -52,11 +67,11 @@ ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
|
|||||||
pack_start (*gsep);
|
pack_start (*gsep);
|
||||||
|
|
||||||
Gtk::Label* blabel = Gtk::manage (new Gtk::Label ());
|
Gtk::Label* blabel = Gtk::manage (new Gtk::Label ());
|
||||||
blabel->set_markup (Glib::ustring("<span foreground=\"blue\"><b>") + M("TP_CHMIXER_BLUE") + Glib::ustring(":</b></span>"));
|
blabel->set_markup (Glib::ustring("\t<span foreground=\"#1377d7\"><b>") + M("TP_CHMIXER_BLUE") + Glib::ustring(":</b></span>"));
|
||||||
|
blabel->set_alignment(Gtk::ALIGN_LEFT);
|
||||||
blue[0] = Gtk::manage (new Adjuster (M("TP_CHMIXER_RED"), -200, 200, 1, 0));
|
blue[0] = Gtk::manage (new Adjuster (imgIcon[6], -200, 200, 1, 0));
|
||||||
blue[1] = Gtk::manage (new Adjuster (M("TP_CHMIXER_GREEN"), -200, 200, 1, 0));
|
blue[1] = Gtk::manage (new Adjuster (imgIcon[7], -200, 200, 1, 0));
|
||||||
blue[2] = Gtk::manage (new Adjuster (M("TP_CHMIXER_BLUE"), -200, 200, 1, 100));
|
blue[2] = Gtk::manage (new Adjuster (imgIcon[8], -200, 200, 1, 100));
|
||||||
|
|
||||||
for (int i=0; i<3; i++) {
|
for (int i=0; i<3; i++) {
|
||||||
red[i]->setAdjusterListener (this);
|
red[i]->setAdjusterListener (this);
|
||||||
|
@@ -29,6 +29,7 @@ class ChMixer : public Gtk::VBox, public AdjusterListener, public FoldableToolPa
|
|||||||
Adjuster *red[3];
|
Adjuster *red[3];
|
||||||
Adjuster *green[3];
|
Adjuster *green[3];
|
||||||
Adjuster *blue[3];
|
Adjuster *blue[3];
|
||||||
|
Gtk::Image *imgIcon[9];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|