Changes to Detail Window and Preferences Dialog, Issue 2376 comment #9 and #11

This commit is contained in:
Ingo
2014-05-17 16:56:09 +02:00
parent 51151bc210
commit 71a2e5c079
6 changed files with 80 additions and 94 deletions

View File

@@ -36,7 +36,6 @@ ImageArea::ImageArea (ImageAreaPanel* p) : parent(p) {
flawnOverWindow = NULL;
mainCropWindow = NULL;
previewHandler = NULL;
lastClosedX = -1;
showClippedH = false;
showClippedS = false;
listener = NULL;
@@ -106,10 +105,6 @@ void ImageArea::setImProcCoordinator (rtengine::StagedImageProcessor* ipc_) {
if( !ipc_ ){
focusGrabber = NULL;
std::list<CropWindow*>::iterator i = cropWins.begin();
if( i!=cropWins.end() ){
(*i)->getPosition (lastClosedX, lastClosedY);
(*i)->getSize (lastClosedW, lastClosedH);
}
for( ;i!=cropWins.end();i++ ){
delete *i;
}
@@ -350,7 +345,8 @@ void ImageArea::unGrabFocus () {
}
void ImageArea::addCropWindow () {
if (!mainCropWindow) return; // if called but no image is loaded, it would crash
if (!mainCropWindow)
return; // if called but no image is loaded, it would crash
CropWindow* cw = new CropWindow (this, ipc, true);
cw->zoom11();
@@ -359,60 +355,65 @@ void ImageArea::addCropWindow () {
cw->setPointerMotionHListener (pmhlistener);
int lastWidth = options.detailWindowWidth;
int lastHeight = options.detailWindowHeight;
if (lastWidth<lastHeight)
lastHeight=lastWidth;
if (lastHeight<lastWidth)
lastWidth=lastHeight;
if(!cropWins.empty()) {
CropWindow *lastCrop;
lastCrop = cropWins.front();
if(lastCrop)
lastCrop->getSize(lastWidth,lastHeight);
}
cropWins.push_front (cw);
// Position the new crop window in a checkerboard, or used the last position
if (lastClosedX<0) {
int K = 2;
int hBorder = get_width()/K/8;
int vBorder = get_height()/K/8;
int N = cropWins.size()-1;
int layer = N/K/K;
int row = K-1 - (N % (K*K)) / K;
int col = K-1 - (N % (K*K)) % K;
int cropwidth, cropheight;
if(lastWidth == -1) {
cropwidth = get_width()/K - hBorder;
cropheight = get_height()/K - vBorder;
} else {
cropwidth = lastWidth;
cropheight = lastHeight;
}
// Position the new crop window this way: start from top right going down to bottom. When bottom is reached, continue top left going down......
int N = cropWins.size()-1;
int cropwidth, cropheight;
if(lastWidth <= 0) { // this is only the case for very first start of RT 4.1 or when options file is deleted
cropwidth = 200;
cropheight = 200;
} else {
cropwidth = lastWidth;
cropheight = lastHeight;
}
if (options.squareDetailWindow){
// force square CropWindow (this is faster as area is smaller)
if (cropwidth<cropheight) cropheight=cropwidth;
if (cropheight<cropwidth) cropwidth=cropheight;
}
cw->setSize (cropwidth,cropheight);
int x,y;
int maxRows = get_height()/cropheight;
if(maxRows == 0)
maxRows = 1;
cw->setSize (cropwidth,cropheight);
cw->setPosition (col*get_width()/K + hBorder/2 + layer*30, row*get_height()/K + vBorder/2 + layer*30);
}
else {
cw->setSize(lastClosedW, lastClosedH);
cw->setPosition (lastClosedX, lastClosedY);
lastClosedX = -1;
}
int col = N / maxRows;
if(col % 2) { // from left side
col = col/2;
x = col*cropwidth;
if(x >= get_width() - 50)
x = get_width() - 50;
}
else { // from right side
col /= 2;
col++;
x = get_width() - col * cropwidth;
if(x <= 0)
x = 0;
}
cw->enable(); // start processing!
y = cropheight * (N%maxRows);
cw->setPosition (x, y);
cw->enable(); // start processing!
int x0,y0,w,h,wc,hc;
mainCropWindow->getCropRectangle(x0,y0,w,h );
cw->getCropSize(wc,hc);
cw->setCropPosition(x0+w/2-wc/2,y0+h/2-hc/2);
mainCropWindow->setObservedCropWin (cropWins.front());
int x0,y0,w,h,wc,hc;
mainCropWindow->getCropRectangle(x0,y0,w,h );
cw->getCropSize(wc,hc);
cw->setCropPosition(x0+w/2-wc/2,y0+h/2-hc/2);
mainCropWindow->setObservedCropWin (cropWins.front());
if(cropWins.size()==1) // after first detail window we already have high quality
ipc->startProcessing(M_HIGHQUAL);
// queue_draw ();
}
@@ -428,8 +429,6 @@ void ImageArea::cropWindowSelected (CropWindow* cw) {
void ImageArea::cropWindowClosed (CropWindow* cw) {
focusGrabber = NULL;
cw->getPosition (lastClosedX, lastClosedY);
cw->getSize (lastClosedW, lastClosedH);
std::list<CropWindow*>::iterator i = std::find (cropWins.begin(), cropWins.end(), cw);
if (i!=cropWins.end())
cropWins.erase (i);

View File

@@ -51,8 +51,6 @@ class ImageArea : public Gtk::DrawingArea, public CropWindowListener, public Edi
PreviewHandler* previewHandler;
rtengine::StagedImageProcessor* ipc;
int lastClosedX, lastClosedY, lastClosedW, lastClosedH;
bool dirty;
CropWindow* focusGrabber;
CropGUIListener* cropgl;

View File

@@ -355,7 +355,6 @@ void Options::setDefaults () {
hideTPVScrollbar = false;
UseIconNoText = true;
whiteBalanceSpotSize = 8;
squareDetailWindow = true;
menuGroupRank = true;
menuGroupLabel = true;
menuGroupFileOperations = true;
@@ -739,7 +738,6 @@ if (keyFile.has_group ("GUI")) {
if (keyFile.has_key ("GUI", "HistogramBar")) histogramBar = keyFile.get_boolean ("GUI", "HistogramBar");
if (keyFile.has_key ("GUI", "HistogramFullMode")) histogramFullMode = keyFile.get_boolean ("GUI", "HistogramFullMode");
if (keyFile.has_key ("GUI", "ShowProfileSelector")) showProfileSelector = keyFile.get_boolean ("GUI", "ShowProfileSelector");
if (keyFile.has_key ("GUI", "SquareDetailWindow")) squareDetailWindow = keyFile.get_boolean ("GUI", "SquareDetailWindow");
if (keyFile.has_key ("GUI", "FileBrowserToolbarSingleRow")) FileBrowserToolbarSingleRow = keyFile.get_boolean ("GUI", "FileBrowserToolbarSingleRow");
if (keyFile.has_key ("GUI", "HideTPVScrollbar")) hideTPVScrollbar = keyFile.get_boolean ("GUI", "HideTPVScrollbar");
if (keyFile.has_key ("GUI", "UseIconNoText")) UseIconNoText = keyFile.get_boolean ("GUI", "UseIconNoText");
@@ -1031,7 +1029,6 @@ int Options::saveToFile (Glib::ustring fname) {
keyFile.set_boolean ("GUI", "HistogramBar", histogramBar);
keyFile.set_boolean ("GUI", "HistogramFullMode", histogramFullMode);
keyFile.set_boolean ("GUI", "ShowProfileSelector", showProfileSelector);
keyFile.set_boolean ("GUI", "SquareDetailWindow", squareDetailWindow);
keyFile.set_boolean ("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow);
keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar);
keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText);

View File

@@ -203,7 +203,6 @@ class Options {
bool histogramBar;
bool histogramFullMode;
bool showProfileSelector;
bool squareDetailWindow;
bool FileBrowserToolbarSingleRow;
bool hideTPVScrollbar;
bool UseIconNoText;

View File

@@ -27,7 +27,7 @@
#include <sstream>
#include "../rtengine/safegtk.h"
#include "rtimage.h"
extern Options options;
extern Glib::ustring argv0;
@@ -77,7 +77,6 @@ Preferences::Preferences (RTWindow *rtwindow) : rprofiles(NULL), iprofiles(NULL
buttonpanel->pack_start (*about, Gtk::PACK_SHRINK, 0);
buttonpanel->pack_end (*ok, Gtk::PACK_SHRINK, 0);
buttonpanel->pack_end (*cancel, Gtk::PACK_SHRINK, 0);
nb->append_page (*getGeneralPanel(), M("PREFERENCES_TAB_GENERAL"));
nb->append_page (*getProcParamsPanel(), M("PREFERENCES_TAB_IMPROC"));
nb->append_page (*getFileBrowserPanel(), M("PREFERENCES_TAB_BROWSER"));
@@ -604,13 +603,14 @@ Gtk::Widget* Preferences::getGeneralPanel () {
ckbHistogramWorking = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_HISTOGRAMWORKING")) );
ckbHistogramWorking->set_tooltip_markup (M("PREFERENCES_HISTOGRAM_TOOLTIP"));
hbworkflow2->pack_start (*ckbHistogramWorking, Gtk::PACK_SHRINK, 4);
ckbShowProfileSelector = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWPROFILESELECTOR")) );
hbworkflow2->pack_start (*ckbShowProfileSelector, Gtk::PACK_SHRINK, 4);
ckbSquareDetailWindow = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SQUAREDETAILWINDOW")) );
hbworkflow2->pack_start (*ckbSquareDetailWindow, Gtk::PACK_SHRINK, 4);
hbworkflow2->pack_start (*ckbHistogramWorking, Gtk::PACK_SHRINK, 4);
vbworkflow->pack_start (*hbworkflow2, Gtk::PACK_SHRINK, 4);
ckbShowProfileSelector = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWPROFILESELECTOR")) );
Gtk::HBox* hbworkflow2d5 = Gtk::manage( new Gtk::HBox () );
hbworkflow2d5->pack_start (*ckbShowProfileSelector, Gtk::PACK_SHRINK, 4);
vbworkflow->pack_start (*hbworkflow2d5, Gtk::PACK_SHRINK, 4);
Gtk::HBox* hbworkflow3 = Gtk::manage( new Gtk::HBox () );
ckbFileBrowserToolbarSingleRow = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_FILEBROWSERTOOLBARSINGLEROW")) );
@@ -676,13 +676,12 @@ Gtk::Widget* Preferences::getGeneralPanel () {
butNavGuideCol= Gtk::manage( new Gtk::ColorButton() );
butNavGuideCol->set_use_alpha(true);
slimUI = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SLIMUI")) );
hbUseSystemTheme->pack_start(*chUseSystemTheme, Gtk::PACK_SHRINK);
hbUseSystemTheme->pack_start (*useNextStart, Gtk::PACK_SHRINK, 0);
hbUseSystemTheme->pack_end (*butNavGuideCol, Gtk::PACK_SHRINK, 0);
hbUseSystemTheme->pack_end (*navGuideLabel, Gtk::PACK_SHRINK, 0);
hbUseSystemTheme->pack_end (*butCropCol, Gtk::PACK_SHRINK, 0);
hbUseSystemTheme->pack_end (*cutOverlayLabel, Gtk::PACK_SHRINK, 0);
vbftheme->pack_start(*hbUseSystemTheme, Gtk::PACK_SHRINK, 0);
hbUseSystemTheme->pack_end(*slimUI, Gtk::PACK_SHRINK, 0);
vbftheme->pack_start(*hbUseSystemTheme, Gtk::PACK_SHRINK, 0);
hbtheme = Gtk::manage( new Gtk::HBox () );
hbtheme->set_spacing (4);
@@ -706,9 +705,17 @@ Gtk::Widget* Preferences::getGeneralPanel () {
hbtheme->pack_start (*fontbutton);
vbftheme->pack_start(*hbtheme, Gtk::PACK_SHRINK, 0);
slimUI = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SLIMUI")) );
vbftheme->pack_start(*slimUI, Gtk::PACK_SHRINK, 0);
Gtk::HBox* hbcolorchooser = Gtk::manage( new Gtk::HBox () );
hbcolorchooser->set_spacing(4);
hbcolorchooser->pack_start (*cutOverlayLabel, Gtk::PACK_SHRINK, 0);
hbcolorchooser->pack_start (*butCropCol, Gtk::PACK_SHRINK, 0);
hbcolorchooser->pack_end (*butNavGuideCol, Gtk::PACK_SHRINK, 0);
hbcolorchooser->pack_end (*navGuideLabel, Gtk::PACK_SHRINK, 0);
vbftheme->pack_start(*hbcolorchooser, Gtk::PACK_SHRINK, 0);
ftheme->add (*vbftheme);
mvbsd->pack_start (*ftheme, Gtk::PACK_SHRINK, 0);
@@ -718,11 +725,9 @@ Gtk::Widget* Preferences::getGeneralPanel () {
hbcd->set_spacing(4);
Gtk::Frame* frl = Gtk::manage( new Gtk::Frame (M("PREFERENCES_CLIPPINGIND")));
blinkClipped = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_BLINKCLIPPED")) );
Gtk::VBox* vbrl = Gtk::manage( new Gtk::VBox () );
vbrl->set_border_width(4);
vbrl->set_spacing (4);
vbrl->pack_start (*blinkClipped, Gtk::PACK_SHRINK, 0);
Gtk::HBox* vbhl = Gtk::manage( new Gtk::HBox () );
vbhl->set_spacing(4);
@@ -755,21 +760,6 @@ Gtk::Widget* Preferences::getGeneralPanel () {
Gtk::VBox* dfpfvb = Gtk::manage( new Gtk::VBox () );
dfpfvb->set_spacing (4);
Gtk::Frame* fdf = Gtk::manage( new Gtk::Frame (M("PREFERENCES_DATEFORMATFRAME")) );
Gtk::HBox* hb6 = Gtk::manage( new Gtk::HBox () );
hb6->set_border_width (4);
hb6->set_spacing (4);
Gtk::Label* dflab = Gtk::manage( new Gtk::Label (M("PREFERENCES_DATEFORMAT")+":", Gtk::ALIGN_LEFT));
dateformat = Gtk::manage( new Gtk::Entry () );
dateformat->set_tooltip_markup (M("PREFERENCES_DATEFORMATHINT"));
dflab->set_tooltip_markup (M("PREFERENCES_DATEFORMATHINT"));
hb6->pack_start (*dflab, Gtk::PACK_SHRINK, 0);
hb6->pack_end (*dateformat, Gtk::PACK_SHRINK, 0);
fdf->add (*hb6);
dfpfvb->pack_start (*fdf, true, true, 0);
//-----
Gtk::Frame* pff = Gtk::manage( new Gtk::Frame (M("PREFERENCES_PANFACTORFRAME")) );
@@ -899,12 +889,21 @@ Gtk::Widget* Preferences::getFileBrowserPanel () {
showBasicExif = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWBASICEXIF")) );
showExpComp = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWEXPOSURECOMPENSATION")) );
Gtk::VBox* vbro = Gtk::manage( new Gtk::VBox () );
Gtk::HBox* hbro1 = Gtk::manage( new Gtk::HBox () );
Gtk::HBox* hbro1 = Gtk::manage( new Gtk::HBox () );
Gtk::HBox* hbro0 = Gtk::manage( new Gtk::HBox () );
overlayedFileNames = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_OVERLAY_FILENAMES")) );
ckbInternalThumbIfUntouched = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_INTERNALTHUMBIFUNTOUCHED")));
vbro->set_border_width (4);
vbro->pack_start (*showDateTime, Gtk::PACK_SHRINK, 0);
vbro->set_border_width (4);
vbro->pack_start (*showDateTime, Gtk::PACK_SHRINK, 0);
Gtk::Label* dflab = Gtk::manage( new Gtk::Label (M("PREFERENCES_DATEFORMAT")+":", Gtk::ALIGN_LEFT));
dateformat = Gtk::manage( new Gtk::Entry () );
dateformat->set_tooltip_markup (M("PREFERENCES_DATEFORMATHINT"));
dflab->set_tooltip_markup (M("PREFERENCES_DATEFORMATHINT"));
hbro0->pack_start (*dflab, Gtk::PACK_SHRINK, 4);
hbro0->pack_start (*dateformat, Gtk::PACK_SHRINK, 0);
vbro->pack_start (*hbro0, Gtk::PACK_SHRINK, 0);
hbro1->pack_start (*showBasicExif, Gtk::PACK_SHRINK, 0);
hbro1->pack_start (*showExpComp, Gtk::PACK_SHRINK, 4);
vbro->pack_start (*hbro1, Gtk::PACK_SHRINK, 0);
@@ -1120,7 +1119,6 @@ void Preferences::storePreferences () {
moptions.menuGroupFileOperations = ckbmenuGroupFileOperations->get_active();
moptions.menuGroupProfileOperations = ckbmenuGroupProfileOperations->get_active();
moptions.menuGroupExtProg = ckbmenuGroupExtProg->get_active();
moptions.blinkClipped = blinkClipped->get_active ();
moptions.highlightThreshold = (int)hlThresh->get_value ();
moptions.shadowThreshold = (int)shThresh->get_value ();
moptions.language = languages->get_active_text ();
@@ -1220,7 +1218,6 @@ void Preferences::storePreferences () {
moptions.histogramPosition = ckbHistogramPositionLeft->get_active() ? 1 : 2;
moptions.showProfileSelector = ckbShowProfileSelector->get_active();
moptions.squareDetailWindow = ckbSquareDetailWindow->get_active();
moptions.FileBrowserToolbarSingleRow = ckbFileBrowserToolbarSingleRow->get_active();
moptions.hideTPVScrollbar = ckbHideTPVScrollbar->get_active();
moptions.overwriteOutputFile = chOverwriteOutputFile->get_active ();
@@ -1295,7 +1292,6 @@ void Preferences::fillPreferences () {
ckbmenuGroupProfileOperations->set_active(moptions.menuGroupProfileOperations);
ckbmenuGroupExtProg->set_active(moptions.menuGroupExtProg);
blinkClipped->set_active (moptions.blinkClipped);
hlThresh->set_value (moptions.highlightThreshold);
shThresh->set_value (moptions.shadowThreshold);
@@ -1356,7 +1352,6 @@ void Preferences::fillPreferences () {
ckbHistogramPositionLeft->set_active(moptions.histogramPosition==1);
// ckbHistogramWorking->set_active(moptions.histogramWorking==1);
ckbShowProfileSelector->set_active(moptions.showProfileSelector);
ckbSquareDetailWindow->set_active(moptions.squareDetailWindow);
ckbFileBrowserToolbarSingleRow->set_active(moptions.FileBrowserToolbarSingleRow);
ckbHideTPVScrollbar->set_active(moptions.hideTPVScrollbar);
ckbUseIconNoText->set_active(moptions.UseIconNoText);

View File

@@ -85,7 +85,6 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener {
//Gtk::CheckButton* cbAutocielab;
Gtk::CheckButton* cbciecamfloat;
Gtk::CheckButton* blinkClipped;
Gtk::SpinButton* hlThresh;
Gtk::SpinButton* shThresh;
@@ -149,7 +148,6 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener {
Gtk::CheckButton* ckbShowProfileSelector;
Gtk::CheckButton* ckbFileBrowserToolbarSingleRow;
Gtk::CheckButton* ckbHideTPVScrollbar;
Gtk::CheckButton* ckbSquareDetailWindow;
Gtk::CheckButton* ckbUseIconNoText;
Glib::ustring storedValueRaw;