Clear crop with c+click, issue 392

This commit is contained in:
DrSlony
2014-03-14 19:49:24 +01:00
parent 3101f299a7
commit 52dc794af2

View File

@@ -7,7 +7,7 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* RawTherapee is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -74,12 +74,12 @@ Crop::Crop (): Gtk::VBox(), FoldableToolPanel(this) {
h = Gtk::manage (new MySpinButton ());
h->set_size_request (60, -1);
hb2->pack_start (*h);
pack_start (*hb2, Gtk::PACK_SHRINK, 4);
selectCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_SELECTCROP")));
selectCrop->set_image (*Gtk::manage (new RTImage ("crop.png")));
pack_start (*selectCrop, Gtk::PACK_SHRINK, 2);
Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ());
@@ -104,7 +104,7 @@ Crop::Crop (): Gtk::VBox(), FoldableToolPanel(this) {
hb31->pack_start (*guide);
pack_start (*hb31, Gtk::PACK_SHRINK, 4);
// ppibox START
ppibox = Gtk::manage (new Gtk::VBox());
ppibox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 2);
@@ -125,13 +125,13 @@ Crop::Crop (): Gtk::VBox(), FoldableToolPanel(this) {
sizebox->pack_start (*sizein, Gtk::PACK_SHRINK, 4);
sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6);
sizebox->pack_start (*hb4, Gtk::PACK_SHRINK, 2);
ppibox->pack_start (*sizebox, Gtk::PACK_SHRINK, 1);
pack_start (*ppibox, Gtk::PACK_SHRINK, 0);
ppi->set_value (300);
// ppibox END
/****************
* Crop Ratio
*****************/
@@ -166,7 +166,7 @@ Crop::Crop (): Gtk::VBox(), FoldableToolPanel(this) {
cropratio[25].label = "45:35 - ePassport"; cropratio[25].value = 45.0/35.0;
// populate the combobox
for (int i=0; i<NumberOfCropRatios; i++) {
ratio->append_text (cropratio[i].label);
@@ -250,7 +250,7 @@ void Crop::readOptions () {
void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) {
disableListener ();
xconn.block (true);
yconn.block (true);
wconn.block (true);
@@ -277,7 +277,7 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) {
orientation->set_active (0);
else if (pp->crop.orientation == "Portrait")
orientation->set_active (1);
if (pp->crop.guide == "None")
guide->set_active (0);
else if (pp->crop.guide == "Rule of thirds")
@@ -308,7 +308,7 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) {
ny = pp->crop.y;
nw = pp->crop.w;
nh = pp->crop.h;
lastRotationDeg = pp->coarse.rotate;
wDirty = false;
@@ -440,8 +440,19 @@ void Crop::selectPressed () {
void Crop::notifyListener () {
if (listener && enabled->get_active ())
listener->panelChanged (EvCrop, Glib::ustring::compose ("%1=%2, %3=%4\n%5=%6, %7=%8", M("TP_CROP_X"), nx, M("TP_CROP_Y"), ny, M("TP_CROP_W"), nw, M("TP_CROP_H"), nh));
if (listener && enabled->get_active ())
if (nw == 1 && nh == 1) {
econn.block (true);
enabled->set_active (false);
econn.block (false);
nx = (int)x->get_value ();
ny = (int)x->get_value ();
nw = (int)w->get_value ();
nh = (int)h->get_value ();
listener->panelChanged (EvCrop, M("GENERAL_DISABLED"));
}
else
listener->panelChanged (EvCrop, Glib::ustring::compose ("%1=%2, %3=%4\n%5=%6, %7=%8", M("TP_CROP_X"), nx, M("TP_CROP_Y"), ny, M("TP_CROP_W"), nw, M("TP_CROP_H"), nh));
}
void Crop::enabledChanged () {
@@ -591,7 +602,7 @@ void Crop::ratioChanged () {
// Correct current crop if it doesn't fit
void Crop::adjustCropToRatio() {
if (fixr->get_active() && !fixr->get_inconsistent()) {
// int W = w->get_value ();
// int H = h->get_value ();
int W = nw;
@@ -940,12 +951,10 @@ void Crop::cropInit (int &x, int &y, int &w, int &h) {
nh = 1;
w = 1; h = 1;
econn.block (true);
enabled->set_active (1);
econn.block (false);
g_idle_add (refreshSpinsUI, new RefreshSpinHelper (this, false));
// Glib::signal_idle().connect (sigc::mem_fun(*this, &Crop::refreshSpins));
}
void Crop::cropResized (int &x, int &y, int& x2, int& y2) {
@@ -989,21 +998,21 @@ void Crop::cropResized (int &x, int &y, int& x2, int& y2) {
if (y<=y2) {
int W2max = (int)round ((maxh-Y) * r);
if (W>W2max)
W = W2max;
W = W2max;
}
else {
int W2max = (int)round (y * r);
if (W>W2max)
W = W2max;
W = W2max;
}
H = (int)round(W / r);
if (x<x2)
x2 = x + W - 1;
else
else
x2 = x - W + 1;
if (y<y2)
if (y<y2)
y2 = y + H - 1;
else
else
y2 = y - H + 1;
}