diff --git a/rtdata/images/Dark/actions/previewmodeBC1-off.png b/rtdata/images/Dark/actions/previewmodeBC1-off.png index d5071108a..d10a7e506 100644 Binary files a/rtdata/images/Dark/actions/previewmodeBC1-off.png and b/rtdata/images/Dark/actions/previewmodeBC1-off.png differ diff --git a/rtdata/images/Dark/actions/previewmodeBC1-on.png b/rtdata/images/Dark/actions/previewmodeBC1-on.png index f71b27965..014627cbe 100644 Binary files a/rtdata/images/Dark/actions/previewmodeBC1-on.png and b/rtdata/images/Dark/actions/previewmodeBC1-on.png differ diff --git a/rtdata/images/Dark/actions/previewmodeBC2-off.png b/rtdata/images/Dark/actions/previewmodeBC2-off.png index 5c9b2d0e8..bd3862a0e 100644 Binary files a/rtdata/images/Dark/actions/previewmodeBC2-off.png and b/rtdata/images/Dark/actions/previewmodeBC2-off.png differ diff --git a/rtdata/images/Dark/actions/previewmodeBC2-on.png b/rtdata/images/Dark/actions/previewmodeBC2-on.png index 8f5b9207e..31630af59 100644 Binary files a/rtdata/images/Dark/actions/previewmodeBC2-on.png and b/rtdata/images/Dark/actions/previewmodeBC2-on.png differ diff --git a/rtdata/images/Dark/actions/previewmodeBC3-off.png b/rtdata/images/Dark/actions/previewmodeBC3-off.png new file mode 100644 index 000000000..87923e02f Binary files /dev/null and b/rtdata/images/Dark/actions/previewmodeBC3-off.png differ diff --git a/rtdata/images/Dark/actions/previewmodeBC3-on.png b/rtdata/images/Dark/actions/previewmodeBC3-on.png new file mode 100644 index 000000000..ef36664d6 Binary files /dev/null and b/rtdata/images/Dark/actions/previewmodeBC3-on.png differ diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 8af0541fe..5ae65691e 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1324,6 +1324,8 @@ void CropWindow::expose (Cairo::RefPtr cr) cr->set_source_rgb (0, 0, 0); } else if (backColor == 2) { cr->set_source_rgb (1, 1, 1); + } else if (backColor == 3) { + cr->set_source_rgb (0.467, 0.467, 0.467); } cr->set_line_width (0.); diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 989ff2758..a72889404 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -247,9 +247,10 @@ void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int cr->set_source_rgb (0, 0, 0); } else if (options.bgcolor == 2) { cr->set_source_rgb (1, 1, 1); + } else if (options.bgcolor == 3) { + cr->set_source_rgb (0.467, 0.467, 0.467); } - cr->rectangle (imx, imy, imw + 0.5, round(c1y) + 0.5); cr->rectangle (imx, round(imy + c2y) + 0.5, imw + 0.5, round(imh - c2y) + 0.5); cr->rectangle (imx, round(imy + c1y) + 0.5, round(c1x) + 0.5, round(c2y - c1y + 1) + 0.5); diff --git a/rtgui/previewmodepanel.cc b/rtgui/previewmodepanel.cc index 50beb8b66..fe7957ce8 100644 --- a/rtgui/previewmodepanel.cc +++ b/rtgui/previewmodepanel.cc @@ -32,6 +32,7 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia) iBC0 = new RTImage ("previewmodeBC0-on.png"); iBC1 = new RTImage ("previewmodeBC1-on.png"); iBC2 = new RTImage ("previewmodeBC2-on.png"); + iBC3 = new RTImage ("previewmodeBC3-on.png"); igR = new RTImage ("previewmodeR-off.png"); igG = new RTImage ("previewmodeG-off.png"); @@ -41,6 +42,7 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia) igBC0 = new RTImage ("previewmodeBC0-off.png"); igBC1 = new RTImage ("previewmodeBC1-off.png"); igBC2 = new RTImage ("previewmodeBC2-off.png"); + igBC3 = new RTImage ("previewmodeBC3-off.png"); backColor0 = Gtk::manage (new Gtk::ToggleButton ()); backColor0->set_relief(Gtk::RELIEF_NONE); @@ -52,6 +54,11 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia) backColor1->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR1")); backColor1->set_image(options.bgcolor == 1 ? *iBC1 : *igBC1); + backColor3 = Gtk::manage (new Gtk::ToggleButton ()); + backColor3->set_relief(Gtk::RELIEF_NONE); + backColor3->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR3")); + backColor3->set_image(options.bgcolor == 2 ? *iBC3 : *igBC3); + backColor2 = Gtk::manage (new Gtk::ToggleButton ()); backColor2->set_relief(Gtk::RELIEF_NONE); backColor2->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR2")); @@ -91,11 +98,13 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia) backColor0->set_active (options.bgcolor == 0); backColor1->set_active (options.bgcolor == 1); backColor2->set_active (options.bgcolor == 2); + backColor3->set_active (options.bgcolor == 3); vbbackColor = Gtk::manage (new Gtk::VBox ()); vbbackColor->pack_start (*backColor0, Gtk::PACK_SHRINK, 0); vbbackColor->pack_start (*backColor1, Gtk::PACK_SHRINK, 0); vbbackColor->pack_start (*backColor2, Gtk::PACK_SHRINK, 0); + vbbackColor->pack_start (*backColor3, Gtk::PACK_SHRINK, 0); pack_start (*vbbackColor, Gtk::PACK_SHRINK, 0); pack_start (*previewR, Gtk::PACK_SHRINK, 0); @@ -113,6 +122,7 @@ PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia) connbackColor0 = backColor0->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor0) ); connbackColor1 = backColor1->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor1) ); connbackColor2 = backColor2->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor2) ); + connbackColor3 = backColor3->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &PreviewModePanel::buttonToggled_backColor), backColor3) ); //show_all (); } @@ -127,6 +137,7 @@ PreviewModePanel::~PreviewModePanel () delete iBC0; delete iBC1; delete iBC2; + delete iBC3; delete igR; delete igG; delete igB; @@ -135,6 +146,7 @@ PreviewModePanel::~PreviewModePanel () delete igBC0; delete igBC1; delete igBC2; + delete igBC3; } //toggle Functions below are for shortcuts void PreviewModePanel::toggleR () @@ -170,6 +182,10 @@ void PreviewModePanel::togglebackColor2 () { backColor2->set_active(!backColor2->get_active()); } +void PreviewModePanel::togglebackColor3 () +{ + backColor3->set_active(!backColor3->get_active()); +} void PreviewModePanel::buttonToggled (Gtk::ToggleButton* tbpreview) { @@ -240,6 +256,10 @@ int PreviewModePanel::GetbackColor() backColor = 2; } + if (backColor3->get_active ()) { + backColor = 3; + } + return backColor; } @@ -250,6 +270,8 @@ void PreviewModePanel::togglebackColor() if(backColor == 0) { togglebackColor1(); } else if(backColor == 1) { + togglebackColor3(); + } else if(backColor == 3) { togglebackColor2(); } else { togglebackColor0(); @@ -262,6 +284,7 @@ void PreviewModePanel::buttonToggled_backColor (Gtk::ToggleButton* tbbackColor) connbackColor0.block(true); connbackColor1.block(true); connbackColor2.block(true); + connbackColor3.block(true); // control the state of the buttons // Exactly 1 button at a time must remain pressed @@ -277,6 +300,10 @@ void PreviewModePanel::buttonToggled_backColor (Gtk::ToggleButton* tbbackColor) backColor2->set_active(true); } + if (tbbackColor == backColor3 && !backColor3->get_active()) { + backColor3->set_active(true); + } + if (tbbackColor != backColor0) { backColor0->set_active(false); } @@ -289,14 +316,20 @@ void PreviewModePanel::buttonToggled_backColor (Gtk::ToggleButton* tbbackColor) backColor2->set_active(false); } + if (tbbackColor != backColor3) { + backColor3->set_active(false); + } + // set image based on button's state backColor0->set_image(backColor0->get_active() ? *iBC0 : *igBC0); backColor1->set_image(backColor1->get_active() ? *iBC1 : *igBC1); backColor2->set_image(backColor2->get_active() ? *iBC2 : *igBC2); + backColor3->set_image(backColor3->get_active() ? *iBC3 : *igBC3); connbackColor0.block(false); connbackColor1.block(false); connbackColor2.block(false); + connbackColor3.block(false); //TODO not sure if queue_draw is necessary, but will need to reach to backColor of the Before view imageArea->queue_draw (); diff --git a/rtgui/previewmodepanel.h b/rtgui/previewmodepanel.h index d3bf3c8e4..83ec69d96 100644 --- a/rtgui/previewmodepanel.h +++ b/rtgui/previewmodepanel.h @@ -34,6 +34,7 @@ protected: Gtk::ToggleButton* backColor0; Gtk::ToggleButton* backColor1; Gtk::ToggleButton* backColor2; + Gtk::ToggleButton* backColor3; Gtk::VBox* vbbackColor; ImageArea* imageArea; @@ -45,6 +46,7 @@ protected: Gtk::Image* iBC0, *igBC0; Gtk::Image* iBC1, *igBC1; Gtk::Image* iBC2, *igBC2; + Gtk::Image* iBC3, *igBC3; public: explicit PreviewModePanel (ImageArea* ia); @@ -58,9 +60,10 @@ public: void togglebackColor0(); void togglebackColor1(); void togglebackColor2(); + void togglebackColor3(); void togglebackColor(); - sigc::connection connR, connB, connG, connL, connFocusMask, connbackColor0, connbackColor1, connbackColor2; + sigc::connection connR, connB, connG, connL, connFocusMask, connbackColor0, connbackColor1, connbackColor2, connbackColor3; void buttonToggled(Gtk::ToggleButton* tbpreview); void buttonToggled_backColor(Gtk::ToggleButton* tbbackColor);