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_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
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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("<span foreground=\"red\"><b>") + M("TP_CHMIXER_RED") + Glib::ustring(":</b></span>"));
|
||||
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<span foreground=\"#b00000\"><b>") + M("TP_CHMIXER_RED") + Glib::ustring(":</b></span>"));
|
||||
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("<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[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("<span foreground=\"blue\"><b>") + M("TP_CHMIXER_BLUE") + Glib::ustring(":</b></span>"));
|
||||
|
||||
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<span foreground=\"#1377d7\"><b>") + M("TP_CHMIXER_BLUE") + Glib::ustring(":</b></span>"));
|
||||
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);
|
||||
|
@@ -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:
|
||||
|
||||
|