diff --git a/rtdata/images/Chanmixer_BB.png b/rtdata/images/Chanmixer_BB.png
new file mode 100644
index 000000000..269dc7d33
Binary files /dev/null and b/rtdata/images/Chanmixer_BB.png differ
diff --git a/rtdata/images/Chanmixer_BG.png b/rtdata/images/Chanmixer_BG.png
new file mode 100644
index 000000000..9ab910f49
Binary files /dev/null and b/rtdata/images/Chanmixer_BG.png differ
diff --git a/rtdata/images/Chanmixer_BR.png b/rtdata/images/Chanmixer_BR.png
new file mode 100644
index 000000000..9453847af
Binary files /dev/null and b/rtdata/images/Chanmixer_BR.png differ
diff --git a/rtdata/images/Chanmixer_GB.png b/rtdata/images/Chanmixer_GB.png
new file mode 100644
index 000000000..759461f59
Binary files /dev/null and b/rtdata/images/Chanmixer_GB.png differ
diff --git a/rtdata/images/Chanmixer_GG.png b/rtdata/images/Chanmixer_GG.png
new file mode 100644
index 000000000..b4b2a7deb
Binary files /dev/null and b/rtdata/images/Chanmixer_GG.png differ
diff --git a/rtdata/images/Chanmixer_GR.png b/rtdata/images/Chanmixer_GR.png
new file mode 100644
index 000000000..32e17f4cc
Binary files /dev/null and b/rtdata/images/Chanmixer_GR.png differ
diff --git a/rtdata/images/Chanmixer_RB.png b/rtdata/images/Chanmixer_RB.png
new file mode 100644
index 000000000..65c2be1ac
Binary files /dev/null and b/rtdata/images/Chanmixer_RB.png differ
diff --git a/rtdata/images/Chanmixer_RG.png b/rtdata/images/Chanmixer_RG.png
new file mode 100644
index 000000000..d00e8ba65
Binary files /dev/null and b/rtdata/images/Chanmixer_RG.png differ
diff --git a/rtdata/images/Chanmixer_RR.png b/rtdata/images/Chanmixer_RR.png
new file mode 100644
index 000000000..3e9a3aa7a
Binary files /dev/null and b/rtdata/images/Chanmixer_RR.png differ
diff --git a/rtdata/languages/default b/rtdata/languages/default
index 92f2b412c..544d816f9 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -735,10 +735,10 @@ TOOLBAR_TOOLTIP_WB;Spot white balance W
TP_CACORRECTION_BLUE;Blue
TP_CACORRECTION_LABEL;C/A Correction
TP_CACORRECTION_RED;Red
-TP_CHMIXER_BLUE;Blue
-TP_CHMIXER_GREEN;Green
+TP_CHMIXER_BLUE;Blue channel
+TP_CHMIXER_GREEN;Green channel
TP_CHMIXER_LABEL;Channel Mixer
-TP_CHMIXER_RED;Red
+TP_CHMIXER_RED;Red channel
TP_CHROMATABERR_LABEL;Chromatic Aberration
TP_SHARPENEDGE_AMOUNT;Quantity
TP_SHARPENEDGE_LABEL;Edges
diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc
index 8c25782e6..403a1e624 100644
--- a/rtgui/adjuster.cc
+++ b/rtgui/adjuster.cc
@@ -91,6 +91,71 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep
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 () {
sliderChange.block (true);
diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h
index af2a10561..e37b14997 100644
--- a/rtgui/adjuster.h
+++ b/rtgui/adjuster.h
@@ -66,6 +66,7 @@ class Adjuster : public Gtk::VBox {
int delay;
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 ();
void setAdjusterListener (AdjusterListener* alistener);
diff --git a/rtgui/chmixer.cc b/rtgui/chmixer.cc
index 44d7fe2f3..96102a501 100644
--- a/rtgui/chmixer.cc
+++ b/rtgui/chmixer.cc
@@ -21,14 +21,27 @@
using namespace rtengine;
using namespace rtengine::procparams;
+extern Glib::ustring argv0;
+
ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
- Gtk::Label* rlabel = Gtk::manage (new Gtk::Label ());
- rlabel->set_markup (Glib::ustring("") + M("TP_CHMIXER_RED") + Glib::ustring(":"));
+ imgIcon[0] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RR.png"));
+ 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));
- red[1] = Gtk::manage (new Adjuster (M("TP_CHMIXER_GREEN"), -200, 200, 1, 0));
- red[2] = Gtk::manage (new Adjuster (M("TP_CHMIXER_BLUE"), -200, 200, 1, 0));
+ Gtk::Label* rlabel = Gtk::manage (new Gtk::Label ());
+ rlabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_RED") + Glib::ustring(":"));
+ 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 ());
@@ -38,11 +51,13 @@ ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
pack_start (*rsep);
Gtk::Label* glabel = Gtk::manage (new Gtk::Label ());
- glabel->set_markup (Glib::ustring("") + M("TP_CHMIXER_GREEN") + Glib::ustring(":"));
+ glabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_GREEN") + Glib::ustring(":"));
+ 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[2] = Gtk::manage (new Adjuster (M("TP_CHMIXER_BLUE"), -200, 200, 1, 0));
+
+ green[0] = Gtk::manage (new Adjuster (imgIcon[3], -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 ());
@@ -52,11 +67,11 @@ ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) {
pack_start (*gsep);
Gtk::Label* blabel = Gtk::manage (new Gtk::Label ());
- blabel->set_markup (Glib::ustring("") + M("TP_CHMIXER_BLUE") + Glib::ustring(":"));
-
- blue[0] = Gtk::manage (new Adjuster (M("TP_CHMIXER_RED"), -200, 200, 1, 0));
- blue[1] = Gtk::manage (new Adjuster (M("TP_CHMIXER_GREEN"), -200, 200, 1, 0));
- blue[2] = Gtk::manage (new Adjuster (M("TP_CHMIXER_BLUE"), -200, 200, 1, 100));
+ blabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_BLUE") + Glib::ustring(":"));
+ blabel->set_alignment(Gtk::ALIGN_LEFT);
+ blue[0] = Gtk::manage (new Adjuster (imgIcon[6], -200, 200, 1, 0));
+ blue[1] = Gtk::manage (new Adjuster (imgIcon[7], -200, 200, 1, 0));
+ blue[2] = Gtk::manage (new Adjuster (imgIcon[8], -200, 200, 1, 100));
for (int i=0; i<3; i++) {
red[i]->setAdjusterListener (this);
diff --git a/rtgui/chmixer.h b/rtgui/chmixer.h
index cbae1ea73..f5dbc259b 100644
--- a/rtgui/chmixer.h
+++ b/rtgui/chmixer.h
@@ -29,6 +29,7 @@ class ChMixer : public Gtk::VBox, public AdjusterListener, public FoldableToolPa
Adjuster *red[3];
Adjuster *green[3];
Adjuster *blue[3];
+ Gtk::Image *imgIcon[9];
public: