diff --git a/rtdata/languages/default b/rtdata/languages/default
index b3ac130cb..e5d5d8adc 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -786,6 +786,11 @@ PREFERENCES_CLUTSCACHE;HaldCLUT Cache
PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
PREFERENCES_CLUTSDIR;HaldCLUT directory
PREFERENCES_CMETRICINTENT;Colorimetric intent
+PREFERENCES_CURVEBBOXPOS;Position of curve copypasta buttons
+PREFERENCES_CURVEBBOXPOS_ABOVE;Above
+PREFERENCES_CURVEBBOXPOS_BELOW;Below
+PREFERENCES_CURVEBBOXPOS_LEFT;Left
+PREFERENCES_CURVEBBOXPOS_RIGHT;Right
PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial processing profile should be generated for an image.\n\nThe path of the communication file (*.ini style, a.k.a. "Keyfile") is added as a command line parameter. It contains various parameters required for the scripts and image Exif to allow a rules-based processing profile generation.\n\nWARNING: You are responsible for using double quotes where necessary if you're using paths containing spaces.
PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys format
PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name
diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc
index 85a9c4465..f4a63cd57 100644
--- a/rtgui/diagonalcurveeditorsubgroup.cc
+++ b/rtgui/diagonalcurveeditorsubgroup.cc
@@ -44,13 +44,18 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
// custom curve
customCurveBox = new Gtk::VBox ();
customCurveBox->set_spacing(4);
+ Gtk::HBox* customCurveAndButtons = Gtk::manage (new Gtk::HBox ());
+ customCurveAndButtons->set_spacing(4);
customCurve = Gtk::manage (new MyDiagonalCurve ());
customCurve->set_size_request (GRAPH_SIZE+2*RADIUS, GRAPH_SIZE+2*RADIUS);
customCurve->setType (DCT_Spline);
- //customCurve->set_tooltip_text (M("CURVEEDITOR_TOOLTIPMOVESPEED"));
- customCurveBox->pack_start (*customCurve, Gtk::PACK_EXPAND_WIDGET, 0);
- Gtk::HBox* custombbox = Gtk::manage (new Gtk::HBox ());
+ Gtk::Box* custombbox; // curvebboxpos 0=above, 1=right, 2=below, 3=left
+ if (options.curvebboxpos==1 || options.curvebboxpos==3) {
+ custombbox = Gtk::manage (new Gtk::VBox ());
+ } else {
+ custombbox = Gtk::manage (new Gtk::HBox ());
+ }
custombbox->set_spacing(4);
pasteCustom = Gtk::manage (new Gtk::Button ());
@@ -65,13 +70,26 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
editCustom->add (*Gtk::manage (new RTImage ("editmodehand.png")));
editCustom->set_tooltip_text(M("EDIT_PIPETTE_TOOLTIP"));
editCustom->hide();
+
custombbox->pack_end (*pasteCustom, Gtk::PACK_SHRINK, 0);
custombbox->pack_end (*copyCustom, Gtk::PACK_SHRINK, 0);
custombbox->pack_end (*saveCustom, Gtk::PACK_SHRINK, 0);
custombbox->pack_end (*loadCustom, Gtk::PACK_SHRINK, 0);
custombbox->pack_start(*editCustom, Gtk::PACK_SHRINK, 0);
- customCurveBox->pack_end (*custombbox, Gtk::PACK_SHRINK, 0);
+ customCurveAndButtons->pack_start (*customCurve, Gtk::PACK_EXPAND_WIDGET, 0);
+ customCurveAndButtons->pack_start (*custombbox, Gtk::PACK_SHRINK, 0);
+ customCurveBox->pack_start (*customCurveAndButtons, Gtk::PACK_EXPAND_WIDGET);
+ if (options.curvebboxpos==0) {
+ removeIfThere (customCurveAndButtons, custombbox, false);
+ customCurveBox->pack_start (*custombbox);
+ customCurveBox->reorder_child(*custombbox, 0);
+ } else if (options.curvebboxpos==2) {
+ removeIfThere (customCurveAndButtons, custombbox, false);
+ customCurveBox->pack_start (*custombbox);
+ } else if (options.curvebboxpos==3) {
+ customCurveAndButtons->reorder_child(*custombbox, 0);
+ }
customCurveBox->show_all ();
saveCustom->signal_clicked().connect( sigc::mem_fun(*this, &DiagonalCurveEditorSubGroup::savePressed) );
@@ -90,15 +108,20 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
// NURBS curve
NURBSCurveBox = new Gtk::VBox ();
NURBSCurveBox->set_spacing(4);
+ Gtk::HBox* NURBSCurveAndButtons = Gtk::manage (new Gtk::HBox ());
+ NURBSCurveAndButtons->set_spacing(4);
NURBSCurve = Gtk::manage (new MyDiagonalCurve ());
NURBSCurve->set_size_request (GRAPH_SIZE+2*RADIUS, GRAPH_SIZE+2*RADIUS);
NURBSCurve->setType (DCT_NURBS);
- //customCurve->set_tooltip_text (M("CURVEEDITOR_TOOLTIPMOVESPEED"));
- NURBSCurveBox->pack_start (*NURBSCurve, Gtk::PACK_EXPAND_WIDGET, 0);
-
- Gtk::HBox* NURBSbbox = Gtk::manage (new Gtk::HBox ());
+ Gtk::Box* NURBSbbox;
+ if (options.curvebboxpos==1 || options.curvebboxpos==3) {
+ NURBSbbox = Gtk::manage (new Gtk::VBox ());
+ } else {
+ NURBSbbox = Gtk::manage (new Gtk::HBox ());
+ }
NURBSbbox->set_spacing(4);
+
pasteNURBS = Gtk::manage (new Gtk::Button ());
pasteNURBS->add (*Gtk::manage (new RTImage ("edit-paste.png")));
copyNURBS = Gtk::manage (new Gtk::Button ());
@@ -117,7 +140,19 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
NURBSbbox->pack_end (*loadNURBS, Gtk::PACK_SHRINK, 0);
NURBSbbox->pack_start(*editNURBS, Gtk::PACK_SHRINK, 0);
- NURBSCurveBox->pack_end (*NURBSbbox, Gtk::PACK_SHRINK, 0);
+ NURBSCurveAndButtons->pack_start (*NURBSCurve, Gtk::PACK_EXPAND_WIDGET, 0);
+ NURBSCurveAndButtons->pack_start (*NURBSbbox, Gtk::PACK_SHRINK, 0);
+ NURBSCurveBox->pack_start (*NURBSCurveAndButtons, Gtk::PACK_EXPAND_WIDGET);
+ if (options.curvebboxpos==0) {
+ removeIfThere (NURBSCurveAndButtons, NURBSbbox, false);
+ NURBSCurveBox->pack_start (*NURBSbbox);
+ NURBSCurveBox->reorder_child(*NURBSbbox, 0);
+ } else if (options.curvebboxpos==2) {
+ removeIfThere (NURBSCurveAndButtons, NURBSbbox, false);
+ NURBSCurveBox->pack_start (*NURBSbbox);
+ } else if (options.curvebboxpos==3) {
+ NURBSCurveAndButtons->reorder_child(*NURBSbbox, 0);
+ }
NURBSCurveBox->show_all ();
saveNURBS->signal_clicked().connect( sigc::mem_fun(*this, &DiagonalCurveEditorSubGroup::savePressed) );
@@ -135,21 +170,26 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
// parametric curve
paramCurveBox = new Gtk::VBox ();
- paramCurveBox->set_spacing(0);
-
+ paramCurveBox->set_spacing(4);
+ Gtk::HBox* paramCurveAndButtons = Gtk::manage (new Gtk::HBox ());
+ paramCurveAndButtons->set_spacing(4);
+ Gtk::VBox* paramCurveAndShcVBox = Gtk::manage (new Gtk::VBox ());
paramCurve = Gtk::manage (new MyDiagonalCurve ());
paramCurve->set_size_request (GRAPH_SIZE+2*RADIUS, GRAPH_SIZE+2*RADIUS);
paramCurve->setType (DCT_Parametric);
+ Gtk::Box* parambbox;
+ if (options.curvebboxpos==1 || options.curvebboxpos==3) {
+ parambbox = Gtk::manage (new Gtk::VBox ());
+ } else {
+ parambbox = Gtk::manage (new Gtk::HBox ());
+ }
+ parambbox->set_spacing(4);
+
shcSelector = Gtk::manage (new SHCSelector ());
- shcSelector->set_size_request (GRAPH_SIZE-100, 12); // width, height
+ shcSelector->set_size_request (GRAPH_SIZE-100, 10); // width, height
//* shcSelector->set_size_request ((GRAPH_SIZE+2*RADIUS)-20, 20);
- paramCurveBox->pack_start (*paramCurve, Gtk::PACK_EXPAND_WIDGET, 0);
- paramCurveBox->pack_start (*shcSelector, Gtk::PACK_EXPAND_WIDGET, 0);
-
- Gtk::HBox* parambbox = Gtk::manage (new Gtk::HBox ());
- parambbox->set_spacing(4);
pasteParam = Gtk::manage (new Gtk::Button ());
pasteParam->add (*Gtk::manage (new RTImage ("edit-paste.png")));
copyParam = Gtk::manage (new Gtk::Button ());
@@ -179,8 +219,6 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
pasteParam->set_tooltip_text (M("CURVEEDITOR_TOOLTIPPASTE"));
copyParam->set_tooltip_text (M("CURVEEDITOR_TOOLTIPCOPY"));
- paramCurveBox->pack_end (*parambbox, Gtk::PACK_EXPAND_WIDGET, 0);
-
highlights = Gtk::manage (new Adjuster (M("CURVEEDITOR_HIGHLIGHTS"), -100, 100, 1, 0));
lights = Gtk::manage (new Adjuster (M("CURVEEDITOR_LIGHTS"), -100, 100, 1, 0));
darks = Gtk::manage (new Adjuster (M("CURVEEDITOR_DARKS"), -100, 100, 1, 0));
@@ -196,14 +234,36 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
evdarks->add (*darks);
evshadows->add (*shadows);
- paramCurveBox->pack_start (*evhighlights);
- paramCurveBox->pack_start (*evlights);
- paramCurveBox->pack_start (*evdarks);
- paramCurveBox->pack_start (*evshadows);
+ // paramCurveSliderBox needed to set vspacing(4) between curve+shc and sliders without vspacing between each slider
+ Gtk::VBox* paramCurveSliderBox = Gtk::manage (new Gtk::VBox ());
+ paramCurveSliderBox->set_spacing(4);
+
+ paramCurveSliderBox->pack_start (*evhighlights);
+ paramCurveSliderBox->pack_start (*evlights);
+ paramCurveSliderBox->pack_start (*evdarks);
+ paramCurveSliderBox->pack_start (*evshadows);
paramCurveBox->show_all ();
- // parametric curve end
+ paramCurveAndShcVBox->pack_start (*paramCurve, Gtk::PACK_EXPAND_WIDGET);
+ paramCurveAndShcVBox->pack_start (*shcSelector, Gtk::PACK_EXPAND_WIDGET);
+ paramCurveAndButtons->pack_start (*paramCurveAndShcVBox);
+ paramCurveAndButtons->pack_start (*parambbox, Gtk::PACK_SHRINK);
+ paramCurveBox->pack_start (*paramCurveAndButtons);
+ paramCurveBox->pack_start (*paramCurveSliderBox);
+ if (options.curvebboxpos==0) {
+ removeIfThere (paramCurveAndButtons, parambbox, false);
+ paramCurveBox->pack_start (*parambbox);
+ paramCurveBox->reorder_child(*parambbox, 0);
+ } else if (options.curvebboxpos==2) {
+ removeIfThere (paramCurveAndButtons, parambbox, false);
+ paramCurveBox->pack_start (*parambbox);
+ //paramCurveBox->reorder_child(*parambbox, 1);
+ } else if (options.curvebboxpos==3) {
+ paramCurveAndButtons->reorder_child(*parambbox, 0);
+ }
+ paramCurveBox->show_all ();
+ // parametric curve end
customCurveBox->reference ();
diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc
index 3b77ba6dd..1cca98fc0 100644
--- a/rtgui/flatcurveeditorsubgroup.cc
+++ b/rtgui/flatcurveeditorsubgroup.cc
@@ -40,12 +40,18 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u
// ControlPoints curve
CPointsCurveBox = new Gtk::VBox ();
CPointsCurveBox->set_spacing(4);
+ Gtk::HBox* CPointsCurveAndButtons = Gtk::manage (new Gtk::HBox ());
+ CPointsCurveAndButtons->set_spacing(4);
CPointsCurve = Gtk::manage (new MyFlatCurve ());
CPointsCurve->set_size_request (GRAPH_SIZE+2*RADIUS+1, GRAPH_SIZE+2*RADIUS+1);
CPointsCurve->setType (FCT_MinMaxCPoints);
- CPointsCurveBox->pack_start (*CPointsCurve, Gtk::PACK_EXPAND_WIDGET, 0);
- Gtk::HBox*CPointsbbox = Gtk::manage (new Gtk::HBox ());
+ Gtk::Box* CPointsbbox; // curvebboxpos 0=above, 1=right, 2=below, 3=left
+ if (options.curvebboxpos==1 || options.curvebboxpos==3) {
+ CPointsbbox = Gtk::manage (new Gtk::VBox ());
+ } else {
+ CPointsbbox = Gtk::manage (new Gtk::HBox ());
+ }
CPointsbbox->set_spacing(4);
pasteCPoints = Gtk::manage (new Gtk::Button ());
@@ -67,7 +73,19 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u
CPointsbbox->pack_end (*loadCPoints, Gtk::PACK_SHRINK, 0);
CPointsbbox->pack_start(*editCPoints, Gtk::PACK_SHRINK, 0);
- CPointsCurveBox->pack_end (*CPointsbbox, Gtk::PACK_SHRINK, 0);
+ CPointsCurveAndButtons->pack_start (*CPointsCurve, Gtk::PACK_EXPAND_WIDGET, 0);
+ CPointsCurveAndButtons->pack_start (*CPointsbbox, Gtk::PACK_SHRINK, 0);
+ CPointsCurveBox->pack_start (*CPointsCurveAndButtons, Gtk::PACK_EXPAND_WIDGET);
+ if (options.curvebboxpos==0) {
+ removeIfThere (CPointsCurveAndButtons, CPointsbbox, false);
+ CPointsCurveBox->pack_start (*CPointsbbox);
+ CPointsCurveBox->reorder_child(*CPointsbbox, 0);
+ } else if (options.curvebboxpos==2) {
+ removeIfThere (CPointsCurveAndButtons, CPointsbbox, false);
+ CPointsCurveBox->pack_start (*CPointsbbox);
+ } else if (options.curvebboxpos==3) {
+ CPointsCurveAndButtons->reorder_child(*CPointsbbox, 0);
+ }
CPointsCurveBox->show_all ();
saveCPoints->signal_clicked().connect( sigc::mem_fun(*this, &FlatCurveEditorSubGroup::savePressed) );
diff --git a/rtgui/options.cc b/rtgui/options.cc
index e826bf449..6abed182b 100644
--- a/rtgui/options.cc
+++ b/rtgui/options.cc
@@ -361,6 +361,7 @@ void Options::setDefaults () {
histogramPosition = 1;
histogramBar = true;
histogramFullMode = false;
+ curvebboxpos = 1;
prevdemo = PD_Sidecar;
rgbDenoiseThreadLimit = 0;
#if defined( _OPENMP ) && defined( __x86_64__ )
@@ -824,8 +825,8 @@ if (keyFile.has_group ("GUI")) {
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");
- if( keyFile.has_key ("GUI", "HistogramWorking")) rtSettings.HistogramWorking = keyFile.get_boolean("GUI", "HistogramWorking");
-
+ if (keyFile.has_key ("GUI", "HistogramWorking")) rtSettings.HistogramWorking = keyFile.get_boolean ("GUI", "HistogramWorking");
+ if (keyFile.has_key ("GUI", "CurveBBoxPosition")) curvebboxpos = keyFile.get_integer ("GUI", "CurveBBoxPosition");
}
if (keyFile.has_group ("Crop Settings")) {
@@ -1150,6 +1151,7 @@ int Options::saveToFile (Glib::ustring fname) {
keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar);
keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText);
keyFile.set_boolean ("GUI", "HistogramWorking", rtSettings.HistogramWorking);
+ keyFile.set_integer ("GUI", "CurveBBoxPosition", curvebboxpos);
//Glib::ArrayHandle crvopen = crvOpen;
//keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen);
diff --git a/rtgui/options.h b/rtgui/options.h
index 8c22b63d8..151883992 100644
--- a/rtgui/options.h
+++ b/rtgui/options.h
@@ -213,6 +213,7 @@ class Options {
bool hideTPVScrollbar;
bool UseIconNoText;
int whiteBalanceSpotSize;
+ int curvebboxpos; // 0=above, 1=right, 2=below, 3=left
bool showFilmStripToolBar;
diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc
index d887fafaf..ed9b4622c 100644
--- a/rtgui/preferences.cc
+++ b/rtgui/preferences.cc
@@ -746,66 +746,72 @@ Gtk::Widget* Preferences::getGeneralPanel () {
Gtk::VBox* mvbsd = Gtk::manage( new Gtk::VBox () );
- Gtk::Frame* fworklflow = Gtk::manage( new Gtk::Frame (M("PREFERENCES_WORKFLOW")) );
- Gtk::HBox* hbworkflow = Gtk::manage( new Gtk::HBox () );
- hbworkflow->set_border_width (4);
- Gtk::Label* flayoutlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_EDITORLAYOUT")+":") );
- editorLayout = Gtk::manage( new Gtk::ComboBoxText () );
- editorLayout->set_size_request(45, -1);
+ Gtk::Frame* fworklflow = Gtk::manage (new Gtk::Frame (M("PREFERENCES_WORKFLOW")));
+ Gtk::VBox* vbworkflow = Gtk::manage (new Gtk::VBox (false, 4));
+ vbworkflow->set_border_width (4);
+ Gtk::HBox* hbworkflow = Gtk::manage (new Gtk::HBox (false, 4));
+ Gtk::Label* flayoutlab = Gtk::manage (new Gtk::Label (M("PREFERENCES_EDITORLAYOUT")+":"));
+ editorLayout = Gtk::manage (new Gtk::ComboBoxText ());
editorLayout->append_text (M("PREFERENCES_SINGLETAB"));
editorLayout->append_text (M("PREFERENCES_SINGLETABVERTAB"));
editorLayout->append_text (M("PREFERENCES_MULTITAB"));
editorLayout->append_text (M("PREFERENCES_MULTITABDUALMON"));
editorLayout->set_active (2);
- editorLayout->signal_changed().connect( sigc::mem_fun(*this, &Preferences::layoutComboChanged) );
+ editorLayout->signal_changed().connect (sigc::mem_fun(*this, &Preferences::layoutComboChanged));
layoutComboChanged(); // update the tooltip
-
- hbworkflow->pack_start (*flayoutlab, Gtk::PACK_SHRINK, 4);
+ hbworkflow->pack_start (*flayoutlab, Gtk::PACK_SHRINK);
hbworkflow->pack_start (*editorLayout);
- Gtk::Label* lNextStart = Gtk::manage( new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") );
- hbworkflow->pack_end (*lNextStart, Gtk::PACK_SHRINK, 4);
+ Gtk::Label* lNextStart = Gtk::manage( new Gtk::Label (Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") );
+ hbworkflow->pack_end (*lNextStart, Gtk::PACK_SHRINK);
+ vbworkflow->pack_start (*hbworkflow, Gtk::PACK_SHRINK);
- Gtk::VBox* vbworkflow = Gtk::manage( new Gtk::VBox () );
- vbworkflow->pack_start (*hbworkflow, Gtk::PACK_SHRINK, 4);
+ Gtk::HBox* curveBBoxPosHB = Gtk::manage (new Gtk::HBox (false, 4));
+ Gtk::Label* curveBBoxPosL = Gtk::manage (new Gtk::Label (M("PREFERENCES_CURVEBBOXPOS")+":"));
+ Gtk::Label* curveBBoxPosRestartL = Gtk::manage (new Gtk::Label (Glib::ustring("(") + M("PREFERENCES_APPLNEXTSTARTUP") + ")"));
+ curveBBoxPosC = Gtk::manage (new Gtk::ComboBoxText ());
+ curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_ABOVE"));
+ curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_RIGHT"));
+ curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_BELOW"));
+ curveBBoxPosC->append_text (M("PREFERENCES_CURVEBBOXPOS_LEFT"));
+ curveBBoxPosC->set_active (1);
+ curveBBoxPosHB->pack_start (*curveBBoxPosL, Gtk::PACK_SHRINK);
+ curveBBoxPosHB->pack_start (*curveBBoxPosC);
+ curveBBoxPosHB->pack_start (*curveBBoxPosRestartL, Gtk::PACK_SHRINK);
+ vbworkflow->pack_start (*curveBBoxPosHB, Gtk::PACK_SHRINK);
Gtk::HBox* hbworkflow2 = Gtk::manage( new Gtk::HBox () );
ckbHistogramPositionLeft = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_HISTOGRAMPOSITIONLEFT")) );
- hbworkflow2->pack_start (*ckbHistogramPositionLeft, Gtk::PACK_SHRINK, 4);
+ hbworkflow2->pack_start (*ckbHistogramPositionLeft);
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);
- vbworkflow->pack_start (*hbworkflow2, Gtk::PACK_SHRINK, 4);
-
+ ckbHistogramWorking->set_tooltip_markup (M("PREFERENCES_HISTOGRAM_TOOLTIP"));
+ hbworkflow2->pack_start (*ckbHistogramWorking);
+ vbworkflow->pack_start (*hbworkflow2, Gtk::PACK_SHRINK);
+
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);
+ hbworkflow2d5->pack_start (*ckbShowProfileSelector, Gtk::PACK_SHRINK);
+ vbworkflow->pack_start (*hbworkflow2d5, Gtk::PACK_SHRINK);
Gtk::HBox* hbworkflow3 = Gtk::manage( new Gtk::HBox () );
ckbFileBrowserToolbarSingleRow = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_FILEBROWSERTOOLBARSINGLEROW")) );
ckbShowFilmStripToolBar = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_SHOWFILMSTRIPTOOLBAR")) );
+ hbworkflow3->pack_start (*ckbFileBrowserToolbarSingleRow);
+ hbworkflow3->pack_start (*ckbShowFilmStripToolBar);
+ vbworkflow->pack_start (*hbworkflow3, Gtk::PACK_SHRINK);
- hbworkflow3->pack_start (*ckbFileBrowserToolbarSingleRow, Gtk::PACK_SHRINK, 4);
- hbworkflow3->pack_start (*ckbShowFilmStripToolBar, Gtk::PACK_SHRINK, 4);
- vbworkflow->pack_start (*hbworkflow3, Gtk::PACK_SHRINK, 0);
-
- Gtk::HBox* hbworkflow4 = Gtk::manage( new Gtk::HBox () );
-
+ Gtk::HBox* hbworkflow4 = Gtk::manage( new Gtk::HBox (false, 4) );
Gtk::Label* hb4label = Gtk::manage( new Gtk::Label (M("PREFERENCES_TP_LABEL")) );
- hbworkflow4->pack_start (*hb4label, Gtk::PACK_SHRINK, 4);
+ hbworkflow4->pack_start (*hb4label, Gtk::PACK_SHRINK);
ckbHideTPVScrollbar = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_TP_VSCROLLBAR")) );
- hbworkflow4->pack_start (*ckbHideTPVScrollbar, Gtk::PACK_SHRINK, 4);
-
+ hbworkflow4->pack_start (*ckbHideTPVScrollbar, Gtk::PACK_SHRINK);
ckbUseIconNoText = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_TP_USEICONORTEXT")) );
- hbworkflow4->pack_start (*ckbUseIconNoText, Gtk::PACK_SHRINK, 4);
-
- vbworkflow->pack_start (*hbworkflow4, Gtk::PACK_SHRINK, 4);
+ hbworkflow4->pack_start (*ckbUseIconNoText, Gtk::PACK_SHRINK);
+ vbworkflow->pack_start (*hbworkflow4, Gtk::PACK_SHRINK);
fworklflow->add (*vbworkflow);
- mvbsd->pack_start (*fworklflow, Gtk::PACK_SHRINK, 4);
-
+ mvbsd->pack_start (*fworklflow, Gtk::PACK_SHRINK);
+
Gtk::Frame* flang = Gtk::manage( new Gtk::Frame (M("PREFERENCES_DEFAULTLANG")) );
Gtk::HBox* hblang = Gtk::manage( new Gtk::HBox () );
hblang->set_border_width (4);
@@ -1412,6 +1418,7 @@ void Preferences::storePreferences () {
moptions.multiDisplayMode = editorMode==3 ? 1:0;
moptions.mainNBVertical = editorMode==1;
+ moptions.curvebboxpos = curveBBoxPosC->get_active_row_number();
moptions.histogramPosition = ckbHistogramPositionLeft->get_active() ? 1 : 2;
moptions.showProfileSelector = ckbShowProfileSelector->get_active();
moptions.FileBrowserToolbarSingleRow = ckbFileBrowserToolbarSingleRow->get_active();
@@ -1562,6 +1569,7 @@ void Preferences::fillPreferences () {
else
editorLayout->set_active(moptions.multiDisplayMode ? 3 : 2);
+ curveBBoxPosC->set_active(moptions.curvebboxpos);
ckbHistogramPositionLeft->set_active(moptions.histogramPosition==1);
// ckbHistogramWorking->set_active(moptions.histogramWorking==1);
ckbShowProfileSelector->set_active(moptions.showProfileSelector);
diff --git a/rtgui/preferences.h b/rtgui/preferences.h
index 7ecc5df6a..05bc67b74 100644
--- a/rtgui/preferences.h
+++ b/rtgui/preferences.h
@@ -108,6 +108,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener {
Gtk::ComboBoxText* waveletTileSizeCombo;
Gtk::ComboBoxText* cprevdemo;
+ Gtk::ComboBoxText* curveBBoxPosC;
Gtk::ComboBoxText* theme;
Gtk::CheckButton* slimUI;