Enhancement to Channel Mixer UI on behalf of Philippe goo...@hupe.me; (issue 958)

This commit is contained in:
Michael Ezra
2011-09-04 17:27:25 -04:00
parent cf12b711bf
commit 249d372531
14 changed files with 99 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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: