rawTherapee/rtgui/zoompanel.cc
Hombre 965cadb52e New batch of update for issue 3446
This commit include :
- cleanup rtgui/retinex.cc file (constructor only) and switched to
Gtk::Grid (the new standard) instead of Gtk::Box. This however doesn't
solve the issue of the Transmission curves in the Retinex tool, with
wrong resize of the Frame when folding/unfolding the curves.
- better alignment of the Histogram panel now with 4px of padding on the
left and right side
- Threshold selector now use the Scale's Trough style to draw its box
and sliders
- Curve's background are darker and restricted to the curve diagram
- Diagonal and Flat curves has been converted to Gtk::Grid as well
- A special color is now used for unsensitive Threshold selector and
Sclaes widgets
- Gap around the main Window has been removed on windows to circumvent a
bug in Gtk3, but the window can now only be maximized (usual use case)
or resized vertically by the top border only.
- Buttons at the bottom of the Editor panel has now the same height
2016-11-01 20:39:41 +01:00

156 lines
5.3 KiB
C++

/*
* This file is part of RawTherapee.
*
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
*
* RawTherapee is free software: you can redistribute it and/or modify
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
*/
#include "zoompanel.h"
#include "multilangmgr.h"
#include "imagearea.h"
#include "rtimage.h"
ZoomPanel::ZoomPanel (ImageArea* iarea) : iarea(iarea)
{
set_name ("EditorZoomPanel");
Gtk::Image* imageOut = Gtk::manage (new RTImage ("gtk-zoom-out.png"));
imageOut->set_padding(0, 0);
Gtk::Image* imageIn = Gtk::manage (new RTImage ("gtk-zoom-in.png"));
imageIn->set_padding(0, 0);
Gtk::Image* image11 = Gtk::manage ( new RTImage ("gtk-zoom-100.png"));
image11->set_padding(0, 0);
Gtk::Image* imageFit = Gtk::manage (new RTImage ("gtk-zoom-fit.png"));
imageFit->set_padding(0, 0);
Gtk::Image* imageFitCrop = Gtk::manage (new RTImage ("gtk-zoom-crop.png"));
imageFit->set_padding(0, 0);
zoomOut = Gtk::manage (new Gtk::Button());
zoomOut->add (*imageOut);
zoomOut->set_relief(Gtk::RELIEF_NONE);
setExpandAlignProperties(zoomOut, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
zoomIn = Gtk::manage (new Gtk::Button());
zoomIn->add (*imageIn);
zoomIn->set_relief(Gtk::RELIEF_NONE);
setExpandAlignProperties(zoomIn, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
zoomFit = Gtk::manage (new Gtk::Button());
zoomFit->add (*imageFit);
zoomFit->set_relief(Gtk::RELIEF_NONE);
setExpandAlignProperties(zoomFit, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
zoomFitCrop = Gtk::manage (new Gtk::Button());
zoomFitCrop->add (*imageFitCrop);
zoomFitCrop->set_relief(Gtk::RELIEF_NONE);
setExpandAlignProperties(zoomFitCrop, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
zoom11 = Gtk::manage (new Gtk::Button());
zoom11->add (*image11);
zoom11->set_relief(Gtk::RELIEF_NONE);
setExpandAlignProperties(zoom11, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
attach_next_to (*zoomOut, Gtk::POS_RIGHT, 1, 1);
attach_next_to (*zoomIn, Gtk::POS_RIGHT, 1, 1);
attach_next_to (*zoomFit, Gtk::POS_RIGHT, 1, 1);
attach_next_to (*zoomFitCrop, Gtk::POS_RIGHT, 1, 1);
attach_next_to (*zoom11, Gtk::POS_RIGHT, 1, 1);
zoomLabel = Gtk::manage (new Gtk::Label ());
setExpandAlignProperties(zoomLabel, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
attach_next_to (*zoomLabel, Gtk::POS_RIGHT, 1, 1);
Gtk::Image* imageCrop = Gtk::manage (new RTImage ("new-detail-window.png"));
imageCrop->set_padding(0, 0);
newCrop = Gtk::manage (new Gtk::Button());
newCrop->add (*imageCrop);
newCrop->set_relief(Gtk::RELIEF_NONE);
setExpandAlignProperties(newCrop, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
attach_next_to (*newCrop, Gtk::POS_RIGHT, 1, 1);
show_all_children ();
zoomIn->signal_clicked().connect ( sigc::mem_fun(*this, &ZoomPanel::zoomInClicked) );
zoomOut->signal_clicked().connect( sigc::mem_fun(*this, &ZoomPanel::zoomOutClicked) );
zoomFit->signal_clicked().connect( sigc::mem_fun(*this, &ZoomPanel::zoomFitClicked) );
zoomFitCrop->signal_clicked().connect( sigc::mem_fun(*this, &ZoomPanel::zoomFitCropClicked) );
zoom11->signal_clicked().connect ( sigc::mem_fun(*this, &ZoomPanel::zoom11Clicked) );
newCrop->signal_clicked().connect ( sigc::mem_fun(*this, &ZoomPanel::newCropClicked) );
zoomIn->set_tooltip_markup (M("ZOOMPANEL_ZOOMIN"));
zoomOut->set_tooltip_markup (M("ZOOMPANEL_ZOOMOUT"));
zoom11->set_tooltip_markup (M("ZOOMPANEL_ZOOM100"));
zoomFit->set_tooltip_markup (M("ZOOMPANEL_ZOOMFITSCREEN"));
zoomFitCrop->set_tooltip_markup (M("ZOOMPANEL_ZOOMFITCROPSCREEN"));
newCrop->set_tooltip_markup (M("ZOOMPANEL_NEWCROPWINDOW"));
zoomLabel->set_text (M("ZOOMPANEL_100"));
}
void ZoomPanel::zoomInClicked ()
{
if (iarea->mainCropWindow) {
iarea->mainCropWindow->zoomIn ();
}
}
void ZoomPanel::zoomOutClicked ()
{
if (iarea->mainCropWindow) {
iarea->mainCropWindow->zoomOut ();
}
}
void ZoomPanel::zoomFitClicked ()
{
if (iarea->mainCropWindow) {
iarea->mainCropWindow->zoomFit ();
}
}
void ZoomPanel::zoomFitCropClicked ()
{
if (iarea->mainCropWindow) {
iarea->mainCropWindow->zoomFitCrop ();
}
}
void ZoomPanel::zoom11Clicked ()
{
if (iarea->mainCropWindow) {
iarea->mainCropWindow->zoom11 ();
}
}
void ZoomPanel::refreshZoomLabel ()
{
if (iarea->mainCropWindow) {
int z = (int)(iarea->mainCropWindow->getZoom () * 100);
if (z < 100) {
zoomLabel->set_text (Glib::ustring::compose(" %1%%", z));
} else {
zoomLabel->set_text (Glib::ustring::compose("%1%%", z));
}
}
}
void ZoomPanel::newCropClicked ()
{
iarea->addCropWindow ();
}