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: